Conseguenza semantica Quando dalla soddisfazione di un insieme di formule consegue la soddisfazione di un’altra formula Siano G LS(X) e j LS(X) , G |= j (j segue da G) ses per ogni S-algebra A e per ogni valutazione v di X in A (A|=V x per ogni x G) implica A |=V j Esercizio 23: è equivalente definire la conseguenza semantica come “ses (per ogni S-algebra A A|= x per ogni x G) implica (per ogni S-algebra A A |= j)”
Sistemi deduttivi Un sistema deduttivo è una relazione fra insiemi di formule G (gli assiomi assunti veri) e formule j (le formule dedotte a partire dagli assiomi) indicato G |- j Un sistema deduttivo per la nostra logica è sound (corretto) se G |- j implica G |= j. Un sistema deduttivo è completo rispetto ad una classe di formule F se G |= j implica G |- j per ogni j F Perché abbia un’utilità pratica un sistema deduttivo deve essere: Sound (non vogliamo dedurre falsità) Completo rispetto ad una classe ragionevolmente ampia di formule Descritto in modo effettivo, cioè in modo da poter essere usato come mezzo di calcolo Di solito un sistema deduttivo si presenta mediante un insieme di regole di inferenza
Un sistema deduttivo per la nostra logica stile deduzione naturale non considera i combinatori derivati Esercizio 23 bis: trovarfe un insieme di combinatori minimali per la nostra logica sound e completo se consideriamo algebre con carriers non vuoti preliminari sostizuzione (di variabili con termini) : X TS(Y) applicare una sostituzione t TS(X), t[] TS(Y) j LS(X), j[] LS(Y) potrebbe essere indefinito, nei casi in cui una variabile libera diventi legata (,) Esercizio 24: definire t[] e j[] indicando quando quest’ultima non è definita.
Il sistema |- (1) _______ _____________ _______ _______ F |- F _______ F F Assumption F1 F2 |- F G _____________ F1 |- F F2 |- G -introduction F |- F _______ F |- F G -left elimination F |- G _______ F |- F G false formula atomica sempre falsa -rigt elimination F1 F2 |- G _____________________________ F1 {F } |- G F2 {F false} |- G Tertium non datur
Il sistema |- (2) _________ F |- F _________ F |- false Absurdity F1 F2 |- G1 … Gi-1 F1 … Fn Gi+1 … Gk H ___________________________________________ F1 |- F1 … Fn Gi F2 |- G1 … Gk H Cut F |- F1 … Fn G __________________ F {F1, …, Fn } |- G -introduction F |- F _________ F |- x . F -elimination F |- x . F _________ F |- F se x non occorre libero in F -introduction
Il sistema |- (3) _________ ____________________ F |- x =e x _________ per x X Reflexivity F |- (x in F x =eq(x)) F[q] ____________________ F |- F q sostituzione, F[q] definito Congruence F[q] |- (x in F Def(q(x))) F[q] ________________________ F |- F q sostituzione, F[q] e F[q] definiti Substitution F |- Def(t1) ___________ F |- Def(t) t1 sottotermine di t Function strictness F |- Def(ti) ______________ F |- p(t1,…, tn) 1 ≤ I ≤ n Predicate strictness
Estensione per uguaglianza forte regole derivate F |- t = t _________ per t TS(X) Reflexivity F |- t1 = t2 __________ F |- t1 = e t2 Equality 1 F |- t1 =e t2 ___________________ F |- Def(t1) F |- t1 = t2 Equality 2 F |- t1 = t2 ________________________________ F |- Def(t1) false F |- Def(t2) false Equality 3 F |- (x in F x = q(x)) F[q] ____________________ F |- F q sostituzione, F[q] definito Congruence
Notare il sistema è importante per aiutarvi a ragionare voi sulle formule niente esercizi fare una prova completa esistono tools per aiutare a fare/automatizzare le prove
Applicazione/esempio grande Madre di tutti gli esercizi/esempi la più usata specifica nelle applicazioni vere dare la specifica della struttura dati mappe finite, per semplicità da stringhe di caratteri in naturali si richiedono operazioni per rappresentare tutti i dati (caratteri, stringhe, naturali, mappe) costruttori operazioni sulle mappe: mappa vuota (nessuna associazione) aggiungere/eliminare/modificare una associazione trovare il numero associato ad una stringa dominio/codominio di una mappa controllare se una mappa è vuota/è una funzione
Naturali Sort nat Opn 0: nat succ: nat -> nat Axiom D(0) D(succ(x)) Solo modelli term-genrated Esercizio 25: aggiungere le 5 operazioni (+.-.X,mod, div) Esercizio 26: aggiungere < e ≤.
< _<_: nat x nat 0< succ(x) [stessa cosa x. 0< succ(x) ] Derivata dalle altre due di sotto x < succ(x) x < y x < succ(y)
Stringhe di caratteri Sort char, string Opns L: string -- stringa vuota _:_ :char x string -> string --aggiunta elemento in testa `A’,….,`Z’ char Preds
Mappe basiche
Operazione xxxx sulle mappe