equal
deleted
inserted
replaced
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 |