|
3 | 3 |
|
4 | 4 | namespace howto { |
5 | 5 |
|
6 | | -pred main i:string, i:string, i:int. |
7 | | -main ST STgt Depth :- |
8 | | - private.mixins-on-string ST MLSrc, |
| 6 | +pred main-trm i:term, i:string, i:int. |
| 7 | +main-trm T STgt Depth :- coq.term->gref T GR, main-gref GR STgt Depth. |
| 8 | + |
| 9 | +pred main-str i:string, i:string, i:int. |
| 10 | +main-str S STgt Depth :- coq.locate S GR, main-gref GR STgt Depth. |
| 11 | + |
| 12 | +pred main-gref i:gref, i:string, i:int. |
| 13 | +main-gref GR STgt Depth :- |
| 14 | + private.mixins-on-gref GR MLSrc, |
9 | 15 | private.mixins-in-string STgt MLTgt, |
10 | 16 | private.list-diff MLTgt MLSrc ML, |
11 | 17 | if (ML = []) (coq.say "HB: nothing to do.") |
@@ -49,13 +55,12 @@ lexi-order [] []. |
49 | 55 | lexi-order [X1|_] [X2|_] :- lt-gref X1 X2. |
50 | 56 | lexi-order [X|T1] [X|T2] :- lexi-order T1 T2. |
51 | 57 |
|
52 | | -% [mixins-on-string S ML] list mixins in structures [S] is equipped with |
53 | | -pred mixins-on-string i:string, o:list mixinname. |
54 | | -mixins-on-string S ML :- |
55 | | - coq.locate S GR, |
| 58 | +% [mixins-on-gref GR ML] list mixins in structures [GR] is equipped with |
| 59 | +pred mixins-on-gref i:gref, o:list mixinname. |
| 60 | +mixins-on-gref GR ML :- |
56 | 61 | std.filter {coq.CS.db-for _ (cs-gref GR)} (about.not1 about.unif-hint?) LV, |
57 | | - std.fold LV [] mixins-on-string.aux ML. |
58 | | -mixins-on-string.aux (cs-instance _ _ GR) L L' :- |
| 62 | + std.fold LV [] mixins-on-gref.aux ML. |
| 63 | +mixins-on-gref.aux (cs-instance _ _ GR) L L' :- |
59 | 64 | coq.prod-tgt->gref {coq.env.typeof GR} F, |
60 | 65 | class-def (class _ F MLWP), |
61 | 66 | union L {list-w-params_list MLWP} L'. |
|
0 commit comments