- match lit with
- | Terms.Predicate _ -> assert false
- | Terms.Equation (l,r,_,o) ->
- let side, newside = if dir=Terms.Left2Right then l,r else r,l in
- try
- let subst =
- prof_demod_u.HExtlib.profile
- (Unif.unification (* (varlist@vl) *) varlist subterm) side
- in
- let side =
- prof_demod_s.HExtlib.profile
- (Subst.apply_subst subst) side
- in
- let newside =
- prof_demod_s.HExtlib.profile
- (Subst.apply_subst subst) newside
- in
- if o = Terms.Incomparable || o = Terms.Invertible then
- let o =
- prof_demod_o.HExtlib.profile
- (Order.compare_terms newside) side in
- (* Riazanov, pp. 45 (ii) *)
- if o = Terms.Lt then
- Some (newside, subst, id, dir)
- else
- ((*prerr_endline ("Filtering: " ^
- Pp.pp_foterm side ^ " =(< || =)" ^
- Pp.pp_foterm newside ^ " coming from " ^
- Pp.pp_clause uc );*)None)
- else
- Some (newside, subst, id, dir)
- with FoUnif.UnificationFailure _ -> None)
- (IDX.ClauseSet.elements cands)
+ match nlit,plit with
+ | [], [(lit,_)] ->
+ (match lit with
+ | Terms.Predicate _ -> assert false
+ | Terms.Equation (l,r,_,o) ->
+ let side, newside = if dir=Terms.Left2Right then l,r else r,l in
+ try
+ let subst =
+ prof_demod_u.HExtlib.profile
+ (Unif.unification (* (varlist@vl) *) varlist subterm) side
+ in
+ let side =
+ prof_demod_s.HExtlib.profile
+ (Subst.apply_subst subst) side
+ in
+ let newside =
+ prof_demod_s.HExtlib.profile
+ (Subst.apply_subst subst) newside
+ in
+ if o = Terms.Incomparable || o = Terms.Invertible then
+ let o =
+ prof_demod_o.HExtlib.profile
+ (Order.compare_terms newside) side in
+ (* Riazanov, pp. 45 (ii) *)
+ if o = Terms.Lt then
+ Some (newside, subst, id, dir)
+ else
+ ((*prerr_endline ("Filtering: " ^
+ Pp.pp_foterm side ^ " =(< || =)" ^
+ Pp.pp_foterm newside ^ " coming from " ^
+ Pp.pp_clause uc );*)None)
+ else
+ Some (newside, subst, id, dir)
+ with FoUnif.UnificationFailure _ -> None)
+ | _ -> None)
+ (IDX.ClauseSet.elements cands)