1 / 17

OBJ saimes algebriskās specifikāciju valodas.

OBJ saimes algebriskās specifikāciju valodas. Specifikāciju valodu pamati. Vairāksortu un sakārtotu sortu algebras. Vairāksortu (many – sorted) signatūra (S,): sortu kopa S, operatoru kopa  , argumenti un rezultāti no S .

julie
Download Presentation

OBJ saimes algebriskās specifikāciju valodas.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OBJ saimes algebriskās specifikāciju valodas. Specifikāciju valodu pamati

  2. Vairāksortu un sakārtotu sortu algebras Vairāksortu (many – sorted) signatūra(S,):sortu kopaS, operatoru kopa, argumenti un rezultāti no S. Operatoram  rakstam : ws, kur wS* ir aritāte un sS ir sorts. Pāris w,s ir operatora rangs. Operatoru kopa ar rangu w,s tiek apzīmēta ar w,s. Konstantes ir operācijas, kurām ir tukša aritāte: : s. Sakārtotu sortu (order- sorted) signatūra: (S,,),-  - daļējs sakārtojums sortu kopā S (refleksīva, tranzitīva, antisimetriska)- operācijām spēkā monotonitātes nosacījums: ja   w1,s1un   w2,s2tad no w1  w2 seko s1  s2[ tātad, katra konstante pieder tikai vienam sortam ] Signatūras Sigmodelis tiek saukts par Sig-algebru (vairāksortu, sakārtotu sortu algebra). Dotai signatūrai Sig = (S,,) atbilstoša Sig-algebra A interpretē: • katru sortu sS kā kopu As, • katru apakšsorta attiecību s  s’ kā kopu iekļaušanu As  As’, • katru operatoru : s1 s2 … sn, skā funkciju A : As1  As2  …Asn  As. Prasām (modeļa monotonitāte):Ja  w1,s1 w2,s2un w1  w2, tad A : Aw1  As1 sakrīt ar A : Aw2  As2 uz Aw1 .

  3. Sakārtotu sortu algebras: piemērs Piemērs [OSA I], pieņemam, ka veselo skaitļu sorts Int jau definēts (OBJ sintaksē): sorts NeList List . subsorts Int < NeList < List . op nil : -> List . op _ _ : List List -> List . op _ _ : NeList List -> NeList . op head : NeList -> Int . op tail : NeList -> List . Ievērojam: vienai un tai pašai operācijai _ _ dažādi rangi. OBJ: apakšsortu polimorfisms (valodai ML – parametriskais polimorfisms). Interpretācija:AInt = Z, AList = Z*, ANeList = Z+, nil = [], _ _ - konkatenācija, head, tail – parastās sarakstu operācijas. Ievērosim: Z  Z+  Z*. Sakārtotu sortu algebru lietojumi: - daļēji definētu funkciju ieviešana, kļūdu apstrāde, - objektorientēta specifikācija (viens sorts var būt apakšsorts arī vairākiem nesaistītiem sortiem). [OSA I] : Goguen, Meseguer. Order Sorted Algebra I: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations.

  4. Nosacījumi uz sakārtojumu: signatūras regularitāte Sakārtotu sortu signatūra (S,,) ir regulāra, ja katram dotam operatoram   w1,s1un katram dotam vārdam (sortu vektoram) w0  w1 no S*eksistē vismazākais rangs w,s  S*S, kuram w0  w un   w,s . “Vismazākais” rangs:w,s  w’,s’ jebkuram citam w’,s’, kas apmierina w0  w’ un   w’,s’ sorts NeList List . subsorts Int < NeList < List . op nil : -> List . op _ _ : List List -> List . op _ _ : NeList List -> NeList . op head : NeList -> Int . op tail : NeList -> List . Signatūra ir regulāra. Pievienojamop _ _ : List NeList -> NeList . Signatūra vairs nav regulāra: Ņemam operatoru _ _ , sortu vektoru NeList, NeList, tad NeList, List, NeList  un List, NeList, NeList  būtu divi nesalīdzināmi operāciju rangi r = w,s , kam spēkā NeList, NeList  w un _ _  r. Regularitāti var atgūt, pievienojot arīop _ _ : NeList NeList -> NeList

  5. Sakārtotu sortu algebras: termu universs Vairāksortu signatūrā (S,) definējam termu kopuT,skatram s  S: • ,s  T,s(konstantes ietilpst termu kopā) • Ja   s1 s2 … sn, sun in ti  T,si (un n>0), tad  (t1 t2 … tn)  T,s . Sakārtotu sortu signatūrā (S, , ) definējam -termu algebru {,s | s  S} kā mazāko kopu saimi, kurai: • ,s  ,s katram s  S, • ,s’  ,s , ja s’  s, • Ja   s1 s2 … sn, sun in ti  ,si (un n>0), tad  (t1 t2 … tn)  ,s . Fakts. -termu algebra {,s | s  S} ir sakārtotu sortu (S, , ) – algebra. Pastāv iespējas: ,s  T,s , ,s   {T,s’ | s’  s}, ,s =  (kādam sortam s). Teorēma. Regulārā vairāksortu signatūrā katram termam t   eksistē mazākais sortsLS(t). Termi ar mainīgajiem:pieņemam, ka dota mainīgo saime X = {Xs | s  S} ar Xsbez kopīgiem elementiem, X   = . Definējam (X) kā jaunu sakārtotu sortu signatūru ar (X),s = ,s  Xsun (X)w,s = w,s , ja w  . Iegūstam: - Ja  ir regulāra, tad arī (X) ir regulāra - “Dabisks” homomorfisms (struktūru saglabājošs attēlojums) no  uz (X).

  6. Sakārtotu sortu algebras: vienādības obj BITS issorts Bit ErrBit List ErrList .subsorts Bit < List < ErrList .subsorts Bit < ErrBit < ErrList .ops 0 1 : -> Bit . op nil : -> List .op _ _ : List List -> List .op head : List -> ErrBit .op tail : List -> ErrList .vars L L’ L’’ : List .var B : Bit .eq nil L = L . eq L nil = L .eq L (L’ L’’) = (L L’) L’’ .eq head(B L) = B . eq tail(B L) = B . endo obj STACK-OF-INT isprotecting INT .sorts Stack NeStack .subsort NeStack < Stack .op empty : -> Stack .op push : Int Stack -> Stack .op top : NeStack -> Int .op pop : NeStack -> Stack .var E : Int .var S : Stack .eq top(push(E,S)) = E .eq pop(push(E,S)) = S . endo Divi mehānismi definīcijas apgabala ierobežošanai: NeStack, vai ErrBit un ErrList. Elementi, kas ir ErrBit un nav Bit (ir ErrList un nav List) ir domāti kā kļūdas ziņojumi. protecting – moduļu kompozīcijas līdzeklis (sk. vēlāk).

  7. Sakārtotu sortu algebras: vienādības (S,,) – sakārtotu sortu signatūrai-vienādība ir trijnieks X,t,t’, kur X – mainīgo kopa, t, t’ – termi (no ,s), kam LS(t) un LS(t’) ir vienā sakārtojuma (S, ) saistītā komponentē. -vienādību X,t,t’ apzīmēsim kā (X) t = t’. Vairāksortu algebrā mēs prasītu, lai termi t un t’ piederētu tam pašam sortam. Sakārtotu sortu algebrā varētu prasīt, lai LS(t) = LS(t’), bet šāda prasība ir par stingru. Sakārtotu sortu algebra A apmierina -vienādību (X) t = t’, ja katrai funkcijaia: XA (mainīgajiem piešķir vērtības) atbilstošās termu vērtības a*LS(t)(t) = a*LS(t’)(t’). A apmierina vienādību kopu , ja A apmierina katru vienādību no , sakām, ka A ir (, ) – algebra. Nosacītās vienādības: (X) t = t’ if C, kur C – galīga  - vienādību kopa bez kvantoriem, ar mainīgajiem tikai no X. Prasām, lai a*LS(t)(t) = a*LS(t’)(t’) spēkā tām funkcijām a: XA , kurām spēkā visas vienādības no C. Papildus prasība uz signatūru:Signatūra ir koherenta, ja katrā (S, ) saistītajā komponentē katriem s,s’ eksistē s’’, kam s  s’’ un s’  s’’. Termu kongruencidefinē regulārām un koherentām signatūrām.

  8. Sakārtotu sortu algebras: iniciālā semantika Kādas termu vienādības t = t’ izvedamas no (nosacīto) vienādību kopas  sakārtoto sortu signatūrā ? (0) Jebkura beznosacījumu vienādība, kas ietilpst ir izvedama. (1) Refleksivitāte: (X) t = t . (2) Simetrija: ja (X) t = t’ ir izvedams, tad (X) t’ = t arī izvedams. (3) Tranzitivitāte: ja (X) t = t’ un (X) t’ = t’’, tad (X) t = t’’. (4) Kongruence:ja , ’: X   (Y) ir substitūcijas, kurām (Y) (x) = ’(x) irizvedams x X, tad ja t   (X), tad (Y) (t) = ’(t) ir izvedama. [ Ja x = x’, tad f(x) = f(x’). Ja f(x,y) = g(x,y), tad f(t,y) = g(t,y) ]. (5) Substitutivitāte: ja(X) t = t’ if C ir kopā  un substitūcija : X   (Y) nodrošina, ka katra vienādība (Y) u = v no kopas C ir izvedama, tad (Y) t = t’ ir izvedama. Pieņemam, ka signatūra regulāra un koherenta. Tad: katra (, ) – algebra apmierina (0) – (5). Iniciālā (, ) – algebra iegūstama, ņemot faktoralgebru pār mazāko attiecību, kas apmierina (0) – (5).

  9. Sakārtotu sortu algebras: Retrakti Pieņemsim, ka definēti sorti: Natural < Integer < Rational op _! : Natural -> Natural Mēģinām pielietot: ( -6 / -2 ) ! Problēma: tipu kļūda, arguments (sintaktiski) nav ar tipu Natural. Tomēr semantiski būtu labi šādu pielietojumu pieļaut. Risinājums: retrakta funkcija rRational,Natural: Rational -> Natural, ar vienādību (x) rRational,Natural (x) = x, kur x ir ar Natural tipu. Vispārīgajā gadījumā vienādība: (x) rs,s’(x) = x, kur s  s’ un x ir ar tipu s’. Tad (-6/-2)! = (rRational,Natural (-6/-2) )! = (rRational,Natural 3) )! = 3! = 6, bet 7 + (-3/-9)! = 7 + (rRational,Natural (-3/-9) )!, kas tālāk nav reducējams ne uz vienu naturālu vai racionālu konstanti. Apakšterms rRational,Natural (-3/-9) norāda uz vietu, kur bijusi kļūda. Fakts. Retraktu pievienošana ir konservatīvs paplašinājums: ja  ir koherenta un (,) “nesalīmē mainīgos”, tad ar retraktu pievienošanu standarta ekvacionālais modelis (,) un izveduma sistēma netiek traucēta. Detalizētāk: sk. [OSA I].

  10. Moduļu hierarhija valodā OBJ3 Modulis – objekta definīcija (atbilstoši iniciālajai semantikai). 4 veidi moduļa M’ importam modulī M: protecting – M nerada jaunus datu objektus modulī M’ un nerada jaunas vienādības starp M’ objektiem extending – vienādības no M nerada jaunas vienādības starp M’ objektiem including, using – nav garantijas par to, kas notiek ar M’ objektiem (including dubultā importā radīs vienu importējamā moduļa kopiju, using – katrai iekļaušanas reizei savu). Piezīme. OBJ3 sistēma nepārbauda, vai moduļu importā, kas deklarētas kā protecting vai extending tiešām šīs īpašības ir spēkā. Ja attiecīgā īpašība kādā situācijā neizpildītos, tad no algebriskā viedokļa izveidotajai specifikācijai būtu tukša modeļu kopa. Piezīme. protecting importa gadījumā jaunu apakšsortu definēšana jau esošiem sortiem var izsaukt semantiski nevēlamus efektus. Detalizētāk: sk. [IntroOBJ] [IntroOBJ] – J.Goguen, T.Winkler, J.Meseguer, K.Futatsugi, J.-P. Joannaud. Introducing OBJ.

  11. CAFE OBJ: algebrisko specifikāciju perspektīvas Tradicionālās algebriskās specifikācijas: MSA(vairāksortu algebra). OBJ3 – piedāvā paplašinājumu MSA -> OSA (sakārtotu sortu algebra). CAFE OBJ: izmanto 3 papildinājumus: MSA -> OSAMSA -> RWL (algebra (loģika), kurā līdz ar vienādībām ietverti arī vienvirziena atbilstības (“rewrite”) apgalvojumiMSA -> HSA (algebra ar paslēptiem (neredzamiem) sortiem, šo sortu objekti ir vienādi, ja tie nav atšķirami ar to “uzvedības operācijām”). RWL, HSA var izmantot paralēlismu un nedeterminitātes modelēšanā (katru savā veidā). Veidojas CAFE OBJ kubs, HOSRWL – “augstākā” virsotne. OSA – jau aplūkojām šajā lekcijā. RWL – sīkāk neaplūkosim HSA – neliels ieskats turpmākajos slaidos (pēc īsa CAFE OBJ ievada). Pastāv arī valoda BOBJ (Behavioral OBJ), kurā arī realizēts HOSA princips.

  12. CAFÉ OBJ: naturālie skaitļi mod! BARE-NAT { -- modulis, kam atbilst iniciālā semantika [ NzNat Zero < Nat ]op 0 : -> Zeroop s_ : Nat -> NzNat} mod! SIMPLE-NAT { -- Neradīt jaunus objektus, jaunas vienādībasprotecting(BARE-NAT) -- sistēma neveic pilnu kontroliop _+_ : Nat Nat -> Nat {comm} -- Komutativitātes aksiomaeq N:Nat + s(M:Nat) = s(N + M) .eq N:Nat + 0 = N . } -- Pieejami arī atslēgas vārdi assoc idem, u.c. mod! TIMES-NAT {protecting(SIMPLE-NAT)op _*_ : Nat Nat -> Natvars M N : Nat eq 0 * N = 0 .eq N * 0 = 0 .eq N * s(M) = (N * M) + N .} -- Tālāki piemēri CAFE OBJ sintaksē pieejami no CAFE OBJ mājas lapas.

  13. CAFÉ OBJ: sakārtotu sortu algebras Café OBJ: iebūvēts paplašinātais sorts ?s atbilstoši katras  nozīmē saistītās komponentes lielākajam sortam s. Sortu hierarhijas piemērs: Zero NzNat  Nat  ?Nat Piederības sortam predikāts: (_ : s’) : ?s  Bool, ja s’  s Piemēram (_ : NzNat) : ?Nat  Bool Bool – sistēmā iebūvēts sorts mod* GRAPH {-- mod* norāda uz interpretāciju vājās semantikas nozīmē[ Node Edge ] ops (s_) (t_) : Edge -> Node } mod! PATH (G :: GRAPH) { [ Edge < Path ]op _;_ : ?Path ?Path -> ?Path {assoc}ops (s_) (t_) : Path -> Node var E: Edge var EP: Pathceq (E ; EP):Path = true if (EP :Path) and (s EP) = (t E) .ceq s (E ; EP) = s(E) if (E ; EP) : Path .ceq t (E ; EP) = t(EP) if (E ; EP) : Path . }

  14. CAFÉ OBJ: neredzamie sorti mod! BARE-NAT { [ NzNat Zero < Nat ] -- Parastie (“redzamie”) sorti un to sakārtojumsop 0 : -> Zeroop s_ : Nat -> NzNat } mod* HSS-BNAT { protecting (BARE-NAT)*[ Hss ]* -- Neredzamais sorts, sintaktiski *[ … ]* iekavāsbop put: Nat Hss -> Hss -- “Uzvedību raksturojošas” operācijas.bop rest_ : Hss -> Hssbop get_ : Hss -> Nat } Neredzamos sortus izmanto, lai specificētu objektu vai abstraktu mašīnu stāvokļus (kas nav novērojami no ārpuses). “Uzvedību raksturojošām” jeb uzvedības operācijām ir tieši viens neredzamais sorts to aritātē. Šādā veidā tiek saglabāta objekta vai abstraktās mašīnas identitāte; objekts vai abstrakta mašīna var tikt novēroti (operācijas – atribūti), vai arī tiem var mainīt stāvokli (operācijas – metodes), bet nav iespējama kā uzvedības operācija, piemēram, divu objektu “salīmēšana”. Neredzamiem sortiem var būt “patvaļīga” algebriska interpretācija, svarīgi, lai tā būtu konsistenta “redzamo sortu” daļā.

  15. CAFÉ OBJ: neredzamie sorti mod* HSS-BNAT { protecting (BARE-NAT)*[ Hss ]* bop put: Nat Hss -> Hss bop rest_ : Hss -> Hss bop get_ : Hss -> Nat } Aplūkojam 2 modeļus: List: ListHss – veselu skaitļu saraksti, Listput – elementa pievienošana sākumā, Listrest – paņem “asti” netukšam sarakstam, neaiztiek tukšo, Listget– paņem saraksta pirmo elementu, vai 0, ja saraksts tukšs. Arr: ArrHss = Fun(N,N)  N – funkcija no naturāliem skaitļiem uz naturāliem skaitļiem un pointeris. Arrput(a,f,n) = f’,n+1, kur f’(x) = f(x), ja x <n, un f’(n) = aArrget(f,n) = f(n-1). Arrrest(f,n) = f,n-1, ja n>0, un f,0 citādi. Papildinām specifikāciju ar vienādībām:var S : Hss, var E : Nateq get put(E,S) = E .beq rest put(E,S) = S . “Uzvedības konteksts” c: virkne metožu pielietojumu, kam seko atribūta operācijas pielietojums. M | (X) t = t’ (“uzvedības vienādība”) tad un tikai tad, ja M |= (X) c(t) = c(t’) (“parastā vienādība”) katram uzvedības kontekstam c. List atbilst specifikācijai parastā un uzvedības nozīmē, Arr – tikai uzvedības nozīmē.

  16. Ko-indukcijas metode “uzvedības vienādībām” Kā pierādīt “uzvedības vienādības” (X) t = t’ patiesumu? Ko-indukcijas metode (viena no iespējām). • Definēt “paslēpto” attiecību _R_, kas ir ekvivalence (ieviest _R_ kā jaunu operāciju simbolu, raksturot to ar tā īpašībām, to skaitā ekvivalences un “paslēptas attiecības” īpašībām);(“paslēpta attiecība” R ir vairāksortu bināra attiecība {Rs | s S}, kas ir identitāte uz redzamajiem sortiem). • Pierādīt, ka _R_ ir kongruence attiecībā pret visām metodēm un atribūtiem (t.i., ja s R t, tad f(s) R f(t), kur f – atribūts vai metode. Ja f – atribūts, tad f(s) R f(t) nozīmē f(s) = f(t) ) ; • Pierādīt, ka t R t’. Ko-indukcijas attiecība R aplūkotajā piemērā (Hss): s1 R s2  n N get(rest*(s1,n)) = get(rest*(s2,n)),kur bop rest* : Hss Nat -> Hss var S : Hss, var N : Nat eq rest*(S, s(N)) = rest*(rest S, N) eq rest*(S,0) = S Var pierādīt, piemēram, ka “uzvedības nozīmē” rest rest put(E1,put(E2,S)) = S

  17. OBJ saimes valodas: tālākas tēmas Termu operacionālā semantika (termu redukcija ar precizitāti līdz komutativitātei un asociativitātei) Valodas implementācijas jautājumi – termu operacionālā semantika realizēta konkrētās vidēs, OBJ saimes valodas var izmantot programmēšanai Specifikāciju strukturizācijas līdzekļi valodā CAFE OBJ (un citās OBJ saimes valodās). Metodika CAFE OBJ lietošanai paralēlu sistēmu specifikācijai (ar ko-indukcijas izmantošanu konkrētās situācijās) Institūciju teorija kā CAFE OBJ semantikas pamats (multiparadigmu algebriskā specifikācija). Balstās uz kategoriju teoriju. Ko-indukcijas metodes attīstība, cirkulārā ko-indukcija. Tālāki piemēri: OBJ3, CAFE OBJ. Daudz iespējamu tematu referātiem.

More Related