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