private PExp extractInv(AAtomicStm atom) { AAssignmentStm x = atom.getAssignments().get(0); if (x.getClassDefinition() != null) { return invDefs(x.getClassDefinition()); } else { return invDefs(x.getStateDefinition()); } }
&& stmt.getClassDefinition() != null && stmt.getClassDefinition().getInvariant() != null || stmt.getStateDefinition() != null && stmt.getStateDefinition().getInvExpression() != null)
if(node.getStateDefinition() != null && !_visitedNodes.contains(node.getStateDefinition())) node.getStateDefinition().apply(this);
if(node.getStateDefinition() != null && !_visitedNodes.contains(node.getStateDefinition())) node.getStateDefinition().apply(this, question);
if(node.getStateDefinition() != null && !_visitedNodes.contains(node.getStateDefinition())) node.getStateDefinition().apply(this);
if(node.getStateDefinition() != null && !_visitedNodes.contains(node.getStateDefinition())) mergeReturns(retVal,node.getStateDefinition().apply(this));
if(node.getStateDefinition() != null && !_visitedNodes.contains(node.getStateDefinition())) mergeReturns(retVal,node.getStateDefinition().apply(this, question));
private PExp makeInvApplyExp(AAtomicStm atom) { AStateDefinition stateDef = atom.getAssignments().get(0).getStateDefinition(); if (stateDef == null) { return extractInv(atom); } String stateName = getStateName(stateDef); List<PExp> arglist = new Vector<PExp>(); for (AFieldField f : stateDef.getFields()) { arglist.add(getVarExp(f.getTagname().clone(), stateDef.clone(),f.getType())); } PExp mkExp = AstExpressionFactory.newAMkTypeExp(new LexNameToken("", stateName, null), stateDef.getRecordType().clone(), arglist); AApplyExp invApplyExp = getApplyExp(getVarExp(stateDef.getInvdef().getName().clone(), stateDef.getInvdef().clone(), stateDef.getInvdef().getType().clone()), new ABooleanBasicType(), mkExp); invApplyExp.getRoot().setType(stateDef.getInvdef().getType().clone()); return invApplyExp; }
if (!node.getInConstructor() && node.getClassDefinition() != null && node.getClassDefinition().getInvariant() != null || node.getStateDefinition() != null && node.getStateDefinition().getInvExpression() != null)
} else AStateDefinition def = ass.getStateDefinition(); ALetDefExp letExp = new ALetDefExp(); letExp.setType(def.getInvExpression().getType().clone());