src/Pure/Isar/local_theory.ML
changeset 28115 cd0d170d4dc6
parent 28084 a05ca48ef263
child 28379 0de8a35b866a
equal deleted inserted replaced
28114:2637fb838f74 28115:cd0d170d4dc6
    23   val theory: (theory -> theory) -> local_theory -> local_theory
    23   val theory: (theory -> theory) -> local_theory -> local_theory
    24   val target_result: (Proof.context -> 'a * Proof.context) -> local_theory -> 'a * local_theory
    24   val target_result: (Proof.context -> 'a * Proof.context) -> local_theory -> 'a * local_theory
    25   val target: (Proof.context -> Proof.context) -> local_theory -> local_theory
    25   val target: (Proof.context -> Proof.context) -> local_theory -> local_theory
    26   val affirm: local_theory -> local_theory
    26   val affirm: local_theory -> local_theory
    27   val pretty: local_theory -> Pretty.T list
    27   val pretty: local_theory -> Pretty.T list
    28   val axioms: string ->
       
    29     ((Name.binding * typ) * mixfix) list * (Attrib.binding * term list) list -> local_theory
       
    30     -> (term list * (string * thm list) list) * local_theory
       
    31   val abbrev: Syntax.mode -> (Name.binding * mixfix) * term -> local_theory ->
    28   val abbrev: Syntax.mode -> (Name.binding * mixfix) * term -> local_theory ->
    32     (term * term) * local_theory
    29     (term * term) * local_theory
    33   val define: string -> (Name.binding * mixfix) * (Attrib.binding * term) -> local_theory ->
    30   val define: string -> (Name.binding * mixfix) * (Attrib.binding * term) -> local_theory ->
    34     (term * (string * thm)) * local_theory
    31     (term * (string * thm)) * local_theory
    35   val note: string -> Attrib.binding * thm list -> local_theory -> (string * thm list) * local_theory
    32   val note: string -> Attrib.binding * thm list -> local_theory -> (string * thm list) * local_theory
    53 
    50 
    54 (* type lthy *)
    51 (* type lthy *)
    55 
    52 
    56 type operations =
    53 type operations =
    57  {pretty: local_theory -> Pretty.T list,
    54  {pretty: local_theory -> Pretty.T list,
    58   axioms: string ->
       
    59     ((Name.binding * typ) * mixfix) list * (Attrib.binding * term list) list -> local_theory ->
       
    60     (term list * (string * thm list) list) * local_theory,
       
    61   abbrev: Syntax.mode -> (Name.binding * mixfix) * term -> local_theory ->
    55   abbrev: Syntax.mode -> (Name.binding * mixfix) * term -> local_theory ->
    62     (term * term) * local_theory,
    56     (term * term) * local_theory,
    63   define: string ->
    57   define: string ->
    64     (Name.binding * mixfix) * (Attrib.binding * term) -> local_theory ->
    58     (Name.binding * mixfix) * (Attrib.binding * term) -> local_theory ->
    65     (term * (string * thm)) * local_theory,
    59     (term * (string * thm)) * local_theory,
   169 fun operation f lthy = f (#operations (get_lthy lthy)) lthy;
   163 fun operation f lthy = f (#operations (get_lthy lthy)) lthy;
   170 fun operation1 f x = operation (fn ops => f ops x);
   164 fun operation1 f x = operation (fn ops => f ops x);
   171 fun operation2 f x y lthy = operation (fn ops => f ops x y) lthy;
   165 fun operation2 f x y lthy = operation (fn ops => f ops x y) lthy;
   172 
   166 
   173 val pretty = operation #pretty;
   167 val pretty = operation #pretty;
   174 val axioms = operation2 #axioms;
       
   175 val abbrev = operation2 #abbrev;
   168 val abbrev = operation2 #abbrev;
   176 val define = operation2 #define;
   169 val define = operation2 #define;
   177 val notes = operation2 #notes;
   170 val notes = operation2 #notes;
   178 val type_syntax = operation1 #type_syntax;
   171 val type_syntax = operation1 #type_syntax;
   179 val term_syntax = operation1 #term_syntax;
   172 val term_syntax = operation1 #term_syntax;