Exercices série 7
Lambda-calcul, suite
I. Identifiez le type des expressions suivantes:
Rappel
$e$ est un type;
$t$ est un type;
Si $\sigma$ est un type et $\tau$ est un type, alors $\langle \sigma, \tau \rangle$ est un type;
Rien d’autre n’est un type.
Rappel:
$x, y$ sont des variables d’individus
$a, b$ sont des constantes d’individus
$P, Q, X$ sont des variables de prédicats unaires (ne prenant qu’un argument)
$R$ est une variable de prédicat binaire (prenant deux arguments)
femme et mortelle sont des constantes de prédicats de type $\langle e, t \rangle$.
- $\lambda y. \lambda x. R(x,y)$
- $[\lambda y. \lambda x. R(x,y)](a)$
- $[\lambda x. R(x,a)](b)$
- $R(a,b)$
- $\lambda x.[P(x) \land Q(x)]$
- $[\lambda x.[P(x) \land Q(x)]](a)$
- $\lambda P. P$
- $\lambda P. P(a)$
- $\exists x. P(x)$
- $\lambda P.\exists x. P(x)$
- $[\lambda P.\exists x. P(x)](femme)$
- $\exists x. femme(x)$
- $\lambda P.\forall x. P(x)$
- $[\lambda P.\forall x. P(x)](mortelle)$
- $\neg mortelle(x)$
- $\lambda x. \neg mortelle(x)$
- $\lambda P \lambda x. \neg P(x)$
- $[\lambda P \lambda x. \neg P(x)](mortelle)$
- $\lambda x. \neg mortelle(a)$
- $[\lambda x. \neg mortelle(x)](a)$
II. Considérez les expressions suivantes:
- $[\lambda x. P(x)](a)$
- $[\lambda x. P(x)(a)]$
- $[\lambda x. R(y,a)]$
- $[\lambda x. R(y,a)](b)$
- $[\lambda x. R(x,a)](b)$
- $[\lambda x. \lambda y. R(x,y)](b)$
- $[\lambda x. \lambda y. R(x,y)](b)(a)$
- $[\lambda x. [ \lambda y. R(x,y)](b)](a)$
- $[\lambda X. \exists x. [P(x) \land X(x)]](\lambda y. R(a,y))$
- $[\lambda X. \exists x. [P(x) \land X(x)]](\lambda x. R(a,x))$
- $[\lambda X. \exists x. [P(x) \land X(x)]](\lambda y. R(y,x))$
- $[\lambda X. \exists x. [P(x) \land X(x)]](Q)$
- $[\lambda X. \exists x. [P(x) \land X(x)]](X)$
- $[\lambda X. \exists x. [P(x) \land X(x)](\lambda x. Q(x))]$
- $[\lambda y. \lambda x. R(y,x)](a)$
Pour chacune des expressions ci-dessus, répondez aux questions suivantes:
- S’agit-il d’une expression bien formée de LL? Si oui, quel est son type?
- S’il s’agit d’une expression bien formée et lorsque cela est possible, donnez une version complètement réduite de la formule (via lambda-conversion); utilisez la règle d’alpha-conversion (i.e., renommez les variables quand cela est nécessaire), afin d’éviter toute capture de variable accidentelle.