Analyse logique d’une formule
la
la(n)
la(f)
la(f | n)
avec :
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.
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
|