Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************)
(* * The Coq Proof Assistant / The Coq Development Team *)
(* v * INRIA, CNRS and contributors - Copyright 1999-2018 *)
(* <O___,, * (see CREDITS file for the list of authors) *)
(* \VV/ **************************************************************)
(* // * This file is distributed under the terms of the *)
(* * GNU Lesser General Public License Version 2.1 *)
(* * (see LICENSE file for the text of the license) *)
(************************************************************************)
(* This file is a renaming for V5.10.14b, Oct 1995, of file Classical.v
introduced in Coq V5.8.3, June 1993 *)
Classical Predicate Logic on Type
Require Import Classical_Prop. Section Generic. Variable U : Type.
de Morgan laws for quantifiers
U:Typeforall P : U -> Prop, ~ (forall n : U, ~ P n) -> exists n : U, P nU:Typeforall P : U -> Prop, ~ (forall n : U, ~ P n) -> exists n : U, P nU:TypeP:U -> Propnotall:~ (forall n : U, ~ P n)exists n : U, P nU:TypeP:U -> Propnotall:~ (forall n : U, ~ P n)~ ~ (exists n : U, P n)U:TypeP:U -> Propnotall:~ (forall n : U, ~ P n)abs:~ (exists n : U, P n)FalseU:TypeP:U -> Propnotall:~ (forall n : U, ~ P n)abs:~ (exists n : U, P n)forall n : U, ~ P napply abs; exists n; exact H. Qed.U:TypeP:U -> Propnotall:~ (forall n0 : U, ~ P n0)abs:~ (exists n0 : U, P n0)n:UH:P nFalseU:Typeforall P : U -> Prop, ~ (forall n : U, P n) -> exists n : U, ~ P nU:Typeforall P : U -> Prop, ~ (forall n : U, P n) -> exists n : U, ~ P nU:TypeP:U -> Propnotall:~ (forall n : U, P n)exists n : U, ~ P nU:TypeP:U -> Propnotall:~ (forall n : U, P n)~ (forall n : U, ~ ~ P n)U:TypeP:U -> Propnotall:~ (forall n : U, P n)all:forall n : U, ~ ~ P nforall n : U, P napply all. Qed.U:TypeP:U -> Propnotall:~ (forall n0 : U, P n0)all:forall n0 : U, ~ ~ P n0n:U~ ~ P nU:Typeforall P : U -> Prop, ~ (exists n : U, P n) -> forall n : U, ~ P nU:Typeforall P : U -> Prop, ~ (exists n : U, P n) -> forall n : U, ~ P nU:TypeP:U -> Propnotex:(exists n0 : U, P n0) -> Falsen:Uabs:P nFalseexists n; trivial. Qed.U:TypeP:U -> Propnotex:(exists n0 : U, P n0) -> Falsen:Uabs:P nexists n0 : U, P n0U:Typeforall P : U -> Prop, ~ (exists n : U, ~ P n) -> forall n : U, P nU:Typeforall P : U -> Prop, ~ (exists n : U, ~ P n) -> forall n : U, P nU:TypeP:U -> PropH:~ (exists n0 : U, ~ P n0)n:UP nred; intro K; apply H; exists n; trivial. Qed.U:TypeP:U -> PropH:~ (exists n0 : U, ~ P n0)n:U~ ~ P nU:Typeforall P : U -> Prop, (exists n : U, ~ P n) -> ~ (forall n : U, P n)U:Typeforall P : U -> Prop, (exists n : U, ~ P n) -> ~ (forall n : U, P n)elim exnot; auto. Qed.U:TypeP:U -> Propexnot:exists n : U, P n -> FalseallP:forall n : U, P nFalseU:Typeforall P : U -> Prop, (forall n : U, ~ P n) -> ~ (exists n : U, P n)U:Typeforall P : U -> Prop, (forall n : U, ~ P n) -> ~ (exists n : U, P n)apply allnot with n; auto. Qed. End Generic.U:TypeP:U -> Propallnot:forall n0 : U, P n0 -> FalseexP:exists n0 : U, P n0n:Up:P nFalse