@@ -2414,7 +2414,10 @@ let get_declared_goals all_goals constraints state assignments pp_ctx =
24142414
24152415let rec reachable1 sigma root acc =
24162416 let EvarInfo info = Evd. find sigma root in
2417- let res = match Evd. evar_body info with Evd. Evar_empty -> Evar.Set. add root acc | Evd. Evar_defined _ -> acc in
2417+ let res =
2418+ match Evd. evar_body info with
2419+ | Evd. Evar_empty -> Evar.Set. add root acc
2420+ | Evd. Evar_defined d -> acc in
24182421 let res = Evar.Set. union res @@ Evarutil. filtered_undefined_evars_of_evar_info sigma info in
24192422 if Evar.Set. equal res acc then acc else reachable sigma res res
24202423and reachable sigma roots acc =
@@ -2432,13 +2435,14 @@ let reachable sigma roots acc =
24322435let solution2evd sigma0 { API.Data. constraints; assignments; state; pp_ctx } roots =
24332436 let state, solved_goals, _, _gls = elpi_solution_to_coq_solution ~calldepth: 0 constraints state in
24342437 let sigma = get_sigma state in
2435- let all_goals = reachable sigma roots Evar.Set. empty in
2438+ let roots = Evd. fold_undefined (fun k _ acc -> Evar.Set. add k acc) sigma0 roots in
2439+ let reachable_undefined_evars = reachable sigma roots Evar.Set. empty in
24362440 let declared_goals, shelved_goals =
2437- get_declared_goals (Evar.Set. diff all_goals solved_goals) constraints state assignments pp_ctx in
2441+ get_declared_goals (Evar.Set. diff reachable_undefined_evars solved_goals) constraints state assignments pp_ctx in
24382442 debug Pp. (fun () -> str " Goals: " ++ prlist_with_sep spc Evar. print declared_goals);
24392443 debug Pp. (fun () -> str " Shelved Goals: " ++ prlist_with_sep spc Evar. print shelved_goals);
24402444 Evd. fold_undefined (fun k _ sigma ->
2441- if Evar.Set. mem k all_goals || Evd. mem sigma0 k then sigma
2445+ if Evar.Set. mem k reachable_undefined_evars then sigma
24422446 else Evd. remove sigma k
24432447 ) sigma sigma,
24442448 declared_goals,
0 commit comments