src/HOL/Tools/Function/partial_function.ML
changeset 82967 73af47bc277c
parent 82643 f1c14af17591
equal deleted inserted replaced
82966:55a71dd13ca0 82967:73af47bc277c
   149 fun curry_n arity = funpow (arity - 1) mk_curry;
   149 fun curry_n arity = funpow (arity - 1) mk_curry;
   150 fun uncurry_n arity = funpow (arity - 1) HOLogic.mk_case_prod;
   150 fun uncurry_n arity = funpow (arity - 1) HOLogic.mk_case_prod;
   151 
   151 
   152 val curry_uncurry_ss =
   152 val curry_uncurry_ss =
   153   simpset_of (put_simpset HOL_basic_ss \<^context>
   153   simpset_of (put_simpset HOL_basic_ss \<^context>
   154     addsimps [@{thm Product_Type.curry_case_prod}, @{thm Product_Type.case_prod_curry}])
   154     |> Simplifier.add_simps [@{thm Product_Type.curry_case_prod}, @{thm Product_Type.case_prod_curry}])
   155 
   155 
   156 val split_conv_ss =
   156 val split_conv_ss =
   157   simpset_of (put_simpset HOL_basic_ss \<^context>
   157   simpset_of (put_simpset HOL_basic_ss \<^context>
   158     addsimps [@{thm Product_Type.split_conv}]);
   158     |> Simplifier.add_simps [@{thm Product_Type.split_conv}]);
   159 
   159 
   160 val curry_K_ss =
   160 val curry_K_ss =
   161   simpset_of (put_simpset HOL_basic_ss \<^context>
   161   simpset_of (put_simpset HOL_basic_ss \<^context>
   162     addsimps [@{thm Product_Type.curry_K}]);
   162     |> Simplifier.add_simps [@{thm Product_Type.curry_K}]);
   163 
   163 
   164 (* instantiate generic fixpoint induction and eliminate the canonical assumptions;
   164 (* instantiate generic fixpoint induction and eliminate the canonical assumptions;
   165   curry induction predicate *)
   165   curry induction predicate *)
   166 fun specialize_fixp_induct ctxt fT fT_uc curry uncurry mono_thm f_def rule =
   166 fun specialize_fixp_induct ctxt fT fT_uc curry uncurry mono_thm f_def rule =
   167   let
   167   let