300 likes | 613 Views
Loogika ja koosdisain. Enn Tõugu. Jutu sisu. Intuitsionistliku lausearvutuse valemid, nende realiseeritavus ja tuletusreeglid IL implikatiivne fragment Disjunktsioonide lisamine ja asendamine Struktuurne süntees IL abil Spetsifitseerimiskeeled ja loogika Javapõhine sünteesi raamvärk
E N D
Loogika ja koosdisain Enn Tõugu
Jutu sisu • Intuitsionistliku lausearvutuse valemid, nende realiseeritavus ja tuletusreeglid • IL implikatiivne fragment • Disjunktsioonide lisamine ja asendamine • Struktuurne süntees IL abil • Spetsifitseerimiskeeled ja loogika • Javapõhine sünteesi raamvärk • Võrdlus teistega: lineaarloogika, kirjeldusloogika, Horni loogika, modaalloogikad.
Intuitsionistlik lausearvutusA, B, C tähistavad siin suvalisi IL valemeid • Konjunktsiooni reglid: • Disjunktsiooni reeglid: • Implikatsiooni reeglid: eeldusest A saime B
IL implikatiivne fragment • Konjunktsiooni reglid • Implikatsiooni reeglid:
Näide Tuletage valem B valemitest (Y A) B (A B) X X Y A
IL valemite realiseeritavus A, B, C tähistavad valemeid, sinisega on nende realisatsioonid • Konjunktsiooni reeglid: • Implikatsiooni reeglid: a: b: A B (a,b): (a,b): (a,b): a: b: x: (x on muutuja) f: a: f(a): b: x.b: f(x)
Struktuurse sünteesi (SSP) keel • Muutujad: A, B, … • Muutujad tähistavad moodulite rakendamise eel- ja järeltingimusi, peamiselt seda, et mingid andmed on saadavad/arvutatavad. Lihtsad implikatsioonid: A… B C … D. • Implikatsioonid implikatsioonidest: (A…BC…D) … (T…U V…W) X … Y Z … Q • Implikatsioonid kirjeldavad moodulite rakendatavust ja andmete arvutatavust.
SSP valemite realisatsioonid Valemi A … B C …D realisatsioon on funktsioon f, mis arvutabC &…&D realisatsiooni antudA … B realisatsioonist, st(c,…,d)=f(a,…,b). Valemi (T … UV …W) X … Y Z … Q realisatsioon on funktsioon, mis arvutab (z,…,q) realisatsiooni implikatsiooni vasaku poole valemite realisatsioonidest, st funktsioonist h, kus h arvutab nii (v,…,w)=h(t,…,u),jaandmetest x,…,y. Implikatsiooni T … UV …W nimetatakse alamülesandeks, sest tema realisatsioon tuleb sünteesida.
Struktuurne süntees • Kirjeldame ülesande IL valemitega (st anname spetsifikatsiooni) • Püstitame eesmärgi “leida x-st y” kujul X Y • Tõestame eesmärgi saavutatavuse (st tuletame X Y etteantud valemitest) • Valemi X Y realisatsioon lahendab ülesande (tegelikult see tuleb teisendada kas programmiks või skeemiks või kombineerida sellest HW/SW meetodiga midagi, mis õiged arvutused teeks.
G G F F D E E V D U S1 S2 Alamülesanded 1) (DE) F G 2)(DE) (UV) FG ehk S1 S2 F G kus S1 (D E) ja S2 (UV) selle valemi realisatsioon on funktsioon h(s,f), kus s on omakorda funktsioon, ehk piltlikult:
forall B A D E S Alamülesanded (forall) for (int i=0;i<a.length; i++){b[i]=S(a[i]);} (D E) A B
a while A B while b d D d’ b’ a’ S S Alamülesanded (while) while (d) {(b,d)=S(a);a=b;} (A B D) A D B andmevood:
D S2 E S1 U V Alamülesanded (if) if (b) then y = S1(x) else y = S2(x) (U V) (D E) B X Y B if Y X
y x a b siin toimubbarvutaminea-st Alamülesanded (realisatsioon) (A B) X Y Alamülesande realisatsioon: see saab olla ka paralleelne: y x b = f(a)
D E H G D E G H SSP lubatud reegel (1) D, E, G, H tähistavad siin muutujate konjunktsioone
G F F G H D E D E H SSP lubatud reegel (2)
E D F D E G SSP lubatud reegel (3)
Näite lahendus Antud: (Y A) B Leida: B (A B) X X Y A A A (Y A) B ( -) A B (A B) X ( -) X X Y A ( -) Y A (Y A) B ( -) B
R1, R2(S1), R8, R9 end begin R4, R5(S2) R6, R7 Sünteesitud algoritmi kuju • “Lineaarne” planerimine annab tegevuste jada: R1, R2, R3, R4... • Alamülesannetega planeerimine annab puu: ehk sama teises esituses: R1, R2 <S> R4, R5 <S> R6, R7 </S> </S> R8, R9
Keele laiendamine • Ekvilalents A … B C asendub lihtsalt kahe implikatsiooniga A … B Cja C A … B • Disjunktsiooni implkatsioonis vasakul A B C saab (automaatselt) esitada valemi paljundamise teel, see asendub kahe valemiga A C ja B C • Disjunktsioon implikatsioonis paremal A BCasendub (automaatselt) alamülesannetega, selle asemele saame (B G) (C G) A G mistahes G jaoks. (G-deks tasub võtta ainult neid muutujaid, mida meil tegelikult tarvis läheb.) NB! Peale keele sellist laiendamist saame läbi ikka veel samade SSP tuletusreeglitega.
Keele pealisehitis – tegelikud spetsifitseerimiskeeled On olemas IL-i tõlgitav tekstiline ja visuaalne spetsifitseerimiskeel. Mõlemad on objekt-orienteeritud, st spetsifikatsioon on klass, mille moodustavad omavahel seotud objektid. Tekstiline keel: • objekt<id> : <klass või algtüüp> <sidemed>; • aksioom <SSP valem>{<realisatsioon>}; sidemeteks on võrdused objektide vahel. SSP valemites on loogikamuutujateks objektide nimed.
Näide Kahe operaatoriga arvutuste spetsifitseerimine: aij aij aij aij f(u,v) Olgu realiseeritud integreerimisoperaator to val = f(x) dx, mille aksioom on (ARG RES) TO VAL 0 Lahendame ülesande x f2(v) y = f1(u,v) dudv 0 0
Integral Integral { arg,val,res,to : integer; (argres) toval {realisatsiooni nimi}; }
Kogu spetsifikatsioon I1:Integral to = x, val = y; I2:Integral val = I1.res; f1:I1.arg&I2.arg I2.res {realization1}; f2:I1.arg I2.to {realization2}; Tõestada tuleb x y
Tõestus (I2.arg I2.res) I2.to I2.val I1.arg I2.arg I2.res ------------------------------------------------------------------------- ( -) I1.arg I2.to I2.val I1.arg I2.to -------------------------------------------------------------------------- ( -) (I1.arg I1.res) x y I1.arg I2.val (I1.res=I2.val) ------------------------------------------------------------------------------------- ( -) x y
x y y I1 f2 I2 f1 Realisatsioon
Skeemide keel Tekstilise keele peale on ehitatud laiendatav skeemide keel ja graafiline redaktor selle keele laiendamiseks: Skeemide keel Jälgija 1 Graafiline redaktor Skeem XML-s Parser Tekst XML-s Spetsifitseerimiskeel 4 Süntesaator 2 Algoritm (XML stiilis) Koodigeneraator Prototüüp on üleval http://sool.cc.ioc.ee/~ando/ed.zip Väike tutorial http://sool.cc.ioc.ee/~ando/tutorial1.html Autor: Ando Saabas 3 Java programm java ee.ioc.cs.vsle.editor.Editor
Veel loogikaid spetsifikatsioonide semantika esitamiseks Lineaarloogika arvestab resursse Horni loogika esimest järku, kuid ikkagi hea tuletatavusega Kirjeldusloogika pidavat sobima omaduste üle arutlemiseks Modaalloogikad, temporaalloogikad
Võimalusi? Kirjeldada konstruktiivse loogika vahenditega VHDL andmevoogude semantika täpselt. Laiendada VHDL andmevoogude kirjeldamise vahendeid alamülesannete kirjeldustega, mis võimaldavad realiseerida keerulisi juhtimisalgoritme. Kasutades olemasolevat skeemiredaktorit ja struktuurse sünteesi tarkvara, simuleerida tehtud laiendusi kasutavaid skeeme.
Veel võimalusi Kasutades olemasolevat skeemiredaktorit ja struktuurse sünteesi tarkvara, luua kiipide loogika simulaator. Töös tuleb skeemiredaktori abil luua translaator, mis tõlgib skeemid nii VHDL keelde kui struktuurse sünteesi keelde. Samuti tuleb välja töötada ja programmeerida klassid, mis tagavad viidete simuleerimise VHDL andmevoomudelis ja annavad protsesside sünkroniseerimissignaalide ülekandeteed.