Separační logika

Separační logika , separační logika ( angl .  separační logika ) - formální systém, substrukturální logika, použitelné pro ověřování programů obsahujících proměnlivé datové struktury a ukazatele , rozšíření Hoareovy logiky . Navrhli John Reynolds , Peter O'Hearn , Samin Ishtiaq a  Hongseok Yang [ 1 ] [ 2 ] [ 3] [4] na základě práce Roda Burstalla [ 5 ] . Jazyk asercí rozdělovací logiky je speciálním případem logiky skupinových implikací [ 6 ] .     

Evolucí logiky dělení pro paralelní výpočty se sdílenou pamětí je logika paralelního dělení vyvinutá O'Hearnem a Stephenem D. Brookesem . 

Technologie založené na logice separace umožňují vyvíjet systémy pro ověřování velkých softwarových projektů [7] .

Předpoklady pro vytvoření

Hoareova logika má řadu omezení, pracuje pouze s proměnnými proměnnými a nepodporuje procedury ani kód první třídy . Největším omezením je však chybějící podpora ukazatelů , která je pro imperativní specifikaci programu nejrelevantnější . V případě použití ukazatelů a haldy lze proměnlivé proměnné opustit tím , že místním proměnným přiřadíme hodnotu ukazatele pouze jednou [8] .

V letech 2000-2002 přišli John Reynolds a Peter O'Hearn s rozšířením Hoareovy logiky, logikou dělení. Původní myšlenkou bylo zjednodušit uvažování o nízkoúrovňových imperativních programech s běžnou proměnlivou datovou strukturou [9] . Samotný termín je spojen s hlavní myšlenkou této logiky - popisem rozdělení úložiště ( anglicky  storage ) na nepřekrývající se komponenty. Termín se používá jak ve vztahu k predikátovému počtu rozšířenému operátorem dělení , tak k výsledku rozšíření Hoareovy logiky [1] .

Popis

Klíčovým rysem logiky separace je možnost lokálního uvažování (lokálního uvažování) díky přítomnosti ve výpovědích prostorových spojek ( angl.  prostorových spojek ) mezi částmi haldy [10] .

Logika vám umožňuje pracovat s příkazy formuláře , kde:

K překonání těžkopádných popisů zákazů používání stejné adresy různými objekty byla zavedena nová logická operace - disjunktní spojka , označená (nebo [13] ) a tvrdící, že každá z podmínek a jsou splněny ve svém část haldy (adresné úložiště ) [9] [14] . To platí pro hromadu , pokud existují dvě části této hromady a pro kterou platí [15] :

Výše a jsou chápány jako dílčí funkce , které dávají hodnoty odpovídající adrese na haldě.

Aby se potvrdilo, že halda je prázdná, zavede se predikát (v tomto případě samozřejmě ) a pro označení ukazatele - . Například v následujícím, což je jeden z axiomů, Hoareova trojice

předpokladem je nevyužitá paměťová buňka, která v důsledku operace přiřazení ukazuje na F , což je uvedeno v postpodmínce [12] .

Klíčem k místnímu uvažování je rámcové pravidlo zavedené O'Hearnem [ 1 ] :

,

ve kterém není pod vlivem příkazu změněna žádná volná proměnná ( angl  . free proměnná ) . Pomocí tohoto pravidla můžete přidat libovolné predikáty o proměnných a částech haldy, které nejsou modifikovány příkazem . Zároveň O'Hearn nazval množství hromady obsazené příkazem termínem angličtina. stopa („otisk“). Účelem rámcového pravidla je rozšířit argument z lokálnějšího popisu příkazu na globálnější popis obklopujícího příkazu, příkazu s největším potiskem [1] .   

Poté, co Yang a Ishtiak zjistili, že logika separace je příkladem logiky svazkových implikací, zavedli separační implikaci ( anglicky  separating implication [1] , anglicky  magic wand ). Označení říká, že pokud byla halda rozšířena o neprotínající se haldu, pro kterou je true , pak pro výslednou haldu to bude pravda [7] .

Sémantika logických spojek (oddělovací konjunkce a oddělovací implikace) implikuje monoidní haldovou strukturu [7] .

Parallel Separation Logic (CSL)

Concurrent Separation Logic ( CSL ) je  verze logiky použitelná pro ověřování paralelních algoritmů se sdílenou pamětí. Původně navrhl Peter O'Hearn. Používá následující pravidlo [16]

,

což vám umožňuje vyvozovat závěry za přítomnosti nezávislých vláken provádění přistupujících k samostatnému úložišti. O'Hearnova pravidla důkazu přizpůsobila raný přístup Tonyho Hoareho k souběžnosti [17] tím, že nahradila použití omezení rozsahu k vynucení rozdělování uvažováním v logice rozdělování. Kromě rozšíření Hoareho přístupu k ukazatelům haldy O'Hearn ukázal, že logika paralelního dělení může dynamicky sledovat přenos vlastnictví oblastí haldy mezi procesy. Příklady v jeho článku tedy zahrnují vyrovnávací paměť pro ukazatel a správce paměti .

Místní uvažování lze chápat i z hlediska převodu vlastnictví .  Nejjednodušší je uvažovat jako příklad o převodu vlastnictví pomocí pravidel monitoru Hoare (můžete vidět, že logika oddělení je vhodná i pro distribuované systémy). Pro zadání kritické sekce se používá oddělovací spojka s , kde je invariant zdroje r . Po opuštění kritické sekce následuje logický závěr v opačném směru [18] :

,

Analogicky můžeme uvažovat i o procesu zpracování zprávy procesem odeslané jiným procesem se zdroji delegovanými na tento proces, určenými otisky prstů [18] .

Model pro paralelní rozdělovací logiku poprvé představil Stephen D.  Brookes v doprovodném článku k O'Hearnovu článku [19] . Správnost ( anglicky  soundness ) logiky byla obtížným problémem. Konkrétně protipříklad Johna Reynoldse ukázal selhání dřívější, nepublikované verze logiky. Pointa vznesená Reynoldsovým příkladem je stručně popsána v O'Hearnově článku a úplněji v Brooksově článku.

O'Hearn a Brooks jsou spolupříjemci Gödelovy ceny za rok 2016 za vynález logiky paralelního dělení [20] .

Aplikace a implementace

Logika oddělení našla uplatnění v automatických a interaktivních ověřovačích softwaru napsaného imperativním a objektově orientovaným stylem. Za tímto účelem byly vyvinuty vhodné doplňky stávajících ověřovacích nástrojů, například:

Další systémy využívající rozdělenou logiku: Smallfoot, Space Invader, THOR, SLAyer, HIP, jStar, Xisa, VeriFast, Infer, SeLoger, SLP. Od roku 2014 však neexistují žádné praktické důkazy teorémů, které by implementovaly plnou logiku dělení, tj. včetně implikace dělení [7] .

Podle charakteru použití systému jej lze rozdělit následovně [24] :

Poznámky

  1. 1 2 3 4 5 6 Reynolds, 2002 .
  2. Intuicionistické uvažování o sdílené proměnlivé datové struktuře. John Reynolds. Millennial Perspectives in Computer Science, sborník z Oxford-Microsoft Symposium v ​​roce 1999 na počest sira Tonyho Hoara
  3. BI jako asertion Language pro měnitelné datové struktury. Samin Ishtiaq, Peter O'Hearn. POPL 2001.
  4. Místní zdůvodnění o programech, které mění datové struktury. Archivováno 27. září 2013 na Wayback Machine Peter O'Hearn, John Reynolds, Hongseok Yang . CSL 2001
  5. Některé techniky pro dokazování programů, které mění datové struktury. RM Burstall. Strojová inteligence 7, 1972.
  6. The Logic of Bunched Implications PW O'Hearn a DJ Pym. Bulletin of Symbolic Logic, 5(2), červen 1999, str. 215-244
  7. 1 2 3 4 Lee, Park, 2014 .
  8. Programy a důkazy, 2014 .
  9. 12 Reynolds , 2008 .
  10. Parkinson, Bierman, 2005 .
  11. Chris Poskitt Software Verification (podzim 2013) Přednáška 5: Separation Logic Parts I - II  (downlink)
  12. 1 2 A Primer on Separation Logic, 2012 .
  13. Tjark Weber (2004). „Směrem k mechanizovanému ověřování programu se separační logikou“. Computer Science Logic~-- 18. mezinárodní workshop, CSL 2004, 13. výroční konference EACSL, Karpacz, Polsko, září 2004, sborník příspěvků . Poznámky z přednášek z informatiky. Springer. str. 250-264. weber04 směrem k . Staženo 2013-12-06 . |access-date=vyžaduje |url=( pomoc )
  14. Matthew J. Parkinson Místní zdůvodnění pro Javu Archivováno 23. září 2015 na Wayback Machine , 2005, UCAM-CL-TR-654, ISSN 1476-2986
  15. Přednáška 24: Analýza ukazatelů a tvaru Archivováno 29. listopadu 2014 na Wayback Machine , LARA, EPFL
  16. O'Hearn, Peter (2007). „Zdroje, souběžnost a místní uvažování“ (PDF) . Teoretická informatika . 375 (1-3): 271-307. DOI : 10.1016/j.tcs.2006.12.035 . Archivováno (PDF) z originálu dne 2021-03-04 . Získáno 24. 3. 2021 . Použitý zastaralý parametr |deadlink=( nápověda )
  17. Hoare, CAR (1972). „Směrem k teorii paralelního programování“. Techniky operačního systému. Academic Press .
  18. 1 2 Étienne Lozes Information as Resource in Separation Logic  (unavailable link) , ANR project, draft
  19. Brookes, Stephen (2007). „Sémantika pro souběžnou separační logiku“ (PDF) . Teoretická informatika . 375 (1-3): 227-270. DOI : 10.1016/j.tcs.2006.12.034 . Archivováno (PDF) z originálu dne 2021-05-09 . Získáno 24. 3. 2021 . Použitý zastaralý parametr |deadlink=( nápověda )
  20. European Association for Theoretical Computer Science 2016 Gödel Prize Archivováno 14. července 2016 na Wayback Machine
  21. Ano . Získáno 19. listopadu 2014. Archivováno z originálu 25. února 2009.
  22. Predátoři . Datum přístupu: 19. listopadu 2014. Archivováno z originálu 25. října 2014.
  23. Mutilin V.S., Novikov E.M., Khoroshilov A.V. Přehled nástrojů pro statickou verifikaci programů C aplikovaných na ovladače zařízení operačního systému Linux // Sborník Institutu pro systémové programování Ruské akademie věd. - 2012. - T. 22 , č. 3 . - S. 293-326 .
  24. Cliff Jones (z U. Newcastle), Viktor Vafeiadis (z MPI-SWS) Rely-garante myšlení a separační logika Archivováno 29. listopadu 2014 na Wayback Machine

Literatura

Odkazy