73 val FTsCs = mk_FTs allCs; |
73 val FTsCs = mk_FTs allCs; |
74 val ATs = map HOLogic.mk_setT passiveAs; |
74 val ATs = map HOLogic.mk_setT passiveAs; |
75 val BTs = map HOLogic.mk_setT activeAs; |
75 val BTs = map HOLogic.mk_setT activeAs; |
76 val B'Ts = map HOLogic.mk_setT activeBs; |
76 val B'Ts = map HOLogic.mk_setT activeBs; |
77 val B''Ts = map HOLogic.mk_setT activeCs; |
77 val B''Ts = map HOLogic.mk_setT activeCs; |
78 val sTs = map2 (curry (op -->)) FTsAs activeAs; |
78 val sTs = map2 (curry op -->) FTsAs activeAs; |
79 val s'Ts = map2 (curry (op -->)) FTsBs activeBs; |
79 val s'Ts = map2 (curry op -->) FTsBs activeBs; |
80 val s''Ts = map2 (curry (op -->)) FTsCs activeCs; |
80 val s''Ts = map2 (curry op -->) FTsCs activeCs; |
81 val fTs = map2 (curry (op -->)) activeAs activeBs; |
81 val fTs = map2 (curry op -->) activeAs activeBs; |
82 val inv_fTs = map2 (curry (op -->)) activeBs activeAs; |
82 val inv_fTs = map2 (curry op -->) activeBs activeAs; |
83 val self_fTs = map2 (curry (op -->)) activeAs activeAs; |
83 val self_fTs = map2 (curry op -->) activeAs activeAs; |
84 val gTs = map2 (curry (op -->)) activeBs activeCs; |
84 val gTs = map2 (curry op -->) activeBs activeCs; |
85 val all_gTs = map2 (curry (op -->)) allBs allCs'; |
85 val all_gTs = map2 (curry op -->) allBs allCs'; |
86 val prodBsAs = map2 (curry HOLogic.mk_prodT) activeBs activeAs; |
86 val prodBsAs = map2 (curry HOLogic.mk_prodT) activeBs activeAs; |
87 val prodFTs = mk_FTs (passiveAs @ prodBsAs); |
87 val prodFTs = mk_FTs (passiveAs @ prodBsAs); |
88 val prod_sTs = map2 (curry (op -->)) prodFTs activeAs; |
88 val prod_sTs = map2 (curry op -->) prodFTs activeAs; |
89 |
89 |
90 (* terms *) |
90 (* terms *) |
91 val mapsAsAs = map4 mk_map_of_bnf Dss Ass Ass bnfs; |
91 val mapsAsAs = map4 mk_map_of_bnf Dss Ass Ass bnfs; |
92 val mapsAsBs = map4 mk_map_of_bnf Dss Ass Bss bnfs; |
92 val mapsAsBs = map4 mk_map_of_bnf Dss Ass Bss bnfs; |
93 val mapsBsAs = map4 mk_map_of_bnf Dss Bss Ass bnfs; |
93 val mapsBsAs = map4 mk_map_of_bnf Dss Bss Ass bnfs; |
1092 val folds = map (Morphism.term phi) fold_frees; |
1092 val folds = map (Morphism.term phi) fold_frees; |
1093 val fold_names = map (fst o dest_Const) folds; |
1093 val fold_names = map (fst o dest_Const) folds; |
1094 fun mk_folds passives actives = |
1094 fun mk_folds passives actives = |
1095 map3 (fn name => fn T => fn active => |
1095 map3 (fn name => fn T => fn active => |
1096 Const (name, Library.foldr (op -->) |
1096 Const (name, Library.foldr (op -->) |
1097 (map2 (curry (op -->)) (mk_FTs (passives @ actives)) actives, T --> active))) |
1097 (map2 (curry op -->) (mk_FTs (passives @ actives)) actives, T --> active))) |
1098 fold_names (mk_Ts passives) actives; |
1098 fold_names (mk_Ts passives) actives; |
1099 fun mk_fold Ts ss i = Term.list_comb (Const (nth fold_names (i - 1), Library.foldr (op -->) |
1099 fun mk_fold Ts ss i = Term.list_comb (Const (nth fold_names (i - 1), Library.foldr (op -->) |
1100 (map fastype_of ss, nth Ts (i - 1) --> range_type (fastype_of (nth ss (i - 1))))), ss); |
1100 (map fastype_of ss, nth Ts (i - 1) --> range_type (fastype_of (nth ss (i - 1))))), ss); |
1101 val fold_defs = map (Morphism.thm phi) fold_def_frees; |
1101 val fold_defs = map (Morphism.thm phi) fold_def_frees; |
1102 |
1102 |