151 | GREATER => find_res_hyps (h1 :: hyps1, hyps2) (h2 :: acc)) |
151 | GREATER => find_res_hyps (h1 :: hyps1, hyps2) (h2 :: acc)) |
152 |
152 |
153 fun resolution (c1, hyps1) (c2, hyps2) = |
153 fun resolution (c1, hyps1) (c2, hyps2) = |
154 let |
154 let |
155 val _ = |
155 val _ = |
156 if ! trace_sat then |
156 if ! trace_sat then (* FIXME !? *) |
157 tracing ("Resolving clause: " ^ Display.string_of_thm_without_context c1 ^ |
157 tracing ("Resolving clause: " ^ Display.string_of_thm_without_context c1 ^ |
158 " (hyps: " ^ ML_Syntax.print_list (Syntax.string_of_term_global (theory_of_thm c1)) (#hyps (rep_thm c1)) |
158 " (hyps: " ^ ML_Syntax.print_list |
|
159 (Syntax.string_of_term_global (theory_of_thm c1)) (Thm.hyps_of c1) |
159 ^ ")\nwith clause: " ^ Display.string_of_thm_without_context c2 ^ |
160 ^ ")\nwith clause: " ^ Display.string_of_thm_without_context c2 ^ |
160 " (hyps: " ^ ML_Syntax.print_list (Syntax.string_of_term_global (theory_of_thm c2)) (#hyps (rep_thm c2)) ^ ")") |
161 " (hyps: " ^ ML_Syntax.print_list |
|
162 (Syntax.string_of_term_global (theory_of_thm c2)) (Thm.hyps_of c2) ^ ")") |
161 else () |
163 else () |
162 |
164 |
163 (* the two literals used for resolution *) |
165 (* the two literals used for resolution *) |
164 val (hyp1_is_neg, hyp1, hyp2, new_hyps) = find_res_hyps (hyps1, hyps2) [] |
166 val (hyp1_is_neg, hyp1, hyp2, new_hyps) = find_res_hyps (hyps1, hyps2) [] |
165 |
167 |