Skip to content

Commit ef72547

Browse files
committed
fix reduction bug
1 parent 7c9d321 commit ef72547

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

apps/cs/src/coq_elpi_cs_hook.mlg

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,16 @@ let elpi_cs_hook program env sigma lhs rhs =
4040
| API.Execute.Success solution ->
4141
let gls = Evar.Set.singleton goal_evar in
4242
let sigma, _, _ = Coq_elpi_HOAS.solution2evd sigma solution gls in
43-
let ty_evar, _ = EConstr.destEvar sigma ty in
44-
Some (Evd.remove (Evd.remove sigma ty_evar) goal_evar)
43+
if Evd.is_defined sigma goal_evar then
44+
let lhs = Reductionops.Stack.zip sigma (EConstr.mkConstU (proji, EConstr.EInstance.empty), Reductionops.Stack.append_app_list (params1 @ [goal]) Reductionops.Stack.empty) in
45+
let lhs = Reductionops.whd_const proji env sigma lhs in
46+
let lhs = Reductionops.whd_betaiotazeta env sigma lhs in
47+
let hh, sk1 = EConstr.decompose_app sigma lhs in
48+
let () = Feedback.msg_info Pp.(str "aha" ++ Printer.pr_econstr_env env sigma lhs) in
49+
let h2, sk2 = EConstr.decompose_app sigma rhs in
50+
let _, params = EConstr.decompose_app sigma (Retyping.get_type_of env sigma goal) in
51+
Some (sigma, (hh, h2), goal, [], (Array.to_list params, params1), (Array.to_list sk1, Array.to_list sk2), (extra_args1, extra_args2), c1, (None, rhs))
52+
else None
4553
| API.Execute.NoMoreSteps
4654
| API.Execute.Failure -> None
4755
| exception (Coq_elpi_utils.LtacFail (level, msg)) -> None

apps/cs/tests/test_cs.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ Elpi Override CS All.
66
Structure S : Type :=
77
{ sort :> Type }.
88

9-
Elpi Accumulate cs.db lp:{{
9+
Elpi Accumulate canonical_solution lp:{{
1010

11-
cs _ {{ sort lp:Sol }} {{ nat }} :-
12-
Sol = {{ Build_S nat }}.
11+
cs _ {{ sort lp:T }} {{ @id lp:T }} {{ Build_S lp:T (@id lp:T) }}.
1312

1413
}}.
1514
Elpi Typecheck canonical_solution.
1615

1716
Check 1.
18-
Check eq_refl _ : (sort _) = nat.
17+
Check eq_refl _ : (sort nat _) = @id nat.
18+
Check eq_refl _ : (sort nat _) 1 = @id nat 1.
1919
Definition nat1 := nat.
2020
Check 2.
2121
Check eq_refl _ : (sort _) = nat1.

apps/cs/theories/cs.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ pred cs i:goal-ctx, o:term, o:term.
1616
Elpi Tactic canonical_solution.
1717
Elpi Accumulate lp:{{
1818

19-
solve (goal Ctx _ {{ @eq lp:T lp:Lhs lp:Rhs }} _P []) _ :-
20-
cs Ctx Lhs Rhs,
21-
% std.assert! (P = {{ eq_refl lp:Lhs }}) "cs: wrong solution".
19+
solve (goal Ctx _ _Ty Sol [trm Proj, trm Rhs]) _ :-
20+
cs Ctx Proj Rhs Sol,
21+
% std.assert! (P = {{ eq_refl lp:Lhs }}) "cs: wrong solution".
2222
true.
2323

2424
}}.

0 commit comments

Comments
 (0)