equal
deleted
inserted
replaced
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; |