diff options
author | Jason Gross <jgross@mit.edu> | 2017-04-15 00:25:48 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-04-15 00:25:48 -0400 |
commit | 13692faa96e0bda2eced4e491a71e88b3ce3dc43 (patch) | |
tree | 80160d12786d5013829597af1dfb97e8d6d04462 /src/Compilers | |
parent | 557e24e4a2a097e69eba61696758aa3ee25ebbb7 (diff) |
More robust pipeline
Diffstat (limited to 'src/Compilers')
-rw-r--r-- | src/Compilers/Z/Bounds/Pipeline/Definition.v | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/Compilers/Z/Bounds/Pipeline/Definition.v b/src/Compilers/Z/Bounds/Pipeline/Definition.v index 1592975b8..53296cc13 100644 --- a/src/Compilers/Z/Bounds/Pipeline/Definition.v +++ b/src/Compilers/Z/Bounds/Pipeline/Definition.v @@ -61,6 +61,7 @@ Require Import Crypto.Compilers.Z.InlineWf. Require Import Crypto.Compilers.Linearize. Require Import Crypto.Compilers.LinearizeInterp. Require Import Crypto.Compilers.LinearizeWf. +Require Import Crypto.Compilers.Z.ArithmeticSimplifierWf. Require Import Crypto.Compilers.Z.Bounds.MapCastByDeBruijn. Require Import Crypto.Compilers.Z.Bounds.MapCastByDeBruijnInterp. Require Import Crypto.Compilers.Z.Bounds.MapCastByDeBruijnWf. @@ -115,8 +116,7 @@ Section with_round_up_list. (v : interp_flat_type Syntax.interp_base_type (domain t)) (v' : interp_flat_type Syntax.interp_base_type (pick_type input_bounds)) (Hv : Bounds.is_bounded_by input_bounds v /\ cast_back_flat_const v' = v) - : Interp (@Bounds.interp_op) e input_bounds = b - /\ Bounds.is_bounded_by b (Interp interp_op e v) + : Bounds.is_bounded_by b (Interp interp_op e v) /\ cast_back_flat_const (Interp interp_op e' v') = Interp interp_op e v. Proof. (** These first two lines probably shouldn't change much *) @@ -125,13 +125,12 @@ Section with_round_up_list. || inversion_sigma || eliminate_hprop_eq || inversion_prod || simpl in * || subst). (** Now handle all the transformations that come after the word-size selection *) - rewrite InterpExprEta_arrow, InterpInlineConst - by eauto with wf. + autorewrite with reflective_interp. + (** Now handle word-size selection *) + eapply MapCastCorrect_eq; [ | eassumption | eassumption | .. ]; + [ auto with wf | reflexivity | ]. (** Now handle all the transformations that come before the word-size selection *) - rewrite <- !InterpANormal with (e:=e), <- !(@InterpInlineConst _ _ _ (ANormal e)) - by eauto with wf. - (** Now handle word-size selection itself *) - eapply MapCastCorrect; eauto with wf. + repeat autorewrite with reflective_interp; reflexivity. Qed. End with_round_up_list. |