14. Come interpretare unicità? l uguaglianza Problema: vogliamo formalizzare in logica classica 1. Marcello ha un unica laurea L(x,y)= x è una laurea di y m=marcello 2. Il programma fattoriale su input 2 dà un unico output. O(x, y, z)= il programma y su input z dà output il numero x f=il programma fattoriale 2= due 3. Certi potenti pensano solo a se stessi O(x)= x è potente P(x,y)=x pensa a y soluzione: estendiamo il linguaggio predicativo il simbolo di uguaglianza fra generici termini t, s t = s la cui interpretazione in un fissato dominio D è ottenuta per sostituzione da (x = y) D ( ) : D 2 {0, 1} x = y D (d 1, d 2 ) { 1 se d 1 = d 2 0 se d 1 d 2 esempio: supposto t c 1 e s c 2 costanti allora regole dell uguaglianza (c 1 = c 2 ) D (x = y) D (c D 1, c D 2 ) = ax Γ t = t, Σ, Γ(s), t = s (s), = S 1
Come usare le regole di uguaglianza? Nella regola Σ, Γ(s), t = s (s), = S dall alto verso il basso: NON TUTTE le occorrenze di t DEVONO essere rimpiazzate s dal basso verso l alto: NON TUTTE le occorrenze di s DEVONO essere rimpiazzate t. Esempio 1: Se vogliamo derivare la simmetria dell uguaglianza t = s s = t in LC = si può applicare la regola = S in tal modo: si identifichi Σ Γ(x) (x) x = t e quindi si ha che (t) t = t (s) s = t e dunque il sequente si può derivare in tal modo: = ax t = s t = t t = s s = t = S Esempio 2: Se vogliamo derivare la transitività dell uguaglianza t = u, u = s t = s in LC = si può applicare la regola = S in tal modo: si identifichi Σ t = u Γ(x) (x) t = x e quindi si ha che (u) t = u (s) t = s e dunque il sequente si può derivare in tal modo: ax id t = u, u = s t = u t = u, u = s t = s = S Esercizi su uguaglianza Nella logica classica predicativa uguaglianza LC = stabilire se sono validi o meno, o soddisfacibili o meno i seguenti sequenti: 1. x x = x 2. x x = c 3. y x ( y = z x = z ) 4. y x z ( x = y & y = z x = z ) Formalizzare le frasi seguenti e provare se sono validi o meno, e soddisfacibili o meno: 2
1. 2. 3. Il programma fattoriale su 3 dà come unico output 6. Il programma fattoriale su 3 dà output il numero x. Il numero x è uguale a 6. 6= il numero sei Il programma fattoriale su 2 dà un unico output. Il programma fattoriale su 2 dà output il numero 2. Il programma fattoriale su 2 dà output il numero x. Il numero x è uguale 2. 2= il numero due Il programma fattoriale su 2 dà un unico output. Il programma fattoriale su 2 dà output 2. 2 è diverso da 3 Il programma fattoriale su 2 non dà output 3. 2= il numero due 3
Logica classica uguaglianza- LC = ax-id ax- Γ, A, Γ, A, Γ,, Γ Σ, Γ, Θ, Γ, Σ Σ, Γ, Θ, Γ, Σ sc sx Γ Σ,, Θ,, Γ Σ,, Θ,, sc dx Γ, A, B Γ, A&B &S Γ A, Γ B, Γ A&B, Γ, A Γ, B Γ, A B S Γ A, B, Γ A B, D Γ A, Γ, A S Γ, A Γ A, D Γ A, Γ, B S Γ, A B Γ, x A(x), A(t) Γ, x A(x) S Γ, A B, Γ A B, D Γ A(w), Γ xa(x), Γ, A(w) Γ, x A(x) S (w V L(Γ, x A(x), )) Γ A(t), x A(x), Γ x A(x), Σ, Γ(s), t = s (s), = S = ax Γ t = t, & D D (w V L(Γ, xa(x), )) D 4
14.bis Come falsificare un sequente variabili libere? Si ricordi che una formula fr(y 1,..., y n ) è VERA in un modello D PER OGNI (d 1,..., d n )εd n fr(y 1,..., y n ) D (d 1,..., d n ) = 1 ( y 1 y 2... y n fr( y 1, y 2,..., y n ) ) D = 1 una formula fr(y 1,..., y n ) è FALSA in un modello D ESISTONO (d 1,..., d n )εd n fr(y 1,..., y n ) D (d 1,..., d n ) = 0 Nel seguito indichiamo una lista finita di variabili in tal modo y y 1, y 2,..., y n Per abbreviare usiamo la scrittura Γ(y) intendendo che le variabili libere occorrenti in Γ(y) sono incluse nella lista y y 1, y 2,..., y n (e quindi nella lista potrebbero esserci variabili che non compaiono nella lista di formule Γ(y)). Memo un sequente Γ & (y) (y) è FALSO in un modello D ESISTONO (d 1,..., d n )εd n ( Γ & (y) (y) ) D (d 1,..., d n ) = 0 5