4.22 Global situation

État de la preuve pour les PO du composant courant

Syntaxe

  gs
  gs(k)
  gs(o,e)
  gs(o,e,f)
avec :

Utilisation

Cette commande permet de sélectionner et d’afficher l’état de preuve (prouvée, non prouvée) et le but (sans les hypothèses) des obligations de preuve.
L’argument o permet de sélectionner les obligations de preuves correspondantes à la clause spécifiée (si elle existe), e identifie l’état des obligations de preuve et enfin, f la forme de leur but.
L’argument k permet de sélectionner toutes les obligations de preuve du composant courant qui sont dans l’état de preuve spécifié, si k vaut Proved ou Unproved, toutes les obligations de preuve du composant courant dont le but coïncide avec g, si k est de la forme Patt(g) et toutes les obligations de preuve correspondantes à la clause k, si k est un nom de clause du composant courant.
Par défaut, gs, gs(o,e) représentent respectivement gs(_all,_all,_all) et gs(o,e,_all).
Si k vaut Proved ou Unproved, gs(k) signifie gs(_all,k,_all), si k est de la forme Patt(g), gs(k) désigne gs(_all,_all,(g)) et dans tout les autres cas, gs(k) signifie gs(k,_all,_all).

Exemple1

Pour le composant ci-dessous, on note la présence de la clause Initialisation et de l’opération op0. La forme du but de chaque obligation de preuve est donnée en fin de ligne.


 
PRI> gs  
State of all PO  
    Initialisation  
  PO1 Unproved xx = 3  
  PO2 Unproved {0|->TRUE}: NAT +-> BOOL  
  PO3 Unproved xx+1: INTEGER  
  PO4 Proved 0<=xx+1  
  PO5 Unproved xx+1<=2147483647  
    op0  
  PO1 Unproved zz+2: INTEGER  
  PO2 Unproved 0<=zz+2  
  PO3 Proved zz+2<=2147483647  
  PO4 Unproved zz+2 = 3  
End  
 


Exemple2

On ne sélectionne maintenant que les obligations de preuve de l’opération op0 :


 
PRI> gs(op0)  
State of All PO of operation op0  
        PO1 Unproved    zz+2: INTEGER  
        PO2 Unproved    0<=zz+2  
        PO3 Proved      zz+2<=2147483647  
        PO4 Unproved    zz+2 = 3  
End  
 


Exemple3

On choisit d’afficher seulement les obligations de preuve non prouvées de l’opération op0 :


 
PRI> gs(op0,Unproved)  
Unproved PO of operation op0  
        PO1 Unproved    zz+2: INTEGER  
        PO2 Unproved    0<=zz+2  
        PO4 Unproved    zz+2 = 3  
End  
 


Exemple4

On recherche les obligations de preuve non prouvées de la clause Initialisation dont le but coïncide avec {x} : y   →↦  BOOL :


 
PRI> gs(Initialisation,Unproved,({x}: y +-> BOOL))  
 
Unproved PO of operation Initialisation  
Matching with {x}: y +-> BOOL  
        PO2 Unproved    {0|->TRUE}: NAT +-> BOOL  
End  
 


Exemple5

On recherche les obligations de preuve prouvées parmi toutes les obligations de preuve du composant courant :


 
PRI> gs(Proved)  
 
All Proved PO  
    Initialisation  
  PO4 Proved 0<=xx+1  
    op0  
  PO3 Proved zz+2<=2147483647  
End  
 


Exemple6

On recherche parmi toutes les obligations de preuve du composant courant, celles dont le but coïncide avec la formule x = y :


 
PRI> gs(Patt(x = y))  
 
State of all PO  
Matching with x = y  
    Initialisation  
  PO1 Unproved xx = 3  
    op0  
  PO4 Unproved zz+2 = 3  
End