merged
authorhaftmann
Wed, 02 Jun 2010 08:01:45 +0200
changeset 37250e7544b9ce6af
parent 37248 8e8e5f9d1441
parent 37249 8365cbc31349
child 37251 b79df37bbdc4
child 37275 e14dc033287b
child 37277 307845cc7f51
child 37279 72c7e636067b
merged
     1.1 --- a/src/Pure/axclass.ML	Tue Jun 01 22:19:17 2010 +0200
     1.2 +++ b/src/Pure/axclass.ML	Wed Jun 02 08:01:45 2010 +0200
     1.3 @@ -412,17 +412,15 @@
     1.4  
     1.5  (* primitive rules *)
     1.6  
     1.7 -fun gen_add_classrel store raw_th thy =
     1.8 +fun add_classrel raw_th thy =
     1.9    let
    1.10      val th = Thm.strip_shyps (Thm.transfer thy raw_th);
    1.11      val prop = Thm.plain_prop_of th;
    1.12      fun err () = raise THM ("add_classrel: malformed class relation", 0, [th]);
    1.13      val rel = Logic.dest_classrel prop handle TERM _ => err ();
    1.14      val (c1, c2) = cert_classrel thy rel handle TYPE _ => err ();
    1.15 -    val (th', thy') =
    1.16 -      if store then PureThy.store_thm
    1.17 -        (Binding.name (prefix classrel_prefix (Logic.name_classrel (c1, c2))), th) thy
    1.18 -      else (th, thy);
    1.19 +    val (th', thy') = PureThy.store_thm
    1.20 +      (Binding.name (prefix classrel_prefix (Logic.name_classrel (c1, c2))), th) thy;
    1.21      val th'' = th'
    1.22        |> Thm.unconstrainT
    1.23        |> Drule.instantiate' [SOME (ctyp_of thy' (TVar ((Name.aT, 0), [])))] [];
    1.24 @@ -433,17 +431,15 @@
    1.25      |> perhaps complete_arities
    1.26    end;
    1.27  
    1.28 -fun gen_add_arity store raw_th thy =
    1.29 +fun add_arity raw_th thy =
    1.30    let
    1.31      val th = Thm.strip_shyps (Thm.transfer thy raw_th);
    1.32      val prop = Thm.plain_prop_of th;
    1.33      fun err () = raise THM ("add_arity: malformed type arity", 0, [th]);
    1.34      val arity as (t, Ss, c) = Logic.dest_arity prop handle TERM _ => err ();
    1.35  
    1.36 -    val (th', thy') =
    1.37 -      if store then PureThy.store_thm
    1.38 -        (Binding.name (prefix arity_prefix (Logic.name_arity arity)), th) thy
    1.39 -      else (th, thy);
    1.40 +    val (th', thy') = PureThy.store_thm
    1.41 +      (Binding.name (prefix arity_prefix (Logic.name_arity arity)), th) thy;
    1.42  
    1.43      val args = Name.names Name.context Name.aT Ss;
    1.44      val T = Type (t, map TFree args);
    1.45 @@ -463,9 +459,6 @@
    1.46      |> put_arity ((t, Ss, c), th'')
    1.47    end;
    1.48  
    1.49 -val add_classrel = gen_add_classrel true;
    1.50 -val add_arity = gen_add_arity true;
    1.51 -
    1.52  
    1.53  (* tactical proofs *)
    1.54  
    1.55 @@ -477,10 +470,7 @@
    1.56        cat_error msg ("The error(s) above occurred while trying to prove class relation " ^
    1.57          quote (Syntax.string_of_classrel ctxt [c1, c2]));
    1.58    in
    1.59 -    thy
    1.60 -    |> PureThy.add_thms [((Binding.name
    1.61 -        (prefix classrel_prefix (Logic.name_classrel (c1, c2))), th), [])]
    1.62 -    |-> (fn [th'] => gen_add_classrel false th')
    1.63 +    thy |> add_classrel th
    1.64    end;
    1.65  
    1.66  fun prove_arity raw_arity tac thy =
    1.67 @@ -494,9 +484,7 @@
    1.68          cat_error msg ("The error(s) above occurred while trying to prove type arity " ^
    1.69            quote (Syntax.string_of_arity ctxt arity));
    1.70    in
    1.71 -    thy
    1.72 -    |> PureThy.add_thms (map (rpair []) (map Binding.name names ~~ ths))
    1.73 -    |-> fold (gen_add_arity false)
    1.74 +    thy |> fold add_arity ths
    1.75    end;
    1.76  
    1.77  
    1.78 @@ -613,10 +601,6 @@
    1.79  local
    1.80  
    1.81  (*old-style axioms*)
    1.82 -fun add_axiom (b, prop) =
    1.83 -  Thm.add_axiom (b, prop) #->
    1.84 -  (fn (_, thm) => PureThy.add_thm ((b, Drule.export_without_context thm), []));
    1.85 -
    1.86  fun axiomatize prep mk name add raw_args thy =
    1.87    let
    1.88      val args = prep thy raw_args;
    1.89 @@ -624,17 +608,17 @@
    1.90      val names = name args;
    1.91    in
    1.92      thy
    1.93 -    |> fold_map add_axiom (map Binding.name names ~~ specs)
    1.94 -    |-> fold add
    1.95 +    |> fold_map Thm.add_axiom (map Binding.name names ~~ specs)
    1.96 +    |-> fold (add o Drule.export_without_context o snd)
    1.97    end;
    1.98  
    1.99  fun ax_classrel prep =
   1.100    axiomatize (map o prep) (map Logic.mk_classrel)
   1.101 -    (map (prefix classrel_prefix o Logic.name_classrel)) (gen_add_classrel false);
   1.102 +    (map (prefix classrel_prefix o Logic.name_classrel)) add_classrel;
   1.103  
   1.104  fun ax_arity prep =
   1.105    axiomatize (prep o ProofContext.init_global) Logic.mk_arities
   1.106 -    (map (prefix arity_prefix) o Logic.name_arities) (gen_add_arity false);
   1.107 +    (map (prefix arity_prefix) o Logic.name_arities) add_arity;
   1.108  
   1.109  fun class_const c =
   1.110    (Logic.const_of_class c, Term.itselfT (Term.aT []) --> propT);