let rec c_string_of_condition = function
    | PCall s          -> "(("^s^"=="^curOp^") && ("^curOpStatus^"=="^callStatus^"))"
    | PReturn s        -> "(("^s^"=="^curOp^") && ("^curOpStatus^"=="^termStatus^"))"
    | PCallOrReturn s  -> "("^s^"=="^curOp^")"
    | POr  (c1,c2)     -> "("^(c_string_of_condition c1)^" || "^(c_string_of_condition c2)^")"
    | PAnd (c1,c2    ) -> "("^(c_string_of_condition c1)^" && "^(c_string_of_condition c2)^")"
    | PNot c           -> "!"^(c_string_of_condition c)
    | PTrue            -> "1"
    | PFalse           -> "0"
(*    | PGt (c1,c2)      -> (c_string_of_condition_arith c1)^">" ^(c_string_of_condition_arith c2)
    | PGe (c1,c2)      -> (c_string_of_condition_arith c1)^">="^(c_string_of_condition_arith c2)
    | PLt (c1,c2)      -> (c_string_of_condition_arith c1)^"<" ^(c_string_of_condition_arith c2)
    | PLe (c1,c2)      -> (c_string_of_condition_arith c1)^"<="^(c_string_of_condition_arith c2)
    | PEq (c1,c2)      -> (c_string_of_condition_arith c1)^"==" ^(c_string_of_condition_arith c2)
    | PNeq (c1,c2)     -> (c_string_of_condition_arith c1)^"!="^(c_string_of_condition_arith c2)
    | PBoolVar (s)     -> s*)

    | PIndexedExp (s) -> Data_for_ltl.get_str_exp_from_tmpident s