equal
deleted
inserted
replaced
22 | change_arrow _ T = raise TYPE ("cont_consts: change_arrow", [T], []) |
22 | change_arrow _ T = raise TYPE ("cont_consts: change_arrow", [T], []) |
23 |
23 |
24 fun trans_rules name2 name1 n mx = |
24 fun trans_rules name2 name1 n mx = |
25 let |
25 let |
26 val vnames = Name.invents Name.context "a" n |
26 val vnames = Name.invents Name.context "a" n |
27 val extra_parse_rule = Syntax.ParseRule (Constant name2, Constant name1) |
27 val extra_parse_rule = Syntax.Parse_Rule (Constant name2, Constant name1) |
28 in |
28 in |
29 [Syntax.ParsePrintRule |
29 [Syntax.Parse_Print_Rule |
30 (Syntax.mk_appl (Constant name2) (map Variable vnames), |
30 (Syntax.mk_appl (Constant name2) (map Variable vnames), |
31 fold (fn a => fn t => Syntax.mk_appl (Constant @{const_syntax Rep_cfun}) [t, Variable a]) |
31 fold (fn a => fn t => Syntax.mk_appl (Constant @{const_syntax Rep_cfun}) [t, Variable a]) |
32 vnames (Constant name1))] @ |
32 vnames (Constant name1))] @ |
33 (case mx of |
33 (case mx of |
34 Infix _ => [extra_parse_rule] |
34 Infix _ => [extra_parse_rule] |
78 val (contconst_decls, normal_decls) = List.partition is_contconst decls |
78 val (contconst_decls, normal_decls) = List.partition is_contconst decls |
79 val transformed_decls = map (transform thy) contconst_decls |
79 val transformed_decls = map (transform thy) contconst_decls |
80 in |
80 in |
81 thy |
81 thy |
82 |> Sign.add_consts_i (normal_decls @ map #1 transformed_decls @ map #2 transformed_decls) |
82 |> Sign.add_consts_i (normal_decls @ map #1 transformed_decls @ map #2 transformed_decls) |
83 |> Sign.add_trrules_i (maps #3 transformed_decls) |
83 |> Sign.add_trrules (maps #3 transformed_decls) |
84 end |
84 end |
85 |
85 |
86 in |
86 in |
87 |
87 |
88 val add_consts = gen_add_consts Sign.certify_typ |
88 val add_consts = gen_add_consts Sign.certify_typ |