Skip to content

Commit 4709cc1

Browse files
committed
repair HB/common/database.elpi/mixin-instance-type->mixin-src
1 parent 7b41a5d commit 4709cc1

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

HB/common/database.elpi

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -370,14 +370,16 @@ pred mixin-instance-type->mixin-src.aux
370370
i:term, % head of the original application
371371
i:mixinname, % name of mixin
372372
i:term, % instance body
373+
i:list prop, % decl list
373374
i:list prop, % Cond list
374375
o:prop.
375-
mixin-instance-type->mixin-src.aux [] T M I Cond (mixin-src T M I :- Cond).
376-
mixin-instance-type->mixin-src.aux [A|Args] T M I Cond (pi a \ C a) :-
376+
mixin-instance-type->mixin-src.aux [] T M I Decls Cond (mixin-src T M I :- std.do! DeclsCond) :-
377+
std.append Decls Cond DeclsCond.
378+
mixin-instance-type->mixin-src.aux [A|Args] T M I Decls Cond (pi a \ C a) :-
377379
pi a \
378380
sigma Ta\
379381
coq.mk-app T [a] Ta,
380-
mixin-instance-type->mixin-src.aux Args Ta M I [coq.unify-eq A a ok|Cond] (C a).
382+
mixin-instance-type->mixin-src.aux Args Ta M I Decls [coq.unify-eq A a ok|Cond] (C a).
381383

382384

383385
% transforms the type of a mixin instance into a
@@ -386,25 +388,27 @@ pred mixin-instance-type->mixin-src
386388
i:term, % type of the instance Ty
387389
i:mixinname, % name of mixin
388390
i:term, % instance body I of type Ty
391+
i:list prop,
389392
i:list prop, % Cond list
390393
o:prop.
391394

392-
mixin-instance-type->mixin-src (app _ as F) M I Cond C :-
395+
mixin-instance-type->mixin-src (app _ as F) M I Decls' Cond C :-
393396
factory? F (triple _ _ Subject),
394397
safe-dest-app Subject Hd Args,
395-
mixin-instance-type->mixin-src.aux Args Hd M I Cond C.
398+
std.rev Decls' Decls,
399+
mixin-instance-type->mixin-src.aux Args Hd M I Decls Cond C.
396400

397-
mixin-instance-type->mixin-src (prod N_ _ F) M I Cond (pi a \ C a) :-
401+
mixin-instance-type->mixin-src (prod N_ T F) M I Decls Cond (pi a \ C a) :-
398402
pi a\
399403
sigma Ia \
400404
coq.mk-app I [a] Ia,
401-
mixin-instance-type->mixin-src (F a) M Ia Cond (C a).
405+
mixin-instance-type->mixin-src (F a) M Ia [coq.typecheck a T ok|Decls] Cond (C a).
402406

403407
pred has-mixin-instance->mixin-src i:prop, o:prop.
404408
has-mixin-instance->mixin-src (has-mixin-instance _ M IHd) C :- std.do![
405409
T = global IHd,
406410
coq.env.typeof IHd Ty,
407-
mixin-instance-type->mixin-src Ty M T [] C,
411+
mixin-instance-type->mixin-src Ty M T [] [] C,
408412
].
409413

410414
pred get-canonical-structures i:term, o:list structure.

tests/unit/mk_src_map.v

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ Check list_foo.
1212
Elpi Query HB.structure lp:{{
1313

1414
has-mixin-instance->mixin-src (has-mixin-instance (cs-gref{{:gref list}}) {{:gref is_foo.axioms_}} {{:gref list_foo}}) MS,
15+
coq.env.typeof {{:gref list_foo}} (prod _ T _),
1516
MS = (pi a b \
1617
mixin-src (app [{{list}}, b]) ({{:gref is_foo.axioms_}}) (app [{{list_foo}}, a])
17-
:- [coq.unify-eq a b ok])
18+
:- std.do! [coq.typecheck a T ok, coq.unify-eq a b ok])
1819
}}.
1920

2021
Elpi Query HB.structure lp:{{
2122

2223
has-mixin-instance->mixin-src (has-mixin-instance (cs-gref{{:gref list}}) {{:gref is_foo.axioms_}} {{:gref list_foo'}}) MS',
24+
coq.env.typeof {{:gref list_foo'}} (prod _ T (p\ prod _ T' _)),
2325
MS' = (pi p a b \
2426
mixin-src (app [{{list}}, b]) {{:gref is_foo.axioms_}} (app [{{list_foo'}}, p,a])
25-
:- [coq.unify-eq a b ok]).
26-
}}.
27+
:- std.do! [coq.typecheck p T ok, coq.typecheck a T' ok, coq.unify-eq a b ok]).
28+
}}.

0 commit comments

Comments
 (0)