]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/ng_paramodulation/pp.ml
Active goals are now demodulated after selecting a positive clause.
[helm.git] / helm / software / components / ng_paramodulation / pp.ml
index 9dac9001bd6cdea5686f9d2fc122623b2ed8db75..b90c08d385db330b97e903dae90a432041522aea 100644 (file)
@@ -36,9 +36,8 @@ let pp_foterm ~formatter:f t =
 ;;
 
 let string_of_rule = function
-  | Terms.SuperpositionRight -> "SupR"
-  | Terms.SuperpositionLeft -> "SupL"
-  | Terms.Demodulation -> "Demod"
+  | Terms.Superposition -> "Super"
+  | Terms.Demodulation ->  "Demod"
 ;;
 
 let string_of_direction = function
@@ -59,7 +58,9 @@ let pp_substitution ~formatter:f subst =
 let pp_proof bag ~formatter:f p =
   let rec aux eq = function
     | Terms.Exact t -> 
-        Format.fprintf f "%d: Exact (%s)@;" eq (B.pp t)
+        Format.fprintf f "%d: Exact (" eq;
+        pp_foterm f t;
+        Format.fprintf f ")@;";
     | Terms.Step (rule,eq1,eq2,dir,pos,subst) ->
         Format.fprintf f "%d: %s("
           eq (string_of_rule rule);
@@ -78,13 +79,13 @@ let pp_proof bag ~formatter:f p =
 ;;
 
 let string_of_comparison = function
-  | Terms.Lt -> "<"
-  | Terms.Gt -> ">"
-  | Terms.Eq -> "="
-  | Terms.Incomparable -> "I"
+  | Terms.Lt -> "=<="
+  | Terms.Gt -> "=>="
+  | Terms.Eq -> "==="
+  | Terms.Incomparable -> "=?="
 
 let pp_unit_clause ~formatter:f c =
-  let (id, l, vars, _) = c in
+  let (id, l, vars, proof) = c in
     Format.fprintf f "Id : %d, " id ;
     match l with
       | Terms.Predicate t ->
@@ -94,10 +95,24 @@ let pp_unit_clause ~formatter:f c =
          pp_foterm f ty;
          Format.fprintf f "}: ";
          pp_foterm f lhs;
-         Format.fprintf f " =(%s) " (string_of_comparison comp);
+         Format.fprintf f " %s " (string_of_comparison comp);
          pp_foterm f rhs;
-         Format.fprintf f " [%s]"
-           (String.concat ", " (List.map string_of_int vars))
+         Format.fprintf f " [%s] by %s"
+            (String.concat ", " (List.map string_of_int vars))
+            (match proof with
+            | Terms.Exact _ -> "axiom"
+            | Terms.Step (rule, id1, id2, _, p, _) -> 
+                 Printf.sprintf "%s %d with %d at %s" 
+                  (string_of_rule rule)
+                  id1 id2 (String.concat
+                 "," (List.map string_of_int p)))
+;;
+
+let pp_bag ~formatter:f bag = 
+  Format.fprintf f "@[<v>";
+  Terms.M.iter 
+  (fun _ c -> pp_unit_clause ~formatter:f c;Format.fprintf f "@;") bag;
+  Format.fprintf f "@]"
 ;;
 
 (* String buffer implementation *)
@@ -109,6 +124,10 @@ let on_buffer f t =
   Buffer.contents buff
 ;;
 
+let pp_bag =
+  on_buffer pp_bag
+;;
+
 let pp_foterm =
  on_buffer pp_foterm
 ;;