src/HOL/Product_Type.thy
changeset 13480 bb72bd43c6c3
parent 13462 56610e2ba220
child 14101 d25c23e46173
equal deleted inserted replaced
13479:7123ae179212 13480:bb72bd43c6c3
   334   |   no_args k i (Bound m) = m < k orelse m > k+i
   334   |   no_args k i (Bound m) = m < k orelse m > k+i
   335   |   no_args _ _ _ = true;
   335   |   no_args _ _ _ = true;
   336   fun split_pat tp i (Abs  (_,_,t)) = if tp 0 i t then Some (i,t) else None
   336   fun split_pat tp i (Abs  (_,_,t)) = if tp 0 i t then Some (i,t) else None
   337   |   split_pat tp i (Const ("split", _) $ Abs (_, _, t)) = split_pat tp (i+1) t
   337   |   split_pat tp i (Const ("split", _) $ Abs (_, _, t)) = split_pat tp (i+1) t
   338   |   split_pat tp i _ = None;
   338   |   split_pat tp i _ = None;
   339   fun metaeq sg lhs rhs = mk_meta_eq (prove_goalw_cterm []
   339   fun metaeq sg lhs rhs = mk_meta_eq (Tactic.prove sg [] []
   340         (cterm_of sg (HOLogic.mk_Trueprop (HOLogic.mk_eq (lhs,rhs))))
   340         (HOLogic.mk_Trueprop (HOLogic.mk_eq (lhs,rhs)))
   341         (K [simp_tac (HOL_basic_ss addsimps [cond_split_eta]) 1]));
   341         (K (simp_tac (HOL_basic_ss addsimps [cond_split_eta]) 1)));
   342 
   342 
   343   fun beta_term_pat k i (Abs (_, _, t)) = beta_term_pat (k+1) i t
   343   fun beta_term_pat k i (Abs (_, _, t)) = beta_term_pat (k+1) i t
   344   |   beta_term_pat k i (t $ u) = Pair_pat k i (t $ u) orelse
   344   |   beta_term_pat k i (t $ u) = Pair_pat k i (t $ u) orelse
   345                         (beta_term_pat k i t andalso beta_term_pat k i u)
   345                         (beta_term_pat k i t andalso beta_term_pat k i u)
   346   |   beta_term_pat k i t = no_args k i t;
   346   |   beta_term_pat k i t = no_args k i t;