TP 5 : Révision

Systèmes Logiques

13/03/2024

Logique propositionnelle

Donnez la table de vérité de la proposition : (p⇒(qr)) ∧ (r∨¬q).

Correction
p q r (p⇒(qr)) ∧ (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 :

  1. Mettre P sous forme normale conjonctive.
  2. Prouvez que P ∧ HA ∧ HB est contradictoire en utilisant le système formel RF (résolution).
Correction
  1. On met VA sous forme conjonctive en distribuant le sur le : VA est équivalent à (HA∨¬HA) ∧ (HAFA) ∧ (¬HA∨¬FA) ∧ (FA∨¬FA). En enlevant les clauses triviales, on trouve VA équivalent à (HAFA) ∧ (¬HA∨¬FA). Par symmétrie, VB est équivalent à (HBFB) ∧ (¬HB∨¬FB).

Quand à P, on a :

  • HA ⇔ HB équivalent à HA ⇒ HB ∧ HB ⇒ HA, lui-même équivalent à HAHB) ∧ (¬HBHA).

  • Par énumération des modèles, on a VA ⇔ VB équivalent à HAFAHBFB) ∧ (¬HA∨¬FAHB∨¬FB) ∧ (HAFA∨¬HBFB) ∧ (HA∨¬FA∨¬HB∨¬FB) ∧ (HA∨¬FAHBFB) ∧ (HAFAHB∨¬FB) ∧ (¬HA∨¬FA∨¬HBFB) ∧ (¬HAFA∨¬HB∨¬FB)

  • VB ⇔ FA équivalent à VBFA) ∧ (¬FAVB). ¬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∨¬HBFB) ∧ (FAHB∨¬FB) ∧ (¬FAHBFB) ∧ (¬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 :

HAHB) ∧ (¬HBHA) ∧ (HA∨¬FAHBFB) ∧ (¬HA∨¬FA∨¬HBFB) ∧ (¬HAFA∨¬HB∨¬FB) ∧ (FA∨¬HBFB) ∧ (FAHB∨¬FB) ∧ (¬FAHBFB) ∧ (¬FA∨¬HB∨¬FB)

  1. On peut dériver une contradiction (la clause vide) ainsi :
  • Les clauses HB et (FA∨¬HBFB) permettent de dériver la clause (FAFB).
  • Les clauses HB et FA∨¬HB∨¬FB) permettent de dériver la clause FA∨¬FB).
  • HAFA∨¬HB∨¬FB) et HA puis HB (deux étapes de résolutions) donnent FA ∨ ¬FB
  • HA∨¬FA∨¬HBFB) et HA puis HB (deux étapes de résolutions) donnent ¬FA ∨ FB
  • FA ∨ ¬FB et FA ∨ FB permettent de dériver FA
  • ¬FA ∨ ¬FB et ¬FA ∨ FB permettent de dériver ¬FA
  • FA et ¬FA permettent de dériver la clause vide, contradiction !

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 :

  1. L’italien vit dans la maison du milieu.
  2. Le norvégien vit dans la maison bleue.
  3. L’espagnol vit dans la maison voisine, directement à droite de la maison rouge.

On considère les propositions atomiques suivantes :

  1. Exprimez les indications 1,2 et 3 en logique propositionnelle.
  2. Exprimez en logique propositionnelle le fait que chaque maison a exactement une couleur.
  3. Exprimez en logique propositionnelle le fait que chaque maison a exactement un habitant d’une nationalité.
  4. En déduire une proposition dont les solutions sont exactement les solutions possibles du problème.
Correction
  1. L’indication 1 correspond à la proposition P1 définie par V2I.

L’indication 2 correspond à la proposition P2 définie par (V1NM1B) ∧ (V2NM2B) ∧ (V3NM3B).

L’indication 3 correspond à la proposition P3 définie par ¬V1E ∧ V2E ⇒ M1R ∧ V3E ⇒ M2R.

  1. Le fait que la maison i a exactement une couleur s’exprime par Ci définie par (MiR⇒(¬MiB∧¬MiV)) ∧ (MiB⇒(¬MiR∧¬MiV)) ∧ (MiV⇒(¬MiB∧¬MiR)) ∧ (MiRMiBMiV).

Chaque maison a exactement une couleur se traduit donc par C définie comme C1 ∧ C2 ∧ C3.

  1. Le fait que dans la maison i, il y a exactement un habitant d’une seule nationalité se traduit par la proposition Ni définie par (ViN⇒(¬ViE∧¬ViI)) ∧ (ViI⇒(¬ViE∧¬ViN)) ∧ (ViE⇒(¬ViN∧¬ViI)) ∧ (ViIViEViN).

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.

  1. On en déduit que les solutions du problème s’expriment par la proposition P définie par P1 ∧ P2 ∧ P3 ∧ C ∧ N.

LPO

Donner un modèle et un contre-modèle des formules suivantes :

  1. x(P(x)⇒Q(x))
  2. x(∃y(P(x,y))).
  3. y(∀x(P(x,y))).
  4. x1, x2, x3.(P(x1)∧P(x2)∧P(x3)∧¬(x1=x2)∧¬(x2=x3)∧¬(x1=x3)).
Correction

Pour des raisons esthétiques et pédagogiques, on va éviter les modèles où le domaine est vide.

  1. Cette formule exprime intuitivement le fait que P est inclus dans Q.
  • Modèle M : U = {0}, PM = ∅, QM = {0}.
  • Contre-modèle C : U = {0}, PC = {0}, QM = ∅.
  1. Cette formule exprime intuitivement le fait que tout élément x est en relation avec au moins un y dans P.
  • Modèle M : U = {0}, PM = {(0,0)}.
  • Contre-modèle C : U = {0}, PC = ∅.

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.

  1. Cette formule exprime intuitivement le fait qu’il y a au moins un y qui est en relation avec tous les éléments du domaine.
  • Modèle M : U = {0}, PM = {(0,0)}.
  • Contre-modèle C : U = {0}, PC = ∅.

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)}.

  1. Intuitivement, cette formule exprime qu’il y a au moins trois éléments distincts dans P. On aura donc :
  • Modèle M : U = {0, 1, 2}, PM = U.
  • Contre-modèle C : U = {0}, PC = U.

Traduire en LPO:

  1. Les amis des amis d’Alice sont les amis de Bob.
  2. Alice a au moins trois amis.
  3. Toute personne a au moins un ami et un ennemi. Et il existe quelqu’un qui n’est ni un ami ni un ennemi.
  4. πx, y(σx < y(R(x,zS(y,u))).
  5. πx, yR(x,y,z) \ S(x,z,y))).
Correction
  1. x(Ami(Alice,x)⇒Ami(Bob,x)).
  2. xyz(xyyzxzAmi(Alice,x)∧Ami(Alice,y)∧Ami(Alice,z)) où on écrit x ≠ y pour la formule ¬(x=y).
  3. xaen(Ami(x,a)∧Ennemi(x,e)∧¬Ami(x,n)∧¬Ennemi(x,n)). Remarquez que pour simplifier, j’ai choisi ici la forme normale prénexe, mais on aurait pu avoir une forme plus élégante où les quantificateurs existentiels ont une portée ne contenant que les atomes qui les font intervenir.
  4. zu(x<yR(x,z)∧S(y,u)).
  5. z(R(x,y,z)∧¬S(x,y,z)).

Dessiner l’arbre syntaxique, donner les variables libres et mettre sous forme prénexe :

  1. R(x,y) ∧ ∃z(S(z)⇒T(x))
  2. y(R(x,y)) ∧ ∃x(∀z(S(z,x))⇒T(x))
  3. y(R(x,y)) ∧ ∃x(∀z(S(z,x))⇒T(y))
Correction
g A R R(x,y) A->R E ∃z A->E I E->I S S(z) I->S T T(x) I->T

Variables libres {x}.

Forme prénexe :

g A R R(x,y) A->R I A->I E ∃z E->A S S(z) I->S T T(x) I->T
g A Ey ∃y A->Ey Ex ∃x A->Ex R R(x,y) Ey->R I Ex->I Fz ∀z S S(z,x) Fz->S I->Fz T T(x) I->T

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.

g A R R(x,y) A->R I A->I Ey ∃y Ex ∃x₀ Ey->Ex Fz ∃z Ex->Fz Fz->A S S(z,x₀) I->S T T(x₀) I->T
  1. Presque la même formule mais cette fois-ci, on risque une capture sur y!
g A Ey ∃y A->Ey Ex ∃x A->Ex R R(x,y) Ey->R I Ex->I Fz ∀z S S(z,x) Fz->S I->Fz T T(y) I->T

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.

g A R R(x,y₀) A->R I A->I Ey ∃y₀ Ex ∃x₀ Ey->Ex Fz ∃z Ex->Fz Fz->A S S(z,x₀) I->S T T(x₀) I->T

Unifiez les termes suivants ou dire si cela n’est pas possible :

  1. f(x,h(y))=?f(z,y)
  2. f(x,h(y),s(x,z))=?f(h(y), h(x), s(h(y),x)
  3. h(g(x,f(y),f(z)))=?h(g(f(y),z,t)).
Correction
  1. 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.

  2. 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.

  3. 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))))

Correction

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)))