@@ -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
403407pred has-mixin-instance->mixin-src i:prop, o:prop.
404408has-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
410414pred get-canonical-structures i:term, o:list structure.
0 commit comments