@Override 
    public Object visitUnaryExprAST(UnaryExprAST ast, Object o) throws CompilationException
    {
    	
    	int constmt = findCon(ast.parent.line);
    	System.out.println("Parent line "+ ast.parent.line + " " + constmt);
    	String res = "";
    	if(ast.opType == UnaryExprAST.LOGICAL_NOT)
    	{
    		if(o == "c")
    		{
    			res += "(not " + ast.e.visit(this, "c") + ")";
    			return res;
    		}
    		else
    		{
    			boolean check = true;
    			PathNode obj = (PathNode)o;
	        	int branch = obj.branch;
	        	if(branch == 0)
	        	{
	        		res += "(assert (not " + ast.e.visit(this, "c") + "))\n";
	        		ArrayList<String> temp = con.get(constmt).getTruepath();
	        		for(int i=0; i < temp.size(); i++)
	        			if(temp.get(i).equals(res))
	        				check = false;
	        		if(check == true)
	        		{
	        			con.get(constmt).getTruepath().add(res);
	        			con.get(constmt).getTruecon().add(obj.con);
	        		}
	        	}
	        	else
	        	{
	        		res += "(assert " + ast.e.visit(this, "c") + ")\n";
	        		ArrayList<String> temp = con.get(constmt).getFalsepath();
	        		for(int i=0; i < temp.size(); i++)
	        			if(temp.get(i).equals(res))
	        				check = false;
	        		if(check == true)
	        		{
	        			con.get(constmt).getFalsepath().add(res);
	        			con.get(constmt).getFalsecon().add(obj.con);
	        		}
	        	}
	        	return "";
    		}
    	}
    	return "";
    }