Systèmes Logiques
13/03/2024
Donnez la table de vérité de la proposition : (p⇒(q∨r)) ∧ (r∨¬q).
p | q | r | (p⇒(q∨r)) ∧ (r∨¬q) |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
On considère les propositions atomiques HA, HB, FA, FB et les propositions suivantes :
Quand à P, on a :
HA ⇔ HB équivalent à HA ⇒ HB ∧ HB ⇒ HA, lui-même équivalent à (¬HA∨HB) ∧ (¬HB∨HA).
Par énumération des modèles, on a VA ⇔ VB équivalent à (¬HA∨FA∨HB∨FB) ∧ (¬HA∨¬FA∨HB∨¬FB) ∧ (HA∨FA∨¬HB∨FB) ∧ (HA∨¬FA∨¬HB∨¬FB) ∧ (HA∨¬FA∨HB∨FB) ∧ (HA∨FA∨HB∨¬FB) ∧ (¬HA∨¬FA∨¬HB∨FB) ∧ (¬HA∨FA∨¬HB∨¬FB)
VB ⇔ FA équivalent à (¬VB∨FA) ∧ (¬FA∨VB). ¬VB est directement sous forme clausal après application des lois de De Morgan, on peut donc distribuer FA dans chacune des clause. Pour ¬FA ∨ VB, on distribue ¬FA dans chacune des clauses de la forme clausale de FA. On obtient donc (FA∨¬HB∨FB) ∧ (FA∨HB∨¬FB) ∧ (¬FA∨HB∨FB) ∧ (¬FA∨¬HB∨¬FB)
Donc la forme clausale de P est la conjonction de ces trois formes clausales.
On peut enlever certaines clauses qui sont incluses dans d’autres (donc si la plus petite est satisfaite, la plus grande aussi). On obtient ainsi :
(¬HA∨HB) ∧ (¬HB∨HA) ∧ (HA∨¬FA∨HB∨FB) ∧ (¬HA∨¬FA∨¬HB∨FB) ∧ (¬HA∨FA∨¬HB∨¬FB) ∧ (FA∨¬HB∨FB) ∧ (FA∨HB∨¬FB) ∧ (¬FA∨HB∨FB) ∧ (¬FA∨¬HB∨¬FB)
Dans une rue, il y a trois maisons côte à côte. L’une est rouge, l’une est verte et l’une est bleue. Dans l’une vit un espagnole, dans une autre vit un italien et dans une autre vit un norvégien.
On sait que :
On considère les propositions atomiques suivantes :
L’indication 2 correspond à la proposition P2 définie par (V1N⇒M1B) ∧ (V2N⇒M2B) ∧ (V3N⇒M3B).
L’indication 3 correspond à la proposition P3 définie par ¬V1E ∧ V2E ⇒ M1R ∧ V3E ⇒ M2R.
Chaque maison a exactement une couleur se traduit donc par C définie comme C1 ∧ C2 ∧ C3.
Le fait que dans chaque maison, il y a exactement un habitant d’une seule nationalité se traduit par la proposition N définie par N1 ∧ N2 ∧ N3.
Donner un modèle et un contre-modèle des formules suivantes :
Pour des raisons esthétiques et pédagogiques, on va éviter les modèles où le domaine est vide.
Si on veut éviter d’utiliser l’ensemble vide, on peut aussi considérer le contre-modèle K défini par U = {0, 1}, PK = {(0,0)}. En effet, pour x = 1, on ne peut pas trouver de y telle que (1,y) ∈ PK.
On peut aussi regarder le contre-modèle K : U = {0, 1}, PK = {(0,0)} et le modèle N sur le même domaine mais avec PN = {(0,0), (1,0)}.
On peut se convaincre que tout modèle de (3) est un modèle de (2) (exercice bonus : le prouver en calcul des séquents pour plus de fun !). Cela veut dire, en particulier, que (2) est une conséquence logique de (3).
Le contraire n’est pas vrai cependant. On peut trouver un modèle de (2) qui n’est pas un modèle de (3). Par exemple J, défini sur le domaine U = {0, 1} et PJ = {(0,0), (1,1)}.
Traduire en LPO:
Dessiner l’arbre syntaxique, donner les variables libres et mettre sous forme prénexe :
Variables libres {x}.
Forme prénexe :
Variables libres {x}.
Forme prénexe, attention à la capture, on renomme la variable x liée en x0. De plus, le quantificateur universel sur z étant à gauche de l’implication, il devient existentiel.
Variables libres {x, y}.
Forme prénexe, attention aux captures, on renomme les variables x, y liées en x0, y0. De plus, le quantificateur universel sur z étant à gauche de l’implication, il devient existentiel.
Unifiez les termes suivants ou dire si cela n’est pas possible :
Pour unifier ces termes, on doit unifier x=?h(y) et h(y)=?y. On échoue immédiatement car h(y)=?y est un cas d’arrêt de l’algorithme de Robinson, ces termes n’étant trivialement pas unifiables.
On doit unifier x=?h(y), h(y)=?h(x), s(x,z)=?s(h(y),x). En remplaçant x par h(y) dans tous les termes, on doit unifier x=?h(y), h(y)=?h(h(y)), s(h(y),z)=?s(h(y),h(y)). On déconstruit h(y)=?h(h(y)), on doit donc unifier : x=?h(y), y=?h(y), s(h(y),z)=?s(h(y),h(y)). On échoue pour les mêmes raisons qu’au-dessus.
On doit unifier g(x,f(y),f(z))=?g(f(y),z,t). On déconstruit g et on doit unifier x=?f(y), f(y)=?z, f(z)=?t. On remplace z par f(y) et on se retrouve à unifier : x=?f(y), z=?f(y), t=?f(f(y)). On a trouvé un unificateur le plus général !
Prouvez, en utilisant le calcul des séquents que la formule suivante est valide :
∀x(P(0,x)) ∧ ∀x(∀y(P(x,y)⇒P(s(x),s(y)))) ⇒ P(s(0),s(s(0))))
Axiome
P(0,s(0)) ⊢ P(0,s(0))
(Affaiblissement droit)
P(0,s(0)) ⊢ P(0,s(0)), P(s(0),s(s(0)))
Axiome
P(s(0),s(s(0))) ⊢ P(s(0),s(s(0)))
(Affaiblissement gauche)
P(0,s(0)), P(s(0),s(s(0))) ⊢ P(s(0),s(s(0)))
(⇒ gauche)
P(0,s(0)), P(0,s(0)) ⇒ P(s(0),s(s(0))) ⊢ P(s(0),s(s(0)))
(∀ gauche, en choisissant y = s(0))
P(0,s(0)), ∀y(P(0,y)⇒P(s(0),s(y)))) ⊢ P(s(0),s(s(0)))
(∀ gauche, en choisissant x = 0)
P(0,s(0)), ∀x(∀y(P(x,y)⇒P(s(x),s(y)))) ⊢ P(s(0),s(s(0)))
(∀ gauche, en choisissant x = s(0))
∀x(P(0,x)), ∀x(∀y(P(x,y)⇒P(s(x),s(y)))) ⊢ P(s(0),s(s(0)))
(∧ gauche)
∀x(P(0,x)) ∧ ∀x(∀y(P(x,y)⇒P(s(x),s(y)))) ⊢ P(s(0),s(s(0)))
(⇒ droit)
⊢ ∀x(P(0,x)) ∧ ∀x(∀y(P(x,y)⇒P(s(x),s(y)))) ⇒ P(s(0),s(s(0)))