eliminated type Args.T;
authorwenzelm
Fri, 13 Mar 2009 21:25:15 +0100
changeset 30513 1796b8ea88aa
parent 30512 17b2aad869fa
child 30514 9455ecc7796d
eliminated type Args.T; pervasive types 'a parser and 'a context_parser;
src/Provers/blast.ML
src/Provers/clasimp.ML
src/Provers/classical.ML
src/Provers/splitter.ML
src/Pure/Isar/args.ML
src/Pure/Isar/attrib.ML
src/Pure/Isar/code.ML
src/Pure/Isar/outer_syntax.ML
src/Pure/Isar/spec_parse.ML
src/Pure/Isar/value_parse.ML
src/Pure/ML/ml_antiquote.ML
src/Pure/ML/ml_context.ML
src/Pure/Thy/thy_output.ML
src/Pure/simplifier.ML
src/Tools/code/code_target.ML
src/Tools/eqsubst.ML
--- a/src/Provers/blast.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Provers/blast.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -56,7 +56,7 @@
                  uwrappers: (string * wrapper) list,
                  safe0_netpair: netpair, safep_netpair: netpair,
                  haz_netpair: netpair, dup_netpair: netpair, xtra_netpair: ContextRules.netpair}
-  val cla_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
+  val cla_modifiers: Method.modifier parser list
   val cla_meth': (claset -> int -> tactic) -> thm list -> Proof.context -> Proof.method
   end;
 
--- a/src/Provers/clasimp.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Provers/clasimp.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -62,8 +62,8 @@
   val iff_add: attribute
   val iff_add': attribute
   val iff_del: attribute
-  val iff_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
-  val clasimp_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
+  val iff_modifiers: Method.modifier parser list
+  val clasimp_modifiers: Method.modifier parser list
   val clasimp_setup: theory -> theory
 end;
 
--- a/src/Provers/classical.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Provers/classical.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -146,7 +146,7 @@
   val haz_elim: int option -> attribute
   val haz_intro: int option -> attribute
   val rule_del: attribute
-  val cla_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
+  val cla_modifiers: Method.modifier parser list
   val cla_meth: (claset -> tactic) -> thm list -> Proof.context -> Proof.method
   val cla_meth': (claset -> int -> tactic) -> thm list -> Proof.context -> Proof.method
   val cla_method: (claset -> tactic) -> Method.src -> Proof.context -> Proof.method
--- a/src/Provers/splitter.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Provers/splitter.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -39,7 +39,7 @@
   val Delsplits       : thm list -> unit
   val split_add: attribute
   val split_del: attribute
-  val split_modifiers : (Args.T list -> (Method.modifier * Args.T list)) list
+  val split_modifiers : Method.modifier parser list
   val setup: theory -> theory
 end;
 
--- a/src/Pure/Isar/args.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/args.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -7,69 +7,66 @@
 
 signature ARGS =
 sig
-  type T = OuterLex.token
+  type token = OuterLex.token
   type src
-  val src: (string * T list) * Position.T -> src
-  val dest_src: src -> (string * T list) * Position.T
+  val src: (string * token list) * Position.T -> src
+  val dest_src: src -> (string * token list) * Position.T
   val pretty_src: Proof.context -> src -> Pretty.T
   val map_name: (string -> string) -> src -> src
   val morph_values: morphism -> src -> src
   val maxidx_values: src -> int -> int
   val assignable: src -> src
   val closure: src -> src
-  val context: Context.generic * T list -> Context.proof * (Context.generic * T list)
-  val theory: Context.generic * T list -> Context.theory * (Context.generic * T list)
-  val $$$ : string -> T list -> string * T list
-  val add: T list -> string * T list
-  val del: T list -> string * T list
-  val colon: T list -> string * T list
-  val query: T list -> string * T list
-  val bang: T list -> string * T list
-  val query_colon: T list -> string * T list
-  val bang_colon: T list -> string * T list
-  val parens: (T list -> 'a * T list) -> T list -> 'a * T list
-  val bracks: (T list -> 'a * T list) -> T list -> 'a * T list
-  val mode: string -> 'a * T list -> bool * ('a * T list)
-  val maybe: (T list -> 'a * T list) -> T list -> 'a option * T list
-  val name_source: T list -> string * T list
-  val name_source_position: T list -> (SymbolPos.text * Position.T) * T list
-  val name: T list -> string * T list
-  val binding: T list -> binding * T list
-  val alt_name: T list -> string * T list
-  val symbol: T list -> string * T list
-  val liberal_name: T list -> string * T list
-  val var: T list -> indexname * T list
-  val internal_text: T list -> string * T list
-  val internal_typ: T list -> typ * T list
-  val internal_term: T list -> term * T list
-  val internal_fact: T list -> thm list * T list
-  val internal_attribute: T list -> (morphism -> attribute) * T list
-  val named_text: (string -> string) -> T list -> string * T list
-  val named_typ: (string -> typ) -> T list -> typ * T list
-  val named_term: (string -> term) -> T list -> term * T list
-  val named_fact: (string -> thm list) -> T list -> thm list * T list
-  val named_attribute: (string -> morphism -> attribute) -> T list ->
-    (morphism -> attribute) * T list
-  val typ_abbrev: Context.generic * T list -> typ * (Context.generic * T list)
-  val typ: Context.generic * T list -> typ * (Context.generic * T list)
-  val term: Context.generic * T list -> term * (Context.generic * T list)
-  val term_abbrev: Context.generic * T list -> term * (Context.generic * T list)
-  val prop: Context.generic * T list -> term * (Context.generic * T list)
-  val tyname: Context.generic * T list -> string * (Context.generic * T list)
-  val const: Context.generic * T list -> string * (Context.generic * T list)
-  val const_proper: Context.generic * T list -> string * (Context.generic * T list)
-  val bang_facts: Context.generic * T list -> thm list * (Context.generic * T list)
-  val goal_spec: ((int -> tactic) -> tactic) -> ('a * T list)
-    -> ((int -> tactic) -> tactic) * ('a * T list)
-  val parse: OuterLex.token list -> T list * OuterLex.token list
-  val parse1: (string -> bool) -> OuterLex.token list -> T list * OuterLex.token list
-  val attribs: (string -> string) -> T list -> src list * T list
-  val opt_attribs: (string -> string) -> T list -> src list * T list
-  val thm_name: (string -> string) -> string -> T list -> (binding * src list) * T list
-  val opt_thm_name: (string -> string) -> string -> T list -> (binding * src list) * T list
-  val syntax: string -> ('b * T list -> 'a * ('b * T list)) -> src -> 'b -> 'a * 'b
-  val context_syntax: string -> (Context.generic * T list -> 'a * (Context.generic * T list)) ->
-    src -> Proof.context -> 'a * Proof.context
+  val context: Proof.context context_parser
+  val theory: theory context_parser
+  val $$$ : string -> string parser
+  val add: string parser
+  val del: string parser
+  val colon: string parser
+  val query: string parser
+  val bang: string parser
+  val query_colon: string parser
+  val bang_colon: string parser
+  val parens: ('a parser) -> 'a parser
+  val bracks: ('a parser) -> 'a parser
+  val mode: string -> bool context_parser
+  val maybe: 'a parser -> 'a option parser
+  val name_source: string parser
+  val name_source_position: (SymbolPos.text * Position.T) parser
+  val name: string parser
+  val binding: binding parser
+  val alt_name: string parser
+  val symbol: string parser
+  val liberal_name: string parser
+  val var: indexname parser
+  val internal_text: string parser
+  val internal_typ: typ parser
+  val internal_term: term parser
+  val internal_fact: thm list parser
+  val internal_attribute: (morphism -> attribute) parser
+  val named_text: (string -> string) -> string parser
+  val named_typ: (string -> typ) -> typ parser
+  val named_term: (string -> term) -> term parser
+  val named_fact: (string -> thm list) -> thm list parser
+  val named_attribute: (string -> morphism -> attribute) -> (morphism -> attribute) parser
+  val typ_abbrev: typ context_parser
+  val typ: typ context_parser
+  val term: term context_parser
+  val term_abbrev: term context_parser
+  val prop: term context_parser
+  val tyname: string context_parser
+  val const: string context_parser
+  val const_proper: string context_parser
+  val bang_facts: thm list context_parser
+  val goal_spec: ((int -> tactic) -> tactic) -> ((int -> tactic) -> tactic) context_parser
+  val parse: token list parser
+  val parse1: (string -> bool) -> token list parser
+  val attribs: (string -> string) -> src list parser
+  val opt_attribs: (string -> string) -> src list parser
+  val thm_name: (string -> string) -> string -> (binding * src list) parser
+  val opt_thm_name: (string -> string) -> string -> (binding * src list) parser
+  val syntax: string -> 'a context_parser -> src -> Context.generic -> 'a * Context.generic
+  val context_syntax: string -> 'a context_parser -> src -> Proof.context -> 'a * Proof.context
 end;
 
 structure Args: ARGS =
@@ -78,13 +75,13 @@
 structure T = OuterLex;
 structure P = OuterParse;
 
+type token = T.token;
+
 
 
 (** datatype src **)
 
-type T = T.token;
-
-datatype src = Src of (string * T list) * Position.T;
+datatype src = Src of (string * token list) * Position.T;
 
 val src = Src;
 fun dest_src (Src src) = src;
--- a/src/Pure/Isar/attrib.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/attrib.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -24,14 +24,13 @@
     (('c * 'att list) * ('d * 'att list) list) list
   val crude_closure: Proof.context -> src -> src
   val add_attributes: (bstring * (src -> attribute) * string) list -> theory -> theory
-  val syntax: (Context.generic * Args.T list ->
-    attribute * (Context.generic * Args.T list)) -> src -> attribute
+  val syntax: attribute context_parser -> src -> attribute
   val no_args: attribute -> src -> attribute
   val add_del_args: attribute -> attribute -> src -> attribute
-  val thm_sel: Args.T list -> Facts.interval list * Args.T list
-  val thm: Context.generic * Args.T list -> thm * (Context.generic * Args.T list)
-  val thms: Context.generic * Args.T list -> thm list * (Context.generic * Args.T list)
-  val multi_thm: Context.generic * Args.T list -> thm list * (Context.generic * Args.T list)
+  val thm_sel: Facts.interval list parser
+  val thm: thm context_parser
+  val thms: thm list context_parser
+  val multi_thm: thm list context_parser
   val print_configs: Proof.context -> unit
   val internal: (morphism -> attribute) -> src
   val register_config: Config.value Config.T -> theory -> theory
--- a/src/Pure/Isar/code.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/code.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -44,7 +44,7 @@
   val postprocess_conv: theory -> cterm -> thm
   val postprocess_term: theory -> term -> term
 
-  val add_attribute: string * (Args.T list -> attribute * Args.T list) -> theory -> theory
+  val add_attribute: string * attribute parser -> theory -> theory
 
   val print_codesetup: theory -> unit
 end;
@@ -83,7 +83,7 @@
 (** code attributes **)
 
 structure CodeAttr = TheoryDataFun (
-  type T = (string * (Args.T list -> attribute * Args.T list)) list;
+  type T = (string * attribute parser) list;
   val empty = [];
   val copy = I;
   val extend = I;
--- a/src/Pure/Isar/outer_syntax.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/outer_syntax.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -9,7 +9,6 @@
 
 signature OUTER_SYNTAX =
 sig
-  type 'a parser = 'a OuterParse.parser
   val command: string -> string -> OuterKeyword.T ->
     (Toplevel.transition -> Toplevel.transition) parser -> unit
   val markup_command: ThyOutput.markup -> string -> string -> OuterKeyword.T ->
--- a/src/Pure/Isar/spec_parse.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/spec_parse.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -6,8 +6,6 @@
 
 signature SPEC_PARSE =
 sig
-  type token = OuterParse.token
-  type 'a parser = 'a OuterParse.parser
   val attrib: Attrib.src parser
   val attribs: Attrib.src list parser
   val opt_attribs: Attrib.src list parser
@@ -36,8 +34,6 @@
 struct
 
 structure P = OuterParse;
-type token = P.token;
-type 'a parser = 'a P.parser;
 
 
 (* theorem specifications *)
--- a/src/Pure/Isar/value_parse.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Isar/value_parse.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -6,7 +6,6 @@
 
 signature VALUE_PARSE =
 sig
-  type 'a parser = 'a OuterParse.parser
   val comma: 'a parser -> 'a parser
   val equal: 'a parser -> 'a parser
   val parens: 'a parser -> 'a parser
@@ -20,7 +19,6 @@
 struct
 
 structure P = OuterParse;
-type 'a parser = 'a P.parser;
 
 
 (* syntax utilities *)
--- a/src/Pure/ML/ml_antiquote.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/ML/ml_antiquote.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -6,15 +6,11 @@
 
 signature ML_ANTIQUOTE =
 sig
-  val macro: string ->
-    (Context.generic * Args.T list -> Proof.context * (Context.generic * Args.T list)) -> unit
+  val macro: string -> Proof.context context_parser -> unit
   val variant: string -> Proof.context -> string * Proof.context
-  val inline: string ->
-    (Context.generic * Args.T list -> string * (Context.generic * Args.T list)) -> unit
-  val declaration: string -> string ->
-    (Context.generic * Args.T list -> string * (Context.generic * Args.T list)) -> unit
-  val value: string ->
-    (Context.generic * Args.T list -> string * (Context.generic * Args.T list)) -> unit
+  val inline: string -> string context_parser -> unit
+  val declaration: string -> string -> string context_parser -> unit
+  val value: string -> string context_parser -> unit
 end;
 
 structure ML_Antiquote: ML_ANTIQUOTE =
--- a/src/Pure/ML/ml_context.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/ML/ml_context.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -27,8 +27,7 @@
   type antiq =
     {struct_name: string, background: Proof.context} ->
       (Proof.context -> string * string) * Proof.context
-  val add_antiq: string ->
-    (Position.T -> Context.generic * Args.T list -> antiq * (Context.generic * Args.T list)) -> unit
+  val add_antiq: string -> (Position.T -> antiq context_parser) -> unit
   val trace: bool ref
   val eval_wrapper: (string -> unit) * (string -> 'a) -> bool -> Position.T -> string -> unit
   val eval: bool -> Position.T -> string -> unit
@@ -157,9 +156,7 @@
 
 local
 
-val global_parsers = ref (Symtab.empty:
-  (Position.T -> Context.generic * Args.T list -> antiq * (Context.generic * Args.T list))
-    Symtab.table);
+val global_parsers = ref (Symtab.empty: (Position.T -> antiq context_parser) Symtab.table);
 
 in
 
--- a/src/Pure/Thy/thy_output.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/Thy/thy_output.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -18,8 +18,7 @@
   val print_antiquotations: unit -> unit
   val boolean: string -> bool
   val integer: string -> int
-  val antiquotation: string ->
-    (Context.generic * Args.T list -> 'a * (Context.generic * Args.T list)) ->
+  val antiquotation: string -> 'a context_parser ->
     ({state: Toplevel.state, source: Args.src, context: Proof.context} -> 'a -> string) -> unit
   datatype markup = Markup | MarkupEnv | Verbatim
   val modes: string list ref
--- a/src/Pure/simplifier.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Pure/simplifier.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -73,11 +73,10 @@
   val def_simproc_i: {name: string, lhss: term list,
     proc: morphism -> simpset -> cterm -> thm option, identifier: thm list} ->
     local_theory -> local_theory
-  val cong_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
-  val simp_modifiers': (Args.T list -> (Method.modifier * Args.T list)) list
-  val simp_modifiers: (Args.T list -> (Method.modifier * Args.T list)) list
-  val method_setup: (Args.T list -> (Method.modifier * Args.T list)) list
-    -> theory -> theory
+  val cong_modifiers: Method.modifier parser list
+  val simp_modifiers': Method.modifier parser list
+  val simp_modifiers: Method.modifier parser list
+  val method_setup: Method.modifier parser list -> theory -> theory
   val easy_setup: thm -> thm list -> theory -> theory
 end;
 
--- a/src/Tools/code/code_target.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Tools/code/code_target.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -26,7 +26,7 @@
     -> (Path.T option -> 'a -> unit)
     -> ('a -> string * string option list)
     -> 'a -> serialization
-  val serialize: theory -> string -> string option -> Args.T list
+  val serialize: theory -> string -> string option -> OuterLex.token list
     -> Code_Thingol.naming -> Code_Thingol.program -> string list -> serialization
   val serialize_custom: theory -> string * (serializer * literals)
     -> Code_Thingol.naming -> Code_Thingol.program -> string list -> string * string option list
@@ -106,7 +106,7 @@
 
 type serializer =
   string option                         (*module name*)
-  -> Args.T list                        (*arguments*)
+  -> OuterLex.token list                (*arguments*)
   -> (string -> string)                 (*labelled_name*)
   -> string list                        (*reserved symbols*)
   -> (string * Pretty.T) list           (*includes*)
--- a/src/Tools/eqsubst.ML	Fri Mar 13 21:24:21 2009 +0100
+++ b/src/Tools/eqsubst.ML	Fri Mar 13 21:25:15 2009 +0100
@@ -109,8 +109,8 @@
        searchinfo -> Term.term -> match Seq.seq Seq.seq
 
     (* syntax tools *)
-    val ith_syntax : Args.T list -> int list * Args.T list
-    val options_syntax : Args.T list -> bool * Args.T list
+    val ith_syntax : int list parser
+    val options_syntax : bool parser
 
     (* Isar level hooks *)
     val eqsubst_asm_meth : Proof.context -> int list -> Thm.thm list -> Proof.method