From acd8d172e3112372be930544af57c36bf085e6c2 Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Wed, 22 Jun 2016 13:27:44 -0700 Subject: Fix for broken abstract It breaks when used in [Instance ... := _.] --- src/Util/Decidable.v | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/Util/Decidable.v') diff --git a/src/Util/Decidable.v b/src/Util/Decidable.v index f8cf03d6e..726b52b6b 100644 --- a/src/Util/Decidable.v +++ b/src/Util/Decidable.v @@ -34,22 +34,22 @@ Local Hint Extern 0 => solve [ solve_decidable_transparent ] : typeclass_instanc Global Instance dec_True : Decidable True := left I. Global Instance dec_False : Decidable False := right (fun x => x). -Global Instance dec_or {A B} `{Decidable A, Decidable B} : Decidable (A \/ B) := _. -Global Instance dec_and {A B} `{Decidable A, Decidable B} : Decidable (A /\ B) := _. -Global Instance dec_impl {A B} `{Decidable (B \/ ~A)} : Decidable (A -> B) | 3 := _. -Global Instance dec_impl_simple {A B} `{Decidable A, Decidable B} : Decidable (A -> B) := _. -Global Instance dec_iff {A B} `{Decidable A, Decidable B} : Decidable (A <-> B) := _. +Global Instance dec_or {A B} `{Decidable A, Decidable B} : Decidable (A \/ B). exact _. Defined. +Global Instance dec_and {A B} `{Decidable A, Decidable B} : Decidable (A /\ B). exact _. Defined. +Global Instance dec_impl {A B} `{Decidable (B \/ ~A)} : Decidable (A -> B) | 3. exact _. Defined. +Global Instance dec_impl_simple {A B} `{Decidable A, Decidable B} : Decidable (A -> B). exact _. Defined. +Global Instance dec_iff {A B} `{Decidable A, Decidable B} : Decidable (A <-> B). exact _. Defined. Lemma dec_not {A} `{Decidable A} : Decidable (~A). Proof. solve_decidable_transparent. Defined. (** Disallow infinite loops of dec_not *) Hint Extern 0 (Decidable (~?A)) => apply (@dec_not A) : typeclass_instances. -Global Instance dec_eq_unit : DecidableRel (@eq unit) := _. -Global Instance dec_eq_bool : DecidableRel (@eq bool) := _. -Global Instance dec_eq_Empty_set : DecidableRel (@eq Empty_set) := _. -Global Instance dec_eq_nat : DecidableRel (@eq nat) := _. -Global Instance dec_eq_prod {A B} `{DecidableRel (@eq A), DecidableRel (@eq B)} : DecidableRel (@eq (A * B)) := _. -Global Instance dec_eq_sum {A B} `{DecidableRel (@eq A), DecidableRel (@eq B)} : DecidableRel (@eq (A + B)) := _. +Global Instance dec_eq_unit : DecidableRel (@eq unit). exact _. Defined. +Global Instance dec_eq_bool : DecidableRel (@eq bool). exact _. Defined. +Global Instance dec_eq_Empty_set : DecidableRel (@eq Empty_set). exact _. Defined. +Global Instance dec_eq_nat : DecidableRel (@eq nat). exact _. Defined. +Global Instance dec_eq_prod {A B} `{DecidableRel (@eq A), DecidableRel (@eq B)} : DecidableRel (@eq (A * B)). exact _. Defined. +Global Instance dec_eq_sum {A B} `{DecidableRel (@eq A), DecidableRel (@eq B)} : DecidableRel (@eq (A + B)). exact _. Defined. Lemma Decidable_respects_iff A B (H : A <-> B) : (Decidable A -> Decidable B) * (Decidable B -> Decidable A). Proof. solve_decidable_transparent. Defined. -- cgit v1.2.3