anchor.diff:          			System.exit(1);
           		}
           	} 
  -      	(module[prj]
  +      	(module //module[prj]
               {
               	$lpnSet.add($module.lpn);
               }
  -        | main[prj]
  +        | main //main[prj]
           	{
           		
           	}
           )+ EOF
       ;
       
  -main[Project prj]
  +main // [Project prj]
   	:	'<' 'mod' 'name' '=' '"' 'main' '"' '>'
   			{
   				if(main == true){
  
positive.code:     		}
      	)? (delay 
      		{
      			delayLB = $delay.delayLB; 
      			delayUB = $delay.delayUB;
      		}
      	)? ((assertion
      		{
      			if($assertion.booleanExpr != null){		
    					assertionList.add($assertion.booleanExpr);
    				}
      		}
      	) | (assignment
      		{
      			assignmentList.add($assignment.assign);
      		}
      	))* '<' '/' 'transition' '>'
          {
          	// create new lpn transitions and add assertions
          	$lpnTran = new LPNTran($lbl.text, TransitionIndex++, presetList, postsetList, guardExpr, assignmentList, delayLB, delayUB, local);
          	if(assertionList.size() > 0){
          		$lpnTran.addAllAssertions(assertionList);
          	}
          	
          	// add non-local transition to associated LPNs
          	for(VarExpr e : assignmentList){
          		VarNode var = e.getVar();
          		if(Outputs.contains(var.getName())){
          			local = false;
          			
          			if(GlobalInputMap.containsKey(var.getName())){
  	        			for(LPN lpn : GlobalInputMap.get(var.getName())){
  	        				lpn.addInputTran($lpnTran);
  	        				$lpnTran.addDstLpn(lpn);
  	        			}
          			}
          		}
          		
          		// map lpn transition with output and potential outuput variables
          		if(GlobalTranMap.containsKey(var.getName())){
         				GlobalTranMap.get(var.getName()).add($lpnTran);
         			}
         			else{
         				List<LPNTran> tranList = new ArrayList<LPNTran>();
         				tranList.add($lpnTran);
         				GlobalTranMap.put(var.getName(), tranList);
         			}
          	}
          	
         		$lpnTran.setLocalFlag(local);
         		if(local == false){
         			outputTranList.add($lpnTran);
         		}
          }
      ;
    
  assertion returns [Expression booleanExpr]
  	:	{booleanExpr = null;}
  		'assert' '(' expression ')' ';'
  			{
  				$booleanExpr = new Expression($expression.expr);
  			}
  	;
  	
  guard returns [Expression expr]
      :   expression ';'
      		{
     				$expr = new Expression($expression.expr);
      		}
      ;
      
  
negative.code: 			}
  		| var2=ID
  			{
  			  String var2_tmp = $var2.text;
          if ($var2.text.contains(".")) {
            var2_tmp = var2_tmp.replace(".", "_");
          }
          else {
            var2_tmp = $var2.text;
          }
  				// get variable initial value
  				if(GlobalConstHashMap.containsKey(var2_tmp)){
  					value = GlobalConstHashMap.get(var2_tmp);
  				}
  				else if(GlobalVarHashMap.containsKey(var2_tmp)){
  					value = GlobalVarHashMap.get(var2_tmp);
  				}
  				else if(ConstHashMap.containsKey(var2_tmp)){
  					value = ConstHashMap.get(var2_tmp);
  				}
  				else if(StatevectorMap.containsKey(var2_tmp)){ // Should var be allowed to assign a var?
  					value = StatevectorMap.get(var2_tmp);
  				}
  				else{
  					System.err.println("error on line " + $var2.getLine() + ": " + $var2.text + " is not defined"); 
  