@@ -370,14 +370,16 @@ pred mixin-instance-type->mixin-src.aux
370
370
i:term, % head of the original application
371
371
i:mixinname, % name of mixin
372
372
i:term, % instance body
373
+ i:list prop, % decl list
373
374
i:list prop, % Cond list
374
375
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) :-
377
379
pi a \
378
380
sigma Ta\
379
381
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).
381
383
382
384
383
385
% transforms the type of a mixin instance into a
@@ -386,25 +388,27 @@ pred mixin-instance-type->mixin-src
386
388
i:term, % type of the instance Ty
387
389
i:mixinname, % name of mixin
388
390
i:term, % instance body I of type Ty
391
+ i:list prop,
389
392
i:list prop, % Cond list
390
393
o:prop.
391
394
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 :-
393
396
factory? F (triple _ _ Subject),
394
397
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.
396
400
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) :-
398
402
pi a\
399
403
sigma Ia \
400
404
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).
402
406
403
407
pred has-mixin-instance->mixin-src i:prop, o:prop.
404
408
has-mixin-instance->mixin-src (has-mixin-instance _ M IHd) C :- std.do![
405
409
T = global IHd,
406
410
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,
408
412
].
409
413
410
414
pred get-canonical-structures i:term, o:list structure.
0 commit comments