src/HOL/HOLCF/Tools/cont_consts.ML
changeset 42204 b3277168c1e7
parent 42151 4da4fc77664b
child 42224 578a51fae383
equal deleted inserted replaced
42203:9c9c97a5040d 42204:b3277168c1e7
    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