Library Stdlib.Logic.PropExtensionalityFacts


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

Set Implicit Arguments.

Definitions

Propositional extensionality

Local Notation PropositionalExtensionality :=
  (forall A B : Prop, (A <-> B) -> A = B).

Provable-proposition extensionality

Local Notation ProvablePropositionExtensionality :=
  (forall A:Prop, A -> A = True).

Refutable-proposition extensionality

Local Notation RefutablePropositionExtensionality :=
  (forall A:Prop, ~A -> A = False).

Predicate extensionality

Local Notation PredicateExtensionality :=
  (forall (A:Type) (P Q : A -> Prop), (forall x, P x <-> Q x) -> P = Q).

Propositional functional extensionality

Local Notation PropositionalFunctionalExtensionality :=
  (forall (A:Type) (P Q : A -> Prop), (forall x, P x = Q x) -> P = Q).

Propositional and predicate extensionality

Predicate extensionality <-> Propositional extensionality + Propositional functional extensionality


Lemma PredExt_imp_PropExt : PredicateExtensionality -> PropositionalExtensionality.

Lemma PredExt_imp_PropFunExt : PredicateExtensionality -> PropositionalFunctionalExtensionality.

Lemma PropExt_and_PropFunExt_imp_PredExt :
  PropositionalExtensionality -> PropositionalFunctionalExtensionality -> PredicateExtensionality.

Theorem PropExt_and_PropFunExt_iff_PredExt :
  PropositionalExtensionality /\ PropositionalFunctionalExtensionality <-> PredicateExtensionality.

Propositional extensionality and provable proposition extensionality


Lemma PropExt_imp_ProvPropExt : PropositionalExtensionality -> ProvablePropositionExtensionality.

Propositional extensionality and refutable proposition extensionality


Lemma PropExt_imp_RefutPropExt : PropositionalExtensionality -> RefutablePropositionExtensionality.