Elválasztási logika , elválasztási logika ( angol szeparációs logika ) - formális rendszer, szubstrukturális logika, amely módosítható adatstruktúrákat és mutatókat tartalmazó programok ellenőrzésére alkalmazható, a Hoare-féle logika kiterjesztése . Tervezte : John Reynolds , Peter O'Hearn , Samin Ishtiaq és Hongseok Yang [ 1 ] [ 2 ] [ 3] [4] Rod Burstall munkái alapján [ 5 ] . A particionálási logika állítási nyelve a kötegelt implikációk logikájának egy speciális esete [ 6 ] .
A megosztott memóriával történő párhuzamos számítástechnika particionálási logikájának egy evolúciója a párhuzamos particionálási logika , amelyet O'Hearn és Stephen D. Brookes fejlesztett ki .
Az elválasztás logikáján alapuló technológiák lehetővé teszik nagy szoftverprojektek verifikálására szolgáló rendszerek kifejlesztését [7] .
A Hoare logikájának számos korlátozása van, csak változó változókon működik, és nem támogatja az eljárásokat vagy az első osztályú kódot . A legnagyobb korlátozás azonban a mutató támogatásának hiánya, ami leginkább az Imperative Program Specifikáció szempontjából releváns . A mutatók és a kupac használata esetén a változó változók elhagyhatók, ha a lokális változókhoz csak egyszer adunk mutatóértéket [8] .
2000-2002-ben John Reynolds és Peter O'Hearn Hoare logikájának kiterjesztésével, a felosztási logikával állt elő. Az eredeti ötlet az volt, hogy leegyszerűsítsék az alacsony szintű kötelező programokkal kapcsolatos érvelést egy közös, változtatható adatstruktúrával [9] . Maga a kifejezés ennek a logikának a fő gondolatához kapcsolódik - a tárolás ( angol tárolás ) nem átfedő komponensekre való felosztásának leírásához. A kifejezést mind az osztásoperátor által kibővített predikátumszámításra , mind a Hoare-féle logika kiterjesztésének eredményére [1] használják .
Az elválasztás logikájának kulcsfontosságú jellemzője a lokális érvelés (lokális érvelés) lehetősége a halom részei közötti térbeli konnektívumok ( eng. spatial connectives ) kijelentéseiben [10] .
A logika lehetővé teszi, hogy olyan utasításokkal dolgozzon , ahol:
Az azonos címek különböző objektumok általi használatára vonatkozó tilalmak nehézkes leírásainak leküzdésére egy új logikai műveletet vezettünk be - egy diszjunkt kötőszót , amelyet (vagy [13] ) jelöl, és azt állítja, hogy a és minden feltétel teljesül. a kupac része (címzett tároló ) [9] [14] . Vagyis igaz egy kupacra , ha ennek a kupacnak két része van, és amelyre a [15] igaz :
A fenti és részfüggvények alatt értendők, amelyek a kupacban lévő címnek megfelelő értékeket adnak.
Annak állítása érdekében, hogy a kupac üres, egy predikátumot vezetünk be (ebben az esetben nyilvánvalóan ), és egy mutatót jelölünk ki - . Például a következőkben, amely az egyik axióma, a Hoare-hármas
előfeltétele a nem használt memóriacella, amely a hozzárendelési művelet eredményeként F -re mutat, amit a [12] utófeltételben közölünk .
A helyi érvelés kulcsa az O'Hearn által bevezetett keretszabály [ 1 ] :
,amelyben egyetlen szabad változó ( angol . free v ariable ) sem módosul ( módosul ) a parancs hatására . Ezzel a szabálysal tetszőleges predikátumokat adhat hozzá azokhoz a változókhoz és a kupac részeihez, amelyeket a parancs nem módosít . Ugyanakkor O'Hearn a parancs által elfoglalt kupac mennyiségét angol kifejezésnek nevezte. lábnyom ("lenyomat"). A keretszabály célja az argumentum kiterjesztése a parancs lokálisabb leírásától a befoglaló parancs globálisabb leírására, a legnagyobb impresszumú parancsra [1] .
Miután megállapították, hogy az elválasztás logikája a köteg-implikációk logikájának egyik példája, Yang és Ishtiak bevezette az elválasztó implikációt ( angolul separating impplication [1] , angol varázspálca ). A megnevezés azt mondja, hogy ha egy kupacot kiterjesztettek egy nem metsző kupacra, amelyre igaz , akkor a kapott kupacra igaz lesz [7] .
A logikai konnektívumok szemantikája (elválasztó kötőszó és elválasztó implikáció) monoid halomszerkezetet foglal magában [7] .
A Concurrent Separation Logic ( CSL ) a logika egy olyan változata, amely a megosztott memóriával rendelkező párhuzamos algoritmusok ellenőrzésére használható. Eredetileg Peter O'Hearn javasolta. A következő szabályt használja [16]
,amely lehetővé teszi következtetések levonását egy külön tárolóhoz hozzáférő független végrehajtási szálak jelenlétében. Az O'Hearn-féle bizonyítási szabályok adaptálták Tony Hoare korai párhuzamossági megközelítését [17] azáltal, hogy a particionálás kikényszerítésére szolgáló hatókör-megszorításokat a particionálási logikában való érveléssel helyettesítették. Amellett, hogy Hoare megközelítését kiterjesztette a halommutatókra, O'Hearn megmutatta, hogy a párhuzamos particionálási logika képes dinamikusan nyomon követni a kupacterületek tulajdonjogának átruházását a folyamatok között. Így a cikkében szereplő példák között szerepel egy pointer pass puffer és egy memóriakezelő .
A helyi érvelés a tulajdonjog átruházásával is értelmezhető . A tulajdonjog átruházását a legegyszerűbben a Hoare monitorszabályok példájának segítségével lehet megfontolni (látható, hogy a szétválasztási logika alkalmas elosztott rendszerekre is). A kritikus szakaszba való belépéshez elválasztó kötőszót használunk a -val , ahol az r erőforrás-invariáns . A kritikus szakaszból kilépve a logikai következtetés az ellenkező irányban következik [18] :
,Analógia alapján tekinthetjük egy másik folyamat által küldött üzenetnek egy folyamat általi feldolgozását is, ehhez a folyamathoz delegált, ujjlenyomatokkal meghatározott erőforrásokkal [18] .
A párhuzamos particionálási logika modelljét először Stephen D. Brookes mutatta be O'Hearn tanulmányához [ 19] . A logika helyessége ( angolul megalapozottsága ) nehéz probléma volt. Különösen John Reynolds ellenpéldája mutatta be a logika egy korábbi, kiadatlan változatának kudarcát. A Reynolds példája által felvetett kérdést O'Hearn cikkében, részletesebben Brooks cikkében ismerteti.
O'Hearn és Brooks a 2016 -os Gödel-díj társdíjasai a párhuzamos particionálás logikájának feltalálásáért [20] .
Az elválasztás logikája alkalmazásra talált a kötelező és objektum-orientált stílusban írt szoftverek automatikus és interaktív hitelesítőiben. Ehhez megfelelő kiegészítéseket fejlesztettek ki a meglévő ellenőrző eszközökhöz, például:
Egyéb osztott logikát használó rendszerek: Smallfoot, Space Invader, THOR, SLAyer, HIP, jStar, Xisa, VeriFast, Infer, SeLoger, SLP. 2014-től azonban nem léteznek olyan gyakorlati tételbizonyítók, amelyek a particionálás teljes logikáját megvalósítanák, azaz tartalmaznának particionálási implikációt [7] .
A rendszer használatának jellege szerint a következőképpen osztható fel [24] :