Erottelulogiikka

Erotuslogiikka , erottelulogiikka ( englanniksi  separation logic ) - muodollinen järjestelmä, alirakennelogiikka, jota voidaan soveltaa muuttuvia tietorakenteita ja osoittimia sisältävien ohjelmien varmentamiseen , Hoaren logiikan laajennus . Suunnittelija John Reynolds , Peter O'Hearn , Samin Ishtiaq ja Hongseok Yang [ 1 ] [ 2 ] [ 3] [4] perustuu Rod Burstallin [ 5 ] työhön . Osiointilogiikan väitekieli on nippuimplikaatioiden logiikan erikoistapaus [ 6 ] .      

Eräs osiointilogiikan kehitys rinnakkaislaskennassa jaetun muistin kanssa on rinnakkaisosiointilogiikka , jonka ovat kehittäneet O'Hearn ja Stephen D. Brookes . 

Erottelulogiikkaan perustuvat tekniikat mahdollistavat suurten ohjelmistoprojektien verifiointijärjestelmien kehittämisen [7] .

Luomisen edellytykset

Hoaren logiikalla on useita rajoituksia, sillä se toimii vain muuttuvilla muuttujilla eikä tue proseduureja tai ensiluokkaista koodia . Suurin rajoitus on kuitenkin osoittimen tuen puute, joka on olennaisin Imperative Program Specification . Osoittimia ja kasaa käytettäessä muuttuvat muuttujat voidaan hylätä antamalla osoittimen arvo paikallisille muuttujille vain kerran [8] .

Vuosina 2000-2002 John Reynolds ja Peter O'Hearn keksivät laajennuksen Hoaren logiikkaan, jakologiikkaan. Alkuperäinen idea oli yksinkertaistaa päättelyä matalan tason pakollisista ohjelmista, joilla on yhteinen muuttuva tietorakenne [9] . Itse termi liittyy tämän logiikan pääajatukseen - tallennustilan ( englanninkielinen  tallennus ) jakamisen kuvaus ei-päällekkäisiin komponentteihin. Termiä käytetään sekä predikaattilaskussa , jota jakooperaattori on laajentanut, että Hoaren logiikan laajennuksen tulokseen [1] .

Kuvaus

Erottelulogiikan keskeinen piirre on paikallisen päättelyn (paikallinen päättely) mahdollisuus, joka johtuu lausunnoista spatiaalisten konnektiivien ( eng.  spatial connectives ) läsnäolosta kasan osien välillä [10] .

Logiikka antaa sinun työskennellä muodon lauseiden kanssa , jossa:

Jotta eri objektien saman osoitteen käyttöä koskevien kieltojen hankalista kuvauksista päästään eroon, on otettu käyttöön uusi looginen operaatio - disjunktiivinen konjunktio , jota merkitään (tai [13] ) ja joka vakuuttaa, että jokainen ehdoista ja täyttyy kasan osa (osoitteellinen varasto ) [9] [14] . Eli totta kasalle , jos tästä kasasta on kaksi osaa ja jolle [15] on totta :

Yläpuolella ja ymmärretään osittaisina funktioina , jotka antavat arvoja, jotka vastaavat kasan osoitetta.

Vahvistaaksesi, että kasa on tyhjä, otetaan käyttöön predikaatti (tässä tapauksessa tietysti ) ja osoitetaan osoitin - . Esimerkiksi seuraavassa, joka on yksi aksioomeista, Hoare -kolmio

Edellytyksenä on käyttämätön muistisolu, joka osoitusoperaation seurauksena osoittaa F :een , joka on ilmoitettu jälkiehdossa [12] .

Avain paikalliseen päättelyyn on O'Hearnin [ 1 ] esittämä kehyssääntö :

,

jossa vapaata muuttujaa ( eng.  free v ariable ) ei muuteta ( muokattu ) komennon vaikutuksesta . Tämän säännön avulla voit lisätä mielivaltaisia ​​predikaatteja keon muuttujista ja osista, joita komento ei muuta . Samaan aikaan O'Hearn kutsui komennon varaaman kasan määrää termiksi englanti. jalanjälki ("jälki"). Kehyssäännön tarkoitus on laajentaa argumenttia paikallisemmasta komennon kuvauksesta yleisempään kuvaukseen sulkevasta komennosta, komentoon, jolla on suurin jälki [1] .   

Todettuaan, että erottelulogiikka on esimerkki nivelimplikaatioiden logiikasta, Yang ja Ishtiak esittelivät erottavan implikation ( englanniksi  separating impplication [1] , englanniksi  magic wand ). Nimitys sanoo, että jos kasaa laajennettiin ei-leikkautuvalla kasalla, jolle on tosi , niin tuloksena olevalle kasalle se on totta [7] .

Loogisten konnektiivien semantiikka (erotteleva konjunktio ja erottava implikaatio) edellyttää monoidikasarakennetta [ 7] .

Parallel Separation Logic (CSL)

Concurrent Separation Logic ( CSL ) on logiikan  versio, jota voidaan soveltaa rinnakkaisten algoritmien varmentamiseen jaetun muistin kanssa. Alunperin ehdotti Peter O'Hearn. Se käyttää seuraavaa sääntöä [16]

,

jonka avulla voit tehdä johtopäätöksiä itsenäisten suoritussäikeiden läsnä ollessa, jotka käyttävät erillistä kauppaa. O'Hearnin todistesäännöt mukauttivat Tony Hoaren varhaista lähestymistapaa samanaikaisuuteen [17] korvaamalla laajuusrajoitusten käytön osioinnin pakottamiseksi päättelyllä osiointilogiikassa. Sen lisäksi, että O'Hearn laajensi Hoaren lähestymistapaa kasoosoittimiin, se osoitti, että rinnakkaisosiointilogiikka voi dynaamisesti seurata kasa-alueiden omistajuuden siirtoa prosessien välillä. Siten hänen artikkelinsa esimerkkejä ovat osoittimen välityspuskuri ja muistinhallinta .

Paikallinen päättely voidaan ymmärtää myös omistusoikeuden siirtymisenä .  Omistuksen siirtoa on helpoin harkita esimerkkinä Hoaren monitorointisäännöillä (näet, että erottelulogiikka sopii myös hajautetuille järjestelmille). Kriittisen osan syöttämiseksi käytetään erotuskonjunktiota , jossa on resurssin invariantti r . Kriittisestä osiosta poistuttaessa seuraa looginen johtopäätös päinvastaiseen suuntaan [18] :

,

Analogisesti voimme myös tarkastella prosessia, jossa prosessi käsittelee toisen prosessin lähettämää viestiä prosessille delegoiduilla resursseilla, jotka määritetään sormenjälkien avulla [18] .

Stephen D.  Brookes esitteli ensimmäisen kerran mallin rinnakkaisosiointilogiikasta O'Hearnin artikkelin mukana [ 19] . Logiikan oikeellisuus ( englanniksi  soundness ) oli vaikea ongelma. Erityisesti John Reynoldsin vastaesimerkki osoitti logiikan aikaisemman, julkaisemattoman version epäonnistumisen. Reynoldsin esimerkin esille tuoma seikka on kuvattu lyhyesti O'Hearnin artikkelissa ja täydellisemmin Brooksin artikkelissa.

O'Hearn ja Brooks ovat saaneet vuoden 2016 Gödel-palkinnon rinnakkaisosioinnin logiikan keksimisestä [20] .

Sovellukset ja toteutukset

Erottamisen logiikka on löytänyt sovelluksen automaattisissa ja interaktiivisissa todentajissa, jotka on kirjoitettu imperatiiviseen ja olio- tyyliin. Tätä varten kehitettiin sopivia lisäyksiä olemassa oleviin varmennustyökaluihin, kuten esimerkiksi:

Muut jaettua logiikkaa käyttävät järjestelmät: Smallfoot, Space Invader, THOR, SLAyer, HIP, jStar, Xisa, VeriFast, Infer, SeLoger, SLP. Vuodesta 2014 lähtien ei kuitenkaan ole olemassa käytännön lauseiden todistajia, jotka toteuttaisivat osioinnin täyden logiikan, eli sisältäen osiointiimplikaatiota [7] .

Järjestelmän käytön luonteen mukaan se voidaan jakaa seuraavasti [24] :

Muistiinpanot

  1. 1 2 3 4 5 6 Reynolds, 2002 .
  2. Intuitionistinen päättely jaetusta muuttuvasta tietorakenteesta. John Reynolds. Millennial Perspectives in Computer Science, Proceeding of 1999 Oxford-Microsoft Symposium Sir Tony Hoaren kunniaksi
  3. BI muuttuvien tietorakenteiden vahvistuskielenä. Samin Ishtiaq, Peter O'Hearn. POPL 2001.
  4. Paikalliset perustelut ohjelmista, jotka muuttavat tietorakenteita. Arkistoitu 27. syyskuuta 2013 Wayback Machinessa Peter O'Hearn, John Reynolds, Hongseok Yang . CSL 2001
  5. Joitakin tekniikoita tietorakenteita muuttavien ohjelmien todistamiseen. RM Burstall. Machine Intelligence 7, 1972.
  6. The Logic of Bunched Impplications PW O'Hearn ja DJ Pym. Bulletin of Symbolic Logic, 5(2), kesäkuu 1999, s. 215-244
  7. 1 2 3 4 Lee, Park, 2014 .
  8. Ohjelmat ja todisteet, 2014 .
  9. 12 Reynolds , 2008 .
  10. Parkinson, Bierman, 2005 .
  11. Chris Poskitt Software Verification (Syksy 2013) Luento 5: Erotuslogiikan osat I - II  (downlink)
  12. 1 2 A Primer on Separation Logic, 2012 .
  13. Tjark Weber (2004). "Kohti koneistettua ohjelman vahvistusta erottelulogiikalla". Computer Science Logic~-- 18th International Workshop, CSL 2004, 13th Annual Conference of EACSL, Karpacz, Puola, syyskuu 2004, Proceedings . Tietojenkäsittelytieteen luentomuistiinpanot. Springer. s. 250-264. weber04 kohti . Haettu 2013-12-06 . |access-date=vaatii |url=( apua )
  14. Matthew J. Parkinson Paikalliset perustelut Javalle Arkistoitu 23. syyskuuta 2015 Wayback Machinessa , 2005, UCAM-CL-TR-654, ISSN 1476-2986
  15. Luento 24: Osoitin- ja muotoanalyysi Arkistoitu 29. marraskuuta 2014 Wayback Machinessa , LARA, EPFL
  16. O'Hearn, Peter (2007). "Resurssit, samanaikaisuus ja paikallinen päättely" (PDF) . Teoreettinen tietojenkäsittelytiede . 375 (1-3): 271-307. DOI : 10.1016/j.tcs.2006.12.035 . Arkistoitu (PDF) alkuperäisestä 2021-03-04 . Haettu 24.03.2021 . Käytöstä poistettu parametri |deadlink=( ohje )
  17. Hoare, CAR (1972). "Kohti rinnakkaisohjelmoinnin teoriaa". Käyttöjärjestelmän tekniikat. Akateeminen Lehdistö .
  18. 1 2 Étienne menettää tiedon erottelulogiikan resurssina  (linkki ei saatavilla) , ANR-projekti, luonnos
  19. Brookes, Stephen (2007). "Semantics for Concurrent Separation Logic" (PDF) . Teoreettinen tietojenkäsittelytiede . 375 (1-3): 227-270. DOI : 10.1016/j.tcs.2006.12.034 . Arkistoitu (PDF) alkuperäisestä 2021-05-09 . Haettu 24.03.2021 . Käytöstä poistettu parametri |deadlink=( ohje )
  20. European Association for Theoretical Computer Science 2016 Gödel-palkinto arkistoitu 14. heinäkuuta 2016 Wayback Machinessa
  21. Ei . Haettu 19. marraskuuta 2014. Arkistoitu alkuperäisestä 25. helmikuuta 2009.
  22. Petoeläimet . Käyttöpäivä: 19. marraskuuta 2014. Arkistoitu alkuperäisestä 25. lokakuuta 2014.
  23. Mutilin V.S., Novikov E.M., Khoroshilov A.V. Yleiskatsaus työkaluista C-ohjelmien staattiseen varmentamiseen Linux-käyttöjärjestelmän laiteajureihin sovellettuina // Proceedings of Institute for System Programming of the Russian Sciences Academy. - 2012. - T. 22 , nro 3 . - S. 293-326 .
  24. Cliff Jones (U. Newcastlesta), Viktor Vafeiadis (MPI-SWS:stä) Luota ajatteluun ja erottelulogiikkaan . Arkistoitu 29. marraskuuta 2014 Wayback Machinessa

Kirjallisuus

Linkit