let lit = Subst.apply_subst subst lit in
let eq_ty = extract amount [] lit in
let refl = mk_refl eq_ty in
- ((*prerr_endline ("Reached m point, id=" ^ (string_of_int id));*)
- NCic.LetIn ("clause_" ^ string_of_int id, eq_ty, refl,
- aux true ((id,([],lit))::seen) (id::tl)))
+ (*prerr_endline ("Reached m point, id=" ^ (string_of_int id));*)
+ (* (NCic.LetIn ("clause_" ^ string_of_int id, eq_ty, refl,
+ aux true ((id,([],lit))::seen) (id::tl))) *)
+ NCicSubstitution.subst
+ ~avoid_beta_redexes:true ~no_implicit:false refl
+ (aux true ((id,([],lit))::seen) (id::tl))
else
match proof with
| Terms.Exact _ when tl=[] ->
| Terms.Step _ when tl=[] -> assert false
| Terms.Exact ft ->
(* prerr_endline ("Exact for " ^ (string_of_int id));*)
+ (*
NCic.LetIn ("clause_" ^ string_of_int id,
close_with_forall vl (extract amount vl lit),
close_with_lambdas vl (extract amount vl ft),
aux ongoal
((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl)
+ *)
+ NCicSubstitution.subst
+ ~avoid_beta_redexes:true ~no_implicit:false
+ (close_with_lambdas vl (extract amount vl ft))
+ (aux ongoal
+ ((id,(List.map (fun x -> Terms.Var x) vl,lit))::seen) tl)
| Terms.Step (_, id1, id2, dir, pos, subst) ->
let id, id1,(lit,vl,proof) =
if ongoal then id1,id,get_literal id1