bob.substitution
Class TSubstitution

java.lang.Object
  extended by bob.elementB.TElementB
      extended by bob.substitution.TSubstitution
Direct Known Subclasses:
TCase, TElsif, TSubAppelOp, TSubAssertion, TSubBloc, TSubBoucle, TSubCas, TSubChoixBorne, TSubChoixNonBorne, TSubCondition, TSubDefinitionLocale, TSubDevientEgal, TSubDevientEltDe, TSubDevientTelQue, TSubIdentite, TSubPrecondition, TSubSelection, TSubSequence, TSubSimultanee, TSubVariableLocale, TWhen

public abstract class TSubstitution
extends TElementB

La classe TSubsitution contient les informations générales sur les substitutions généralisées. Chaque substitution est redéfinie dans une classe fille car elle contient sa propre construction.

Version:
1.0 du 13/06/2001
Author:
Frédéric Chatel
See Also:
TElementB

Field Summary
protected  boolean Primitive
           
 
Constructor Summary
TSubstitution()
           
 
Method Summary
 TPredicat CalculerGarde()
          Calcule la garde d'une substitution (faisabilite du B-Book)
 TPredicat CalculerTermin()
          Calcule la terminaison d'une substitution
 TPredicat CalculerWP(TPredicat post_cond)
          Calcule la plus faible précondition assurant la terminaison de la substitution généralisée et la vérification de la postcondition.
 TSubstitution Convertir()
          Convertit la substitution généralisée en une substitution primitive.
 boolean EstPrimitive()
          Indique si la substitution généralisée est primitive ou non.
 boolean EstSubMachine()
          Cette méthode renvoie TRUE si la substitution est valide dans une machine
FALSE sinon.
 TSubstitution RemplacerAppelOp()
          Convertion des appels d'opérations.
 TSubstitution Simplifier()
          La methode Simplifier simplifie une substitution.
 TSubstitution TraiterAssertSansRenommage(java.util.Vector<TExprIdentificateur> vv, java.util.Vector<TPredicat> PP)
          Traite la substitution ASSERT dans le cas d'un aplatissement de raffinement sans renommage.
 
Methods inherited from class bob.elementB.TElementB
Afficher, Afficher, ConstruireNoeud, Dupliquer, ListeDesNomsLibres, Remplacer, RemplacerMultiple
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

Primitive

protected boolean Primitive
Constructor Detail

TSubstitution

public TSubstitution()
Method Detail

EstPrimitive

public boolean EstPrimitive()
Indique si la substitution généralisée est primitive ou non.

Returns:
VRAI: c'est une substitution primitive.
FAUX: c'est une substitution non primitive.

Convertir

public TSubstitution Convertir()
Convertit la substitution généralisée en une substitution primitive.

Returns:
La substitution primitive obtenue. Auteur: Olivier BERT

Simplifier

public TSubstitution Simplifier()
La methode Simplifier simplifie une substitution. Essentiellement elle traite la remontée des préconditions. Le resultat est, au pire, un duplicatat de la substitution. Cette methode n'est redefinie que dans certaines substitutions.

Returns:
la substitution this simplifiee
See Also:
TSubPrecondition

RemplacerAppelOp

public TSubstitution RemplacerAppelOp()
Convertion des appels d'opérations.

Cette méthode ne convertit que les appels d'opérations. Elle ne sera donc redéfinie que dans TSubAppelOp. Dans tous les autres cas, on duplique.

Returns:
La substitution obtenue. ATTENTION !!! ATTENTION !!! : pour l'instant cette méthode prend seulement en charge les substitutions que l'on peut trouver au niveau spécification. Si il y a des ';', une exception sera levée.
Auteur: Olivier Bert

EstSubMachine

public boolean EstSubMachine()
Cette méthode renvoie TRUE si la substitution est valide dans une machine
FALSE sinon.
Elle n'est fausse que dans les cas où il y a des substitutions ";", des substitutions WHILE et des substitutions VAR.
Pour un appel d'opération, elle répond TRUE, car on suppose que le remplacement se fait avec le corps de la définition qui est une substitution de machine.

Elle est utilisée pour éviter de faire des remplacements d'appels d'opération dans une spécification en toute sécurité.


CalculerWP

public TPredicat CalculerWP(TPredicat post_cond)
Calcule la plus faible précondition assurant la terminaison de la substitution généralisée et la vérification de la postcondition. Doit etre redéfinie pour chaque substitution.

Parameters:
post_cond - Postcondition vérifiée après la fin de la substitution généralisée.
Returns:
La plus faible précondition qui est un prédicat.

CalculerGarde

public TPredicat CalculerGarde()
Calcule la garde d'une substitution (faisabilite du B-Book)

Returns:
le predicat de garde de la substitution

CalculerTermin

public TPredicat CalculerTermin()
Calcule la terminaison d'une substitution

Returns:
le predicat de terminaison de la substitution

TraiterAssertSansRenommage

public TSubstitution TraiterAssertSansRenommage(java.util.Vector<TExprIdentificateur> vv,
                                                java.util.Vector<TPredicat> PP)
Traite la substitution ASSERT dans le cas d'un aplatissement de raffinement sans renommage. Sinon, retourne une copie, comme d'habitude. Si l'assertion est de la forme ASSERT Q THEN S END alors, si les prédicats Q1 ne dépendent pas de vv et les prédicats Q2 dépendent de vv, avec Q <=> Q1 & Q2, on obtient ASSERT Q1 & #vv.(PP & Q2) THEN S END



Copyright OB.