proposition: Lemma cantor_diag: forall (X:Type) (f:X->(X->bool)), ~ surjective f.
proof: Proof. intros. red; intro. pose (g := fun x:X => negb (f x x)). pose proof (H g). destruct H0. assert (f x x = g x). { rewrite H0. reflexivity. } unfold g in H1. destruct (f x x). - discriminate H1. - discriminate H1. Qed.
imports: Coq(ClassicalChoice) Coq(ProofIrrelevance) Coq(FunctionalExtensionality) Coq(Description) ZornsLemma(FunctionPropertiesEns) ZornsLemma(Relation_Definitions_Implicit) ZornsLemma(CSB) ZornsLemma(EnsemblesSpec) ZornsLemma(ZornsLemma) ZornsLemma(EnsemblesImplicit) ZornsLemma(CountableTypes) ZornsLemma(FiniteTypes) ZornsLemma(InfiniteTypes) Coq(RelationClasses)