(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* bool. Variable b2p : bool -> Prop. Hypothesis p2p1 : (A:Prop)(b2p (p2b A))->A. Hypothesis p2p2 : (A:Prop)A->(b2p (p2b A)). Variable B:Prop. Definition V := (A:Prop)((A->bool)->(A->bool))->(A->bool). Definition U := V->bool. Definition sb : V -> V := [z][A;r;a](r (z A r) a). Definition le : (U->bool)->(U->bool) := [i][x](x [A;r;a](i [v](sb v A r a))). Definition induct : (U->bool)->Prop := [i](x:U)(b2p (le i x))->(b2p (i x)). Definition WF : U := [z](p2b (induct (z U le))). Definition I : U->Prop := [x]((i:U->bool)(b2p (le i x))->(b2p (i [v](sb v U le x))))->B. Lemma Omega : (i:U->bool)(induct i)->(b2p (i WF)). Proof. Intros i y. Apply y. Unfold le WF induct. Apply p2p2. Intros x H0. Apply y. Exact H0. Qed. Lemma lemma1 : (induct [u](p2b (I u))). Proof. Unfold induct. Intros x p. Apply (p2p2 (I x)). Intro q. Apply (p2p1 (I [v:V](sb v U le x)) (q [u](p2b (I u)) p)). Intro i. Apply q with i:=[y:?](i [v:V](sb v U le y)). Qed. Lemma lemma2 : ((i:U->bool)(induct i)->(b2p (i WF)))->B. Proof. Intro x. Apply (p2p1 (I WF) (x [u](p2b (I u)) lemma1)). Intros i H0. Apply (x [y](i [v](sb v U le y))). Apply (p2p1 ? H0). Qed. Theorem paradox : B. Proof. Exact (lemma2 Omega). Qed. End Paradox.