aboutsummaryrefslogtreecommitdiff
path: root/src/Compilers
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-04-15 00:25:48 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-04-15 00:25:48 -0400
commit13692faa96e0bda2eced4e491a71e88b3ce3dc43 (patch)
tree80160d12786d5013829597af1dfb97e8d6d04462 /src/Compilers
parent557e24e4a2a097e69eba61696758aa3ee25ebbb7 (diff)
More robust pipeline
Diffstat (limited to 'src/Compilers')
-rw-r--r--src/Compilers/Z/Bounds/Pipeline/Definition.v15
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.