Previous Up
Eléments de logique pour l’informatique 2022–23


Annexe A  Correction des exercices du cours

A.1  Exercices du chapitre 1

Exercice 1
  1. x, (joue(self,x)⇒ ami(self,x))
  2. x, ∃ y, ami(x,y)
  3. ¬ (∃ x, (joue(self,x) ∧ ami(self,x))) ou de manière équivalente x, ((¬ joue(self,x)) ∨ (¬ ami(self,x))
  4. x y, (joue(self,x) ∧ joue(self,y)∧ ¬(x=y)) sans la mention de xy la formule est vraie dès qu’il existe une personne avec qui je joue.
Exercice 2

x y, ((pair(x)∧ pair(y))⇒ pair(x+y))

Exercice 3
Exercice 4

La formule parenthésée est (∀ x, (R(x) ⇒ Q)) ⇒ ((¬ Q) ⇒ (¬ (∃ x, R(x)))) et sous forme d’arbre :

Exercice 5

Les formules parenthésées sont (P ⇒ (QR)) ⇒ ((PQ) ⇒ R) et (PQ) ⇒ ((¬ Q) ⇒ (¬ P)) et sous forme d’arbre

Exercice 6
Exercice 7

La seule variable libre de la formule : b, b > 0 ⇒ ∃ q, ∃ r, a = b × q + rr < b est la variable a.

Exercice 8
  1. La formule ((PQ) ⇒ P) ⇒ P est valide. En effet soit P est vrai et elle est vraie. Soit P est faux, mais alors PQ est vrai et donc (PQ) ⇒ P est faux et donc ((PQ) ⇒ P) ⇒ P est vrai. Dans toutes les interprétations possibles, la formule est vraie. Donc elle est valide.
  2. La formule PP) ⇒ P est valide. En effet soit P est vrai et elle est vraie. Soit P est faux, mais alors ¬ P est vrai et donc ¬ PP est faux et donc PP) ⇒ P est vrai. Dans toutes les interprétations possibles, la formule est vraie. Donc elle est valide.
Exercice 9

On peut faire une table de vérité de cette dernière formule en fonction des valeurs de P1 et P2 et chercher dans quels cas elle est vraie.

On peut aussi raisonner directement.

Comme A2 est de la forme A1B, si A1 est vrai alors A2 est vrai et donc la troisième formule est fausse. Donc A1 est faux et A2 est vrai et on a P2 ∧ ¬ P1 donc il faut ouvrir la deuxième porte.

Exercice 10

La formule (∀ x, P(x)) ⇒ ∃ x, P(x) est vraie quelle que soit l’interprétation de P. En effet si on se donne une interprétation I sur une domaine D, qui rend vraie x, P(x). L’interprétation de P est vraie pour toutes les valeurs dans le domaine D. Comme le domaine est non vide, on peut choisir dD. L’interprétation de P est vraie pour d et donc x, P(x) est vraie dans cette interprétation.

La formule ¬(∀ x, P(x)) ⇒ ∃ x, ¬ P(x) est vraie quelle que soit l’interprétation de P. En effet si on se donne une interprétation I sur une domaine D, qui rend vraie ¬(∀ x, P(x)). Cette interprétation rend faux x, P(x) ce qui veut dire qu’il existe dD pour lequel l’interprétation P est fausse et donc l’interprétation de x, ¬ P(x) est vraie.

Exercice 11

tu  =def  ∃ n, n+t=u.

Exercice 12

Les définitions utilisent la notion d’ordre strict t<u qui peut se définir par n, S(n+t)=u.

  1. Le fait que r est le résultat de la division entière de x par y peut se représenter par la formule r, x = d× y +rr < y.
  2. Le fait que r est le reste modulo de la division entière de x par y peut se représenter par la formule d, x = d× y + rr < y.
  3. Si on remplace y par 0 dans la définition de divisibilité, on obtient la formule r, x = d× 0 +rr < 0 qui se développe en r, x = d× 0 +r ∧ (∃ n, S(n+r) = 0) formule qui est toujours fausse si on se place dans un monde qui satisfait les axiomes de la théorie arithmétique et en particulier x, S(x)≠0.
  4. Pour représenter le résultat de la division de a par b à l’aide d’un prédicat à trois arguments, il suffit d’introduire une nouvelle variable d et d’utiliser la formule div(a,b,d). Dans le cas de (x/y)/z=x/(y× z), ill y a trois opérations de division, on introduit donc trois nouvelles variables d1, d2 et d3. d1 est le résultat de la division de x par y, ce qui se traduit par div(x,y,d1), d2 est le résultat de la division de x/y (c’est-à-dire d1) par z ce qui se traduit par div(d1,z,d2), finalement d3 est le résultat de la division de x par y× z ce qui se traduit par div(x,y× z,d3). Il suffit alors d’exprimer que sous ses hypothèses on a d2=d3. Ce qui s’écrit
    ∀ d1 d2  d3div(x,y,d1)∧ div(d1,z,d2)∧ div(x,y× z,d3)⇒ d2=d3
    Il est possible de montrer que la relation div est fonctionnelle c’est-à-dire que div(x,y,d1)∧ div(x,y,d2)⇒ d1=d2, la formule précédente peut donc se simplifier en
    ∀ d1 d2div(x,y,d1)∧ div(d1,z,d2)⇒ div(x,y× z,d2)
Exercice 13

Il est nécessaire en plus du prédicat pos(i,j,k) qui exprime que le chiffre k est sur la case (i,j) de disposer du prédicat d’égalité pour pouvoir dire qu’un chiffre apparait au plus une fois.

  1. Au plus un seul chiffre k par case (i,j): i j k, pos(i,j,k) ⇒ ∀ l, ¬ l=k⇒ ¬ pos(i,j,l)
  2. Chaque chiffre k apparaît sur chaque ligne i au moins dans une colonne j: i k, ∃ j, pos(i,j,k)
  3. Chaque chiffre k apparaît au plus une fois sur chaque ligne i (s’il est dans la colonne j, il n’est pas dans une autre colonne) : i j1 j2 k, pos(i,j1,k)∧ pos(i,j2,k)⇒ j1=j2
  4. Le cas des colonnes est analogue à celui des lignes. On traite ici la notion de carré. Si on veut éviter de traiter chaque valeur de ligne et de colonne individuellement, on peut introduire un symbole de fonction tiers unaire qui, étant donné une ligne ou une colonne, va nous dire dans quel tiers du tableau elle se trouve (premier, deuxième ou troisième). On peut ainsi tester si deux positions (i1,j1) et(i2,j2) seront dans le même carré si et seulement si les indices de ligne sont dans le même tiers du tableau et de même pour les indices de colonnes.

    Pour représenter le fait que chaque chiffre k apparaît au plus une fois dans chaque carré on utilisera la formule :

    ∀ i1 i2 j1 j2 ktiers(i1)=tiers(i2)∧ tiers(j1)=tiers(j2)
          ⇒ pos(i1,j1,k)∧  pos(i2,j2,k)
          ⇒ i1=i2∧ j1=j2

    On peut aussi représenter le fait que chaque chiffre apparaitra au moins une fois dans chaque carré de la manière suivante :

    ∀ i1 j1 k, ∃ i2 j2tiers(i1)=tiers(i2)∧ tiers(j1)=tiers(j2)∧ pos(i2,j2,k)

    Les deux formules sont redondantes dès lors qu’il y a 9 valeurs et 9 cases. En effet, on a écrit qu’il y avait au moins une valeur par case et qu’il ne pouvait pas y avoir deux fois la même valeur, donc chaque valeur va apparaître au moins une fois car une application injective (resp. surjective) d’un ensemble fini dans un ensemble de même cardinal est bijective.

  5. On exprime dans la logique le fait qu’on a 9 valeurs possibles pour les lignes, les colonnes et les chiffres dans les cases. Cela se fait en ajoutant 9 constantes :1,…,9. Il faut un axiome qui dit que l’univers est formé uniquement de ces 9 éléments x,x=1∨ …∨ x=9 auquel il faut ajouter les 36 axiomes qui disent que les constantes sont différentes deux à deux ¬1=21=3,…,¬1=92=3,…, ¬8=9.

    Il faudra aussi ajouter les 9 axiomes qui permettent de raisonner sur la fonction tiers à savoir tiers(1)=1,tiers(2)=1,tiers(3)=1,…,,tiers(9)=3.

Exercice 14
nbsymb(p)=0     si p atomique 
nbsymb(¬ A)=1+ nbsymb(A
nbsymb(∀ xA)= 1+nbsymb(A
nbsymb(∃ xA)= 1+nbsymb(A
       
   
nbsymb(A∧ B)=1+ nbsymb(A)+nbsymb(B
nbsymb(A∨ B)=1+ nbsymb(A)+nbsymb(B
nbsymb(A⇒ B)=1+ nbsymb(A)+nbsymb(B)
Exercice 15
prof(p)=0     si p atomique 
prof(¬ A)=1+ prof(A
prof(∀ xA)= 1+prof(A
prof(∃ xA)= 1+prof(A
       
   
prof(A∧ B)=1+ max(prof(A),prof(B)) 
prof(A∨ B)=1+ max(prof(A),prof(B)) 
prof(A⇒ B)=1+ max(prof(A),prof(B)) 
Exercice 16
Exercice 17

On considère ici des termes qui ne contiennent pas de variable

Exercice 18

La théorie de l’égalité contient les axiomes pour la reflexivité, la symétrie et la transitivité ainsi que des axiomes pour les symboles de fonctions et les prédicats d’arité au moins 1. Dans le cas de la signature qui est donnée, il y aura donc deux axiomes

  1. x1 x2 y1 y2, x1=x2y1=y2g(x1,y1)=g(x2,y2)
  2. x1 x2 y1 y2, x1=x2y1=y2Q(x1,y1)⇒ Q(x2,y2)

On veut montrer que la formule t=uP[xt]⇒ P[xu] est valide pour n’importe quelle formule P du langage.

On commence par montrer un cas particulier à savoir que la formule t=uv[xt]=v[xu] est valide pour n’importe quel terme v du langage. On se place dans une interprétation qui rend vraie la formule t=u (et les axiomes de l’égalité) et on utilise une récurrence sur la structure du terme v pour montrer que v[xt]=v[xu] est également vraie dans cette interprétation.

On montre ensuite par récurrence sur la formule P que pour tous les termes t et u et toute interprétation qui rend vraie t=u, on a P[xt]⇒ P[xu] est vraie quelque soit l’environnement pour les valeurs des variables libres de P[xt].


Previous Up