aboutsummaryrefslogtreecommitdiff
path: root/src/Compilers/Z/ArithmeticSimplifierWf.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-06-12 18:18:48 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-06-12 18:18:48 -0400
commit5a70c4fc317cad367b6936e026031f749b2756ef (patch)
treeab67939067bd790eeca27a489977305a137e9cad /src/Compilers/Z/ArithmeticSimplifierWf.v
parent80297151f76943b5fe3ada57f1c1b69871ead76c (diff)
Handle IdWithAlt in the simplifier
It now knows how to deal with _ + 0 involving words, and also eliminates IdWithAlt when both the first argument and the output are the same size word.
Diffstat (limited to 'src/Compilers/Z/ArithmeticSimplifierWf.v')
-rw-r--r--src/Compilers/Z/ArithmeticSimplifierWf.v3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Compilers/Z/ArithmeticSimplifierWf.v b/src/Compilers/Z/ArithmeticSimplifierWf.v
index 56dda81ab..176301e06 100644
--- a/src/Compilers/Z/ArithmeticSimplifierWf.v
+++ b/src/Compilers/Z/ArithmeticSimplifierWf.v
@@ -241,6 +241,7 @@ Proof.
| _ => pose_wff_prod3
| _ => progress destruct_head'_and
| _ => progress subst
+ | _ => inversion_base_type_constr_step
| [ H1 : _ = Some _, H2 : _ = None, Hwf : wff _ _ _ |- _ ]
=> pose proof (interp_as_expr_or_const_Some_None Hwf H1 H2); clear H1 H2
| [ H1 : _ = None, H2 : _ = Some _, Hwf : wff _ _ _ |- _ ]
@@ -251,6 +252,8 @@ Proof.
| [ |- wff _ (LetIn _ _) (Pair _ _) ] => exfalso
| [ |- wff _ _ _ ] => constructor; intros
| [ |- List.In _ _ ] => progress (simpl; auto)
+ | _ => rewrite FixedWordSizesEquality.ZToWord_wordToZ
+ | _ => rewrite FixedWordSizesEquality.ZToWord_wordToZ_ZToWord by reflexivity
| _ => break_innermost_match_step; simpl in *
end.
Qed.