X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Ftactics%2Fparamodulation%2Findexing.ml;h=925aab6e05d3663ba3d01eabca3cf11e43b16ac8;hb=e8f64678cc425f19336ff4f905f9b2f00acd6627;hp=e4dec639749adff715b48e7ce993d7d4ca45296c;hpb=fb99d31806e06e29bed90f08f132d6e8fb758bd8;p=helm.git diff --git a/helm/software/components/tactics/paramodulation/indexing.ml b/helm/software/components/tactics/paramodulation/indexing.ml index e4dec6397..925aab6e0 100644 --- a/helm/software/components/tactics/paramodulation/indexing.ml +++ b/helm/software/components/tactics/paramodulation/indexing.ml @@ -181,8 +181,17 @@ let check_target context target msg = let get_candidates ?env mode tree term = let s = match mode with - | Matching -> Index.retrieve_generalizations tree term - | Unification -> Index.retrieve_unifiables tree term + | Matching -> + let _ = <:start> in + <:stop> + | Unification -> + let _ = <:start> in + <:stop> + in Index.PosEqSet.elements s ;; @@ -574,7 +583,7 @@ let rec demodulation_equality ?from newmeta env table sign target = let name = C.Name "x" in let bo' = let l, r = if is_left then t, S.lift 1 right else S.lift 1 left, t in - C.Appl [C.MutInd (LibraryObjects.eq_URI (), 0, []); + C.Appl [C.MutInd (Utils.eq_URI (), 0, []); S.lift 1 eq_ty; l; r] in if sign = Utils.Positive then @@ -719,6 +728,7 @@ let rec betaexpand_term let res, lifted_term = match term with | C.Meta (i, l) -> + let l = [] in let l', lifted_l = List.fold_right (fun arg (res, lifted_tl) -> @@ -891,7 +901,7 @@ let superposition_right let bo'' = let l, r = if ordering = U.Gt then bo, S.lift 1 right else S.lift 1 left, bo in - C.Appl [C.MutInd (LibraryObjects.eq_URI (), 0, []); + C.Appl [C.MutInd (Utils.eq_URI (), 0, []); S.lift 1 eq_ty; l; r] in bo', @@ -1048,11 +1058,23 @@ let superposition_left (metasenv, context, ugraph) table goal = Utils.compare_weights ~normalize:true (Utils.weight_of_term l) (Utils.weight_of_term r) in - let big,small,possmall = - match c with Utils.Gt -> l,r,Utils.Right | _ -> r,l,Utils.Left - in - let expansions, _ = betaexpand_term menv context ugraph table 0 big in - List.map (build_newgoal context goal possmall Equality.SuperpositionLeft) expansions + + if c = Utils.Incomparable then + let expansionsl, _ = betaexpand_term menv context ugraph table 0 l in + let expansionsr, _ = betaexpand_term menv context ugraph table 0 r in + prerr_endline "ZZZ"; + prerr_endline (string_of_int (List.length expansionsl)); + prerr_endline (string_of_int (List.length expansionsr)); + List.map (build_newgoal context goal Utils.Right Equality.SuperpositionLeft) expansionsl + @ + List.map (build_newgoal context goal Utils.Left Equality.SuperpositionLeft) expansionsr + + else + let big,small,possmall = + match c with Utils.Gt -> l,r,Utils.Right | _ -> r,l,Utils.Left + in + let expansions, _ = betaexpand_term menv context ugraph table 0 big in + List.map (build_newgoal context goal possmall Equality.SuperpositionLeft) expansions ;; (** demodulation, when the target is a goal *)