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)         *)
(************************************************************************)

Basic facts about Prop as a type

An intuitionistic theorem from topos theory [LambekScott]
References:
[LambekScott] Jim Lambek, Phil J. Scott, Introduction to higher order categorical logic, Cambridge Studies in Advanced Mathematics (Book 7), 1988.
f:Prop -> Prop
inj:forall A B : Prop, f A <-> f B -> A <-> B
ext:forall A B : Prop, A <-> B -> f A <-> f B

forall A : Prop, f (f A) <-> A
f:Prop -> Prop
inj:forall A B : Prop, f A <-> f B -> A <-> B
ext:forall A B : Prop, A <-> B -> f A <-> f B

forall A : Prop, f (f A) <-> A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop

f (f A) <-> A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop

f (f (f A)) <-> f A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))

f A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
f (f (f A))
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))

f A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))

f A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))

f A <-> True
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))

f (f A) <-> f True
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f (f A)

f True
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f True
f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f (f A)

f True
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f (f A)

f True
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f (f A)

f (f (f A)) <-> f True
apply ext; firstorder.
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f True

f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f True

f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f (f (f A))
H':f True

f (f A) <-> True
apply inj; firstorder.
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A

f (f (f A))
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A

f (f (f A))
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A

f A <-> f (f (f A))
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A

A <-> f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':A

f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':f (f A)
A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':A

f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':A

f (f A)
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':A

f A <-> f (f A)
apply ext; firstorder.
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':f (f A)

A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':f (f A)

A
f:Prop -> Prop
inj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> B
ext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f B
A:Prop
H:f A
H':f (f A)

f A <-> A
apply inj; firstorder. Defined.