4.50 Search rule

Recherche de règles

Syntaxe

  sr(T,CO,AN)
  sr(T,CO)
  sr
avec :

Utilisation

Cette commande permet de rechercher une ou plusieurs règles dans l’ensemble des règles utilisées par le prouveur.

CO et AN sont des listes de formules et traduisent les critères que devront vérifier les règles sélectionnées.
CO identifie les contraintes liées au conséquent de règles et AN celles liées à l’antécédent.
Les critères de recherche qui peuvent concerner l’antécédent et/ou le conséquent d’une règle, sont de deux types :

Dans le cas où la sélection ne concernerait que le conséquent de règle, AN sera omis.
Si l’opérateur recherche uniquement les règles s’appliquant sur l’obligation de preuve courante, il lui suffira d’entrer sr, la sélection s’effectuera alors parmi les règles sélectionnées par les mot-clefs Back et Rewr (sr équivaut à sr(Back.Rewr, Goal)).

Les critères C, D, A et B peuvent être omis. Si les critères A ou B sont présents, les critères C et D doivent l’être aussi (l’ordre des mot-clés est important). Dans ce cas, l’opérateur utilisera abs(No),No pour C, D afin d’exprimer qu’aucun critère ne s’applique sur le conséquent. La commande sera alors sr(T, abs(No), No, abs(A), B).

De manière générale, les formules entrées sont formées d’expressions séparées par les opérateurs spéciaux __and, __or et __not. L’argument de _not devra être mis entre parenthèses.

Pour être sélectionnée, une règle devra donc contenir les expressions concernées suivant les indications données par ces opérateurs.
Par exemple, la formule qui suit permet de sélectionner les règles dont le conséquent est de la forme a=b (contrainte absolue), qui contient des surcharges, des unions, mais pas d’ensemble en compréhension :
abs(a = b),((a < +b) __and (a b) __and (__not({x|Q})))

_and et __or sont interdits à l’intérieur d’un __not où leur emploi serait superflu. En effet, _not(X __and Y) équivaut à __not(X) __or _not(Y).

Exemple

Par défaut, sr est équivalent à sr(All,Goal).


 
PRI> sr  
Searching rules which can be applied to the current goal in Rewr.Back  
 


On recherche dans les théories SimplifyX et DifferenceX les règles dont le conséquent coïncide avec le but courant.


 
PRI> sr(SimplifyX.DifferenceXY, Goal2)  
Searching rules matching with goal in : SimplifyX.DifferenceXY  
 


Enfin il est possible de sélectionner les règles, en fonction de la forme générale et des expressions contenues dans les conséquents et dans les antécédents.
On recherche les règles dont le conséquent est de la forme a = b et qui contient au moins une formule de la forme ¬c :


 
PRI> sr(All, abs(a=b), not(c))  
Searching in All rules with filter  
    consequent should contain not(c)  
    consequent should match with a = b  
 


On recherche les règles dont le conséquent est de la forme a = b et qui contient au moins une formule de la forme ¬c, et dont l’un des antécédents est de la forme a b :


 
PRI> sr(All, abs(a=b), not(c), abs(a>=b))  
Searching in All rules with filter  
    consequent should contain not(c)  
    consequent should match with a = b  
    antecedent should match with a >= b  
 


On recherche les règles dont l’un des antécédent est de la forme a b :


 
PRI> sr(All, abs(No), No, abs(a>=b))  
Searching in All rules with filter  
    antecedent should match with a >= b  
 


On recherche les règles dont le conséquent est de la forme a b :


 
PRI> sr(All, abs(a>=b))  
Searching in All rules with filter  
    consequent should match with a => b  
 


On recherche les règles dont l’un des antécédents doit contenir au moins une formule de la forme not(a - b) :


 
PRI> sr(Goal.Rewr, abs(No), No, abs(No), not(a-b))  
Searching in Goal.Rewr rules with filter  
    antecedent should contain not(a-b)