aboutsummaryrefslogtreecommitdiff
path: root/theories/Init
diff options
context:
space:
mode:
authorclrenard2001-09-18 13:09:47 +0000
committerclrenard2001-09-18 13:09:47 +0000
commitb915d23eefe20c6ca9d744807c9c18b91d9fc1df (patch)
tree5586f10324661711386ebaccda28dccb0f1e9514 /theories/Init
parent1f78733204d5a1232d06c103057dc65dcb14a7ea (diff)
Modification de l'emplacement des fichiers pour les setoides.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1982 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories/Init')
-rw-r--r--theories/Init/Setoid.v77
1 files changed, 77 insertions, 0 deletions
diff --git a/theories/Init/Setoid.v b/theories/Init/Setoid.v
new file mode 100644
index 0000000000..c09888ac3d
--- /dev/null
+++ b/theories/Init/Setoid.v
@@ -0,0 +1,77 @@
+(***********************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *)
+(* \VV/ *************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(***********************************************************************)
+
+(* $Id$: *)
+
+Require Logic.
+Require Export Setoid_replace.
+Require Inv.
+
+Section Setoid.
+
+Variable A : Type.
+Variable Aeq : A -> A -> Prop.
+
+Record Setoid_Theory : Prop :=
+{ Seq_refl : (x:A) (Aeq x x);
+ Seq_sym : (x,y:A) (Aeq x y) -> (Aeq y x);
+ Seq_trans : (x,y,z:A) (Aeq x y) -> (Aeq y z) -> (Aeq x z)
+}.
+
+End Setoid.
+
+Definition Prop_S : (Setoid_Theory Prop iff).
+Split; [Exact iff_refl | Exact iff_sym | Exact iff_trans].
+Save.
+
+Add Setoid Prop iff Prop_S.
+
+Hint prop_set : setoid := Resolve (Seq_refl Prop iff Prop_S).
+Hint prop_set : setoid := Resolve (Seq_sym Prop iff Prop_S).
+Hint prop_set : setoid := Resolve (Seq_trans Prop iff Prop_S).
+
+Add Morphism or : or_ext.
+Intros.
+Inversion H1.
+Left.
+Inversion H.
+Apply (H3 H2).
+
+Right.
+Inversion H0.
+Apply (H3 H2).
+Save.
+
+Add Morphism and : and_ext.
+Intros.
+Inversion H1.
+Split.
+Inversion H.
+Apply (H4 H2).
+
+Inversion H0.
+Apply (H4 H3).
+Save.
+
+Add Morphism not : not_ext.
+Red ; Intros.
+Apply H0.
+Inversion H.
+Apply (H3 H1).
+Save.
+
+Definition fleche [A,B:Prop] := A -> B.
+
+Add Morphism fleche : fleche_ext.
+Unfold fleche.
+Intros.
+Inversion H0.
+Inversion H.
+Apply (H3 (H1 (H6 H2))).
+Save.
+