let rec print_parsed_condition fmt = function
  | PRel(rel,e1,e2) ->
    Format.fprintf fmt "%a %a@ %a"
      print_parsed_expression e1
      Cil.d_relation (Logic_typing.type_rel rel)
      print_parsed_expression e2
  | PTrue -> Format.pp_print_string fmt "true"
  | PFalse -> Format.pp_print_string fmt "false"
  | POr(e1,e2) -> Format.fprintf fmt "(@[%a@])@ or@ (@[%a@])"
    print_parsed_condition e1 print_parsed_condition e2
  | PAnd(e1,e2) -> Format.fprintf fmt "(@[%a@])@ and@ (@[%a@])"
    print_parsed_condition e1 print_parsed_condition e2
  | PNot c -> Format.fprintf fmt "not(@[%a@])"
    print_parsed_condition c
  | PCall (s,None-> Format.fprintf fmt "CALL(%s)" s
  | PCall (s, Some b) -> Format.fprintf fmt "CALL(%s::%s)" s b
  | PReturn s -> Format.fprintf fmt "RETURN(%s)" s