Premessa

Ciao! Se è la prima volta che capiti su questo sito, ti consiglio di consultare la pagina principale di questo cosiddetto Giardino Digitale per scoprire meglio cos’è e come navigarlo.

Lo stato di questa nota è al momento: 🔴 Bozza.


Logica PER l’informatica: perché PER?

Focus: sintassi e semantica (interpretazione semantica della sintassi)
Fare differenza tra matematici “puri” e “sporchi”

1 - Strumenti

Rocq = proof assistant (prima si chiamava Coq, cambiato nome per un motivo)

  • funzionale
  • si cerca dimostrazioni da formule

Z3 = SMT-solver = dimostra teoremi

  • si dimostra che formule sono soddisfacibili

2 - Esempio

Abbiamo due affermazioni:

  1. “Se è un numero primo maggiore di , allora è dispari” che si rappresenta in simboli come:
  1. “Non esiste un caso in cui non è un numero primo maggiore di ”:

Domanda: è vero che non è dispari? In simboli:

Come facciamo a rispondere a questa domanda?

Procedimento:

  1. Astraiamo dal significato vero e proprio delle proposizioni
  2. Concentriamoci sulla struttura logica delle proposizioni:
    1. Introduciamo variabili proposizionali:
2. Riformuliamo il problema: "Possono le tre proposizioni logiche $A \implies B$, $\overline{\overline A}$ e $\overline B$ reggere?"
	Cioè:
	$$
	A \implies B \land \overline{\overline A} \land \overline B \overset{?}{=} TRUE
	$$

2.1 - Soluzione model-teorica/combinatoria

Esaminiamo tutte le possibili combinazioni:

[Tabella]

Non c’è un valore di verità che soddisfa tutte le formule proposizionali in una sola volta, quindi:

  • il problema non ha un modello
  • il problema è insoddisfacibile

2.2 - Soluzione deduttiva/proof-theoretic

Questa derivazione ha:

  • Delle assunzioni di partenza:
  • Delle regole:
  • Una conclusione: falso

Quindi \notB non può essere compatibile con \not\notA e .

3 - Esempio 2


Fonti