La logca nell nformatca La logca goca un ruolo mportante nell nformatca Logc plays a smlar role n computer scence to that played by calculus n the physcal scences and tradtonal engneerng dscplnes (M. Vard, 2007) Logca 1
Varetà d logca Esstono molt lnguagg logc Con dvers lvell d astrazone rspetto al lnguaggo naturale Esemp: Logca Proposzonale FOL Descrpton Logc Logche temporal Logca 2
Applcazon La logca è un formalsmo unversale S applca a numeros ambt: archtetture (porte logche) ngegnera del software (specfca e verfca) lnguagg d programmazone (semantca, programmazone logca) database (calcolo relazonale, Datalog) ntellgenza artfcale (dmostrazon automatche d teorem) Logca 3
Applcazon d base La logca proposzonale è usata nell nformatca per l progetto d crcut FOL (pù potente) è usata nella verfca de programm e nell ntellgenza artfcale Us all nterno d questo corso: defnzone d lnguagg specfca d propretà d programm specfca d propretà d sstem (dnamc) Logca 4
Lnguagg I lnguagg sono nsem d strnghe su un alfabeto Esempo: Il lnguaggo d strnghe su {a, b} con lo stesso numero d a e d b e tutte le a prma è nformalmente descrtto dall nseme { a n b n n 0 } Logca 5
In logca FOL può autare a descrvere un lnguaggo Gl nsem possono essere vst come abbrevazon d formule FOL Problem: Che cosa dobbamo descrvere? Come defnre le dverse part? Qual prmtve possamo assumere? Logca 6
Esempo Come descrvere l nseme { a n b n n 0 }? D fatto è una forma abbrevata d "x (x L «$n (n 0 Ù x = a n.b n )) Predcat: L,, = Funzon: concatenazone, elevamento a potenza Cos è x n? "n"x((n=0 x n = e) Ù (n>0 x n = x n-1. x)) Logca 7
Osservazon Occorrerebbe defnre tutt predcat e le funzon non elementar (=, >, +, -, *, :, concatenazone ) Per questo motvo, nel seguto, per defnre lnguagg faremo rfermento anche a logche molto pù rstrette, con una sntass specfca gà predsposta Logca 8
Logca 9 L 1 = a * b * L 1 è l lnguaggo delle strnghe su {a, b} con tutte le a all nzo Pù precsamente, una strnga è n L 1 se è la strnga vuota, oppure è composta da un prefsso a e da un suffsso y (che appartene sempre a L 1 ) è composta da un prefsso y (che appartene sempre a L 1 ) e da un suffsso b Questo s può esprmere come " x(x Î L1 «(x = ε) Ú $ y (x = ay Ù yî L1) Ú $ y (x = yb Ù yî L1))
Logca 10 L 2 = a * b * c * (1) L 2 è l lnguaggo delle strnghe su {a, b, c} con tutte le a all nzo, po tutte le b e alla fne tutte le c L 2 può essere vsto come a * b *. b * c * a * b * è L 1 b * c * ha la stessa struttura d L 1 (chamamolo L 3 ) Una strnga appartene a L 2 se È n L 1 oppure È n L 3 oppure È composta da un prefsso a e da un suffsso y (che appartene a L 2 o a L 3 ) oppure È composta da un prefsso y (che appartene a L 1 o a L 2 ) e da un suffsso c
Logca 11 L 2 = a * b * c * (2) In FOL: " x(x Î L 2 «(x Î L 1 ) Ú (x Î L $ y ((x = ay Ù 3 ) Ú (yî L 2 Ú yî L 3 )) Ú (x = yc Ù (yî L 2 Ú yî L 1 )))) x è n L 1 x è n L 3 S può scomporre nel prefsso a e nel suffsso y (che appartene a L2 o a L3) S può scomporre nel prefsso y (che appartene a L1 o a L2) e l suffsso c c servono tutt?
Note e consderazon agguntve Quando l ordne tra le lettere n un lnguaggo è mportante, la formula FOL defnsce l lnguaggo decomponendolo Defnzone rcorsva Quando occorre contare le lettere, s può defnre una funzone agguntva Logca 12
Esempo L 4 ={x {a,b}* numero d a uguale a numero d b } #(x, a) è d aretà 2 e conta l numero d occorrenze del smbolo a nella strnga x S può defnre formalmente come: In FOL x y((x = ε #(x,a) = 0) (x = a.y #(x,a) = #(y,a) +1) (x = b.y #(x,a) = #(y,a))) x y((x = ε #(x,b) = 0) (x = b.y #(x,b) = #(y,b) +1) (x = a.y #(x,b) = #(y,b))) La defnzone dpende dall alfabeto " x(x Î L4 «#(x,a) = #(x, b)) Logca 13
Logca 14 MFO: Logca monadca del prm ordne Vedamo un frammento d logca del prm ordne che c permette d descrvere parole su un alfabeto I Sntass φ = a(x) x < y φ φ φ x(φ) laddove a I, coè ntroducamo un predcato unaro per ogn smbolo dell'alfabeto Interpretazone: < corrsponde alla solta relazone d mnore l domno delle varabl è N
Alcune classche abbrevazon Ovvamente: φ 1 φ 2 ( φ 1 φ 2 ) φ 1 φ 2 φ 1 φ 2 x(φ) x( φ) x = y (x < y) (y < x) x y (y < x) Ma possamo anche defnre: la costante 0: x = 0 y( (y < x)) l predcato per l successore succ(x,y): succ(x,y) x < y z(x < z z < y) le costant 1, 2, 3, ecc. come successore d 0, 1, 2, ecc. Logca 15
Interpretazone come parola sull alfabeto I Data una parola w I +, ed un smbolo a I: a(x) è vero se, e solo se, l'x-esmo smbolo d w è a (l prmo smbolo d w ha ndce 0) Formula che è vera su tutte e sole le parole l cu prmo smbolo esste ed è a: x(x = 0 a(x)) Formula che è vera su tutte le parole n cu ogn a è seguta da una b x(a(x) y (succ(x,y) b(y))) Logca 16
Altr esemp d abbrevazon e formule Usamo le seguent abbrevazon: y = x + 1 per dre succ(x,y) pù n generale, se k è una costante > 1, y = x + k per dre z 1... z k-1 (y = z k-1 +1... z 1 = x+1) y = x 1 per dre succ(y,x) (coè x = y + 1) y = x k per dre x = y + k last(x) per dre y(y > x) Parole (non vuote) n cu l'ultmo smbolo è a: x (last(x) a(x)) Parole (d almeno 3 smbol) n cu l terzultmo smbolo è a: x (a(x) y (y = x+2 last(y))) Oppure (abbrevate): x (a(x) last(x+2)), oppure y (a(y-2) last(y)) Logca 17
Logca 18 Semantca Sano w Î I + e V 1 l nseme delle varabl; un assegnamento è una funzone v 1 : V 1 [0.. w -1] tale che w, v 1 a(x) sse w = uav e u = v 1 (x) w, v 1 x < y sse v 1 (x) < v 1 (y) w, v 1 φ sse non w, v 1 φ w, v 1 φ 1 φ 2 sse w, v 1 φ 1 e w, v 1 φ 2 w, v 1 x(φ) sse w, v 1 φ per ogn v 1 con v 1 (y) = v 1 (y), y x Lnguaggo d una formula φ: L(φ) = { w Î I + $v 1 : w, v 1 φ }
Logca 19 Propretà d MFO (1/2) I lnguagg esprmbl medante MFO sono chus rspetto a unone, ntersezone, complemento basta fare "or", "and", "not" d formule
Logca 20 Propretà d MFO (2/2) In MFO non s può esprmere l lnguaggo L p fatto d tutte e sole le parole d lunghezza par con I = {a} MFO è strettamente meno potente degl FSA data una formula MFO s può sempre costrure un FSA equvalente non vedamo la costruzone L p può faclmente essere rconoscuto medante un FSA I lnguagg defnt da MFO non sono chus rspetto alla * d Kleene: la formula MFO a(0) a(1) last(1) defnsce l lnguaggo L p2 fatto della sola parola {aa} d lunghezza 2. Abbamo che L p = L p2 * MFO defnsce cosddett lnguagg star-free, coè defnbl tramte unone, ntersezone, complemento e concatenazone d lnguagg fnt
Logca 21 MSO: Logca monadca del secondo ordne Per ottenere lo stesso potere espressvo degl FSA "basta" permettere d quantfcare su predcat monadc qund: logca del secondo ordne (n pratca vuol dre poter quantfcare anche su nsem d poszon) Ammettamo formule del tpo X(φ), dove X è una varable l cu domno è l'nseme de predcat monadc per convenzone usamo le lettere mauscole per ndcare varabl avent come domno l'nseme de predcat monadc, e lettere mnuscole per ndcare varabl su numer natural
Logca 22 Semantca ed esempo L assegnamento delle varabl del II ordne (nseme V 2 ) è una funzone v 2 : V 2 Ã([0.. w -1]) w, v 1, v 2 X(x) sse v 1 (x) Î v 2 (X) w, v 1, v 2 X(φ) sse w, v 1, v' 2 φ per qualche v' 2 con v' 2 (Y) = v 2 (Y), Y X Possamo dunque scrvere la formula che descrve l lnguaggo L p P( x( P(0) ( P(x) P(x+1)) a(x) ( last(x) P(x) ) )) NB: l ndce dell ultmo carattere d una strnga d lunghezza par è dspar! P è un nseme d poszon dspar
Logca 23 Da FSA a MSO In generale, graze alle quantfcazon del second'ordne è possble trovare, per ogn FSA, una formula MSO equvalente Esempo c b q 0 q 1 c a q 2 a a Q 0,Q 1,Q 2 ( z( (Q 0 (z) Q 1 (z)) (Q 0 (z) Q 2 (z)) (Q 1 (z) Q 2 (z))) Q 0 (0) x ( ( last(x) ( (last(x) Q 0 (x) c(x) Q 0 (x+1) Q 0 (x) b(x) Q 1 (x+1) Q 0 (x) a(x) Q 2 (x+1) Q 1 (x) a(x) Q 2 (x+1) Q 2 (x) c(x) Q 0 (x+1) Q 2 (x) a(x) Q 2 (x+1)) Q 0 (x) a(x) Q 2 (x) a(x) Q 1 (x) a(x))))
Da MSO a FSA Data una formula MSO φ, è possble costrure un FSA che accetta esattamente l lnguaggo L defnto da φ (teorema d Büch-Elgot- Trakhtenbrot) la dmostrazone dell'esstenza è costruttva (mostra come ottenere un FSA da una formula MSO), ma non la vedamo per semplctà Qund la classe de lnguagg defnbl da formule MSO concde con lnguagg regolar Logca 24
Logca 25 Il bersaglo Lnguagg star-free Lnguagg regolar Lnguagg non contestual determnstc Lnguagg non contestual Lnguagg contestual Lnguagg rcorsvamente enumerabl
Precondzon e postcondzon Quando s programma una funzone è mportante defnre precsamente che cosa fa, senza necessaramente descrvere come lo fa Questo è lo scopo d precondzon e postcondzon La precondzone ndca cosa deve valere prma che la funzone sa nvocata La postcondzone ndca cosa deve valere dopo che la funzona ha fnto la propra esecuzone Logca 26
Logca 27 Struttura generale (notazone d Hoare) {Precondzone: Pre} Programma: P {Postcondzone: Post} La precondzone è verfcata prma dell esecuzone d P, mentre la postcondzone è verfcata dopo P deve essere tale per cu, se Pre vale prma dell esecuzone, allora Post vale dopo l esecuzone
Come defnrle? Le precondzon e postcondzon possono essere defnte n mod dvers Lnguaggo naturale Lnguagg per le asserzon Lnguagg ad-hoc FOL può essere usata per questo scopo Logca 28
Algortmo d rcerca (1) Sa P un programma che mplementa la rcerca d un elemento x n un array ordnato d n element Precondzone: l array è ordnato Postcondzone: la varable logca found (un flag) dev essere vera se e solo se l elemento x esste nell array a Nota: P non mplementa necessaramente un algortmo d rcerca bnara Ma la precondzone è necessara n quel caso Logca 29
Algortmo d rcerca (2) La precondzone può essere formalzzata così: {" (1 n -1 a[] a[ + 1])} La postcondzone è Qund la struttura complessva è {found «$ (1 n Ù a[] = x)} {" (1 P n -1 {found «$ (1 a[] a[ + 1])} n Ù a[] = x)} Notare che gl element d un array sono ndcat, come d consueto, con parentes quadre Logca 30
Ordnamento (1) Sa ORD un programma che ordna un array a d n element senza rpetzon Precondzone: l array non contene rpetzon Postcondzone: l array ottenuto è ordnato (se un elemento x precede un elemento y nell array, allora x<y) Formalmente: { $, j(1 n Ù1 j n Ù ¹ j Ù a[ ] = a[ j])} ORD {" (1 n -1 a[ ] a[ + 1])} Logca 31
Ordnamento (2) Questa specfca è adeguata? Consderamo l esempo seguente: a prma dell esecuzone d ORD è [7 6 2 4 22] a dopo l esecuzone d ORD è [2 6 10 10 22] Soddsfa la postcondzone! La postcondzone deve asserre che tutt e sol gl element nell array da ordnare sono contenut nell array ordnato Logca 32
Logca 33 Ordnamento (3) Usamo un array b (non usato n ORD) per rferrc all array a prma dell esecuzone Occorre aggungere alla precondzone che b è esattamente come a La soluzone dventa ])))} [ ] [ ( ) ((1 (1 ]))) [ ] [ ( ) ((1 (1 1]) [ ] [ (1 { ])} [ ] [ (1 ]) [ ] [ 1 (1, { j b a n n j j j b a n j j n a a n ORD b a n j a a j n j n j = Ù $ " Ù = Ù $ " Ù + < " = " Ù = Ù ¹ Ù Ù $
Note Una specfca deve essere consderata come un contratto Deve contenere tutte le nformazon Senza assunzon a pror Quando qualche condzone è elmnata dalla precondzone, la specfca dventa nsoddsfacente Logca 34
Cos è una specfca? Una specfca formale è una descrzone matematca d un sstema Descrve che cosa deve fare l sstema Non (necessaramente) come deve farlo Esstono molt lnguagg d specfca dvers Logca 35
Logca 36 Esempo Comportamento d una lampada: Se premo l tasto, la luce s accende entro Δ untà d tempo Servono de predcat opportun: P_B(t): tasto premuto al tempo t L_On(t): luce accesa al tempo t Formula FOL " t(p_b(t) $ t1((t t1 t + Δ) Ù L_On(t1))) È corretta?
Logca 37 Note Una specfca può essere corretta ma non realstca Occorre fornre tutt vncol necessar Le formule descrvono un nseme d comportament, ossa quell che le soddsfano t(pb(t) t 1 ((t t 1 t + Δ) L_On(t 1 ))) La luce può essere accesa anche se nessuno preme l tasto
Logca 38 Nuova specfca della lampada (1) Schema d comportamento L_On L_Off L_Off P_B(t) Se premo l tasto la luce resta accesa per k untà d tempo e po s spegne L_Off(t): la luce è spenta ( t(l_on(t) L_Off(t))) t+k
Logca 39 Nuova specfca della lampada (2) Formalmente " t(p_b(t) " t 1 " t ((t 2 t 1 < t ((t + k + k) t 2 ) L_On(t L_Off(t 2 1 )) )) Ù Che succede se s preme l tasto quando la luce è accesa? La luce può essere accesa senza premere l tasto? E se l tasto è premuto due volte?
Logca 40 Specfca corretta (?) della lampada P_B(t) L_On L_Off L_Off t+k )) ( _ )) ( _ ) (( ) ( _ (, )) ( _ )) ( _ ) (( )) ( _ ) ( _ (( 4 5 4 5 3 5 3 4 3 1 1 1 t Off L t B P t t t t t Off L t t k t Off L t On L k t t t t t Off L t B P t Ù " " Ù + Ù + < " Ù "
Logca 41 Problem nella specfca d sstem È un problema noto n AI Il cosddetto frame problem: Come esprmere un domno dnamco n logca senza specfcare esplctamente le condzon che non sono modfcate da un azone Anche stuazon estremamente semplc possono rchedere formalzzazon complesse Molt sstem formal tengono conto del problema: Fluent calculus, event calculus, stuaton calculus, Non ce ne occupamo n questo corso
Dalla specfca alla prova: cenn Dopo aver specfcato requst d un algortmo (o d un sstema), occorre verfcare la correttezza del medesmo Se ho a dsposzone un modello matematco (ad esempo un assomatzzazone) dell mplementazone costruta, l lnea d prncpo posso ottenere la prova d correttezza come una dmostrazone d teorema Logca 42