From 879b392daebf8b58f708ebadc43bda73a4e57d28 Mon Sep 17 00:00:00 2001 From: clrenard Date: Tue, 10 Jul 2001 12:13:24 +0000 Subject: Ajout du .v pour la tactique Setoid_replace git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1842 85f007b7-540e-0410-9357-904b9bb8a0f7 --- theories/Setoid/Setoid_replace.v | 75 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 theories/Setoid/Setoid_replace.v diff --git a/theories/Setoid/Setoid_replace.v b/theories/Setoid/Setoid_replace.v new file mode 100644 index 0000000000..ba4e829f18 --- /dev/null +++ b/theories/Setoid/Setoid_replace.v @@ -0,0 +1,75 @@ +(***********************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* [(Setoid_replace $c1 $c2)] +. + +Grammar tactic simple_tactic : ast := + setoid_rewriteLR [ "Setoid_rewrite" "->" constrarg($c) ] -> [(Setoid_rewriteLR $c)] +| setoid_rewriteRL [ "Setoid_rewrite" "<-" constrarg($c) ] -> [(Setoid_rewriteRL $c)] +| setoid_rewrite [ "Setoid_rewrite" constrarg($c) ] -> [(Setoid_rewriteLR $c)] +. + +Syntax tactic level 0 : + setoid_replace [<<(Setoid_replace $c1 $c2)>>] -> [["Setoid_replace " $c1 [1 1] "with " $c2]] + | setoid_rewritelr [<<(Setoid_rewriteLR $c)>>] -> ["Setoid_rewrite " $c] + | setoid_rewriterl [<<(Setoid_rewriteRL $c)>>] -> ["Setoid_rewrite <- " $c] +. + +Grammar vernac vernac : ast := + add_setoid [ "Add" "Setoid" constrarg($a) constrarg($aeq) constrarg($t) "." ] + -> [(AddSetoid $a $aeq $t)] +| new_morphism [ "Add" "Morphism" constrarg($m) ":" identarg($s) "." ] -> [(NamedNewMorphism $s $m)] +. + +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 ([x,y:Prop] x<->y)). +Split; Tauto. +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. +Tauto. +Save. + +Add Morphism and : and_ext. +Tauto. +Save. + +Add Morphism not : not_ext. +Tauto. +Save. + +Definition fleche [A,B:Prop] := A -> B. + +Add Morphism fleche : fleche_ext. +Tauto. +Save. + -- cgit v1.2.3