diff options
author | Jason Gross <jgross@mit.edu> | 2018-10-23 21:59:09 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2018-10-23 21:59:09 -0400 |
commit | c9f4cf296671baf01f3f08d2e027b415ef014059 (patch) | |
tree | cdd4d413c4bd60c571db0167b9c7050b5e618968 | |
parent | 4ad320a862e34e6a831e0f05c148c6abb54889d4 (diff) |
Add some equality lemmas about Positive{Map,Set}
-rw-r--r-- | _CoqProject | 2 | ||||
-rw-r--r-- | src/Util/FMapPositive/Equality.v | 28 | ||||
-rw-r--r-- | src/Util/MSetPositive/Equality.v | 15 |
3 files changed, 45 insertions, 0 deletions
diff --git a/_CoqProject b/_CoqProject index 0b4816189..eab813601 100644 --- a/_CoqProject +++ b/_CoqProject @@ -6541,12 +6541,14 @@ src/Util/Bool/IsTrue.v src/Util/Bool/Reflect.v src/Util/Decidable/Bool2Prop.v src/Util/Decidable/Decidable2Bool.v +src/Util/FMapPositive/Equality.v src/Util/ListUtil/FoldBool.v src/Util/ListUtil/Forall.v src/Util/ListUtil/ForallIn.v src/Util/ListUtil/SetoidList.v src/Util/Logic/ImplAnd.v src/Util/Logic/ProdForall.v +src/Util/MSetPositive/Equality.v src/Util/NUtil/WithoutReferenceToZ.v src/Util/SideConditions/AdmitPackage.v src/Util/SideConditions/Autosolve.v diff --git a/src/Util/FMapPositive/Equality.v b/src/Util/FMapPositive/Equality.v new file mode 100644 index 000000000..aacd06a58 --- /dev/null +++ b/src/Util/FMapPositive/Equality.v @@ -0,0 +1,28 @@ +Require Import Coq.FSets.FMapPositive. +Require Import Crypto.Util.Bool.Equality. +Require Import Crypto.Util.Decidable. + +Module PositiveMap. + Scheme Induction for PositiveMap.tree Sort Type. + Scheme Induction for PositiveMap.tree Sort Set. + Scheme Induction for PositiveMap.tree Sort Prop. + Scheme Equality for PositiveMap.tree. + + Notation t_beq := tree_beq. + Notation t_eq_dec := tree_eq_dec. + Notation internal_t_dec_bl := internal_tree_dec_bl. + Notation internal_t_dec_lb := internal_tree_dec_lb. + + Lemma tree_eq_dec' {A} (A_dec : forall x y : A, {x = y} + {x <> y}) + : forall x y : PositiveMap.tree A, {x = y} + {x <> y}. + Proof. + intros; do 2 decide equality. + Qed. + + Global Instance tree_dec_eq {A} {A_dec : DecidableRel (@eq A)} + : DecidableRel (@eq (PositiveMap.tree A)) + := @tree_eq_dec' A A_dec. + Global Instance t_dec_eq {A} {A_dec : DecidableRel (@eq A)} + : DecidableRel (@eq (PositiveMap.t A)) + := @tree_eq_dec' A A_dec. +End PositiveMap. diff --git a/src/Util/MSetPositive/Equality.v b/src/Util/MSetPositive/Equality.v new file mode 100644 index 000000000..4a5872a5e --- /dev/null +++ b/src/Util/MSetPositive/Equality.v @@ -0,0 +1,15 @@ +Require Import Coq.MSets.MSetPositive. +Require Import Crypto.Util.Bool.Equality. +Require Import Crypto.Util.Decidable. + +Module PositiveSet. + Scheme Equality for PositiveSet.tree. + + Notation t_beq := tree_beq. + Notation t_eq_dec := tree_eq_dec. + Notation internal_t_dec_bl := internal_tree_dec_bl. + Notation internal_t_dec_lb := internal_tree_dec_lb. + + Global Instance tree_dec_eq : DecidableRel (@eq PositiveSet.tree) := tree_eq_dec. + Global Instance t_dec_eq : DecidableRel (@eq PositiveSet.t) := t_eq_dec. +End PositiveSet. |