src/HOL/Product_Type.thy
changeset 12338 de0f4a63baa5
parent 12114 a8e860c86252
child 13462 56610e2ba220
equal deleted inserted replaced
12337:7c6a970f0808 12338:de0f4a63baa5
   340   |   split_pat tp i _ = None;
   340   |   split_pat tp i _ = None;
   341   fun metaeq sg lhs rhs = mk_meta_eq (prove_goalw_cterm []
   341   fun metaeq sg lhs rhs = mk_meta_eq (prove_goalw_cterm []
   342         (cterm_of sg (HOLogic.mk_Trueprop (HOLogic.mk_eq (lhs,rhs))))
   342         (cterm_of sg (HOLogic.mk_Trueprop (HOLogic.mk_eq (lhs,rhs))))
   343         (K [simp_tac (HOL_basic_ss addsimps [cond_split_eta]) 1]));
   343         (K [simp_tac (HOL_basic_ss addsimps [cond_split_eta]) 1]));
   344   val sign = sign_of (the_context ());
   344   val sign = sign_of (the_context ());
   345   fun simproc name patstr = Simplifier.mk_simproc name
   345   fun simproc name patstr =
   346                 [Thm.read_cterm sign (patstr, HOLogic.termT)];
   346     Simplifier.mk_simproc name [HOLogic.read_cterm sign patstr];
   347 
   347 
   348   val beta_patstr = "split f z";
   348   val beta_patstr = "split f z";
   349   val  eta_patstr = "split f";
   349   val  eta_patstr = "split f";
   350   fun beta_term_pat k i (Abs (_, _, t)) = beta_term_pat (k+1) i t
   350   fun beta_term_pat k i (Abs (_, _, t)) = beta_term_pat (k+1) i t
   351   |   beta_term_pat k i (t $ u) = Pair_pat k i (t $ u) orelse
   351   |   beta_term_pat k i (t $ u) = Pair_pat k i (t $ u) orelse