4.26 Logical Analysis

Analyse logique dune formule

Syntaxe

  la
  la(n)
  la(f)
  la(f | n)
avec :

Utilisation

Cette commande permet d’analyser une formule B selon différents modes :

Lorsque la formule à analyser a une profondeur supérieure à la profondeur d’analyse, alors les expressions et prédicats ne pouvant pas être détaillés sont remplacés par des termes notés t.i. Cette notation permet d’obtenir un affichage plus synthétique. La valeur de ces termes n’est pas affichée automatiquement afin d’alléger l’affichage. La commande dt(voir chapitre 4.15 page §) permet d’afficher la valeur de tout ou partie de ces termes.

Exemple

Soit la situation suivante :


 
        "‘SEARCH_MAX_EQL_RGE preconditions in this component’" &  
        rng: minrge..maxrge &  
        jj: 0..maxidx &  
        ii: 0..maxidx &  
        ii<=jj &  
        vv: VALUE &  
 
  



 
      "‘Local hypotheses’" &  
        nrr: INTEGER &  
        0<=nrr &  
        nrr<=2147483647 &  
        nbb: BOOL &  
        sol = (ii..jj<|arr_rge$1(rng))~[{vv}] &  
        not(sol = {}) => nrr = max(sol) &  
        nbb = bool(not(sol = {})) &  
        not((ii..jj<|arr_rge$1(rng))~[{vv}] = {}) &  
        "‘Check operation refinement - ref 4.4, 5.5’" &  
        =>  
        nrr = max((ii..jj<|arr_rge$1(rng))~[{vv}])  
 
 


L’application de la commande la(3) permet d’obtenir la décomposition du but suivante :


 
Parsing formula  
"‘SEARCH_MAX_EQL_RGE preconditions in this component’" &  
rng: t.1..t.2 &  
jj: t.3..t.4 &  
ii: t.3..t.4 &  
ii <= jj &  
vv: VALUE &  
"‘Local hypotheses’" &  
nrr: INTEGER &  
0 <= nrr &  
nrr <= 2147483647 &  
nbb: BOOL &  
sol = t.5[t.6] &  
(not(t.7)=>t.8 = t.9) &  
nbb = bool(t.10) &  
not(t.11 = t.12) &  
"‘Check operation refinement - ref 4.4, 5.5’"  
=>  
nrr = max(t.11)  
End of analysis