X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_paramodulation%2Fsuperposition.ml;h=61d6c0589f3ab9952e670ead382f71633ea00ef8;hb=1c9b8f3ba2c86446d44160ae494bc85624bc5eaf;hp=eaa8f5428bec3a823c9795023b09bc103ec56783;hpb=05a0f788cd5758eaac6de65e7bc3ca98ee5c8d8f;p=helm.git diff --git a/helm/software/components/ng_paramodulation/superposition.ml b/helm/software/components/ng_paramodulation/superposition.ml index eaa8f5428..61d6c0589 100644 --- a/helm/software/components/ng_paramodulation/superposition.ml +++ b/helm/software/components/ng_paramodulation/superposition.ml @@ -178,12 +178,13 @@ module Superposition (B : Terms.Blob) = ;; (* move away *) - let is_identity_clause = function + let is_identity_clause ~unify = function | _, Terms.Equation (_,_,_,Terms.Eq), _, _ -> true - | _, Terms.Equation (l,r,_,_), vl, proof -> + | _, Terms.Equation (l,r,_,_), vl, proof when unify -> (try ignore(Unif.unification vl [] l r); true with FoUnif.UnificationFailure _ -> false) | _, Terms.Predicate _, _, _ -> assert false + | _ -> false ;; let build_new_clause bag maxvar filter rule t subst vl id id2 pos dir = @@ -266,7 +267,7 @@ module Superposition (B : Terms.Blob) = (* demodulate and check for subsumption *) let simplify table maxvar bag clause = let bag, clause = demodulate bag clause table in - if is_identity_clause clause then None + if is_identity_clause ~unify:false clause then None else match is_subsumed ~unify:false bag maxvar clause table with | None -> Some (bag, clause) @@ -372,7 +373,7 @@ module Superposition (B : Terms.Blob) = (* this is like simplify but raises Success *) let simplify_goal maxvar table bag g_actives clause = let bag, clause = demodulate bag clause table in - if (is_identity_clause clause) + if (is_identity_clause ~unify:true clause) then raise (Success (bag, maxvar, clause)) else match is_subsumed ~unify:true bag maxvar clause table with | None ->