Logique du premier ordre - FIL Lille 1salvati/cours/logique/...opérateur unaire : S, le successeur...

196
Logique du premier ordre Sylvain Salvati

Transcript of Logique du premier ordre - FIL Lille 1salvati/cours/logique/...opérateur unaire : S, le successeur...

  • Logique du premier ordre

    Sylvain Salvati

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraite

    3 Les relations

    4 La quantification

    5 Logique et programmation

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,

    • sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.

    • son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,

    • l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.• son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle

    • la sémantique d’une formule étant la valeur qu’elle prend pourchaque modèle/valuation, autrement dit sa table de vérité.

    • son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.

    • son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.• son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.• son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,

    • le codage de problèmes à contraintes dans SAT pour les résoudrerapidement.

  • La logique propositionnelle

    De la logique propositionnelle, nous avons vu :• sa syntaxe : la façon de représenter des formules, la notion de terme,• sa sémantique :

    • les modèles des formules : les valuations,• l’évaluation d’une formule avec une valuation : vérification de modèle• la sémantique d’une formule étant la valeur qu’elle prend pour

    chaque modèle/valuation, autrement dit sa table de vérité.• son rôle en programmation :

    • l’utilisation des booléens en programmation et la possibilité deraisonner sur le flot du programme,

    • la résolution du problème de satisfiabilité,• le codage de problèmes à contraintes dans SAT pour les résoudre

    rapidement.

  • Les limites de la logique propositionnelle

    La logique propositionnelle ne parle que de vérité :• elle ne permet pas de faire référence à des objets, ou à des notions,• elle ne permet pas de mettre objets ou notions en rapport.

    La logique du premier ordre est un langage qui permet de dépasser ceslimites.

  • Les limites de la logique propositionnelle

    La logique propositionnelle ne parle que de vérité :• elle ne permet pas de faire référence à des objets, ou à des notions,• elle ne permet pas de mettre objets ou notions en rapport.

    La logique du premier ordre est un langage qui permet de dépasser ceslimites.

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraiteTermes, variables, équations et programmationInterprétation des termes

    3 Les relations

    4 La quantification

    5 Logique et programmation

  • La modélisation des objets par des termesEn logique du premier ordre, on utilise des termes pour modéliser lesobjets et les concepts.

    Voici quelques exemples :

    • les termes de la logique propositionnelle,• les termes construits avec les opérateurs suivants pour représenter

    les nombres et les calculs associés :• constante : 0, zéro• opérateur unaire : S, le successeur• opérateurs binaires : + et ×, l’addition et la multiplication

    S(+(S(0),×(S(S(0)),S(0))))S(S(0) + S(S(0))× S(0))

    S

    +

    S

    0

    ×

    S

    S

    0

    S

    0

  • La modélisation des objets par des termesEn logique du premier ordre, on utilise des termes pour modéliser lesobjets et les concepts.Voici quelques exemples :• les termes de la logique propositionnelle,

    • les termes construits avec les opérateurs suivants pour représenterles nombres et les calculs associés :• constante : 0, zéro• opérateur unaire : S, le successeur• opérateurs binaires : + et ×, l’addition et la multiplication

    S(+(S(0),×(S(S(0)), S(0))))S(S(0) + S(S(0))× S(0))

    S

    +

    S

    0

    ×

    S

    S

    0

    S

    0

  • La modélisation des objets par des termesEn logique du premier ordre, on utilise des termes pour modéliser lesobjets et les concepts.Voici quelques exemples :• les termes de la logique propositionnelle,• les termes construits avec les opérateurs suivants pour représenter

    les nombres et les calculs associés :• constante : 0, zéro• opérateur unaire : S, le successeur• opérateurs binaires : + et ×, l’addition et la multiplication

    S(+(S(0),×(S(S(0)), S(0))))S(S(0) + S(S(0))× S(0))

    S

    +

    S

    0

    ×

    S

    S

    0

    S

    0

  • Termes typés : motivation et exempleLorsque l’on modélise, il arrive que l’on manipule des concepts distincts.Au niveau des termes cela se traduit par l’utilisation de typage.

    Supposons que l’on souhaite modéliser un petit langage deprogrammation sur les entiers :

    • Des variables contenant des entiers de type Var,

    • Des entiers et des expressions de type Int :

    Expression Type Descriptioni Int entier en écriture décimale+ Int× Int→ Int opérateur d’addition− Int× Int→ Int opérateur de soustraction× Int× Int→ Int opérateur de multiplication! Var→ Int récupération de la valeur associée à une variable

    • Des expressions booléennes de type Bool :

    Expression Type Description, ≤, ≥, = Int× Int→ Bool comparaison d’entier&&, ||, not Bool× Bool→ Bool opérateurs booléens

    • Des commandes de type Command :

    Expression Type Descriptionite Bool× Command× Command→ Command branchement conditionnelwhile Bool× Command→ Command boucle while:= Var× Int→ Command l’affectation de variable; Command× Command→ Command la composition de commandes

  • Termes typés : motivation et exempleLorsque l’on modélise, il arrive que l’on manipule des concepts distincts.Au niveau des termes cela se traduit par l’utilisation de typage.Supposons que l’on souhaite modéliser un petit langage deprogrammation sur les entiers :

    • Des variables contenant des entiers de type Var,• Des entiers et des expressions de type Int :

    Expression Type Descriptioni Int entier en écriture décimale+ Int× Int→ Int opérateur d’addition− Int× Int→ Int opérateur de soustraction× Int× Int→ Int opérateur de multiplication! Var→ Int récupération de la valeur associée à une variable

    • Des expressions booléennes de type Bool :

    Expression Type Description, ≤, ≥, = Int× Int→ Bool comparaison d’entier&&, ||, not Bool× Bool→ Bool opérateurs booléens

    • Des commandes de type Command :

    Expression Type Descriptionite Bool× Command× Command→ Command branchement conditionnelwhile Bool× Command→ Command boucle while:= Var× Int→ Command l’affectation de variable; Command× Command→ Command la composition de commandes

  • Termes typés : motivation et exempleLorsque l’on modélise, il arrive que l’on manipule des concepts distincts.Au niveau des termes cela se traduit par l’utilisation de typage.Supposons que l’on souhaite modéliser un petit langage deprogrammation sur les entiers :

    • Des variables contenant des entiers de type Var,• Des entiers et des expressions de type Int :

    Expression Type Descriptioni Int entier en écriture décimale+ Int× Int→ Int opérateur d’addition− Int× Int→ Int opérateur de soustraction× Int× Int→ Int opérateur de multiplication! Var→ Int récupération de la valeur associée à une variable

    • Des expressions booléennes de type Bool :

    Expression Type Description, ≤, ≥, = Int× Int→ Bool comparaison d’entier&&, ||, not Bool× Bool→ Bool opérateurs booléens

    • Des commandes de type Command :

    Expression Type Descriptionite Bool× Command× Command→ Command branchement conditionnelwhile Bool× Command→ Command boucle while:= Var× Int→ Command l’affectation de variable; Command× Command→ Command la composition de commandes

  • Termes bien typéSi on dispose d’opérateurs typé, on ne travaille plus qu’avec des termesbien typés, c’est-à-dire avec des termes auxquels ont peut associer untype :• Soit t1, . . . , tn sont des termes bien typés de types respectifs α1,

    . . . , αn, ce que l’on note t1 : α1,. . . , tn : αn,• soit f est un opérateur de type α1 × · · · × αn → α,• le terme f (t1, . . . , tn) est un terme bien typé de type α

    Mal typéite

    5 :=

    x 3

    :=

    x 4

    Bien typé;

    :=

    x 4

    ;

    :=

    y 1

    while

    >

    !

    x

    0

    ;

    :=

    y ×

    !

    y

    !

    x

    :=

    x −

    !

    x

    1

  • Termes bien typéSi on dispose d’opérateurs typé, on ne travaille plus qu’avec des termesbien typés, c’est-à-dire avec des termes auxquels ont peut associer untype :• Soit t1, . . . , tn sont des termes bien typés de types respectifs α1,

    . . . , αn, ce que l’on note t1 : α1,. . . , tn : αn,• soit f est un opérateur de type α1 × · · · × αn → α,• le terme f (t1, . . . , tn) est un terme bien typé de type α

    Mal typéite

    5 :=

    x 3

    :=

    x 4

    Bien typé;

    :=

    x 4

    ;

    :=

    y 1

    while

    >

    !

    x

    0

    ;

    :=

    y ×

    !

    y

    !

    x

    :=

    x −

    !

    x

    1

  • Deux méthodes de vérification de typage

    Nous allons voir deux façons de calculer le typage :• une méthode qui s’applique essentiellement à la simplicité des

    termes du premier ordre par homomorphisme,

    • une méthode dite logique basée sur un système d’inférence

  • Deux méthodes de vérification de typage

    Nous allons voir deux façons de calculer le typage :• une méthode qui s’applique essentiellement à la simplicité des

    termes du premier ordre par homomorphisme,• une méthode dite logique basée sur un système d’inférence

  • Méthode 1 : par homomorphisme

    Si T est l’ensemble des types, on définit la fonction type qui à chaqueterme associe un élément de T ] {err} (err est un symbole qui n’estpas dans T ) :

    type(f (t1, . . . , tn)) =

    α si Type(f ) = α1 × · · · × αn → α ettype(ti) = αi pour tout i ∈ [1, n]err sinon

  • Exemples de typage

    Expression Type Descriptionite Bool× Command× Command→ Command branchement conditionnelwhile Bool× Command→ Command boucle while:= Var× Int→ Command l’affectation de variable; Command× Command→ Command la composition de commandes

    ite

    5 :=

    x 3

    :=

    x 4

    err

    Int Command

    Var Int

    Command

    Var Int

  • Méthode 2 : système d’inférence (ou de typage)

    Pour vérifier qu’un terme est bien typé, on utilise système de typage :• celui-ci dérive des jugements de la forme ` t : α qui signifie que le

    terme t est de type α.

    • Les dérivations de jugements sont obtenues à partir de la règle :type(f ) = α1 × · · · × αn → α ` t1 : α1 · · · ` tn : αn

    ` f (t1, . . . , tn) : α

    • les propriétés au-dessus de la barre sont appelées prémisses, et lejugement au-dessous de la barre est appelé conclusion.

    • NB : lorsque n = 0, il n’y a qu’une seule prémisse, type(f ) = α.

  • Méthode 2 : système d’inférence (ou de typage)

    Pour vérifier qu’un terme est bien typé, on utilise système de typage :• celui-ci dérive des jugements de la forme ` t : α qui signifie que le

    terme t est de type α.• Les dérivations de jugements sont obtenues à partir de la règle :

    type(f ) = α1 × · · · × αn → α ` t1 : α1 · · · ` tn : αn` f (t1, . . . , tn) : α

    • les propriétés au-dessus de la barre sont appelées prémisses, et lejugement au-dessous de la barre est appelé conclusion.

    • NB : lorsque n = 0, il n’y a qu’une seule prémisse, type(f ) = α.

  • Méthode 2 : système d’inférence (ou de typage)

    Pour vérifier qu’un terme est bien typé, on utilise système de typage :• celui-ci dérive des jugements de la forme ` t : α qui signifie que le

    terme t est de type α.• Les dérivations de jugements sont obtenues à partir de la règle :

    type(f ) = α1 × · · · × αn → α ` t1 : α1 · · · ` tn : αn` f (t1, . . . , tn) : α

    • les propriétés au-dessus de la barre sont appelées prémisses, et lejugement au-dessous de la barre est appelé conclusion.

    • NB : lorsque n = 0, il n’y a qu’une seule prémisse, type(f ) = α.

  • Méthode 2 : système d’inférence (ou de typage)

    Pour vérifier qu’un terme est bien typé, on utilise système de typage :• celui-ci dérive des jugements de la forme ` t : α qui signifie que le

    terme t est de type α.• Les dérivations de jugements sont obtenues à partir de la règle :

    type(f ) = α1 × · · · × αn → α ` t1 : α1 · · · ` tn : αn` f (t1, . . . , tn) : α

    • les propriétés au-dessus de la barre sont appelées prémisses, et lejugement au-dessous de la barre est appelé conclusion.

    • NB : lorsque n = 0, il n’y a qu’une seule prémisse, type(f ) = α.

  • Exemples de dérivation de typage

    Expression Typei Int+ Int × Int → Int− Int × Int → Int× Int × Int → Int! Var → IntExpression Type

    , ≤, ≥, = Int × Int → Bool&&, ||, not Bool × Bool → Bool

    type(>) = Int × Int → Bool

    type(3) = Int

    ` 3 : Int

    .

    .

    .

    `!x + 2 : Int

    ` 3 >!x + 2 : Bool

    type(>) = Int × Int → Int

    type(!) = Var → Int

    type(x) = Var

    ` x : Var

    `!x : Int

    type(2) = Int

    ` 2 : Int

    `!x + 2 : Int

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraiteTermes, variables, équations et programmationInterprétation des termes

    3 Les relations

    4 La quantification

    5 Logique et programmation

  • Termes et variables

    On utilise des variables pour construire des termes (celles-ci sont typéeslors que l’on travaille avec des termes typés) :• C’est ce que nous avons fait avec les variables propositionnelles.

    • Cela nous permet d’avoir des termes paramétrés par d’autrestermes :

    • De pouvoir substituer des termes aux variables.• De voir les termes un peu comme des fonctions.

    Variables dans un termeOn note var(t) l’ensemble des variables qui apparaissent dans t.

  • Termes et variables

    On utilise des variables pour construire des termes (celles-ci sont typéeslors que l’on travaille avec des termes typés) :• C’est ce que nous avons fait avec les variables propositionnelles.• Cela nous permet d’avoir des termes paramétrés par d’autres

    termes :

    • De pouvoir substituer des termes aux variables.• De voir les termes un peu comme des fonctions.

    Variables dans un termeOn note var(t) l’ensemble des variables qui apparaissent dans t.

  • Termes et variables

    On utilise des variables pour construire des termes (celles-ci sont typéeslors que l’on travaille avec des termes typés) :• C’est ce que nous avons fait avec les variables propositionnelles.• Cela nous permet d’avoir des termes paramétrés par d’autres

    termes :• De pouvoir substituer des termes aux variables.

    • De voir les termes un peu comme des fonctions.

    Variables dans un termeOn note var(t) l’ensemble des variables qui apparaissent dans t.

  • Termes et variables

    On utilise des variables pour construire des termes (celles-ci sont typéeslors que l’on travaille avec des termes typés) :• C’est ce que nous avons fait avec les variables propositionnelles.• Cela nous permet d’avoir des termes paramétrés par d’autres

    termes :• De pouvoir substituer des termes aux variables.• De voir les termes un peu comme des fonctions.

    Variables dans un termeOn note var(t) l’ensemble des variables qui apparaissent dans t.

  • Termes et variables

    On utilise des variables pour construire des termes (celles-ci sont typéeslors que l’on travaille avec des termes typés) :• C’est ce que nous avons fait avec les variables propositionnelles.• Cela nous permet d’avoir des termes paramétrés par d’autres

    termes :• De pouvoir substituer des termes aux variables.• De voir les termes un peu comme des fonctions.

    Variables dans un termeOn note var(t) l’ensemble des variables qui apparaissent dans t.

  • Substitutions : définition

    Une substitution est une fonction partielle des variables dans les termesavec un domaine fini.On note x1 = t1, x2 = t2, . . . , xn = tn la substitution σ telle que

    σ(y) ={

    ti lorsque y = xi⊥ sinon

  • Application d’une substitution à un termeAppliquer une substitution à un terme revient à remplacer les variables dutermes par le terme que la substitution leur associe. Pour unesubstitution σ on note t.σ ou σ(t) le résultat de son application à t.

    ExempleConsidérons la substitution x =mult(x , y), y = plus(z , z). Onl’applique au terme ifz(mult(x , y), 2, mult(x , 2)) et on obtient :ifz(mult(mult(x , y),plus(z , z)), 2, mult(mult(x , y)), 2)

    ifz

    mult

    x y

    2 mult

    x 2

    ifz

    mult

    mult

    x y

    plus

    z z

    2 mult

    mult

    x y

    2

  • Le problème d’unification

    UnificationÉtant donné deux termes t et u, le problème de trouver une substitutionσ telle σ(t) = σ(u) est un problème d’unification noté t = u.

    • Il existe des algorithmes efficaces pour résoudre ce problème,• L’unification est le problème au coeur de l’exécution du langage de

    programmation PROLOG,• Des restrictions particulières de ce problème sont utilisées dans de

    nombreux langage de programmation : le filtrage.

    FiltrageUn problème d’unification t = u est :

    • un problème de filtrage lorsque u ne contient pas de variables,• un problème de filtrage linéaire lorsque :

    • u ne contient pas de variables,• chaque variable a au plus une occurrence dans t

  • Le problème d’unification

    UnificationÉtant donné deux termes t et u, le problème de trouver une substitutionσ telle σ(t) = σ(u) est un problème d’unification noté t = u.• Il existe des algorithmes efficaces pour résoudre ce problème,

    • L’unification est le problème au coeur de l’exécution du langage deprogrammation PROLOG,

    • Des restrictions particulières de ce problème sont utilisées dans denombreux langage de programmation : le filtrage.

    FiltrageUn problème d’unification t = u est :

    • un problème de filtrage lorsque u ne contient pas de variables,• un problème de filtrage linéaire lorsque :

    • u ne contient pas de variables,• chaque variable a au plus une occurrence dans t

  • Le problème d’unification

    UnificationÉtant donné deux termes t et u, le problème de trouver une substitutionσ telle σ(t) = σ(u) est un problème d’unification noté t = u.• Il existe des algorithmes efficaces pour résoudre ce problème,• L’unification est le problème au coeur de l’exécution du langage de

    programmation PROLOG,

    • Des restrictions particulières de ce problème sont utilisées dans denombreux langage de programmation : le filtrage.

    FiltrageUn problème d’unification t = u est :

    • un problème de filtrage lorsque u ne contient pas de variables,• un problème de filtrage linéaire lorsque :

    • u ne contient pas de variables,• chaque variable a au plus une occurrence dans t

  • Le problème d’unification

    UnificationÉtant donné deux termes t et u, le problème de trouver une substitutionσ telle σ(t) = σ(u) est un problème d’unification noté t = u.• Il existe des algorithmes efficaces pour résoudre ce problème,• L’unification est le problème au coeur de l’exécution du langage de

    programmation PROLOG,• Des restrictions particulières de ce problème sont utilisées dans de

    nombreux langage de programmation : le filtrage.

    FiltrageUn problème d’unification t = u est :

    • un problème de filtrage lorsque u ne contient pas de variables,• un problème de filtrage linéaire lorsque :

    • u ne contient pas de variables,• chaque variable a au plus une occurrence dans t

  • Le problème d’unification

    UnificationÉtant donné deux termes t et u, le problème de trouver une substitutionσ telle σ(t) = σ(u) est un problème d’unification noté t = u.• Il existe des algorithmes efficaces pour résoudre ce problème,• L’unification est le problème au coeur de l’exécution du langage de

    programmation PROLOG,• Des restrictions particulières de ce problème sont utilisées dans de

    nombreux langage de programmation : le filtrage.

    FiltrageUn problème d’unification t = u est :• un problème de filtrage lorsque u ne contient pas de variables,• un problème de filtrage linéaire lorsque :

    • u ne contient pas de variables,• chaque variable a au plus une occurrence dans t

  • Filtrage linéaire ou filtrage structurel et programmation

    Le filtrage linéaire ou filtrage structurel est de plus en plus utilisé enprogrammation (Python, Java, Rust, Haskell, Ocaml. . . )

    x=level[0]y=level[1]if x==0 && y==0:

    print("Origin")elif x==0:

    print(f"Y={y}")elif y==0:

    print(f"X={x}")else:

    print(f"X={x}, Y={y}")

    match level:case (0, 0):

    print("Origin")case (0, y):

    print(f"Y={y}")case (x, 0):

    print(f"X={x}")case (x, y):

    print(f"X={x}, Y={y}")

    Il rend le code plus simple et plus lisible.

  • Filtrage linéaire ou filtrage structurel et programmation

    Le filtrage linéaire ou filtrage structurel est de plus en plus utilisé enprogrammation (Python, Java, Rust, Haskell, Ocaml. . . )

    x=level[0]y=level[1]if x==0 && y==0:

    print("Origin")elif x==0:

    print(f"Y={y}")elif y==0:

    print(f"X={x}")else:

    print(f"X={x}, Y={y}")

    match level:case (0, 0):

    print("Origin")case (0, y):

    print(f"Y={y}")case (x, 0):

    print(f"X={x}")case (x, y):

    print(f"X={x}, Y={y}")

    Il rend le code plus simple et plus lisible.

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraiteTermes, variables, équations et programmationInterprétation des termes

    3 Les relations

    4 La quantification

    5 Logique et programmation

  • Interprétation des termes : le cas non typé

    Associer une sémantique aux termes revient à :• fixer un ensemble D, le domaine d’interprétation,• pour chaque opération f d’arité n, on associe une fonction [[f ]] de

    Dn 7→ D, (NB : quand n = 0, f est interprété comme un élémentde D).

    On appelle modèle la paire M = (D, [[·]]).

    Pour interpréter un terme contenant des variables, il nous faut unevaluation qui associe à chaque variable du terme un élément de D. Étantdonnée une valuation ν, la sémantique [[t, ν]]M d’un terme t est définiepar :

    [[x , ν]]M = ν(x)[[f (t1, . . . , tn), ν]]M = [[f ]]([[t1, ν]]M, . . . , [[tn, ν]]M)

  • Interprétation des termes : le cas non typé

    Associer une sémantique aux termes revient à :• fixer un ensemble D, le domaine d’interprétation,• pour chaque opération f d’arité n, on associe une fonction [[f ]] de

    Dn 7→ D, (NB : quand n = 0, f est interprété comme un élémentde D).

    On appelle modèle la paire M = (D, [[·]]).Pour interpréter un terme contenant des variables, il nous faut unevaluation qui associe à chaque variable du terme un élément de D. Étantdonnée une valuation ν, la sémantique [[t, ν]]M d’un terme t est définiepar :

    [[x , ν]]M = ν(x)[[f (t1, . . . , tn), ν]]M = [[f ]]([[t1, ν]]M, . . . , [[tn, ν]]M)

  • Interprétation des termes : le cas typé

    En présence de types A1,. . . , Am, associer une sémantique aux termesrevient à :• fixer une famille d’ensembles (Di)i∈[1,m], pour tout i dans [1,m], Di

    est le domaines d’interprétation de Ai• pour chaque opération f de type Ai1 × · · · × Ain → Ai , on associe

    une fonction [[f ]] de Di1 × · · · × Din 7→ Di .On appelle modèle la paire M = ((Di)i∈[1,m], [[·]]).

    Pour interpréter un terme contenant des variables, il nous faut unevaluation qui associe à chaque variable du terme un élément de Disuivant le type de la variable. Étant donnée une valuation ν, lasémantique [[t, ν]]M d’un terme t est définie par :

    [[x , ν]]M = ν(x)[[f (t1, . . . , tn), ν]]M = [[f ]]([[t1, ν]], . . . , [[tn, ν]]M)

    Si t est un terme de type Ai , alors [[t, ν]] est un élément de Di .

  • Interprétation des termes : le cas typé

    En présence de types A1,. . . , Am, associer une sémantique aux termesrevient à :• fixer une famille d’ensembles (Di)i∈[1,m], pour tout i dans [1,m], Di

    est le domaines d’interprétation de Ai• pour chaque opération f de type Ai1 × · · · × Ain → Ai , on associe

    une fonction [[f ]] de Di1 × · · · × Din 7→ Di .On appelle modèle la paire M = ((Di)i∈[1,m], [[·]]).Pour interpréter un terme contenant des variables, il nous faut unevaluation qui associe à chaque variable du terme un élément de Disuivant le type de la variable. Étant donnée une valuation ν, lasémantique [[t, ν]]M d’un terme t est définie par :

    [[x , ν]]M = ν(x)[[f (t1, . . . , tn), ν]]M = [[f ]]([[t1, ν]], . . . , [[tn, ν]]M)

    Si t est un terme de type Ai , alors [[t, ν]] est un élément de Di .

  • Interprétation des termes : le cas typé

    En présence de types A1,. . . , Am, associer une sémantique aux termesrevient à :• fixer une famille d’ensembles (Di)i∈[1,m], pour tout i dans [1,m], Di

    est le domaines d’interprétation de Ai• pour chaque opération f de type Ai1 × · · · × Ain → Ai , on associe

    une fonction [[f ]] de Di1 × · · · × Din 7→ Di .On appelle modèle la paire M = ((Di)i∈[1,m], [[·]]).Pour interpréter un terme contenant des variables, il nous faut unevaluation qui associe à chaque variable du terme un élément de Disuivant le type de la variable. Étant donnée une valuation ν, lasémantique [[t, ν]]M d’un terme t est définie par :

    [[x , ν]]M = ν(x)[[f (t1, . . . , tn), ν]]M = [[f ]]([[t1, ν]], . . . , [[tn, ν]]M)

    Si t est un terme de type Ai , alors [[t, ν]] est un élément de Di .

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraite

    3 Les relations

    4 La quantification

    5 Logique et programmation

  • Vers la logique

    Pour le moment, nous avons vu comment modéliser les objets et lesconcepts sur lesquelles nous voulons asserter des propriétés ou raisonner.

    Il nous faut maintenant nous donner les moyens de dire de choses sur cesobjets. Pour cela, on se dote d’un ensemble de prédicats.Chaque prédicats a une arité (un type si on travaille avec des termestypés).Cela revient à enrichir les opérateurs sur les termes de la manièresuivante :

    • on rajoute un nouveau type au(x) type(s) des termes (on appelle Tle type des termes) : Bool,

    • pour chaque prédicat on ajoute un opérateur de typeT × · · · × T → Bool (on adapte au typage pour le cas typé),

    • on ajoute les connecteurs logique :

  • Vers la logique

    Pour le moment, nous avons vu comment modéliser les objets et lesconcepts sur lesquelles nous voulons asserter des propriétés ou raisonner.Il nous faut maintenant nous donner les moyens de dire de choses sur cesobjets. Pour cela, on se dote d’un ensemble de prédicats.

    Chaque prédicats a une arité (un type si on travaille avec des termestypés).Cela revient à enrichir les opérateurs sur les termes de la manièresuivante :

    • on rajoute un nouveau type au(x) type(s) des termes (on appelle Tle type des termes) : Bool,

    • pour chaque prédicat on ajoute un opérateur de typeT × · · · × T → Bool (on adapte au typage pour le cas typé),

    • on ajoute les connecteurs logique :

  • Vers la logique

    Pour le moment, nous avons vu comment modéliser les objets et lesconcepts sur lesquelles nous voulons asserter des propriétés ou raisonner.Il nous faut maintenant nous donner les moyens de dire de choses sur cesobjets. Pour cela, on se dote d’un ensemble de prédicats.Chaque prédicats a une arité (un type si on travaille avec des termestypés).

    Cela revient à enrichir les opérateurs sur les termes de la manièresuivante :

    • on rajoute un nouveau type au(x) type(s) des termes (on appelle Tle type des termes) : Bool,

    • pour chaque prédicat on ajoute un opérateur de typeT × · · · × T → Bool (on adapte au typage pour le cas typé),

    • on ajoute les connecteurs logique :

  • Vers la logique

    Pour le moment, nous avons vu comment modéliser les objets et lesconcepts sur lesquelles nous voulons asserter des propriétés ou raisonner.Il nous faut maintenant nous donner les moyens de dire de choses sur cesobjets. Pour cela, on se dote d’un ensemble de prédicats.Chaque prédicats a une arité (un type si on travaille avec des termestypés).Cela revient à enrichir les opérateurs sur les termes de la manièresuivante :• on rajoute un nouveau type au(x) type(s) des termes (on appelle T

    le type des termes) : Bool,• pour chaque prédicat on ajoute un opérateur de type

    T × · · · × T → Bool (on adapte au typage pour le cas typé),• on ajoute les connecteurs logique :

  • Interprétation des formules

    Afin de pouvoir interpréter les formules, il nous faut donner uneinterprétation aux termes composés avec les prédicats telle que :• Bool est interpréter dans l’ensemble {0, 1},• les connecteurs logiques ont l’interprétation que nous avons vue

    pour la logique propositionnelle.NB : On appelle modèle une telle interprétation (il s’agit toujours d’unepaire M = ((Di)i∈[1,m], [[·]])

    Les prédicats représentent ainsi des relations entre les éléments dudomaine d’interprétation : c’est une représentation par fonctioncaractéristique.Cette interprétation relationnelle des prédicats est très proche de ce quevous avez vu en base de données sur l’interprétation des tables par desrelations.

  • Interprétation des formules

    Afin de pouvoir interpréter les formules, il nous faut donner uneinterprétation aux termes composés avec les prédicats telle que :• Bool est interpréter dans l’ensemble {0, 1},• les connecteurs logiques ont l’interprétation que nous avons vue

    pour la logique propositionnelle.NB : On appelle modèle une telle interprétation (il s’agit toujours d’unepaire M = ((Di)i∈[1,m], [[·]])Les prédicats représentent ainsi des relations entre les éléments dudomaine d’interprétation : c’est une représentation par fonctioncaractéristique.

    Cette interprétation relationnelle des prédicats est très proche de ce quevous avez vu en base de données sur l’interprétation des tables par desrelations.

  • Interprétation des formules

    Afin de pouvoir interpréter les formules, il nous faut donner uneinterprétation aux termes composés avec les prédicats telle que :• Bool est interpréter dans l’ensemble {0, 1},• les connecteurs logiques ont l’interprétation que nous avons vue

    pour la logique propositionnelle.NB : On appelle modèle une telle interprétation (il s’agit toujours d’unepaire M = ((Di)i∈[1,m], [[·]])Les prédicats représentent ainsi des relations entre les éléments dudomaine d’interprétation : c’est une représentation par fonctioncaractéristique.Cette interprétation relationnelle des prédicats est très proche de ce quevous avez vu en base de données sur l’interprétation des tables par desrelations.

  • Se passer des termes

    Il est également possible de se passer tout simplement de terme enn’utilisant que des prédicats :• pour chaque symbole de fonction f d’arité n, on crée un prédicat pf

    d’arité n + 1 et on l’interprète de la façon suivante :

    [[pf ]](u1, . . . , un, v) ={

    1 si v = [[f ]](u1, . . . , un)0 sinon

    En ajoutant une variable par sous-terme, on peut ainsi transformer touteformule en une formule ayant la même interprétation et qui ne contientplus de termes.

    ≤ (S(x), S(S(y))) 7→ pS(x , sx) ∧ pS(y , sy) ∧ pS(sy , ssy)∧ ≤ (sx , ssy)

  • Se passer des termes

    Il est également possible de se passer tout simplement de terme enn’utilisant que des prédicats :• pour chaque symbole de fonction f d’arité n, on crée un prédicat pf

    d’arité n + 1 et on l’interprète de la façon suivante :

    [[pf ]](u1, . . . , un, v) ={

    1 si v = [[f ]](u1, . . . , un)0 sinon

    En ajoutant une variable par sous-terme, on peut ainsi transformer touteformule en une formule ayant la même interprétation et qui ne contientplus de termes.

    ≤ (S(x), S(S(y))) 7→ pS(x , sx) ∧ pS(y , sy) ∧ pS(sy , ssy)∧ ≤ (sx , ssy)

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraite

    3 Les relations

    4 La quantificationDu français vers la logique

    5 Logique et programmation

  • Les quantificateursEn logique du premier ordre, il y a deux quantificateurs :• ∀ : pour tout,• ∃ : il existe.

    Les quantificateurs s’utilisent de la façon suivante :∀x .ϕ

    ∀x .

    ϕ

    ∃x .ϕ

    ∃x .

    ϕ

    Les quantificateurs de variables sont des lieurs : les formules contiennentalors deux type de variables, les variables libres et les variables liées :

    VL(∀x .ϕ) = VL(ϕ)− {x}VL(∃x .ϕ) = VL(ϕ)− {x}

    VL(f (t1, . . . , tn)) =n⋃

    i=1VL(ti)

    VL(x) = {x}Une formule ϕ est close si VL(ϕ) = ∅.

  • Les quantificateursEn logique du premier ordre, il y a deux quantificateurs :• ∀ : pour tout,• ∃ : il existe.

    Les quantificateurs s’utilisent de la façon suivante :∀x .ϕ

    ∀x .

    ϕ

    ∃x .ϕ

    ∃x .

    ϕ

    Les quantificateurs de variables sont des lieurs : les formules contiennentalors deux type de variables, les variables libres et les variables liées :

    VL(∀x .ϕ) = VL(ϕ)− {x}VL(∃x .ϕ) = VL(ϕ)− {x}

    VL(f (t1, . . . , tn)) =n⋃

    i=1VL(ti)

    VL(x) = {x}Une formule ϕ est close si VL(ϕ) = ∅.

  • Les quantificateursEn logique du premier ordre, il y a deux quantificateurs :• ∀ : pour tout,• ∃ : il existe.

    Les quantificateurs s’utilisent de la façon suivante :∀x .ϕ

    ∀x .

    ϕ

    ∃x .ϕ

    ∃x .

    ϕ

    Les quantificateurs de variables sont des lieurs : les formules contiennentalors deux type de variables, les variables libres et les variables liées :

    VL(∀x .ϕ) = VL(ϕ)− {x}VL(∃x .ϕ) = VL(ϕ)− {x}

    VL(f (t1, . . . , tn)) =n⋃

    i=1VL(ti)

    VL(x) = {x}Une formule ϕ est close si VL(ϕ) = ∅.

  • Interprétation des quantificateurs

    Si M est un modèle des opérateurs et des prédicats alors, étant donnéeune valuation :

    [[∀x .ϕ, ν]]M = min{[[ϕ, ν[x = d ]]]M | d ∈ D}[[∃x .ϕ, ν]]M = max{[[ϕ, ν[x = d ]]]M | d ∈ D}

    SatisfiabilitéUne fomule ϕ est satifaite par un modèle M et une valuation ν si[[ϕ, ν]]M = 1 : M, ν |= ϕ.

    TautologieUne fomule ϕ est une tautologie si pour tout modèle M et toutevaluation ν : M, ν |= ϕ.

  • Interprétation des quantificateurs

    Si M est un modèle des opérateurs et des prédicats alors, étant donnéeune valuation :

    [[∀x .ϕ, ν]]M = min{[[ϕ, ν[x = d ]]]M | d ∈ D}[[∃x .ϕ, ν]]M = max{[[ϕ, ν[x = d ]]]M | d ∈ D}

    SatisfiabilitéUne fomule ϕ est satifaite par un modèle M et une valuation ν si[[ϕ, ν]]M = 1 : M, ν |= ϕ.

    TautologieUne fomule ϕ est une tautologie si pour tout modèle M et toutevaluation ν : M, ν |= ϕ.

  • Interprétation des quantificateurs

    Si M est un modèle des opérateurs et des prédicats alors, étant donnéeune valuation :

    [[∀x .ϕ, ν]]M = min{[[ϕ, ν[x = d ]]]M | d ∈ D}[[∃x .ϕ, ν]]M = max{[[ϕ, ν[x = d ]]]M | d ∈ D}

    SatisfiabilitéUne fomule ϕ est satifaite par un modèle M et une valuation ν si[[ϕ, ν]]M = 1 : M, ν |= ϕ.

    TautologieUne fomule ϕ est une tautologie si pour tout modèle M et toutevaluation ν : M, ν |= ϕ.

  • Résumé

    Pour représenter des propriétés sur des objets on utilise :• des opérateurs (e.g. opérateurs binaires + et ∗ pour les entiers et

    opérateur unaire du successeur S, constante 0),• des prédicats (e.g. prédicat d’égalité, = pour les entiers).

    On parle alors de langage une fois que tout cela est fixé.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,

    • les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,

    • les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,

    • les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,• les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,• les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,• les predicats binaires : voisin et colorie.

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,• les predicats binaires : voisin et colorie.

    Tout état est colorié par une couleur :

    ∀x .etat(x)⇒ ∃y .couleur(y) ∧ colorie(y , x)

  • Retour en AutralieD = {r , v , b,WA,NT ,Q, SA,NSW ,V ,T}

    couleur = {r , v , b}

    etat = {WA,NT ,Q, SA,NSW ,V ,T}

    voisin = {{WA,NT}, {WA, SA}, {NT ,Q},{NT , SA}, {SA,Q}, {SA,NSW},{SA,V}, {Q,NSW }, {NSW ,V},{V ,T}}

    colorie = {(r ,WA), (v ,NT ), (b, SO), (r ,Q),(v ,NSW ), (r ,V ), (v ,T )}

    On se donne les prédicats suivants :• les prédicats unaires : couleur et etat,• les predicats binaires : voisin et colorie.

    Si deux états sont voisins ils sont coloriés par des couleurs différentes :

    ∀x .∀y .etat(x) ∧ etat(y) ∧ voisin(x , y)⇒∀c1.∀c2.couleur(c1) ∧ couleur(c2) ∧ colorie(c1, x) ∧ colorie(c2, y)⇒

    ¬c1 = c2)

  • Axiomatisation

    Pour donner une définition complète des objets, on en donne un axiomatisation :c’est-à-dire l’ensemble des propriétés que nos objets doivent vérifier.

    Axiomatisation des entiers de Peano• ∀x .¬S(x) = 0,• ∀x .x = 0 ∨ ∃y .x = S(y),• ∀x .∀y .S(x) = S(y)⇒ x = y• ∀x .∀y .x + S(y) = S(x + y)• ∀x .x ∗ 0 = 0• ∀x .∀y .x ∗ S(y) = (x ∗ y) + x• schéma d’induction, pour toute formule ϕ(x , x1, . . . , xn) :

    ∀x1. . . . ∀xn. (ϕ(0, x1 . . . , xn) ∧ ∀x .ϕ(x , x1, . . . , xn)⇒ ϕ(S(x), x1, . . . , xn))⇒∀x .ϕ(x , x1, . . . , xn)

  • Axiomatisation

    Pour donner une définition complète des objets, on en donne un axiomatisation :c’est-à-dire l’ensemble des propriétés que nos objets doivent vérifier.

    Axiomatisation des entiers de Peano• ∀x .¬S(x) = 0,• ∀x .x = 0 ∨ ∃y .x = S(y),• ∀x .∀y .S(x) = S(y)⇒ x = y• ∀x .∀y .x + S(y) = S(x + y)• ∀x .x ∗ 0 = 0• ∀x .∀y .x ∗ S(y) = (x ∗ y) + x• schéma d’induction, pour toute formule ϕ(x , x1, . . . , xn) :

    ∀x1. . . . ∀xn. (ϕ(0, x1 . . . , xn) ∧ ∀x .ϕ(x , x1, . . . , xn)⇒ ϕ(S(x), x1, . . . , xn))⇒∀x .ϕ(x , x1, . . . , xn)

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraite

    3 Les relations

    4 La quantificationDu français vers la logique

    5 Logique et programmation

  • Traduire du français vers la logiqueL’approche de Sujet/PrédicatAfin de traduire un énoncé en français (ou une autre langue) vers lalogique il faut y repérer deux éléments :• Le sujet : ce dont on parle. La plupart du temps pour nous ce sera le

    sujet grammatical de la phrase.• Le prédicat : ce qu’on en dit. La plupart du temps pour nous il

    s’agira du groupe verbal principal de la phrase.

    Quelques phrases

    • Tous les étudiants︸ ︷︷ ︸sujet

    apprennent l’anglais︸ ︷︷ ︸prédicat

    .

    •Tous les étudiants qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

    •Certains étudiant qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

  • Traduire du français vers la logiqueL’approche de Sujet/PrédicatAfin de traduire un énoncé en français (ou une autre langue) vers lalogique il faut y repérer deux éléments :• Le sujet : ce dont on parle. La plupart du temps pour nous ce sera le

    sujet grammatical de la phrase.• Le prédicat : ce qu’on en dit. La plupart du temps pour nous il

    s’agira du groupe verbal principal de la phrase.

    Quelques phrases• Tous les étudiants︸ ︷︷ ︸

    sujetapprennent l’anglais︸ ︷︷ ︸

    prédicat

    .

    •Tous les étudiants qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

    •Certains étudiant qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

  • Traduire du français vers la logiqueL’approche de Sujet/PrédicatAfin de traduire un énoncé en français (ou une autre langue) vers lalogique il faut y repérer deux éléments :• Le sujet : ce dont on parle. La plupart du temps pour nous ce sera le

    sujet grammatical de la phrase.• Le prédicat : ce qu’on en dit. La plupart du temps pour nous il

    s’agira du groupe verbal principal de la phrase.

    Quelques phrases• Tous les étudiants︸ ︷︷ ︸

    sujetapprennent l’anglais︸ ︷︷ ︸

    prédicat

    .

    •Tous les étudiants qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

    •Certains étudiant qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

  • Traduire du français vers la logiqueL’approche de Sujet/PrédicatAfin de traduire un énoncé en français (ou une autre langue) vers lalogique il faut y repérer deux éléments :• Le sujet : ce dont on parle. La plupart du temps pour nous ce sera le

    sujet grammatical de la phrase.• Le prédicat : ce qu’on en dit. La plupart du temps pour nous il

    s’agira du groupe verbal principal de la phrase.

    Quelques phrases• Tous les étudiants︸ ︷︷ ︸

    sujetapprennent l’anglais︸ ︷︷ ︸

    prédicat

    .

    •Tous les étudiants qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

    •Certains étudiant qui apprennent l’anglais︸ ︷︷ ︸

    sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    .

  • Traduction de la quantification universelleTous les. . .En français, la quantification universelle s’exprime par tous les/aucun/. . . et se traduiten logique par :

    ∀x .sujet(x)⇒ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous nous donnons le langage logique suivant :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

  • Traduction de la quantification universelleTous les. . .En français, la quantification universelle s’exprime par tous les/aucun/. . . et se traduiten logique par :

    ∀x .sujet(x)⇒ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous nous donnons le langage logique suivant :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

  • Traduction de la quantification universelleTous les. . .En français, la quantification universelle s’exprime par tous les/aucun/. . . et se traduiten logique par :

    ∀x .sujet(x)⇒ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous nous donnons le langage logique suivant :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Tous les étudiants︸ ︷︷ ︸sujet

    apprennent l’anglais︸ ︷︷ ︸prédicat

    ↓∀x . student(x)︸ ︷︷ ︸

    sujet

    ⇒ learn(x , english︸ ︷︷ ︸prédicat

    )

  • Traduction de la quantification universelleTous les. . .En français, la quantification universelle s’exprime par tous les/aucun/. . . et se traduiten logique par :

    ∀x .sujet(x)⇒ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous nous donnons le langage logique suivant :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Tous les étudiants qui apprennent l’anglais︸ ︷︷ ︸sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    ↓∀x . student(x) ∧ learn(x , english)︸ ︷︷ ︸

    sujet

    ⇒ ¬learn(x , german)︸ ︷︷ ︸prédicat

  • Traduction de la quantification universelleTous les. . .En français, la quantification universelle s’exprime par tous les/aucun/. . . et se traduiten logique par :

    ∀x .sujet(x)⇒ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous nous donnons le langage logique suivant :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Aucun étudiants︸ ︷︷ ︸sujet

    n’apprend l’anglais et l’allemand︸ ︷︷ ︸prédicat

    ↓∀x . student(x)︸ ︷︷ ︸

    sujet

    ⇒ ¬(learn(x , german) ∧ learn(x , english))︸ ︷︷ ︸prédicat

    ≡∀x .student(x)⇒ (¬learn(x , german) ∨ ¬learn(x , english))

  • Traduction de la quantification existentielleIl existe. . .En français, la quantification existentielle s’exprime par il y a/certains/il existe. . . et setraduit en logique par :

    ∃x .sujet(x) ∧ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous reprenons le langage logique :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

  • Traduction de la quantification existentielleIl existe. . .En français, la quantification existentielle s’exprime par il y a/certains/il existe. . . et setraduit en logique par :

    ∃x .sujet(x) ∧ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous reprenons le langage logique :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

  • Traduction de la quantification existentielleIl existe. . .En français, la quantification existentielle s’exprime par il y a/certains/il existe. . . et setraduit en logique par :

    ∃x .sujet(x) ∧ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous reprenons le langage logique :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Certains étudiants︸ ︷︷ ︸sujet

    apprennent l’anglais︸ ︷︷ ︸prédicat

    ↓∃x . student(x)︸ ︷︷ ︸

    sujet

    ∧ learn(x , english︸ ︷︷ ︸prédicat

    )

  • Traduction de la quantification existentielleIl existe. . .En français, la quantification existentielle s’exprime par il y a/certains/il existe. . . et setraduit en logique par :

    ∃x .sujet(x) ∧ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous reprenons le langage logique :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Certains étudiants qui apprennent l’anglais︸ ︷︷ ︸sujet

    n’apprennent pas l’allemand︸ ︷︷ ︸prédicat

    ↓∃x . student(x) ∧ learn(x , english)︸ ︷︷ ︸

    sujet

    ∧¬learn(x , german)︸ ︷︷ ︸prédicat

  • Traduction de la quantification existentielleIl existe. . .En français, la quantification existentielle s’exprime par il y a/certains/il existe. . . et setraduit en logique par :

    ∃x .sujet(x) ∧ predicat(x)lorsque :• sujet(x) représente la propriété exprimée par le sujet,• predicat(x) représente la propriété exprimée par le prédicat.

    Quelques exemplesNous reprenons le langage logique :• Des constantes : english, german,• Des prédicats : student (unaire), learn (binaire), learn(x , y) signifiant x

    apprend y .

    Certains étudiants︸ ︷︷ ︸sujet

    n’apprennent pas l’anglais et l’allemand︸ ︷︷ ︸prédicat

    ↓∃x . student(x)︸ ︷︷ ︸

    sujet

    ∧¬(learn(x , german) ∧ learn(x , english))︸ ︷︷ ︸prédicat

    ≡∃x .student(x) ∧ (¬learn(x , german) ∨ ¬learn(x , english))

  • Dualité de la traduction des quantificateurs

    ¬(∀x .sujet(x) ⇒ predicat(x)) ≡ ∃x .¬(sujet(x) ⇒ predicat(x))≡ ∃x .¬(¬sujet(x) ∨ predicat(x))≡ ∃x .sujet(x) ∧ ¬predicat(x)

    ExempleIl n’est pas vrai que tous les étudiants apprennent l’anglais

    ¬(∀x .student(x) ⇒ learn(x , english))≡

    ∃x .student(x) ∧ ¬learn(x , english)

    Un étudiant n’apprend pas l’anglais

  • Dualité de la traduction des quantificateurs

    ¬(∀x .sujet(x) ⇒ predicat(x)) ≡ ∃x .¬(sujet(x) ⇒ predicat(x))≡ ∃x .¬(¬sujet(x) ∨ predicat(x))≡ ∃x .sujet(x) ∧ ¬predicat(x)

    ExempleIl n’est pas vrai que tous les étudiants apprennent l’anglais

    ¬(∀x .student(x) ⇒ learn(x , english))≡

    ∃x .student(x) ∧ ¬learn(x , english)

    Un étudiant n’apprend pas l’anglais

  • Dualité de la traduction des quantificateurs

    ¬(∀x .sujet(x) ⇒ predicat(x)) ≡ ∃x .¬(sujet(x) ⇒ predicat(x))≡ ∃x .¬(¬sujet(x) ∨ predicat(x))≡ ∃x .sujet(x) ∧ ¬predicat(x)

    ExempleIl n’est pas vrai que tous les étudiants apprennent l’anglais

    ¬(∀x .student(x) ⇒ learn(x , english))≡

    ∃x .student(x) ∧ ¬learn(x , english)

    Un étudiant n’apprend pas l’anglais

  • Dualité de la traduction des quantificateurs

    ¬(∀x .sujet(x) ⇒ predicat(x)) ≡ ∃x .¬(sujet(x) ⇒ predicat(x))≡ ∃x .¬(¬sujet(x) ∨ predicat(x))≡ ∃x .sujet(x) ∧ ¬predicat(x)

    ExempleIl n’est pas vrai que tous les étudiants apprennent l’anglais

    ¬(∀x .student(x) ⇒ learn(x , english))≡

    ∃x .student(x) ∧ ¬learn(x , english)

    Un étudiant n’apprend pas l’anglais

  • Dualité de la traduction des quantificateurs

    ¬(∃x .sujet(x) ∧ predicat(x)) ≡ ∀x .¬(sujet(x) ∧ predicat(x))≡ ∀x .¬sujet(x) ∨ ¬predicat(x)≡ ∀x .sujet(x) ⇒ ¬predicat(x)

    ExempleIl n’est pas vrai qu’il y a étudiant qui apprend l’anglais et l ’alle-mand

    ¬(∃x .student(x) ∧ learn(x , english) ∧ learn(x , allemand))≡

    ∀x .student(x) ⇒ (¬learn(x , english) ∨ ¬learn(x , allemand))

    Un étudiant n’apprend pas l’anglais ou n’apprend pas l’allemand

  • Dualité de la traduction des quantificateurs

    ¬(∃x .sujet(x) ∧ predicat(x)) ≡ ∀x .¬(sujet(x) ∧ predicat(x))≡ ∀x .¬sujet(x) ∨ ¬predicat(x)≡ ∀x .sujet(x) ⇒ ¬predicat(x)

    ExempleIl n’est pas vrai qu’il y a étudiant qui apprend l’anglais et l ’alle-mand

    ¬(∃x .student(x) ∧ learn(x , english) ∧ learn(x , allemand))≡

    ∀x .student(x) ⇒ (¬learn(x , english) ∨ ¬learn(x , allemand))

    Un étudiant n’apprend pas l’anglais ou n’apprend pas l’allemand

  • Dualité de la traduction des quantificateurs

    ¬(∃x .sujet(x) ∧ predicat(x)) ≡ ∀x .¬(sujet(x) ∧ predicat(x))≡ ∀x .¬sujet(x) ∨ ¬predicat(x)≡ ∀x .sujet(x) ⇒ ¬predicat(x)

    ExempleIl n’est pas vrai qu’il y a étudiant qui apprend l’anglais et l ’alle-mand

    ¬(∃x .student(x) ∧ learn(x , english) ∧ learn(x , allemand))≡

    ∀x .student(x) ⇒ (¬learn(x , english) ∨ ¬learn(x , allemand))

    Un étudiant n’apprend pas l’anglais ou n’apprend pas l’allemand

  • Dualité de la traduction des quantificateurs

    ¬(∃x .sujet(x) ∧ predicat(x)) ≡ ∀x .¬(sujet(x) ∧ predicat(x))≡ ∀x .¬sujet(x) ∨ ¬predicat(x)≡ ∀x .sujet(x) ⇒ ¬predicat(x)

    ExempleIl n’est pas vrai qu’il y a étudiant qui apprend l’anglais et l ’alle-mand

    ¬(∃x .student(x) ∧ learn(x , english) ∧ learn(x , allemand))≡

    ∀x .student(x) ⇒ (¬learn(x , english) ∨ ¬learn(x , allemand))

    Un étudiant n’apprend pas l’anglais ou n’apprend pas l’allemand

  • Pour aller plus loin : la sémantique de Montague• La linguistique et la philosophie se sont intéressés à la relation entre

    texte et sens.

    • Au début des années 70, Richard Montague publie une séried’articles :• English as a formal Language (1970),• Universal Grammar (1970),• Pragmatics and intentional logic (1970),• The proper treatment of quantification in ordinary English (1974)

    qui jettent les bases de la sémantique formelle : une théorie quicherche à associer aux énoncés en langage naturel leurs conditionsde vérité, i.e. une formule qui contraint les mondes possibles danslaquelle ces énoncés sont vrais.

    • Ces méthodes permettent une traduction systématique de fragmentsimportants de toutes les langues vers la logique. C’est un domainede recherche actif qui étend sans cesse ces fragments. La mise enpratique se heurte néanmoins à deux grandes difficulté :• la très grande ambiguïté du langage,• la complexité de la manipulation des énoncés logiques,

    L’utilisation pratique de ces méthodes se fait désormais en lien étroitavec les méthodes d’apprentissage automatique.

  • Pour aller plus loin : la sémantique de Montague• La linguistique et la philosophie se sont intéressés à la relation entre

    texte et sens.• Au début des années 70, Richard Montague publie une série

    d’articles :• English as a formal Language (1970),• Universal Grammar (1970),• Pragmatics and intentional logic (1970),• The proper treatment of quantification in ordinary English (1974)

    qui jettent les bases de la sémantique formelle : une théorie quicherche à associer aux énoncés en langage naturel leurs conditionsde vérité, i.e. une formule qui contraint les mondes possibles danslaquelle ces énoncés sont vrais.

    • Ces méthodes permettent une traduction systématique de fragmentsimportants de toutes les langues vers la logique. C’est un domainede recherche actif qui étend sans cesse ces fragments. La mise enpratique se heurte néanmoins à deux grandes difficulté :• la très grande ambiguïté du langage,• la complexité de la manipulation des énoncés logiques,

    L’utilisation pratique de ces méthodes se fait désormais en lien étroitavec les méthodes d’apprentissage automatique.

  • Pour aller plus loin : la sémantique de Montague• La linguistique et la philosophie se sont intéressés à la relation entre

    texte et sens.• Au début des années 70, Richard Montague publie une série

    d’articles :• English as a formal Language (1970),• Universal Grammar (1970),• Pragmatics and intentional logic (1970),• The proper treatment of quantification in ordinary English (1974)

    qui jettent les bases de la sémantique formelle : une théorie quicherche à associer aux énoncés en langage naturel leurs conditionsde vérité, i.e. une formule qui contraint les mondes possibles danslaquelle ces énoncés sont vrais.

    • Ces méthodes permettent une traduction systématique de fragmentsimportants de toutes les langues vers la logique. C’est un domainede recherche actif qui étend sans cesse ces fragments. La mise enpratique se heurte néanmoins à deux grandes difficulté :• la très grande ambiguïté du langage,• la complexité de la manipulation des énoncés logiques,

    L’utilisation pratique de ces méthodes se fait désormais en lien étroitavec les méthodes d’apprentissage automatique.

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λP Q.∃(λz.P z ∧ Q z)(λx .woman x)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λP Q.∃(λz.P z ∧ Q z)(λx .woman x)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.(λx .woman x) z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.(λx .woman x) z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λO S.S(λx .O(λy .love x y))(λP.∃(λz.woman z ∧ P z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λO S.S(λx .O(λy .love x y))(λP.∃(λz.woman z ∧ P z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .(λP.∃(λz.(λz.woman z ∧ P z)))(λy .love x y))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .(λP.∃(λz.(λz.woman z ∧ P z)))(λy .love x y))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ (λy .love x y) z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ (λy .love x y) z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =(λS.S(λx .∃(λz.woman z ∧ love x z)))(λQ.∀(λu.man u ⇒ Q u))

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =(λS.S(λx .∃(λz.woman z ∧ love x z)))(λQ.∀(λu.man u ⇒ Q u))

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =(λQ.∀(λu.man u ⇒ Q u))(λx .(∃(λz.woman z ∧ love x z)))

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =(λQ.∀(λu.man u ⇒ Q u))(λx .(∃(λz.woman z ∧ love x z)))

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =∀(λu.man u ⇒ (λx .∃(λz.woman z ∧ love x z)) u)

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =∀(λu.man u ⇒ (λx .∃(λz.woman z ∧ love x z)) u)

  • Interprétation sémantique d’une structure grammaticalesentence

    nounp

    every man

    verbp

    loves nounp

    a woman

    λS V .V S

    λD N.D N

    λP Q.∀(λx.P x ⇒ Q x) λx.man x

    λV O SV .V S O

    λO S.S(λx.O(λy.love x y)) λD N.D N

    λP Q.∃(λx.P x ∧ Q x) λx.woman x

    Lsem(nounp a woman) =λQ.∃(λz.woman z ∧ Q z)

    Lsem(nounp every man) =λQ.∀(λu.man u ⇒ Q u)

    Lsem(verbp loves (nounp a woman)) =λS.S(λx .∃(λz.woman z ∧ love x z))

    Lsem(sentence(nounp every man)(verbp loves (nounp a woman))) =∀(λu.man u ⇒ ∃(λz.woman z ∧ love u z))

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))

    • ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :

    • Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))• ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))

    Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :

    • Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))• ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))

    Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :

    • Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))• ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))

    Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :• Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))• ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))

    Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :• Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Portée des quantificateurs : sujet ou objetLa phrase every man loves a woman a deux sens possibles :• ∀(λu.man u ⇒ ∃(λz .woman z ∧ love u z))• ∃(λz .woman z ∧ ∀(λu.man u ⇒ love u z))

    Le second sens peut être obtenu en utilisant :

    λO S.O(λy .S(λx .love x y))

    comme interprétation de love au lieu de :

    λO S.S(λx .O(λy .love x y))

    Cette technique permet également de modéliser d’autres phénomènes(modalité, temps,. . . ). Par exemple, l’ambiguïté de Re/de Dicto :• Jean croit que quelqu’un manipule les médias. :

    • Jean croit qu’il existe une personne qui manipule les médias (il nesait pas de qui il s’agit),

    • Il existe quelqu’un (e.g. Bob) dont Jean croit qu’il manipule lesmédias.

  • Plan

    1 Retour sur la logique propositionnelle

    2 Encore un peu de syntaxe abstraite

    3 Les relations

    4 La quantification

    5 Logique et programmationSémantique opérationnelleLogique de Hoare

  • Modèle et implémentation

    Modèle du problème

    code du logiciel

    implémentation

    ObjectifOn a du code censé implémenter notre modèle et on veut montrer qu’ilfonctionne correctement.

    PrincipeNous allons voir le code comme définissant une fonction sur desconfigurations. (C’est en général un relation afin de laisser la possibilitéau compilateur de réaliser des optimisation.)

  • Modèle et implémentation

    Modèle du problème

    code du logiciel

    implémentation

    ObjectifOn a du code censé implémenter notre modèle et on veut montrer qu’ilfonctionne correctement.

    PrincipeNous allons voir le code comme définissant une fonction sur desconfigurations. (C’est en général un relation afin de laisser la possibilitéau compilateur de réaliser des optimisation.)

  • Modèle et implémentation

    Modèle du problème

    code du logiciel

    implémentation

    ObjectifOn a du code censé implémenter notre modèle et on veut montrer qu’ilfonctionne correctement.

    PrincipeNous allons voir le code comme définissant une fonction sur desconfigurations. (C’est en général un relation afin de laisser la possibilitéau compilateur de réaliser des optimisation.)

  • Le langage while

    Nous allons travailler sur un sous-ensemble de python n’utilisant que :• pour valeurs :

    • les booléens,• les nombres,

    • pour constructions :• les affectations de variables,• les sequences d’instructions,• les conditionnelles,• les boucles while.

    Nous nous interdisons les listes, les objets, les fonctions, . . .

  • Le langage while

    Nous allons travailler sur un sous-ensemble de python n’utilisant que :• pour valeurs :

    • les booléens,• les nombres,

    • pour constructions :• les affectations de variables,• les sequences d’instructions,• les conditionnelles,• les boucles while.

    Nous nous interdisons les listes, les objets, les fonctions, . . .

  • Les environnements : une notion de configuration

    Environnements et commandes• Un environnement (même notion que la valuation) est une fonction

    partielle à support fini des variables dans les valeurs. Il représententun état de la mémoire d’un programme.

    • Les commandes transforment les environnements.

    x←Truey← 4z← -45

    x←Truey← -37z← -45

    y=z+y*2

    RemarqueLe debugger de Thonny permet d’observer facilement l’action descommandes sur les environnements.

    Sémantique opérationnelleC’est la description (formelle) de l’action de chaque commande (du code)sur les configurations.

  • Les environnements : une notion de configuration

    Environnements et commandes• Un environnement (même notion que la valuation) est une fonction

    partielle à support fini des variables dans les valeurs. Il représententun état de la mémoire d’un programme.

    • Les commandes transforment les environnements.

    x←Truey← 4z← -45

    x←Truey← -37z← -45

    y=z+y*2

    RemarqueLe debugger de Thonny permet d’observer facilement l’action descommandes sur les environnements.

    Sémantique opérationnelleC’est la description (formelle) de l’action de chaque commande (du code)sur les configurations.

  • Les environnements : une notion de configuration

    Environnements et commandes• Un environnement (même notion que la valuation) est une fonctio