dropped Instance.instantiate
authorhaftmann
Fri, 07 Dec 2007 15:07:54 +0100
changeset 25569 c597835d5de4
parent 25568 7bb10db582cf
child 25570 fdfbbb92dadf
dropped Instance.instantiate
src/HOL/Library/Eval.thy
src/HOL/Tools/datatype_codegen.ML
src/HOL/Tools/function_package/size.ML
src/HOL/Tools/typecopy_package.ML
src/Pure/Isar/instance.ML
--- a/src/HOL/Library/Eval.thy	Fri Dec 07 10:59:03 2007 +0100
+++ b/src/HOL/Library/Eval.thy	Fri Dec 07 15:07:54 2007 +0100
@@ -40,8 +40,12 @@
       val ty = Type (tyco, map TFree (Name.names Name.context "'a" sorts));
     in
       thy
-      |> Instance.instantiate ([tyco], sorts, @{sort typ_of})
-           (define_typ_of ty) ((K o K) (Class.intro_classes_tac []))
+      |> TheoryTarget.instantiation ([tyco], sorts, @{sort typ_of})
+      |> define_typ_of ty
+      |> snd
+      |> Class.prove_instantiation_instance (K (Class.intro_classes_tac []))
+      |> LocalTheory.exit
+      |> ProofContext.theory_of
     end;
 in TypedefPackage.interpretation interpretator end
 *}
@@ -158,8 +162,12 @@
   fun interpretator tycos thy = case prep thy tycos
    of SOME (sorts, defs) =>
       thy
-      |> Instance.instantiate (tycos, sorts, @{sort term_of})
-           (primrec defs) ((K o K) (Class.intro_classes_tac []))
+      |> TheoryTarget.instantiation (tycos, sorts, @{sort term_of})
+      |> primrec defs
+      |> snd
+      |> Class.prove_instantiation_instance (K (Class.intro_classes_tac []))
+      |> LocalTheory.exit
+      |> ProofContext.theory_of
     | NONE => thy;
   in DatatypePackage.interpretation interpretator end
 *}
@@ -185,13 +193,20 @@
 by pat_completeness auto
 termination by (relation "measure (nat o abs)") (auto simp add: divAlg_mod_div)
 
-instance int :: term_of
-  "term_of k \<equiv> STR ''Numeral.number_class.number_of'' \<Colon>\<subseteq> intT \<rightarrow> intT \<bullet> mk_int k" ..
+instantiation int :: term_of
+begin
+
+definition
+  "term_of k = STR ''Numeral.number_class.number_of'' \<Colon>\<subseteq> intT \<rightarrow> intT \<bullet> mk_int k"
+
+instance ..
+
+end
 
 
 text {* Adaption for @{typ message_string}s *}
 
-lemmas [code func del] = term_of_messagestring.simps
+lemmas [code func del] = term_of_message_string.simps
 
 
 subsection {* Evaluation infrastructure *}
--- a/src/HOL/Tools/datatype_codegen.ML	Fri Dec 07 10:59:03 2007 +0100
+++ b/src/HOL/Tools/datatype_codegen.ML	Fri Dec 07 15:07:54 2007 +0100
@@ -435,8 +435,10 @@
       map (curry (Sorts.inter_sort (Sign.classes_of thy)) [HOLogic.class_eq] o snd) vs;
   in
     thy
-    |> Instance.instantiate (dtcos, sorts_eq, [HOLogic.class_eq]) (pair ())
-         ((K o K) (Class.intro_classes_tac []))
+    |> TheoryTarget.instantiation (dtcos, sorts_eq, [HOLogic.class_eq])
+    |> Class.prove_instantiation_instance (K (Class.intro_classes_tac []))
+    |> LocalTheory.exit
+    |> ProofContext.theory_of
     |> fold add_eq_thms dtcos
   end;
 
--- a/src/HOL/Tools/function_package/size.ML	Fri Dec 07 10:59:03 2007 +0100
+++ b/src/HOL/Tools/function_package/size.ML	Fri Dec 07 15:07:54 2007 +0100
@@ -33,9 +33,13 @@
 val size_name_base = NameSpace.base size_name;
 val size_suffix = "_" ^ size_name_base;
 
-fun instance_size_class tyco thy = thy |> Instance.instantiate
-  ([tyco], replicate (Sign.arity_number thy tyco) HOLogic.typeS, [HOLogic.class_size])
-    (pair ()) ((K o K) (Class.intro_classes_tac []));
+fun instance_size_class tyco thy =
+  thy
+  |> TheoryTarget.instantiation
+       ([tyco], replicate (Sign.arity_number thy tyco) HOLogic.typeS, [HOLogic.class_size])
+  |> Class.prove_instantiation_instance (K (Class.intro_classes_tac []))
+  |> LocalTheory.exit
+  |> ProofContext.theory_of;
 
 fun plus (t1, t2) = Const ("HOL.plus_class.plus",
   HOLogic.natT --> HOLogic.natT --> HOLogic.natT) $ t1 $ t2;
--- a/src/HOL/Tools/typecopy_package.ML	Fri Dec 07 10:59:03 2007 +0100
+++ b/src/HOL/Tools/typecopy_package.ML	Fri Dec 07 15:07:54 2007 +0100
@@ -131,8 +131,10 @@
     thy
     |> Code.add_datatype [(constr, ty)]
     |> Code.add_func proj_def
-    |> Instance.instantiate ([tyco], sorts_eq, [HOLogic.class_eq]) (pair ())
-         ((K o K) (Class.intro_classes_tac []))
+    |> TheoryTarget.instantiation ([tyco], sorts_eq, [HOLogic.class_eq])
+    |> Class.prove_instantiation_instance (K (Class.intro_classes_tac []))
+    |> LocalTheory.exit
+    |> ProofContext.theory_of
     |> Code.add_func (CodeUnit.constrain_thm [HOLogic.class_eq] inject)
   end;
 
--- a/src/Pure/Isar/instance.ML	Fri Dec 07 10:59:03 2007 +0100
+++ b/src/Pure/Isar/instance.ML	Fri Dec 07 15:07:54 2007 +0100
@@ -7,9 +7,6 @@
 
 signature INSTANCE =
 sig
-  val instantiate: string list * sort list * sort -> (local_theory -> 'a * local_theory)
-    -> (Proof.context -> 'a -> tactic) -> theory -> theory
-
   val instantiation_cmd: xstring list * sort * xstring -> theory -> local_theory
   val instance_cmd: xstring * sort * xstring -> ((bstring * Attrib.src list) * xstring) list
     -> theory -> Proof.state
@@ -29,13 +26,6 @@
 fun instantiation_cmd raw_arities thy =
   TheoryTarget.instantiation (read_multi_arity thy raw_arities) thy;
 
-fun instantiate arities f tac =
-  TheoryTarget.instantiation arities
-  #> f
-  #-> (fn result => Class.prove_instantiation_instance (fn ctxt => tac ctxt result))
-  #> LocalTheory.exit
-  #> ProofContext.theory_of;
-
 fun gen_instance prep_arity prep_attr parse_term do_proof do_proof' raw_arities defs thy =
   let
     val (tyco, sorts, sort) = prep_arity thy raw_arities;
@@ -56,6 +46,8 @@
       let
         val def' = (apsnd o apsnd) (Syntax.check_prop ctxt) def;
       in Specification.definition def' ctxt end;
+    val _ = if not (null defs) then Output.legacy_feature
+      "Instance command with attached attached definitions; use instantiation instead." else ();
   in if not (null defs) orelse forall (Class.is_class thy) sort
   then
     thy