-számítás az elméleti számítástechnikában - a folyamatok számítása , amelyet eredetileg Robin Milner , Joachim Parrow és David Walker fejlesztett ki a kommunikáló rendszerek kalkulusával kapcsolatos munka folytatásaként . A -calculus célja olyan párhuzamos számítások leírása , amelyek konfigurációja a számítás során változhat.
A -calculus a folyamatkalculusok családjába tartozik . Valójában a -kalkulus λ-számításként olyan minimális, hogy nem tartalmaz olyan primitíveket, mint a számok , logikai kifejezések , adatszerkezetek , változók , függvények vagy folyamvezérlő utasítások (például if-then-else, while).
A -calculus egymással dinamikusan kölcsönható párhuzamos folyamatokat határoz meg. Minden folyamat egy vagy több tevékenységből állhat , amelyek egymás után vagy párhuzamosan, illetve alternatív vagy rekurzív módon vannak elrendezve. Egy művelet lehet adatok küldése vagy fogadása egy csatornán keresztül. Az egyik folyamattól a másiknak küldött üzenet tartalmaz egy csatornanevet, amely a válaszadásra használható. A név egy változó [1] .
Azt is mondhatjuk, hogy a -calculus egy nyitott elmélet, amely valamilyen névelmélettől függ. Például működési szempontból a π-kalkulust olyan eljárásként ábrázolhatjuk, amely adott névelméletre ad egy folyamatelméletet ezeken a neveken .
A -calculus központi eleme a név fogalma. A kalkulus egyszerűsége a nevek kettős szerepében rejlik, amelyek kommunikációs csatornaként és változóként is működnek. A következő folyamatkonstrukciók érhetők el a kalkulusban (a pontos definíciókat a következő szakaszokban adjuk meg):
A -calculus minimalizmusa nem teszi lehetővé, hogy a szó szokásos értelmében programokat írjunk, de a kalkulus könnyen bővíthető. Különösen könnyű meghatározni a vezérlőstruktúrákat (például rekurzió , hurkok és szekvenciális összetétel) és adattípusokat (például elsőrendű függvények, igazságértékek , listák és egész számok ). Ezenkívül javasolták a -calculus kiterjesztését a nyilvános kulcsú kriptográfiára . Az Abadi és Fournet által kifejlesztett alkalmazott π-számítás formális alapot ad a π-számítás e különféle kiterjesztéseihez tetszőleges adattípusokon keresztül .
Az alábbiakban egy három párhuzamos komponensből álló folyamat példája látható. A csatorna csak az első két komponensben ismert.
Az első két komponens képes a csatornán keresztül kommunikálni , és a -hoz kötődik . A folyamat következő lépése:
Ebben a példában ez nincs hatással, mivel a belső hatókörében van definiálva . Most a második és a harmadik párhuzamos komponens kommunikálhat a csatornán keresztül , miközben kommunikál a -val . A folyamat következő lépése:
Vegye figyelembe, hogy mivel a helyi névre következtetett, a hatókör kibővült a harmadik összetevővel is. Végül egy csatorna használható név küldésére . Ezt követően minden folyamat leáll.
A -calculus az egyik legnépszerűbb formalizmus az üzleti folyamatmenedzsment (BPM) közösségben . Például a népszerű irodalom azt állítja (és kritizálják [3] [1] ), hogy az XLANG , WSCI , BPML , BPEL és WS-CDL ezen a számításon alapulnak. Legalább a -calculus tulajdonságai - számítási sorrend, üzenet alapú kommunikáció, mobilitás - alapul szolgálhatnak a BPM nyelvekhez [1] .
A -calculus másik váratlan felhasználási módja a biomolekuláris rendszerek modellezése [4] .
A következő példa ötletet adhat egy üzleti folyamat leírásához pi-calculus segítségével (a [1] -ből átfogalmazva ):
Ügyfél(megrendelés, vevő)= rendelés <ügyfél>.vásárló(tál) Waiter TakesOrder(Rendelés,RendelésKész,OrderNotReady,Kitchen)= megrendelés (vevő). konyha <orderReady,orderNotReady> .Pincér ételt hoz (rendelés kész, rendelés nincs kész, ügyfél) Pincér ételt hoz (rendelés kész, rendelés nincs kész, ügyfél)= rendelésKész(étel). kliens <étel> + Rendelés Nincs kész (elnézést). ügyfél <elnézést> Kitchen(kitchen,orderReady,orderNotReady)= konyha (rendelkezésre kész, rendelésNem kész). rendelésKész <"borscht"> Étterem= (ν zkz, klnt, kész, nincs kész, konyha) Ügyfél (ccz,clnt) | A pincér felveszi a rendelést | Konyha (konyha, kész, nincs kész)Ebben a példában a számítást kibővítettük a választási operátorral (P + Q).