bob.substitution
Class TSubDevientEgal

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

public class TSubDevientEgal
extends TSubstitution

La classe TSubDevientEgal contient les informations sur les substitutions de type "devient égal". Le cas x := bool(P) n'est pas traité comme dans le B-Book, mais comme dans l'AtelierB: bool(P) est une expression.
TSubDevientEgal est une substitution généralisée primitive.

Syntaxe B:

Identificateur1[,...IdentificateurN] := Expression1[,...ExpressionN]

    ou bien

Identificateur(Expression1,...,ExpressionM) := Expression

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

Field Summary
 
Fields inherited from class bob.substitution.TSubstitution
Primitive
 
Constructor Summary
TSubDevientEgal(TExpression mg, TExpression md)
          Constructeur paramétré qui initialise les attributs avec les informations données par l'utilisateur.
TSubDevientEgal(java.util.Vector<TExpression> mg, java.util.Vector<TExpression> md)
          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 affectation.
 void Afficher(java.io.Writer flux_sortie, int niveau)
          Affiche une affectation avec presentation.
 TPredicat CalculerWP(TPredicat post_cond)
          Calcule la plus faible précondition [x:=E]R.
 tatibouet.bparser.Noeud ConstruireNoeud()
          Construit un Noeud Tatibouet à partir d'une affectation
 TSubstitution Convertir()
          Convertit une affectation de la forme f(e1, ...en) := E
 java.util.Vector<TExpression> DonnerMembreDroite()
          Donne la liste des expressions de la partie droite.
 java.util.Vector<TExpression> DonnerMembreGauche()
          Donne la liste des identificateurs (expressions) de la partie gauche.
 TElementB Dupliquer()
          Renvoie la copie conforme de l'element courant clone sur toute sa hauteur.
 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.
 
Methods inherited from class bob.substitution.TSubstitution
CalculerGarde, CalculerTermin, EstPrimitive, EstSubMachine, RemplacerAppelOp, Simplifier, TraiterAssertSansRenommage
 
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

TSubDevientEgal

public TSubDevientEgal(java.util.Vector<TExpression> mg,
                       java.util.Vector<TExpression> md)
Constructeur paramétré qui initialise les attributs avec les informations données par l'utilisateur. Ici, c'est une affectation multiple qui est initialisée.

Parameters:
mg - Liste des opérandes à gauche de l'affectation multiple.
md - liste des opérandes à droite de l'affectation multiple.

TSubDevientEgal

public TSubDevientEgal(TExpression mg,
                       TExpression md)
Constructeur paramétré qui initialise les attributs avec les informations données par l'utilisateur. Ici, c'est une affectation simple qui est initialisée.

Parameters:
mg - Opérande à gauche de l'affectation simple.
md - Opérande à droite de l'affectation simple.
Method Detail

DonnerMembreGauche

public java.util.Vector<TExpression> DonnerMembreGauche()
Donne la liste des identificateurs (expressions) de la partie gauche.

Returns:
La liste des identificateurs.

DonnerMembreDroite

public java.util.Vector<TExpression> DonnerMembreDroite()
Donne la liste des expressions de la partie droite.

Returns:
La liste des expressions.

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 TExprIdentificateur libre.

Dupliquer

public TElementB Dupliquer()
Renvoie la copie conforme de l'element courant clone sur toute sa hauteur.

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

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 iterations sont remplacees par e Sinon : L'element B courant est renvoye non modifie

Convertir

public TSubstitution Convertir()
Convertit une affectation de la forme f(e1, ...en) := E

Overrides:
Convertir in class TSubstitution
Returns:
Si l'affectation est de la forme f(e1, ...en) := E, on obtient une affectation de la forme:
f := f <+ {(e1, ...en) |-> E}.
Sinon l'affectation est renvoyée telle quelle.

CalculerWP

public TPredicat CalculerWP(TPredicat post_cond)
Calcule la plus faible précondition [x:=E]R. Si celle-ci est de la forme f(e1, ...en) := E, alors une conversion est assurée.

Overrides:
CalculerWP in class TSubstitution
Parameters:
post_cond - Postcondition vérifiée après la fin de la substitution "devient égal".
Returns:
Pour une affectation de la forme f(e1, ...en) := E:
le prédicat [f := f <+ {(e1, ...en) |-> E}] R.
Pour une affectation d'une autre forme:
le prédicat R où les identificateurs à gauche du symbole := sont remplacés par par les expressions de droite.

Afficher

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

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 affectation 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 affectation

Overrides:
ConstruireNoeud in class TElementB
Returns:
Noeud


Copyright OB.