Enande teorier om programmering
Unifying Theories of Programming ( UTP ) inom datavetenskap handlar om programsemantik . Den visar hur denotationssemantik , operationell semantik och algebraisk semantik kan kombineras i ett enhetligt ramverk för formell specifikation , design och implementering av program och datorsystem .
Boken med denna titel av CAR Hoare och He Jifeng publicerades i Prentice Hall International Series in Computer Science 1998 och är nu fritt tillgänglig på webben.
Teorier
Den semantiska grunden för UTP är den första ordningens predikatkalkyl, utökad med fixpunktskonstruktioner från andra ordningens logik. Enligt Eric Hehners tradition är program predikat i UTP, och det finns ingen skillnad mellan program och specifikationer på semantisk nivå . Med Hoares ord :
Ett datorprogram identifieras med det starkaste predikatet som beskriver varje relevant observation som kan göras av beteendet hos en dator som exekverar programmet.
I UTP-språk är en teori en modell av ett visst programmeringsparadigm. En UTP-teori består av tre ingredienser:
- ett alfabet , som är en uppsättning variabelnamn som anger paradigmets attribut som kan observeras av en extern enhet;
- en signatur , som är uppsättningen av programmeringsspråkskonstruktioner som är inneboende i paradigmet; och
- en samling hälsoförhållanden , som definierar utrymmet för program som passar inom paradigmet. Dessa hälsotillstånd uttrycks vanligtvis som monotona idempotenta predikattransformatorer .
Programförfining är ett viktigt begrepp i UTP. Ett program förfinas med om och endast om varje observation som kan göras av också är en observation av . Definitionen av förfining är vanlig i UTP-teorier:
där anger den universella stängningen av alla variabler i alfabetet.
Relationer
Den mest grundläggande UTP-teorin är den alfabetiserade predikatkalkylen, som inte har några alfabetsbegränsningar eller hälsovillkor. Relationsteorin är något mer specialiserad, eftersom en relations alfabet kan bestå av endast:
- odekorerade variabler ( ), modellerar en observation av programmet i början av dess exekvering; och
- primerade variabler ( ), modellerar en observation av programmet i ett senare skede av dess exekvering.
Vissa vanliga språkkonstruktioner kan definieras i relationsteorin enligt följande:
- Skip-satsen, som inte ändrar programtillståndet på något sätt, är modellerad som den relationella identiteten:
- Tilldelningen av värdet till en variabel modelleras som att sätta till och behålla alla andra variabler (betecknade med ) konstant:
- Den sekventiella sammansättningen av två program är bara relationell sammansättning av mellantillstånd:
- Icke-deterministiskt val mellan program är deras största nedre gräns:
- Villkorligt val mellan program skrivs med infixnotation:
- En semantik för rekursion ges av den minsta fixerade punkten av en monoton predikattransformator :
Vidare läsning
- Woodcock, Jim ; Cavalcanti, Ana (2004). "En handledningsintroduktion till design i Unifying Theories of Programming" (PDF) . Integrerade formella metoder . Föreläsningsanteckningar i datavetenskap , sidorna. Vol. 2999. Springer. s. 40–66. doi : 10.1007/978-3-540-24756-2_4 . ISBN 978-3-540-21377-2 .
- Cavalcanti, Ana; Woodcock, Jim (2006). "En handledningsintroduktion till CSP i Unifying Theories of Programming" (PDF) . Förfiningstekniker inom mjukvaruteknik . Föreläsningsanteckningar i datavetenskap. Vol. 3167. Springer. s. 220–268. doi : 10.1007/11889229_6 . ISBN 978-3-540-46253-8 .