Skip to content
This repository was archived by the owner on Nov 13, 2021. It is now read-only.

Commit 3a8ad88

Browse files
author
msozeau
committedMar 16, 2008
Reorganize Program and Classes theories. Requiring Setoid no longer sets
implicits for left, inl or eq, hence some theories had to be changed again. It should make some user contribs compile again too. Also do not import functional extensionality when importing Program.Basics, add a Combinators file for proofs requiring it and a Syntax file for the implicit settings. Move Classes.Relations to Classes.RelationClasses to avoid name clash warnings as advised by Hugo and Pierre. git-svn-id: svn://scm.gforge.inria.fr/svn/coq/trunk@10681 85f007b7-540e-0410-9357-904b9bb8a0f7
1 parent aa1583a commit 3a8ad88

19 files changed

+204
-164
lines changed
 

‎Makefile.common

+4-3
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ SETOIDSVO:= theories/Setoids/Setoid.vo # theories/Setoids/Setoid_tac.vo theories
748748

749749
UNICODEVO:= theories/Unicode/Utf8.vo
750750

751-
CLASSESVO:= theories/Classes/Init.vo theories/Classes/Relations.vo theories/Classes/Morphisms.vo \
751+
CLASSESVO:= theories/Classes/Init.vo theories/Classes/RelationClasses.vo theories/Classes/Morphisms.vo \
752752
theories/Classes/Functions.vo theories/Classes/Equivalence.vo theories/Classes/SetoidTactics.vo \
753753
theories/Classes/SetoidClass.vo theories/Classes/SetoidAxioms.vo theories/Classes/SetoidDec.vo
754754

@@ -806,8 +806,9 @@ CCVO:=
806806
DPVO:=contrib/dp/Dp.vo
807807

808808
SUBTACVO:=theories/Program/Tactics.vo theories/Program/Equality.vo theories/Program/Subset.vo \
809-
theories/Program/Utils.vo theories/Program/Wf.vo theories/Program/Program.vo \
810-
theories/Program/FunctionalExtensionality.vo theories/Program/Basics.vo
809+
theories/Program/Utils.vo theories/Program/Wf.vo theories/Program/Basics.vo \
810+
theories/Program/FunctionalExtensionality.vo theories/Program/Combinators.vo \
811+
theories/Program/Syntax.vo theories/Program/Program.vo
811812

812813
RTAUTOVO:= \
813814
contrib/rtauto/Bintree.vo contrib/rtauto/Rtauto.vo

‎contrib/rtauto/Bintree.v

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ intro ne;right;congruence.
107107
left;reflexivity.
108108
Defined.
109109

110-
Theorem pos_eq_dec_refl : forall m, pos_eq_dec m m = left (refl_equal m).
110+
Theorem pos_eq_dec_refl : forall m, pos_eq_dec m m = left _ (refl_equal m).
111111
fix 1;intros [mm|mm|].
112112
simpl; rewrite pos_eq_dec_refl; reflexivity.
113113
simpl; rewrite pos_eq_dec_refl; reflexivity.
@@ -116,7 +116,7 @@ Qed.
116116

117117
Theorem pos_eq_dec_ex : forall m n,
118118
pos_eq m n =true -> exists h:m=n,
119-
pos_eq_dec m n = left h.
119+
pos_eq_dec m n = left _ h.
120120
fix 1;intros [mm|mm|] [nn|nn|];try (simpl;congruence).
121121
simpl;intro e.
122122
elim (pos_eq_dec_ex _ _ e).

‎tactics/class_tactics.ml4

+11-14
Original file line numberDiff line numberDiff line change
@@ -360,28 +360,25 @@ let impl = lazy (gen_constant ["Program"; "Basics"] "impl")
360360
let arrow = lazy (gen_constant ["Program"; "Basics"] "arrow")
361361
let coq_id = lazy (gen_constant ["Program"; "Basics"] "id")
362362

363-
let reflexive_type = lazy (gen_constant ["Classes"; "Relations"] "Reflexive")
364-
let reflexive_proof = lazy (gen_constant ["Classes"; "Relations"] "reflexive")
363+
let reflexive_type = lazy (gen_constant ["Classes"; "RelationClasses"] "Reflexive")
364+
let reflexive_proof = lazy (gen_constant ["Classes"; "RelationClasses"] "reflexive")
365365

366-
let symmetric_type = lazy (gen_constant ["Classes"; "Relations"] "Symmetric")
367-
let symmetric_proof = lazy (gen_constant ["Classes"; "Relations"] "symmetric")
366+
let symmetric_type = lazy (gen_constant ["Classes"; "RelationClasses"] "Symmetric")
367+
let symmetric_proof = lazy (gen_constant ["Classes"; "RelationClasses"] "symmetric")
368368

369-
let transitive_type = lazy (gen_constant ["Classes"; "Relations"] "Transitive")
370-
let transitive_proof = lazy (gen_constant ["Classes"; "Relations"] "transitive")
369+
let transitive_type = lazy (gen_constant ["Classes"; "RelationClasses"] "Transitive")
370+
let transitive_proof = lazy (gen_constant ["Classes"; "RelationClasses"] "transitive")
371371

372-
let inverse = lazy (gen_constant ["Classes"; "Relations"] "inverse")
372+
let inverse = lazy (gen_constant ["Classes"; "RelationClasses"] "inverse")
373373

374374
let respectful_dep = lazy (gen_constant ["Classes"; "Morphisms"] "respectful_dep")
375375
let respectful = lazy (gen_constant ["Classes"; "Morphisms"] "respectful")
376376

377-
let equivalence = lazy (gen_constant ["Classes"; "Relations"] "Equivalence")
378-
let default_relation = lazy (gen_constant ["Classes"; "Relations"] "DefaultRelation")
377+
let equivalence = lazy (gen_constant ["Classes"; "RelationClasses"] "Equivalence")
378+
let default_relation = lazy (gen_constant ["Classes"; "RelationClasses"] "DefaultRelation")
379379

380-
let iff_equiv = lazy (gen_constant ["Classes"; "Relations"] "iff_equivalence")
381-
let eq_equiv = lazy (gen_constant ["Classes"; "SetoidClass"] "eq_equivalence")
382-
383-
(* let coq_relation = lazy (gen_constant ["Relations";"Relation_Definitions"] "relation") *)
384-
let coq_relation = lazy (gen_constant ["Classes";"Relations"] "relation")
380+
(* let coq_relation = lazy (gen_constant ["RelationClasses";"Relation_Definitions"] "relation") *)
381+
let coq_relation = lazy (gen_constant ["Relations";"Relation_Definitions"] "relation")
385382
let coq_relation a = mkApp (Lazy.force coq_relation, [| a |])
386383
let coq_relationT = lazy (gen_constant ["Classes";"Relations"] "relationT")
387384

‎theories/Classes/Equivalence.v

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
(************************************************************************)
99

1010
(* Typeclass-based setoids, tactics and standard instances.
11-
TODO: explain clrewrite, clsubstitute and so on.
1211
1312
Author: Matthieu Sozeau
1413
Institution: LRI, CNRS UMR 8623 - UniversitÃcopyright Paris Sud
@@ -17,10 +16,10 @@
1716
(* $Id: FSetAVL_prog.v 616 2007-08-08 12:28:10Z msozeau $ *)
1817

1918
Require Export Coq.Program.Basics.
20-
Require Import Coq.Program.Program.
19+
Require Import Coq.Program.Tactics.
2120

2221
Require Import Coq.Classes.Init.
23-
Require Export Coq.Classes.Relations.
22+
Require Export Coq.Classes.RelationClasses.
2423
Require Export Coq.Classes.Morphisms.
2524
Require Export Coq.Classes.SetoidTactics.
2625

‎theories/Classes/Functions.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
(* $Id: FSetAVL_prog.v 616 2007-08-08 12:28:10Z msozeau $ *)
1717

1818
Require Import Coq.Program.Program.
19-
Require Export Coq.Classes.Relations.
19+
Require Export Coq.Classes.RelationClasses.
2020
Require Export Coq.Classes.Morphisms.
2121

2222
Set Implicit Arguments.

‎theories/Classes/Morphisms.v

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515

1616
(* $Id: FSetAVL_prog.v 616 2007-08-08 12:28:10Z msozeau $ *)
1717

18-
Require Import Coq.Program.Program.
19-
Require Export Coq.Classes.Relations.
18+
Require Import Coq.Program.Basics.
19+
Require Import Coq.Program.Tactics.
20+
Require Export Coq.Classes.RelationClasses.
2021

2122
Set Implicit Arguments.
2223
Unset Strict Implicit.
@@ -53,6 +54,7 @@ Class Morphism A (R : relation A) (m : A) :=
5354
Definition respecting [ Equivalence A (R : relation A), Equivalence B (R' : relation B) ] : Type :=
5455
{ morph : A -> B | respectful R R' morph morph }.
5556

57+
5658
Ltac obligations_tactic ::= program_simpl.
5759

5860
Program Instance [ Equivalence A R, Equivalence B R' ] =>
@@ -180,8 +182,6 @@ Hint Resolve @subrelation_morphism 4 : typeclass_instances.
180182

181183
(* Hint Resolve @subrelation_morphism 4 : typeclass_instances. *)
182184

183-
184-
185185
(* Program Instance `A` (R : relation A) `B` (R' : relation B) *)
186186
(* [ ? Morphism (R ==> R' ==> iff) m ] => *)
187187
(* iff_impl_binary_morphism : ? Morphism (R ==> R' ==> impl) m. *)
@@ -381,7 +381,7 @@ Program Instance (A B : Type) (R : relation A) (R' : relation B)
381381
to get an [R y z] goal. *)
382382

383383
Program Instance [ ! Transitive A R ] =>
384-
trans_co_eq_inv_impl_morphism : Morphism (R ==> eq ==> inverse impl) R.
384+
trans_co_eq_inv_impl_morphism : Morphism (R ==> (@eq A) ==> inverse impl) R.
385385

386386
Next Obligation.
387387
Proof with auto.
@@ -390,7 +390,7 @@ Program Instance [ ! Transitive A R ] =>
390390
Qed.
391391

392392
Program Instance [ ! Transitive A R ] =>
393-
trans_contra_eq_impl_morphism : Morphism (R --> eq ==> impl) R.
393+
trans_contra_eq_impl_morphism : Morphism (R --> (@eq A) ==> impl) R.
394394

395395
Next Obligation.
396396
Proof with auto.

‎theories/Classes/Relations.v ‎theories/Classes/RelationClasses.v

+7-11
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717
(* $Id: FSetAVL_prog.v 616 2007-08-08 12:28:10Z msozeau $ *)
1818

1919
Require Export Coq.Classes.Init.
20-
Require Import Coq.Program.Program.
20+
Require Import Coq.Program.Basics.
21+
Require Import Coq.Program.Tactics.
22+
Require Export Coq.Relations.Relation_Definitions.
2123

2224
Set Implicit Arguments.
2325
Unset Strict Implicit.
2426

25-
(* Notation "'relation' A " := (A -> A -> Prop) (at level 0). *)
26-
27-
Definition relation A := A -> A -> Prop.
28-
2927
(** Default relation on a given support. *)
3028

3129
Class DefaultRelation A (R : relation A).
@@ -35,14 +33,12 @@ Class DefaultRelation A (R : relation A).
3533
Definition default_relation [ DefaultRelation A R ] : relation A := R.
3634

3735
(** A notation for applying the default relation to [x] and [y]. *)
38-
Notation " x ===def y " := (default_relation x y) (at level 70, no associativity).
3936

40-
Definition inverse A (R : relation A) : relation A := fun x y => R y x.
37+
Notation " x ===def y " := (default_relation x y) (at level 70, no associativity).
4138

42-
Lemma inverse_inverse : forall A (R : relation A), inverse (inverse R) = R.
43-
Proof. intros ; unfold inverse. apply (flip_flip R). Qed.
39+
Definition inverse {A} : relation A -> relation A := flip.
4440

45-
Definition complement A (R : relation A) : relation A := fun x y => R x y -> False.
41+
Definition complement {A} (R : relation A) : relation A := fun x y => R x y -> False.
4642

4743
(** These are convertible. *)
4844

@@ -355,7 +351,7 @@ Program Instance [ eq : Equivalence A eqA, Antisymmetric eq (R : relation A) ] =
355351

356352
(** Leibinz equality [eq] is an equivalence relation. *)
357353

358-
Program Instance eq_equivalence : Equivalence A eq.
354+
Program Instance eq_equivalence : Equivalence A (@eq A).
359355

360356
(** Logical equivalence [iff] is an equivalence relation. *)
361357

‎theories/Classes/SetoidClass.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Require Import Coq.Classes.Init.
2222
Set Implicit Arguments.
2323
Unset Strict Implicit.
2424

25-
Require Export Coq.Classes.Relations.
25+
Require Export Coq.Classes.RelationClasses.
2626
Require Export Coq.Classes.Morphisms.
2727
Require Export Coq.Classes.Functions.
2828

‎theories/Classes/SetoidTactics.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
(* $Id: FSetAVL_prog.v 616 2007-08-08 12:28:10Z msozeau $ *)
1717

18-
Require Export Coq.Classes.Relations.
18+
Require Export Coq.Classes.RelationClasses.
1919
Require Export Coq.Classes.Morphisms.
2020

2121
Set Implicit Arguments.

‎theories/FSets/FMapFacts.v

+7-7
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ rewrite (In_iff m Hk), in_find_iff, in_find_iff, Hm; intuition.
675675
Qed.
676676

677677
Add Morphism (@MapsTo elt)
678-
with signature E.eq ==> Logic.eq ==> Equal ==> iff as MapsTo_m.
678+
with signature E.eq ==> @Logic.eq _ ==> Equal ==> iff as MapsTo_m.
679679
Proof.
680680
unfold Equal; intros k k' Hk e m m' Hm.
681681
rewrite (MapsTo_iff m e Hk), find_mapsto_iff, find_mapsto_iff, Hm;
@@ -689,19 +689,19 @@ rewrite <-Hm in H0; eauto.
689689
rewrite Hm in H0; eauto.
690690
Qed.
691691

692-
Add Morphism (@is_empty elt) with signature Equal ==> Logic.eq as is_empty_m.
692+
Add Morphism (@is_empty elt) with signature Equal ==> @Logic.eq _ as is_empty_m.
693693
Proof.
694694
intros m m' Hm.
695695
rewrite eq_bool_alt, <-is_empty_iff, <-is_empty_iff, Hm; intuition.
696696
Qed.
697697

698-
Add Morphism (@mem elt) with signature E.eq ==> Equal ==> Logic.eq as mem_m.
698+
Add Morphism (@mem elt) with signature E.eq ==> Equal ==> @Logic.eq _ as mem_m.
699699
Proof.
700700
intros k k' Hk m m' Hm.
701701
rewrite eq_bool_alt, <- mem_in_iff, <-mem_in_iff, Hk, Hm; intuition.
702702
Qed.
703703

704-
Add Morphism (@find elt) with signature E.eq ==> Equal ==> Logic.eq as find_m.
704+
Add Morphism (@find elt) with signature E.eq ==> Equal ==> @Logic.eq _ as find_m.
705705
Proof.
706706
intros k k' Hk m m' Hm.
707707
generalize (find_mapsto_iff m k)(find_mapsto_iff m' k')
@@ -713,7 +713,7 @@ symmetry; rewrite <- H2, <-Hk, <-Hm, H1; auto.
713713
Qed.
714714

715715
Add Morphism (@add elt) with signature
716-
E.eq ==> Logic.eq ==> Equal ==> Equal as add_m.
716+
E.eq ==> @Logic.eq _ ==> Equal ==> Equal as add_m.
717717
Proof.
718718
intros k k' Hk e m m' Hm y.
719719
rewrite add_o, add_o; do 2 destruct eq_dec; auto.
@@ -730,7 +730,7 @@ elim n; rewrite <-Hk; auto.
730730
elim n; rewrite Hk; auto.
731731
Qed.
732732

733-
Add Morphism (@map elt elt') with signature Logic.eq ==> Equal ==> Equal as map_m.
733+
Add Morphism (@map elt elt') with signature @Logic.eq _ ==> Equal ==> Equal as map_m.
734734
Proof.
735735
intros f m m' Hm y.
736736
rewrite map_o, map_o, Hm; auto.
@@ -1104,7 +1104,7 @@ Module WProperties (E:DecidableType)(M:WSfun E).
11041104

11051105
End Elt.
11061106

1107-
Add Morphism (@cardinal elt) with signature Equal ==> Logic.eq as cardinal_m.
1107+
Add Morphism (@cardinal elt) with signature Equal ==> @Logic.eq _ as cardinal_m.
11081108
Proof. intros; apply Equal_cardinal; auto. Qed.
11091109

11101110
End WProperties.

‎theories/Numbers/Natural/Abstract/NBase.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ function (by recursion) that maps 0 to false and the successor to true *)
8181
Definition if_zero (A : Set) (a b : A) (n : N) : A :=
8282
recursion a (fun _ _ => b) n.
8383

84-
Add Morphism (if_zero A) with signature (eq ==> eq ==> Neq ==> eq) as if_zero_wd.
84+
Add Morphism (if_zero A) with signature ((@eq (A:Set)) ==> (@eq A) ==> Neq ==> (@eq A)) as if_zero_wd.
8585
Proof.
8686
intros; unfold if_zero. apply recursion_wd with (Aeq := (@eq A)).
8787
reflexivity. unfold fun2_eq; now intros. assumption.

0 commit comments

Comments
 (0)
This repository has been archived.