Skip to content

Commit 849a95d

Browse files
committed
fix reachability test
1 parent 6b758c5 commit 849a95d

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

examples/example_abs_evars.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ solve (goal _ _ _ _ [trm T] as G) GL :-
8888
solve (goal _ _ T _ [] as G) GL :-
8989
std.assert! (abs-evars T ClosedT N) "closure fails",
9090
coq.mk-app {{ (fun x : lp:ClosedT => x) _ }} {coq.mk-n-holes N} R,
91-
refine R G GL.
91+
refine R G GL.
9292

9393
}}.
9494
Elpi Typecheck.

src/coq_elpi_HOAS.ml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2411,7 +2411,10 @@ let get_declared_goals all_goals constraints state assignments pp_ctx =
24112411

24122412
let rec reachable1 sigma root acc =
24132413
let EvarInfo info = Evd.find sigma root in
2414-
let res = match Evd.evar_body info with Evd.Evar_empty -> Evar.Set.add root acc | Evd.Evar_defined _ -> acc in
2414+
let res =
2415+
match Evd.evar_body info with
2416+
| Evd.Evar_empty -> Evar.Set.add root acc
2417+
| Evd.Evar_defined d -> acc in
24152418
let res = Evar.Set.union res @@ Evarutil.filtered_undefined_evars_of_evar_info sigma info in
24162419
if Evar.Set.equal res acc then acc else reachable sigma res res
24172420
and reachable sigma roots acc =
@@ -2429,15 +2432,16 @@ let reachable sigma roots acc =
24292432
let solution2evd sigma0 { API.Data.constraints; assignments; state; pp_ctx } roots =
24302433
let state, solved_goals, _, _gls = elpi_solution_to_coq_solution ~calldepth:0 constraints state in
24312434
let sigma = get_sigma state in
2432-
let all_goals = reachable sigma roots Evar.Set.empty in
2435+
let roots = Evd.fold_undefined (fun k _ acc -> Evar.Set.add k acc) sigma0 roots in
2436+
let reachable_undefined_evars = reachable sigma roots Evar.Set.empty in
24332437
let declared_goals, shelved_goals =
2434-
get_declared_goals (Evar.Set.diff all_goals solved_goals) constraints state assignments pp_ctx in
2438+
get_declared_goals (Evar.Set.diff reachable_undefined_evars solved_goals) constraints state assignments pp_ctx in
24352439
debug Pp.(fun () -> str "Goals: " ++ prlist_with_sep spc Evar.print declared_goals);
24362440
debug Pp.(fun () -> str "Shelved Goals: " ++ prlist_with_sep spc Evar.print shelved_goals);
2437-
(* wrong: Evd.fold_undefined (fun k _ sigma ->
2438-
if Evar.Set.mem k all_goals || Evd.mem sigma0 k then sigma
2441+
Evd.fold_undefined (fun k _ sigma ->
2442+
if Evar.Set.mem k reachable_undefined_evars then sigma
24392443
else Evd.remove sigma k
2440-
) sigma*) sigma,
2444+
) sigma sigma,
24412445
declared_goals,
24422446
shelved_goals
24432447

0 commit comments

Comments
 (0)