論理
From Stdlib Require Import Logic.PropExtensionality.P: PropP -> P = TrueP: PropP -> P = TrueP: Prop
H: PP = TrueP: Prop
H: PP <-> TrueP: Prop
H: PP -> TrueP: Prop
H: PTrue -> Ptrivial.P: Prop
H: PP -> TrueP: Prop
H: PTrue -> Passumption. Qed.P: Prop
H: P
H0: TruePP: Prop~ P -> P = FalseP: Prop~ P -> P = FalseP: Prop
H: ~ PP = FalseP: Prop
H: ~ PP <-> FalseP: Prop
H: ~ PP -> FalseP: Prop
H: ~ PFalse -> Ptrivial.P: Prop
H: ~ PP -> FalseP: Prop
H: ~ PFalse -> Pcontradiction. Qed.P: Prop
H: ~ P
H0: FalseP~ False~ Falseassumption. Qed.H: FalseFalseP, Q: Prop~ (P \/ Q) -> ~ P /\ ~ QP, Q: Prop~ (P \/ Q) -> ~ P /\ ~ QP, Q: Prop
H: ~ (P \/ Q)~ P /\ ~ QP, Q: Prop
H: P \/ Q -> False~ P /\ ~ QP, Q: Prop
H: P \/ Q -> False~ PP, Q: Prop
H: P \/ Q -> False~ QP, Q: Prop
H: P \/ Q -> False~ PP, Q: Prop
H: P \/ Q -> False
H0: PFalseP, Q: Prop
H: P \/ Q -> False
H0: PP \/ Qassumption.P, Q: Prop
H: P \/ Q -> False
H0: PPP, Q: Prop
H: P \/ Q -> False~ QP, Q: Prop
H: P \/ Q -> False
H0: QFalseP, Q: Prop
H: P \/ Q -> False
H0: QP \/ Qassumption. Qed.P, Q: Prop
H: P \/ Q -> False
H0: QQP, Q: Prop~ False -> Truetrivial. Qed.P, Q: Prop~ False -> TrueP, Q: Prop~ True -> FalseP, Q: Prop~ True -> FalseP, Q: Prop
H: ~ TrueFalsetrivial. Qed.P, Q: Prop
H: ~ TrueTrueP, Q: Prop(P -> Q) -> ~ Q -> ~ PP, Q: Prop(P -> Q) -> ~ Q -> ~ PP, Q: Prop
H0: P -> Q
H1: ~ Q
H2: PFalseP, Q: Prop
H0: P -> Q
H1: ~ Q
H2: PQassumption. Qed.P, Q: Prop
H0: P -> Q
H1: ~ Q
H2: PPP: PropP -> ~ ~ PP: PropP -> ~ ~ PP: PropP -> (P -> False) -> Falseapply H0, H. Qed.P: Prop
H: P
H0: P -> FalseFalseA: Type
P: A -> Prop~ (exists x : A, P x) -> forall x : A, ~ P xA: Type
P: A -> Prop~ (exists x : A, P x) -> forall x : A, ~ P xA: Type
P: A -> Prop((exists x : A, P x) -> False) -> forall x : A, P x -> FalseA: Type
P: A -> Prop
H: (exists x : A, P x) -> False
x: A
H0: P xFalseA: Type
P: A -> Prop
H: (exists x : A, P x) -> False
x: A
H0: P xexists x0 : A, P x0assumption. Qed.A: Type
P: A -> Prop
H: (exists x : A, P x) -> False
x: A
H0: P xP xP, Q: Prop~ (P /\ Q) -> P -> ~ QP, Q: Prop~ (P /\ Q) -> P -> ~ QP, Q: Prop(P /\ Q -> False) -> P -> Q -> FalseP, Q: Prop
H: P /\ Q -> False
H0: P
H1: QFalseauto. Qed.P, Q: Prop
H: P /\ Q -> False
H0: P
H1: QP /\ QP, Q: PropP \/ Q -> ~ Q -> PP, Q: PropP \/ Q -> ~ Q -> PP, Q: Prop
H: P \/ Q
H0: ~ QPP, Q: Prop
H: P
H0: ~ QPP, Q: Prop
H: Q
H0: ~ QPassumption.P, Q: Prop
H: P
H0: ~ QPcontradiction. Qed. Definition andalso {A : Type} (P : A -> Prop) (Q : {a : A | P a} -> Prop) : A -> Prop := fun a => exists p : P a, Q (exist P a p).P, Q: Prop
H: Q
H0: ~ QP
TODO: 適切なファイルに移動する:
P: Propforall x y : P + (~ P), x = yP: Propforall x y : P + (~ P), x = yP: Prop
x, y: P + (~ P)x = yP: Prop
p, p0: Pinl p = inl p0P: Prop
p: P
n: ~ Pinl p = inr nP: Prop
n: ~ P
p: Pinr n = inl pP: Prop
n, n0: ~ Pinr n = inr n0P: Prop
p, p0: Pinl p = inl p0apply proof_irrelevance.P: Prop
p, p0: Pp = p0contradiction.P: Prop
p: P
n: ~ Pinl p = inr ncontradiction.P: Prop
n: ~ P
p: Pinr n = inl pP: Prop
n, n0: ~ Pinr n = inr n0apply proof_irrelevance. Qed.P: Prop
n, n0: ~ Pn = n0