1
(* Check that the encoding of system U- fails *)
3
Inductive prop : Prop := down : Prop -> prop.
5
Definition up (p:prop) : Prop := let (A) := p in A.
7
Lemma p2p1 : forall A:Prop, up (down A) -> A.
12
Lemma p2p2 : forall A:Prop, A -> up (down A).
17
(** Hurkens' paradox *)
19
Definition V := forall A:Prop, ((A -> prop) -> A -> prop) -> A -> prop.
20
Definition U := V -> prop.
21
Definition sb (z:V) : V := fun A r a => r (z A r) a.
22
Definition le (i:U -> prop) (x:U) : prop :=
23
x (fun A r a => i (fun v => sb v A r a)).
24
Definition induct (i:U -> prop) : Prop :=
25
forall x:U, up (le i x) -> up (i x).
26
Definition WF : U := fun z => down (induct (z U le)).
27
Definition I (x:U) : Prop :=
28
(forall i:U -> prop, up (le i x) -> up (i (fun v => sb v U le x))) -> False.
30
Lemma Omega : forall i:U -> prop, induct i -> up (i WF).
34
unfold le, WF, induct in |- *.
40
Lemma lemma1 : induct (fun u => down (I u)).
42
unfold induct in |- *.
45
apply (q (fun u => down (I u)) p).
47
apply q with (i := fun y => i (fun v:V => sb v U le y)).
50
Lemma lemma2 : (forall i:U -> prop, induct i -> up (i WF)) -> False.
53
apply (x (fun u => down (I u)) lemma1).
55
apply (x (fun y => i (fun v => sb v U le y))).
59
Theorem paradox : False.