added "metisX" syntax (temporary)
authorblanchet
Tue, 31 May 2011 16:38:36 +0200
changeset 43089 c2ec08b0d217
parent 43088 0a97f3295642
child 43090 f6331d785128
added "metisX" syntax (temporary)
src/HOL/Tools/Metis/metis_tactics.ML
--- a/src/HOL/Tools/Metis/metis_tactics.ML	Tue May 31 16:38:36 2011 +0200
+++ b/src/HOL/Tools/Metis/metis_tactics.ML	Tue May 31 16:38:36 2011 +0200
@@ -12,6 +12,7 @@
   val metisN : string
   val metisF_N : string
   val metisFT_N : string
+  val metisX_N : string
   val trace : bool Config.T
   val verbose : bool Config.T
   val type_lits : bool Config.T
@@ -20,6 +21,7 @@
   val metisF_tac : Proof.context -> thm list -> int -> tactic
   val metisFT_tac : Proof.context -> thm list -> int -> tactic
   val metisHO_tac : Proof.context -> thm list -> int -> tactic
+  val metisX_tac : Proof.context -> thm list -> int -> tactic
   val setup : theory -> theory
 end
 
@@ -33,13 +35,16 @@
 fun method_binding_for_mode HO = @{binding metis}
   | method_binding_for_mode FO = @{binding metisF}
   | method_binding_for_mode FT = @{binding metisFT}
+  | method_binding_for_mode New = @{binding metisX}
 
 val metisN = Binding.qualified_name_of (method_binding_for_mode HO)
 val metisF_N = Binding.qualified_name_of (method_binding_for_mode FO)
 val metisFT_N = Binding.qualified_name_of (method_binding_for_mode FT)
+val metisX_N = Binding.qualified_name_of (method_binding_for_mode New)
 
 val type_lits = Attrib.setup_config_bool @{binding metis_type_lits} (K true)
-val new_skolemizer = Attrib.setup_config_bool @{binding metis_new_skolemizer} (K false)
+val new_skolemizer =
+  Attrib.setup_config_bool @{binding metis_new_skolemizer} (K false)
 
 fun is_false t = t aconv (HOLogic.mk_Trueprop HOLogic.false_const);
 
@@ -184,11 +189,13 @@
 val metisF_modes = [FO, FT]
 val metisFT_modes = [FT]
 val metisHO_modes = [HO]
+val metisX_modes = [New]
 
 val metis_tac = generic_metis_tac metis_modes
 val metisF_tac = generic_metis_tac metisF_modes
 val metisFT_tac = generic_metis_tac metisFT_modes
 val metisHO_tac = generic_metis_tac metisHO_modes
+val metisX_tac = generic_metis_tac metisX_modes
 
 (* Whenever "X" has schematic type variables, we treat "using X by metis" as
    "by (metis X)", to prevent "Subgoal.FOCUS" from freezing the type variables.
@@ -214,7 +221,8 @@
 val setup =
   [(metis_modes, "Metis for FOL and HOL problems"),
    (metisF_modes, "Metis for FOL problems"),
-   (metisFT_modes, "Metis for FOL/HOL problems with fully-typed translation")]
+   (metisFT_modes, "Metis for FOL/HOL problems with fully-typed translation"),
+   (metisX_modes, "Metis for FOL and HOL problems (experimental)")]
   |> fold (uncurry setup_method)
 
 end;