diff --git a/smt/mcsat.ml b/smt/mcsat.ml
index 2ed2022a..425c5ea3 100644
--- a/smt/mcsat.ml
+++ b/smt/mcsat.ml
@@ -18,7 +18,7 @@ module Tsmt = struct
type proof = unit
let proof_debug () =
- "Proof", ["..."], Some "PURPLE"
+ "Proof", [], ["..."], Some "PURPLE"
type assumption =
| Lit of formula
diff --git a/solver/mcproof.ml b/solver/mcproof.ml
index 8798cbb1..6e174359 100644
--- a/solver/mcproof.ml
+++ b/solver/mcproof.ml
@@ -347,13 +347,13 @@ module Make(St : Mcsolver_types.S) = struct
in
print_dot_rule "BGCOLOR=\"LIGHTBLUE\"" aux () fmt p.conclusion
| Lemma proof ->
- let name, args, color = St.proof_debug proof in
- assert (args <> []);
+ let name, f_args, t_args, color = St.proof_debug proof in
let color = match color with None -> "YELLOW" | Some c -> c in
let aux fmt () =
- Format.fprintf fmt "
| %a |
| %s | %a
"
- print_clause p.conclusion color (List.length args) name
- (fun fmt -> List.iter (fun v -> Format.fprintf fmt "%a | " St.print_semantic_var v)) args
+ Format.fprintf fmt "| %a |
| %s | %a%a
"
+ print_clause p.conclusion color (List.length f_args + List.length t_args) name
+ (fun fmt -> List.iter (fun a -> Format.fprintf fmt "%a | " St.print_atom a)) f_args
+ (fun fmt -> List.iter (fun v -> Format.fprintf fmt "%a | " St.print_semantic_var v)) t_args
in
print_dot_rule "BGCOLOR=\"LIGHTBLUE\"" aux () fmt p.conclusion
| Resolution (proof1, proof2, a) ->
diff --git a/solver/mcsolver_types.ml b/solver/mcsolver_types.ml
index 3ea2f83f..7fb77417 100644
--- a/solver/mcsolver_types.ml
+++ b/solver/mcsolver_types.ml
@@ -214,8 +214,8 @@ module Make (E : Expr_intf.S)(Th : Plugin_intf.S with
(* Proof debug info *)
let proof_debug p =
- let name, l, color = Th.proof_debug p in
- name, (List.map add_term l), color
+ let name, l, l', color = Th.proof_debug p in
+ name, (List.map add_atom l), (List.map add_term l'), color
(* Pretty printing for atoms and clauses *)
let print_semantic_var fmt v = E.Term.print fmt v.tag.term
diff --git a/solver/mcsolver_types_intf.ml b/solver/mcsolver_types_intf.ml
index 10d504e5..f2c8e4b6 100644
--- a/solver/mcsolver_types_intf.ml
+++ b/solver/mcsolver_types_intf.ml
@@ -96,7 +96,7 @@ module type S = sig
val fresh_dname : unit -> string
(** Fresh names for clauses *)
- val proof_debug : proof -> string * (semantic var list) * (string option)
+ val proof_debug : proof -> string * (atom list) * (semantic var list) * (string option)
(** Debugging info for proofs (see Plugin_intf). *)
val print_atom : Format.formatter -> atom -> unit
diff --git a/solver/plugin_intf.ml b/solver/plugin_intf.ml
index 65e46908..acf662df 100644
--- a/solver/plugin_intf.ml
+++ b/solver/plugin_intf.ml
@@ -78,7 +78,7 @@ module type S = sig
val eval : formula -> eval_res
(** Returns the evaluation of the formula in the current assignment *)
- val proof_debug : proof -> string * (term list) * (string option)
+ val proof_debug : proof -> string * (formula list) * (term list) * (string option)
(** Returns debugging information on a proof, as a triplet consisting of
a name/identification string associated with the proof, arguments of the proof,
and an optional color for the proof background *)