src/HOL/Tools/Function/function_core.ML
changeset 38549 d0385f2764d8
parent 37145 01aa36932739
child 38558 32ad17fe2b9c
equal deleted inserted replaced
38548:dea0d2cca822 38549:d0385f2764d8
   390     val thy = ProofContext.theory_of ctxt
   390     val thy = ProofContext.theory_of ctxt
   391 
   391 
   392     (* Inductive Hypothesis: !!z. (z,x):R ==> EX!y. (z,y):G *)
   392     (* Inductive Hypothesis: !!z. (z,x):R ==> EX!y. (z,y):G *)
   393     val ihyp = Term.all domT $ Abs ("z", domT,
   393     val ihyp = Term.all domT $ Abs ("z", domT,
   394       Logic.mk_implies (HOLogic.mk_Trueprop (R $ Bound 0 $ x),
   394       Logic.mk_implies (HOLogic.mk_Trueprop (R $ Bound 0 $ x),
   395         HOLogic.mk_Trueprop (Const ("Ex1", (ranT --> boolT) --> boolT) $
   395         HOLogic.mk_Trueprop (Const (@{const_name "Ex1"}, (ranT --> boolT) --> boolT) $
   396           Abs ("y", ranT, G $ Bound 1 $ Bound 0))))
   396           Abs ("y", ranT, G $ Bound 1 $ Bound 0))))
   397       |> cterm_of thy
   397       |> cterm_of thy
   398 
   398 
   399     val ihyp_thm = Thm.assume ihyp |> Thm.forall_elim_vars 0
   399     val ihyp_thm = Thm.assume ihyp |> Thm.forall_elim_vars 0
   400     val ih_intro = ihyp_thm RS (f_def RS ex1_implies_ex)
   400     val ih_intro = ihyp_thm RS (f_def RS ex1_implies_ex)