src/Pure/Isar/object_logic.ML
changeset 14226 7afe0e5bcc83
parent 13376 59975b8417e2
child 14743 81001d6cb8c0
equal deleted inserted replaced
14225:6d1026266e2b 14226:7afe0e5bcc83
    67 local
    67 local
    68 
    68 
    69 fun new_judgment name (None, rules) = (Some name, rules)
    69 fun new_judgment name (None, rules) = (Some name, rules)
    70   | new_judgment _ (Some _, _) = error "Attempt to redeclare object-logic judgment";
    70   | new_judgment _ (Some _, _) = error "Attempt to redeclare object-logic judgment";
    71 
    71 
       
    72 fun add_final name thy =
       
    73   let
       
    74     val typ = case Sign.const_type (sign_of thy) name of
       
    75 		Some T => T
       
    76 	      | None => error "Internal error in ObjectLogic.gen_add_judgment";
       
    77   in
       
    78     Theory.add_finals_i false [Const(name,typ)] thy
       
    79   end;
       
    80 
    72 fun gen_add_judgment add_consts (name, T, syn) thy =
    81 fun gen_add_judgment add_consts (name, T, syn) thy =
    73   thy
    82   let
    74   |> add_consts [(name, T, syn)]
    83     val fullname = Sign.full_name (Theory.sign_of thy) name;
    75   |> ObjectLogicData.map (new_judgment (Sign.full_name (Theory.sign_of thy) name));
    84   in
       
    85     thy
       
    86     |> add_consts [(name, T, syn)]
       
    87     |> add_final fullname
       
    88     |> ObjectLogicData.map (new_judgment fullname)
       
    89   end;
    76 
    90 
    77 in
    91 in
    78 
    92 
    79 val add_judgment = gen_add_judgment Theory.add_consts;
    93 val add_judgment = gen_add_judgment Theory.add_consts;
    80 val add_judgment_i = gen_add_judgment Theory.add_consts_i;
    94 val add_judgment_i = gen_add_judgment Theory.add_consts_i;