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) *)
(************************************************************************)
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 -> Propinj:forall A B : Prop, f A <-> f B -> A <-> Bext:forall A B : Prop, A <-> B -> f A <-> f Bforall A : Prop, f (f A) <-> Af:Prop -> Propinj:forall A B : Prop, f A <-> f B -> A <-> Bext:forall A B : Prop, A <-> B -> f A <-> f Bforall A : Prop, f (f A) <-> Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:Propf (f A) <-> Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:Propf (f (f A)) <-> f Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))f Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f Af (f (f A))f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))f Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))f Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))f A <-> Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))f (f A) <-> f Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f (f A)f Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f Truef (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f (f A)f Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f (f A)f Trueapply ext; firstorder.f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f (f A)f (f (f A)) <-> f Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f Truef (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f Truef (f A)apply inj; firstorder.f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f (f (f A))H':f Truef (f A) <-> Truef:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f Af (f (f A))f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f Af (f (f A))f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f Af A <-> f (f (f A))f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AA <-> f (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':Af (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':f (f A)Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':Af (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':Af (f A)apply ext; firstorder.f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':Af A <-> f (f A)f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':f (f A)Af:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':f (f A)Aapply inj; firstorder. Defined.f:Prop -> Propinj:forall A0 B : Prop, f A0 <-> f B -> A0 <-> Bext:forall A0 B : Prop, A0 <-> B -> f A0 <-> f BA:PropH:f AH':f (f A)f A <-> A