diff options
author | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-02-08 17:03:37 +0000 |
---|---|---|
committer | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-02-08 17:03:37 +0000 |
commit | 6703700903619004f05ad56293b7ec0a2e672d3a (patch) | |
tree | 7686794722387220929994965c01dc6642d5e8e0 /theories | |
parent | 7e324da8bd211f01593952ac51bd309e80c7546a (diff) |
Change implementation of resolution for typeclasses to use a customized
eauto instead of an arbitrary tactic. Export more from eauto to allow
easier debugging.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10534 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories')
-rw-r--r-- | theories/Classes/Init.v | 19 | ||||
-rw-r--r-- | theories/Classes/Relations.v | 6 |
2 files changed, 21 insertions, 4 deletions
diff --git a/theories/Classes/Init.v b/theories/Classes/Init.v index aec260873..beeb74589 100644 --- a/theories/Classes/Init.v +++ b/theories/Classes/Init.v @@ -1 +1,18 @@ -Ltac typeclass_instantiation := eauto with typeclass_instances || eauto. +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(************************************************************************) + +(* Initialization code for typeclasses, setting up the default tactic + for instance search. + + Author: Matthieu Sozeau + Institution: LRI, CNRS UMR 8623 - UniversitĂcopyright Paris Sud + 91405 Orsay, France *) + +(* $Id: Init.v 616 2007-08-08 12:28:10Z msozeau $ *) + +(* Ltac typeclass_instantiation := typeclasses eauto || eauto. *) diff --git a/theories/Classes/Relations.v b/theories/Classes/Relations.v index 694cab59b..aaeb18654 100644 --- a/theories/Classes/Relations.v +++ b/theories/Classes/Relations.v @@ -77,7 +77,7 @@ Program Instance [ Irreflexive A R ] => flip_irreflexive : Irreflexive A (flip R Program Instance [ Symmetric A R ] => flip_symmetric : Symmetric A (flip R). - Solve Obligations using unfold flip ; program_simpl ; eapply symmetric ; eauto. + Solve Obligations using unfold flip ; program_simpl ; apply symmetric ; eauto. Program Instance [ Asymmetric A R ] => flip_asymmetric : Asymmetric A (flip R). @@ -320,12 +320,12 @@ Class [ Equivalence A eqA ] => Antisymmetric (R : relationT A) := Program Instance [ eq : Equivalence A eqA, ? Antisymmetric eq R ] => flip_antisymmetric : ? Antisymmetric eq (flip R). - Solve Obligations using unfold flip ; program_simpl ; eapply antisymmetric ; eauto. + Solve Obligations using unfold inverse, flip ; program_simpl ; eapply @antisymmetric ; eauto. Program Instance [ eq : Equivalence A eqA, ? Antisymmetric eq (R : relation A) ] => inverse_antisymmetric : ? Antisymmetric eq (inverse R). - Solve Obligations using unfold inverse, flip ; program_simpl ; eapply antisymmetric ; eauto. + Solve Obligations using unfold inverse, flip ; program_simpl ; eapply @antisymmetric ; eauto. (** Leibinz equality [eq] is an equivalence relation. *) |