Skip to content
Snippets Groups Projects
Commit b42622e3 authored by Ludovic Apvrille's avatar Ludovic Apvrille
Browse files

Update on model checker

parent 1672ac74
No related branches found
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -195,7 +195,7 @@ public class AvatarStateMachine extends AvatarElement { ...@@ -195,7 +195,7 @@ public class AvatarStateMachine extends AvatarElement {
// Add missing implicit states. // Add missing implicit states.
public void makeFullStates(AvatarBlock _block) { public void makeFullStates(AvatarBlock _block) {
addStatesToTransitionsBetweenTwoNonStates(_block); addStatesToTransitionsBetweenTwoNonStates(_block);
addStatesToTransitionsWithActions(_block); addStatesToNonEmptyTransitions(_block);
} }
...@@ -220,10 +220,10 @@ public class AvatarStateMachine extends AvatarElement { ...@@ -220,10 +220,10 @@ public class AvatarStateMachine extends AvatarElement {
AvatarTransition at1 = new AvatarTransition(_block, "TransitionForIntermediateState__" + id, elt.getReferenceObject()); AvatarTransition at1 = new AvatarTransition(_block, "TransitionForIntermediateState__" + id, elt.getReferenceObject());
toAdd.add(at1); toAdd.add(at1);
tr.removeAllNexts();
tr.addNext(state); previous.removeAllNexts();
state.addNext(at1); previous.addNext(state);
at1.addNext(next); state.addNext(tr);
id ++; id ++;
} }
...@@ -243,7 +243,7 @@ public class AvatarStateMachine extends AvatarElement { ...@@ -243,7 +243,7 @@ public class AvatarStateMachine extends AvatarElement {
// Then, handling transitions with actions which have a non state // Then, handling transitions with actions which have a non state
// before // before
private void addStatesToTransitionsWithActions(AvatarBlock _block) { private void addStatesToNonEmptyTransitions(AvatarBlock _block) {
AvatarStateMachineElement next; AvatarStateMachineElement next;
AvatarStateMachineElement previous; AvatarStateMachineElement previous;
ArrayList<AvatarStateMachineElement> toAdd = new ArrayList<AvatarStateMachineElement>(); ArrayList<AvatarStateMachineElement> toAdd = new ArrayList<AvatarStateMachineElement>();
...@@ -253,7 +253,7 @@ public class AvatarStateMachine extends AvatarElement { ...@@ -253,7 +253,7 @@ public class AvatarStateMachine extends AvatarElement {
AvatarTransition tr = (AvatarTransition)elt; AvatarTransition tr = (AvatarTransition)elt;
// tr with actions? // tr with actions?
if (tr.getNbOfAction() > 0) { if ((tr.getNbOfAction() > 0) || (tr.hasDelay()) || (tr.isGuarded())){
previous = getPreviousElementOf(elt); previous = getPreviousElementOf(elt);
next = elt.getNext(0); next = elt.getNext(0);
......
...@@ -246,7 +246,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph { ...@@ -246,7 +246,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
} }
//TraceManager.addDev("Preparing Avatar specification :" + spec.toString()); TraceManager.addDev("Preparing Avatar specification :" + spec.toString());
prepareStates(); prepareStates();
prepareTransitions(); prepareTransitions();
...@@ -486,7 +486,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph { ...@@ -486,7 +486,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
SpecificationTransition st = null; SpecificationTransition st = null;
// See whether there is at least one transition with an immediate internal action with no alternative in the same block // See whether there is at least one transition with an immediate internal action with no alternative in the same block
for(SpecificationTransition tr: transitions) { for(SpecificationTransition tr: transitions) {
if ((AvatarTransition.isActionType(tr.getType()) && (tr.clockMax == clockMin))|| tr.getType() == AvatarTransition.TYPE_EMPTY) { if ((AvatarTransition.isActionType(tr.getType()) && (tr.clockMin == tr.clockMax) && (tr.clockMin == 0)) || tr.getType() == AvatarTransition.TYPE_EMPTY) {
// Must look for similar transitions in the the same block // Must look for similar transitions in the the same block
//TraceManager.addDev("Lookin for same block for " + tr); //TraceManager.addDev("Lookin for same block for " + tr);
boolean foundSameBlock = false; boolean foundSameBlock = false;
...@@ -985,6 +985,13 @@ public class AvatarModelChecker implements Runnable, myutil.Graph { ...@@ -985,6 +985,13 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
//TraceManager.addDev("Handling Empty transition of previous= 3 " + _ase.getName() + " trans=" + at.getName()); //TraceManager.addDev("Handling Empty transition of previous= 3 " + _ase.getName() + " trans=" + at.getName());
// Check time
boolean hasTime = at.hasDelay();
if (hasTime) {
return _ase;
}
// Check guard; // Check guard;
boolean guard = guardResult(at, _block, _sb); boolean guard = guardResult(at, _block, _sb);
...@@ -992,7 +999,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph { ...@@ -992,7 +999,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
return _ase; return _ase;
} }
//TraceManager.addDev("Handling Empty transition of previous= 4 " + _ase.getName() + " trans=" + at.getName()); //TraceManager.addDev("Handling Empty transition of previous= 4 " + _ase.getName() + " trans=" + at.getName() + " delay=" + at.getMinDelay());
AvatarStateElement ase = (AvatarStateElement)(at.getNext(0)); AvatarStateElement ase = (AvatarStateElement)(at.getNext(0));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment