201 |
200 |
202 fun make_sign (naming, syn, tsig, consts) = |
201 fun make_sign (naming, syn, tsig, consts) = |
203 Sign {naming = naming, syn = syn, tsig = tsig, consts = consts}; |
202 Sign {naming = naming, syn = syn, tsig = tsig, consts = consts}; |
204 |
203 |
205 structure SignData = TheoryDataFun |
204 structure SignData = TheoryDataFun |
206 (struct |
205 ( |
207 val name = "Pure/sign"; |
|
208 type T = sign; |
206 type T = sign; |
209 val copy = I; |
207 val copy = I; |
210 fun extend (Sign {syn, tsig, consts, ...}) = |
208 fun extend (Sign {syn, tsig, consts, ...}) = |
211 make_sign (NameSpace.default_naming, syn, tsig, consts); |
209 make_sign (NameSpace.default_naming, syn, tsig, consts); |
212 |
210 |
221 val naming = NameSpace.default_naming; |
219 val naming = NameSpace.default_naming; |
222 val syn = Syntax.merge_syntaxes syn1 syn2; |
220 val syn = Syntax.merge_syntaxes syn1 syn2; |
223 val tsig = Type.merge_tsigs pp (tsig1, tsig2); |
221 val tsig = Type.merge_tsigs pp (tsig1, tsig2); |
224 val consts = Consts.merge (consts1, consts2); |
222 val consts = Consts.merge (consts1, consts2); |
225 in make_sign (naming, syn, tsig, consts) end; |
223 in make_sign (naming, syn, tsig, consts) end; |
226 |
224 ); |
227 fun print _ _ = (); |
|
228 end); |
|
229 |
|
230 val init_data = SignData.init; |
|
231 |
225 |
232 fun rep_sg thy = SignData.get thy |> (fn Sign args => args); |
226 fun rep_sg thy = SignData.get thy |> (fn Sign args => args); |
233 |
227 |
234 fun map_sign f = SignData.map (fn Sign {naming, syn, tsig, consts} => |
228 fun map_sign f = SignData.map (fn Sign {naming, syn, tsig, consts} => |
235 make_sign (f (naming, syn, tsig, consts))); |
229 make_sign (f (naming, syn, tsig, consts))); |