bot : ⋆ ⇒ ([A : ⋆] → A) not [A : ⋆] : ⋆ ⇒ (A → bot) P [A : ⋆] : ⋆ ⇒ (A → ⋆) U : ⋆ ⇒ ([X : ⋆] → (P (P X) → X) → P (P X)) tau [t : P (P U)] : U ⇒ ( λ X f p ⇒ t (λ x ⇒ p (f (x X f))) ) sigma [s : U] : P (P U) ⇒ (s U tau) Delta : P U ⇒ ( λ y ⇒ not ([p : P U] → sigma y p → p (tau (sigma y))) ) Omega : U ⇒ ( tau (λ p ⇒ [x : U] → sigma x p → p x) ) D : ⋆ ⇒ ( [p : P U] → sigma Omega p → p (tau (sigma Omega)) ) lem1 [p : P U] [H1 : [x : U] → sigma x p → p x] : p Omega ⇒ ( H1 Omega (λ x ⇒ H1 (tau (sigma x))) ) lem2 : not D ⇒ ( lem1 Delta (λ x H2 H3 ⇒ H3 Delta H2 (λ p ⇒ H3 (λ y ⇒ p (tau (sigma y))))) ) lem3 : D ⇒ ( λ p ⇒ lem1 (λ y ⇒ p (tau (sigma y))) ) loop : bot ⇒ (lem2 lem3)