From 24d5448c65ba05072a5ab4180c9be95670ce126d Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Fri, 30 Sep 2016 18:59:11 +0200 Subject: More tests for tactic "subst". --- theories/Logic/PropExtensionalityFacts.v | 88 ++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 theories/Logic/PropExtensionalityFacts.v (limited to 'theories') diff --git a/theories/Logic/PropExtensionalityFacts.v b/theories/Logic/PropExtensionalityFacts.v new file mode 100644 index 0000000000..6438fcd40d --- /dev/null +++ b/theories/Logic/PropExtensionalityFacts.v @@ -0,0 +1,88 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* Proposition extensionality + Propositional functional extensionality + +2.2 Propositional extensionality -> Provable 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). + +(** 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. +Proof. + intros Ext A B Equiv. + change A with ((fun _ => A) I). + now rewrite Ext with (P := fun _ : True =>A) (Q := fun _ => B). +Qed. + +Lemma PredExt_imp_PropFunExt : PredicateExtensionality -> PropositionalFunctionalExtensionality. +Proof. + intros Ext A P Q Eq. apply Ext. intros x. now rewrite (Eq x). +Qed. + +Lemma PropExt_and_PropFunExt_imp_PredExt : + PropositionalExtensionality -> PropositionalFunctionalExtensionality -> PredicateExtensionality. +Proof. + intros Ext FunExt A P Q Equiv. + apply FunExt. intros x. now apply Ext. +Qed. + +Theorem PropExt_and_PropFunExt_iff_PredExt : + PropositionalExtensionality /\ PropositionalFunctionalExtensionality <-> PredicateExtensionality. +Proof. + firstorder using PredExt_imp_PropExt, PredExt_imp_PropFunExt, PropExt_and_PropFunExt_imp_PredExt. +Qed. + +(**********************************************************************) +(** ** Propositional extensionality + Provable proposition extensionality *) + +Lemma PropExt_imp_ProvPropExt : PropositionalExtensionality -> ProvablePropositionExtensionality. +Proof. + intros Ext A Ha; apply Ext; split; trivial. +Qed. -- cgit v1.2.3 From e2c0b6711ab100c1dc4d103601a951688b115c7c Mon Sep 17 00:00:00 2001 From: Maxime Dénès Date: Wed, 5 Oct 2016 12:05:39 +0200 Subject: Clean up type classes flags and update compat file. --- theories/Compat/Coq85.v | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'theories') diff --git a/theories/Compat/Coq85.v b/theories/Compat/Coq85.v index 54aeeaa114..74b416aae7 100644 --- a/theories/Compat/Coq85.v +++ b/theories/Compat/Coq85.v @@ -23,6 +23,11 @@ Global Unset Shrink Abstract. Global Unset Shrink Obligations. Global Set Refolding Reduction. +(** The resolution algorithm for type classes has changed. *) +Global Set Typeclasses Legacy Resolution. +Global Set Typeclasses Limit Intros. +Global Unset Typeclasses Filtered Unification. + (** In Coq 8.5, [] meant Vector, and [ ] meant list. Restore this behavior, to allow user-defined [] to not override vector notations. See https://coq.inria.fr/bugs/show_bug.cgi?id=4785. *) -- cgit v1.2.3