From 69d9f58447e972b78320a61851ffa7c9e8ef1d57 Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Sat, 8 Apr 2017 13:28:12 -0400 Subject: Use Z.max 0, not an if statement Leads to fewer match branches --- src/Util/FixedWordSizesEquality.v | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/Util/FixedWordSizesEquality.v') diff --git a/src/Util/FixedWordSizesEquality.v b/src/Util/FixedWordSizesEquality.v index afd590fd4..430684070 100644 --- a/src/Util/FixedWordSizesEquality.v +++ b/src/Util/FixedWordSizesEquality.v @@ -147,13 +147,11 @@ Proof. { apply wordToZ_gen_ZToWord_gen_0. } Qed. -Lemma wordToZ_gen_ZToWord_gen_mod_full : forall {sz} w, wordToZ_gen (@ZToWord_gen sz w) = if (0 <=? w)%Z - then (w mod (2^Z.of_nat sz))%Z - else 0%Z. +Lemma wordToZ_gen_ZToWord_gen_mod_full : forall {sz} w, wordToZ_gen (@ZToWord_gen sz w) = (Z.max 0 w mod (2^Z.of_nat sz))%Z. Proof. - intros; break_match; Z.ltb_to_lt. - { apply wordToZ_gen_ZToWord_gen_mod; assumption. } + intros; apply Z.max_case_strong; intro. { apply wordToZ_gen_ZToWord_gen_neg; omega. } + { apply wordToZ_gen_ZToWord_gen_mod; assumption. } Qed. Lemma ZToWord_gen_wordToZ_gen_ZToWord_gen : forall {sz1 sz2} v, @@ -253,13 +251,10 @@ Proof. intros sz w; break_match; apply wordToZ_gen_ZToWord_gen_neg. Qed. -Lemma wordToZ_ZToWord_mod_full : forall {sz} w, wordToZ (@ZToWord sz w) = if (0 <=? w)%Z - then (w mod (2^Z.of_nat (2^sz)))%Z - else 0%Z. +Lemma wordToZ_ZToWord_mod_full : forall {sz} w, wordToZ (@ZToWord sz w) = ((Z.max 0 w) mod (2^Z.of_nat (2^sz)))%Z. Proof. unfold wordToZ, ZToWord, word_case_dep. - intros sz w; set (k := if (_ <=? _)%Z then _ else _); - break_match; apply wordToZ_gen_ZToWord_gen_mod_full. + intros sz w; break_match; apply wordToZ_gen_ZToWord_gen_mod_full. Qed. Local Ltac wordToZ_word_case_dep_t := -- cgit v1.2.3