Recherche d’hypothèses
sh(P,A)
sh(P)
avec :
Cette commande permet de rechercher, parmi les hypothèses, celles qui satisfont certains
critères.
P représente ce que les parties d’une hypothèse doivent vérifier pour que celle-ci soit
sélectionnée. P doit être un ensemble de sous-formules séparées par les trois opérateurs
spéciaux _and, _or, _not.
Par exemple : si P est égal à
(var1 __and var2) __or var3
on sélectionne les hypothèses qui contiennent soit var1 et var2 à la fois, soit var3.
Les formules avec des jokers sont autorisées.
A représente ce que l’hypothèse dans sa globalité doit vérifier, dans le même langage que
précédemment.
Par exemple :
(a = b) __or (a ⇒ b)
sélectionne les hypothèses qui sont soit des égalités, soit des implications.
Attention ! ! A l’intérieur d’un __not, l’usage de __and et __or n’est pas reconnu.
De même, A ne doit pas être équivalent à un terme du genre ((a = b) __and (a ⇒ b)), sinon
aucune hypothèse ne serait sélectionnée.
L’argument A peut être omis.
Si l’un des éléments de P est une variable, alors il faut que les hypothèses trouvées contiennent
la variable en question.
Par exemple :
sh(var)
sélectionne les hypothèses qui contiennent var, mais pas var$i ou my_var (var est considéré ici
comme une formule et non comme une chaine de caractères).
Une utilisation classique consiste à rechercher toutes les hypothèses qui font référence à une variable donnée.
Soit la situation suivante :
Hypothesis ENS = {e1,e2,e3,e4,e5} & ENS: FIN(NATURAL*{ENS.enum}) & not(ENS = {}) & xx: 1..10 & yy: 1..10 & zz: 1..100 & tt: ENS & uu: ENS & not(uu = tt) & uu: {e1,e2,e3,e4} => tt = e5 & uu = e5 => tt = e1 & 1<=xx & xx<=10 & 1<=yy & yy<=10 & 1<=zz & zz<=100 Goal not(uu = e1)
|
On commence par rechercher toutes les hypothèses qui contiennent la variable uu.
PRI> sh(uu)
|
Le résultat obtenu est :
Searching all Hypothesis that : contain uu match with a Starting search... Found hypothesis List is uu = e5 => tt = e1 & uu: {e1,e2,e3,e4} => tt = e5 & not(uu = tt) & uu: ENS End of found hypothesis
|
Le message match with a est affiché car lorsque le paramètre A est omis, les hypothèses
doivent coïncider avec le pattern très générique a.
On cherche ensuite les hypothèses qui font référence simultanément à uu et tt.
PRI> sh(uu _and tt)
|
Le resultat obtenu est le suivant :
Searching all Hypothesis that : contain uu _and tt match with a Starting search... Found hypothesis List is uu = e5 => tt = e1 & uu: {e1,e2,e3,e4} => tt = e5 & not(uu = tt) End of found hypothesis
|
On cherche maintenant les hypothèses qui font référence à la variable uu ou qui contiennent
l’expression not(a) (a est un joker).
PRI> sh(uu _or not(a))
|
Les hypothèses sélectionnées sont :
Searching all Hypothesis that : contain uu _or not(a) match with a Starting search... Found hypothesis List is uu = e5 => tt = e1 & uu: {e1,e2,e3,e4} => tt = e5 & not(uu = tt) & uu: ENS End of found hypothesis
|
On cherche enfin les hypothèses qui font référence à la variable uu et dont la forme est a : b ou
a = b.
PRI> sh(uu, (a:b _or a=b))
|
Les hypothèses sélectionnées sont :
Searching all Hypothesis that : contain uu match with a: b _or a = b Starting search... Found hypothesis List is uu: ENS End of found hypothesis
|