X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_paramodulation%2Fpp.ml;h=ddf5726c49d0f6b479958a4e48ca9f969440f30d;hb=f9abd21eb0d26cf9b632af4df819225be4d091e3;hp=609ca47a7b1a5cce9eff53df81efc39ec71de449;hpb=6b0a195b180e3526af7b55771b2df7b10acd7c30;p=helm.git diff --git a/helm/software/components/ng_paramodulation/pp.ml b/helm/software/components/ng_paramodulation/pp.ml index 609ca47a7..ddf5726c4 100644 --- a/helm/software/components/ng_paramodulation/pp.ml +++ b/helm/software/components/ng_paramodulation/pp.ml @@ -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 @@ -48,12 +47,14 @@ let string_of_direction = function ;; let pp_substitution ~formatter:f subst = - (List.iter - (fun (i, t) -> - (Format.fprintf f "?%d -> " i; - pp_foterm f t) - ) - subst) + Format.fprintf f "@["; + List.iter + (fun (i, t) -> + (Format.fprintf f "?%d -> " i; + pp_foterm f t; + Format.fprintf f "@;")) + subst; + Format.fprintf f "@]"; ;; let pp_proof bag ~formatter:f p = @@ -67,8 +68,8 @@ let pp_proof bag ~formatter:f p = eq (string_of_rule rule); Format.fprintf f "|%d with %d dir %s))" eq1 eq2 (string_of_direction dir); - let (_, _, _, proof1) = Terms.M.find eq1 bag in - let (_, _, _, proof2) = Terms.M.find eq2 bag in + let (_, _, _, proof1),_,_ = Terms.get_from_bag eq1 bag in + let (_, _, _, proof2),_,_ = Terms.get_from_bag eq2 bag in Format.fprintf f "@["; aux eq1 proof1; aux eq2 proof2; @@ -80,37 +81,69 @@ 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 -> "=?=" + | Terms.Invertible -> "=<->=" let pp_unit_clause ~formatter:f c = - let (id, l, vars, _) = c in - Format.fprintf f "Id : %d, " id ; + let (id, l, vars, proof) = c in + Format.fprintf f "Id : %3d, " id ; match l with | Terms.Predicate t -> - pp_foterm f t + Format.fprintf f "@[{"; + pp_foterm f t; + Format.fprintf f "@;[%s] by " + (String.concat ", " (List.map string_of_int vars)); + (match proof with + | Terms.Exact t -> pp_foterm f t + | Terms.Step (rule, id1, id2, _, p, _) -> + Format.fprintf f "%s %d with %d at %s" + (string_of_rule rule) id1 id2 (String.concat + "," (List.map string_of_int p))); + Format.fprintf f "@]" | Terms.Equation (lhs, rhs, ty, comp) -> - Format.fprintf f "{"; + Format.fprintf f "@[{"; pp_foterm f ty; - Format.fprintf f "}: "; + 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 " + (String.concat ", " (List.map string_of_int vars)); + (match proof with + | Terms.Exact t -> pp_foterm f t + | Terms.Step (rule, id1, id2, _, p, _) -> + Format.fprintf f "%s %d with %d at %s" + (string_of_rule rule) id1 id2 (String.concat + "," (List.map string_of_int p))); + Format.fprintf f "@]" +;; + +let pp_bag ~formatter:f (_,bag) = + Format.fprintf f "@["; + Terms.M.iter + (fun _ (c,d,_) -> pp_unit_clause ~formatter:f c; + if d then Format.fprintf f " (discarded)@;" + else Format.fprintf f "@;") bag; + Format.fprintf f "@]" ;; (* String buffer implementation *) -let on_buffer f t = +let on_buffer ?(margin=80) f t = let buff = Buffer.create 100 in let formatter = Format.formatter_of_buffer buff in + Format.pp_set_margin formatter margin; f ~formatter:formatter t; Format.fprintf formatter "@?"; Buffer.contents buff ;; +let pp_bag = + on_buffer pp_bag +;; + let pp_foterm = on_buffer pp_foterm ;; @@ -123,8 +156,8 @@ let pp_proof bag = on_buffer (pp_proof bag) ;; -let pp_unit_clause = - on_buffer pp_unit_clause +let pp_unit_clause ?margin x= + on_buffer ?margin pp_unit_clause x ;; end