let rec string_of_condition = function
| PCall s -> "Call("^s^")"
| PReturn s -> "Return("^s^")"
| PCallOrReturn s -> "CallOrReturn("^s^")"
| POr (c1,c2) -> "("^(string_of_condition c1)^" or "^(string_of_condition c2)^")"
| PAnd (c1,c2 ) -> "("^(string_of_condition c1)^" and "^(string_of_condition c2)^")"
| PNot c -> "not "^(string_of_condition c)
| PTrue -> "True"
| PFalse -> "False"
(* | PGt (c1,c2) -> (string_of_condition_arith c1)^">" ^(string_of_condition_arith c2)
| PGe (c1,c2) -> (string_of_condition_arith c1)^">="^(string_of_condition_arith c2)
| PLt (c1,c2) -> (string_of_condition_arith c1)^"<" ^(string_of_condition_arith c2)
| PLe (c1,c2) -> (string_of_condition_arith c1)^"<="^(string_of_condition_arith c2)
| PEq (c1,c2) -> (string_of_condition_arith c1)^"=" ^(string_of_condition_arith c2)
| PNeq (c1,c2) -> (string_of_condition_arith c1)^"<>"^(string_of_condition_arith c2)
| PBoolVar (s) -> "BoolVar("^s^")"*)
| PIndexedExp (s) -> Data_for_aorai.get_str_exp_from_tmpident s
| PFuncReturn (s, f) -> "("^f^"()."^(Data_for_aorai.get_str_exp_from_tmpident s)^")"
| PFuncParam (s, f, _) -> "("^f^"()."^(Data_for_aorai.get_str_exp_from_tmpident s)^")"