# simulation
 
$ RInitSimulation
 DESQUE
  Vrai(SimulationTest)
 ALORS
  PCategorieResultat(2)
  Oublie()

$ RSimule
  SI
   (Existe ! :t                   )
   (Existe   :q                   )
   Vrai(SimulationTest)			; ne tire pas les trans.source	;
   RE(Pre :q :t)			; possdant en entre une place ;
   RE(Marking m0 :q)			; q marque dans m0		;
   RC(VecInfEgal 21 Pre :t Marking m0)	; t franchissable  partir de m0;
   Non RE(Franchie :t vrai)

  REPETE
   PDebutEnsemble()
   PEtatQuestion(Simulation)						
   RA(Franchie :t vrai) 
   PMiseEnEvidence(:t)         ; Slectionne la transition franchissable ;
   RA(Objetselect :t transition)
   MV(VecPlus  12 Marking m0 Post :t)	; m0 := m0 + Post(.,t)		;
   MV(VecMoins 12 Marking m0 Pre  :t)	; m0 := m0 - Pre (.,t)		;
   EstFaux(SimulationTest)
   PFinEnsemble()
   
$ RSimuleMacao
 SI
  RE(Franchie :t vrai)
  RE(Pre :p :t)
  RE(Post :q :t)
  ME(Marking m0 :p :v1)         
  ME(Marking m0 :q :v2)
  Non RE(DejaFranchie :t vrai)   
 ALORS
  RA(DejaFranchie :t vrai)
  PDebutEnsemble()
  PMiseEnEvidence(:p)  ;mise en vidence des places entre de la transition;
  PMiseEnEvidence(:q)  ;mise en vidence des places entre de la transition;
  PModifAttribut(:p Marking :v1) ;mise en vidence des places entre de la   transition;
  PModifAttribut(:q Marking :v2) 
  RA(ObjetSelect :p place) ;on conserve les places qui ont t slectionnes ;
  RA(ObjetSelect :q place)
  PFinEnsemble()
  
$ RDeselectionPlace		
 SI
  RE(ObjetSelect :p place)	  ; cette rgle dselectionne les places ;
 ALORS
  PDebutEnsemble()
  PMiseEnEvidence(:p)  
  PFinEnsemble()
  RD(ObjetSelect :p place)
  EstVrai(PlaceDeselect)
  EstVrai(Nouv)
  
    
$ RDeselectionTransition 
 SI				; cette rgle ne sera dclenche ;
  RE(Objetselect :t transition) ; que si on  ne  veut pas garder ;
  Faux(VisualisationTest) 	; les   transitions   franchies	 ;
  Vrai(PlaceDeselect)
 ALORS
  PDebutEnsemble()
  PMiseEnEvidence(:t)  
  PFinEnsemble()
  RD(ObjetSelect :t transition)
  EstVrai(SimulationTest)
 
$ RVisualisation
 SI
  Vrai(VisualisationTest)
  Vrai(Nouv)
 ALORS
  EstVrai(SimulationTest)
  EstFaux(Nouv)
  
$ REfface  
 SI
 RE(DejaFranchie :t vrai)
 ALORS
 RD(Franchie)
 RD(DejaFranchie)
 Stop()
 
