bob.substitution
Class TSubBoucle

java.lang.Object
  extended by bob.elementB.TElementB
      extended by bob.substitution.TSubstitution
          extended by bob.substitution.TSubBoucle

public class TSubBoucle
extends TSubstitution

La classe TSubBoucle contient les informations sur une boucle. C'est une substitution généralisée primitive.

Syntaxe B:

WHILE TPredicat THEN
   TSubstitution
INVARIANT
    TPredicat
VARIANT
    TExpression
END

ATTENTION: La méthode Convertir() ne convertit que le corps de la boucle. et CalculerWP(R) est à modifier pour la liste de variables quantifiées.

Version:
1.0 du 20/06/2001
Author:
Frédéric Chatel
See Also:
TSubstitution, TPredicat, TExpression

Field Summary
 
Fields inherited from class bob.substitution.TSubstitution
Primitive
 
Constructor Summary
TSubBoucle(TPredicat p, TSubstitution s, TPredicat i, TExpression v)
          Constructeur paramétré qui initialise les attributs avec les informations données par l'utilisateur.
 
Method Summary
 void Afficher(java.io.Writer flux_sortie)
          Affiche une boucle.
 void Afficher(java.io.Writer flux_sortie, int niveau)
          Affiche une boucle avec presentation.
 TPredicat CalculerWP(TPredicat post_cond)
          Calcule la plus faible précondition [WHILE P DO S INVARIANT I VARIANT V END]R.
 tatibouet.bparser.Noeud ConstruireNoeud()
          Construit un Noeud Tatibouet à partir d'une boucle
 TSubstitution Convertir()
          Convertit le corps de la boucle uniquement.
 TSubstitution DonnerDo()
          Donne la substitution introduite par le mot-clé DO.
 TPredicat DonnerInvariant()
          Donne le prédicat introduit par le mot-clé INVARIANT.
 TExpression DonnerVariant()
          Donne l'expression introduite par le mot-clé VARIANT.
 TPredicat DonnerWhile()
          Donne le prédicat introduit par le mot-clé WHILE.
 TElementB Dupliquer()
          Renvoie la copie de l'élément courant cloné sur toute sa hauteur
 boolean EstSubMachine()
          Teste si la boucle est une substitution de machine
 java.util.Vector<TExprIdentificateur> ListeDesNomsLibres()
          Renvoie la liste des identificateurs libres dans un predicat, une expression ou une substitution.
 TElementB Remplacer(TExprIdentificateur Id, TExpression e)
          Remplace un identificateur non libre dans l'élément B courant par une expression donnee.
 TSubstitution RemplacerAppelOp()
          Remplace l'appel d'opération
Auteur: Olivier BERT
 TSubstitution Simplifier()
          Simplifie la substitution.
 TSubstitution TraiterAssertSansRenommage(java.util.Vector<TExprIdentificateur> vv, java.util.Vector<TPredicat> PP)
          Aplatissement pour traiter AssertSansRenommage.
 
Methods inherited from class bob.substitution.TSubstitution
CalculerGarde, CalculerTermin, EstPrimitive
 
Methods inherited from class bob.elementB.TElementB
RemplacerMultiple
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TSubBoucle

public TSubBoucle(TPredicat p,
                  TSubstitution s,
                  TPredicat i,
                  TExpression v)
Constructeur paramétré qui initialise les attributs avec les informations données par l'utilisateur.

Parameters:
p - Prédicat introduit par le mot-clé WHILE.
s - Subsitution introduite par le mot-clé DO.
i - Invariant de la boucle.
v - Variant de la boucle.
Method Detail

DonnerWhile

public TPredicat DonnerWhile()
Donne le prédicat introduit par le mot-clé WHILE.

Returns:
Le prédicat introduit par le mot-clé WHILE.

DonnerDo

public TSubstitution DonnerDo()
Donne la substitution introduite par le mot-clé DO.

Returns:
La substitution ntroduite par le mot-clé DO.

DonnerInvariant

public TPredicat DonnerInvariant()
Donne le prédicat introduit par le mot-clé INVARIANT.

Returns:
Le prédicat introduit par le mot-clé INVARIANT.

DonnerVariant

public TExpression DonnerVariant()
Donne l'expression introduite par le mot-clé VARIANT.

Returns:
L'expression introduite par le mot-clé VARIANT.

Dupliquer

public TElementB Dupliquer()
Renvoie la copie de l'élément courant cloné sur toute sa hauteur

Overrides:
Dupliquer in class TElementB
Returns:
un clone integral de l'element B courant

RemplacerAppelOp

public TSubstitution RemplacerAppelOp()
Remplace l'appel d'opération
Auteur: Olivier BERT

Overrides:
RemplacerAppelOp in class TSubstitution
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

TraiterAssertSansRenommage

public TSubstitution TraiterAssertSansRenommage(java.util.Vector<TExprIdentificateur> vv,
                                                java.util.Vector<TPredicat> PP)
Aplatissement pour traiter AssertSansRenommage. Ne devrait pas être appelé, car on n'aplatit pas les implémentations.
Auteur Didier BERT

Overrides:
TraiterAssertSansRenommage in class TSubstitution

Simplifier

public TSubstitution Simplifier()
Simplifie la substitution.

Overrides:
Simplifier in class TSubstitution
Returns:
la substitution this simplifiee
See Also:
TSubPrecondition

EstSubMachine

public boolean EstSubMachine()
Teste si la boucle est une substitution de machine

Overrides:
EstSubMachine in class TSubstitution

ListeDesNomsLibres

public java.util.Vector<TExprIdentificateur> ListeDesNomsLibres()
Renvoie la liste des identificateurs libres dans un predicat, une expression ou une substitution.

Overrides:
ListeDesNomsLibres in class TElementB
Returns:
un vecteur dont chaque element est un Tidentificateur libre.

Remplacer

public TElementB Remplacer(TExprIdentificateur Id,
                           TExpression e)
Remplace un identificateur non libre dans l'élément B courant par une expression donnee.

Overrides:
Remplacer in class TElementB
Parameters:
Id - : l'identificateur a remplacer
e - : la nouvelle expression
Returns:
Si Id est non libre dans l'element B courant alors toutes ses occurrences sont remplacees par e Sinon : L'element B courant est renvoye non modifie

Convertir

public TSubstitution Convertir()
Convertit le corps de la boucle uniquement.
Le While est déjà une substitution primitive.

Syntaxe B:

WHILE
C
DO
S
INVARIANT
I
VARIANT
V
END

Overrides:
Convertir in class TSubstitution
Returns:
Substitution résultant de la conversion.

CalculerWP

public TPredicat CalculerWP(TPredicat post_cond)
Calcule la plus faible précondition [WHILE P DO S INVARIANT I VARIANT V END]R. ATTENTION: A revoir pour la quantification.

Overrides:
CalculerWP in class TSubstitution
Parameters:
post_cond - Postcondition vérifiée après la fin de la substitution "boucle".
Returns:
Le prédicat:
I ^
(I ^ P) => [S]I ^
I => V:N ^
(I ^ P) => [n:=V][S](V (I ^ not(P)) => R

Afficher

public void Afficher(java.io.Writer flux_sortie)
              throws java.io.IOException,
                     java.io.FileNotFoundException
Affiche une boucle.

Overrides:
Afficher in class TElementB
Parameters:
flux_sortie - Flux de sortie: fichier de type FileWriter ou terminal(new PrintWriter(System.out)).
Throws:
java.io.IOException
java.io.FileNotFoundException

Afficher

public void Afficher(java.io.Writer flux_sortie,
                     int niveau)
              throws java.io.IOException,
                     java.io.FileNotFoundException
Affiche une boucle avec presentation.

Overrides:
Afficher in class TElementB
Parameters:
flux_sortie - Flux de sortie: fichier de type FileWriter ou terminal(new PrintWriter(System.out)).
niveau - : un entier qui indique le niveau de tabulation.
Throws:
java.io.IOException
java.io.FileNotFoundException

ConstruireNoeud

public tatibouet.bparser.Noeud ConstruireNoeud()
Construit un Noeud Tatibouet à partir d'une boucle

Overrides:
ConstruireNoeud in class TElementB
Returns:
Noeud


Copyright OB.