src/Pure/sign.ML
changeset 22846 fb79144af9a3
parent 22811 eb59c9b76d52
child 23615 40ab945ef5ff
equal deleted inserted replaced
22845:5f9138bcb3d7 22846:fb79144af9a3
    58   val restore_naming: theory -> theory -> theory
    58   val restore_naming: theory -> theory -> theory
    59 end
    59 end
    60 
    60 
    61 signature SIGN =
    61 signature SIGN =
    62 sig
    62 sig
    63   val init_data: theory -> theory
       
    64   val rep_sg: theory ->
    63   val rep_sg: theory ->
    65    {naming: NameSpace.naming,
    64    {naming: NameSpace.naming,
    66     syn: Syntax.syntax,
    65     syn: Syntax.syntax,
    67     tsig: Type.tsig,
    66     tsig: Type.tsig,
    68     consts: Consts.T}
    67     consts: Consts.T}
   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)));