Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************) Require Export Coq.Classes.SetoidTactics. Export Morphisms.ProperNotations.
For backward compatibility
Definition Setoid_Theory := @Equivalence. Definition Build_Setoid_Theory := @Build_Equivalence. Register Build_Setoid_Theory as plugins.setoid_ring.Build_Setoid_Theory.A:TypeAeq:relation As:Setoid_Theory A Aeqforall x : A, Aeq x xA:TypeAeq:relation As:Setoid_Theory A Aeqforall x : A, Aeq x xintros ; reflexivity. Defined.A:TypeAeq:relation As:Equivalence Aeqforall x : A, Aeq x xA:TypeAeq:relation As:Setoid_Theory A Aeqforall x y : A, Aeq x y -> Aeq y xA:TypeAeq:relation As:Setoid_Theory A Aeqforall x y : A, Aeq x y -> Aeq y xintros ; symmetry ; assumption. Defined.A:TypeAeq:relation As:Equivalence Aeqforall x y : A, Aeq x y -> Aeq y xA:TypeAeq:relation As:Setoid_Theory A Aeqforall x y z : A, Aeq x y -> Aeq y z -> Aeq x zA:TypeAeq:relation As:Setoid_Theory A Aeqforall x y z : A, Aeq x y -> Aeq y z -> Aeq x zintros ; transitivity y ; assumption. Defined.A:TypeAeq:relation As:Equivalence Aeqforall x y z : A, Aeq x y -> Aeq y z -> Aeq x z
Some tactics for manipulating Setoid Theory not officially
declared as Setoid.
Ltac trans_st x := idtac "trans_st on Setoid_Theory is OBSOLETE"; idtac "use transitivity on Equivalence instead"; match goal with | H : Setoid_Theory _ ?eqA |- ?eqA _ _ => apply (Seq_trans _ _ H) with x; auto end. Ltac sym_st := idtac "sym_st on Setoid_Theory is OBSOLETE"; idtac "use symmetry on Equivalence instead"; match goal with | H : Setoid_Theory _ ?eqA |- ?eqA _ _ => apply (Seq_sym _ _ H); auto end. Ltac refl_st := idtac "refl_st on Setoid_Theory is OBSOLETE"; idtac "use reflexivity on Equivalence instead"; match goal with | H : Setoid_Theory _ ?eqA |- ?eqA _ _ => apply (Seq_refl _ _ H); auto end.forall A : Set, Setoid_Theory A eqconstructor; congruence. Qed.forall A : Set, Setoid_Theory A eq