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) *)
(************************************************************************)
Some facts and definitions about propositional and predicate extensionality
We investigate the relations between the following extensionality principles
Table of contents
1. Definitions
2.1 Predicate extensionality <-> Proposition extensionality + Propositional functional extensionality
2.2 Propositional extensionality -> Provable propositional extensionality
2.3 Propositional extensionality -> Refutable propositional extensionality
- Proposition extensionality
- Predicate extensionality
- Propositional functional extensionality
- Provable-proposition extensionality
- Refutable-proposition extensionality
- Extensional proposition representatives
- Extensional predicate representatives
- Extensional propositional function representatives
Set Implicit Arguments. (**********************************************************************)
Propositional extensionality
Notation PropositionalExtensionality :=
(forall A B : Prop, (A <-> B) -> A = B).
Provable-proposition extensionality
Notation ProvablePropositionExtensionality :=
(forall A:Prop, A -> A = True).
Refutable-proposition extensionality
Notation RefutablePropositionExtensionality :=
(forall A:Prop, ~A -> A = False).
Predicate extensionality
Notation PredicateExtensionality :=
(forall (A:Type) (P Q : A -> Prop), (forall x, P x <-> Q x) -> P = Q).
Propositional functional extensionality
Notation PropositionalFunctionalExtensionality := (forall (A:Type) (P Q : A -> Prop), (forall x, P x = Q x) -> P = Q). (**********************************************************************)
(**********************************************************************)
PredicateExtensionality -> PropositionalExtensionalityPredicateExtensionality -> PropositionalExtensionalityExt:PredicateExtensionalityA, B:PropEquiv:A <-> BA = Bnow rewrite Ext with (P := fun _ : True =>A) (Q := fun _ => B). Qed.Ext:PredicateExtensionalityA, B:PropEquiv:A <-> B(fun _ : True => A) I = BPredicateExtensionality -> PropositionalFunctionalExtensionalityPredicateExtensionality -> PropositionalFunctionalExtensionalityExt:PredicateExtensionalityA:TypeP, Q:A -> PropEq:forall x : A, P x = Q xP = QExt:PredicateExtensionalityA:TypeP, Q:A -> PropEq:forall x : A, P x = Q xforall x : A, P x <-> Q xnow rewrite (Eq x). Qed.Ext:PredicateExtensionalityA:TypeP, Q:A -> PropEq:forall x0 : A, P x0 = Q x0x:AP x <-> Q xPropositionalExtensionality -> PropositionalFunctionalExtensionality -> PredicateExtensionalityPropositionalExtensionality -> PropositionalFunctionalExtensionality -> PredicateExtensionalityExt:PropositionalExtensionalityFunExt:PropositionalFunctionalExtensionalityA:TypeP, Q:A -> PropEquiv:forall x : A, P x <-> Q xP = QExt:PropositionalExtensionalityFunExt:PropositionalFunctionalExtensionalityA:TypeP, Q:A -> PropEquiv:forall x : A, P x <-> Q xforall x : A, P x = Q xnow apply Ext. Qed.Ext:PropositionalExtensionalityFunExt:PropositionalFunctionalExtensionalityA:TypeP, Q:A -> PropEquiv:forall x0 : A, P x0 <-> Q x0x:AP x = Q xPropositionalExtensionality /\ PropositionalFunctionalExtensionality <-> PredicateExtensionalityfirstorder using PredExt_imp_PropExt, PredExt_imp_PropFunExt, PropExt_and_PropFunExt_imp_PredExt. Qed. (**********************************************************************)PropositionalExtensionality /\ PropositionalFunctionalExtensionality <-> PredicateExtensionality
PropositionalExtensionality -> ProvablePropositionExtensionalityintros Ext A Ha; apply Ext; split; trivial. Qed. (**********************************************************************)PropositionalExtensionality -> ProvablePropositionExtensionality
PropositionalExtensionality -> RefutablePropositionExtensionalityintros Ext A Ha; apply Ext; split; easy. Qed.PropositionalExtensionality -> RefutablePropositionExtensionality