Instanciation du but existentiellement quantifié
se(v1,…,vn)
avec :
Cette commande permet de choisir l’instanciation de variables, sous la portée d’un
quantificateur existentiel apparaissant dans le but courant.
Si le but est de la forme :
∃(w1,…,wn).P(w1,…,wn)
alors le but devient :
P(v1,…,vn)
Cette commande n’est protégé ni contre le mauvais typage (voir chapitre 2.2 page §) ni contre
la mauvaise définition (voir chapitre 2.3 page §) des valeurs avec lesquelles ont souhaite
instancier les variables. Il faut donc faire attention à ne pas introduire d’expressions mal typées
ou mal définies.
Ceci peut être vérifié a posteriori à l’aide de l’outil mdelta (cf. Manuel Utilisateur Version
1.0.).
Si la valeur d’une ou plusieurs variables n’est pas connue ou doit rester indéterminée, il est possible d’utiliser le mot-clé _h, afin de ne pas instancier les variables choisies. Par exemple, si le but est :
alors
transformera le but en
Soit la situation suivante :
Hypothesis ENS = {e1,e2,e3,e4,e5} & uu: ENS & zz: ENS & Goal #kk.(kk: ENS & not(kk = uu) & not(kk = zz))
|
L’opérateur peut remplacer la variable kk par une valeur judicieusement choisie.
PRI> se(e1) Starting Suggest for Exist
|
Dans ce cas, le but courant est remplacé par le but avec la variable kk instanciée.
Goal e1: ENS & not(e1 = uu) & not(e1 = zz)
|