diff options
author | Jason Gross <jgross@mit.edu> | 2017-10-23 13:14:47 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-10-23 13:14:47 -0400 |
commit | 39aea54d375bb13f388c5cb8302748f85abe11a8 (patch) | |
tree | 36ccd4f2da1095fb3a5a0cc1cef0d8da2e1d7abf /src/Compilers/ZExtended | |
parent | 7676ac43b762eab1606e6dfd0693f16239489263 (diff) |
Add InlineConstAndOpByRewrite
Diffstat (limited to 'src/Compilers/ZExtended')
-rw-r--r-- | src/Compilers/ZExtended/InlineConstAndOpByRewrite.v | 12 | ||||
-rw-r--r-- | src/Compilers/ZExtended/InlineConstAndOpByRewriteInterp.v | 15 | ||||
-rw-r--r-- | src/Compilers/ZExtended/InlineConstAndOpByRewriteWf.v | 13 |
3 files changed, 40 insertions, 0 deletions
diff --git a/src/Compilers/ZExtended/InlineConstAndOpByRewrite.v b/src/Compilers/ZExtended/InlineConstAndOpByRewrite.v new file mode 100644 index 000000000..418a0e0f3 --- /dev/null +++ b/src/Compilers/ZExtended/InlineConstAndOpByRewrite.v @@ -0,0 +1,12 @@ +Require Import Crypto.Compilers.Syntax. +Require Import Crypto.Compilers.InlineConstAndOpByRewrite. +Require Import Crypto.Compilers.ZExtended.Syntax. + +Module Export Rewrite. + Definition inline_const_and_opf {var} {t} (e : exprf _ _ t) : @exprf base_type op var t + := @inline_const_and_opf base_type op interp_base_type (@interp_op) var (@Const) t e. + Definition inline_const_and_op {var} {t} (e : expr _ _ t) : @expr base_type op var t + := @inline_const_and_op base_type op interp_base_type (@interp_op) var (@Const) t e. + Definition InlineConstAndOp {t} (e : Expr t) : Expr t + := @InlineConstAndOp base_type op interp_base_type (@interp_op) (@Const) t e. +End Rewrite. diff --git a/src/Compilers/ZExtended/InlineConstAndOpByRewriteInterp.v b/src/Compilers/ZExtended/InlineConstAndOpByRewriteInterp.v new file mode 100644 index 000000000..64d5263a7 --- /dev/null +++ b/src/Compilers/ZExtended/InlineConstAndOpByRewriteInterp.v @@ -0,0 +1,15 @@ +Require Import Crypto.Compilers.Syntax. +Require Import Crypto.Compilers.InlineConstAndOpByRewriteInterp. +Require Import Crypto.Compilers.ZExtended.Syntax. +Require Import Crypto.Compilers.ZExtended.InlineConstAndOpByRewrite. + +Module Export Rewrite. + Lemma InterpInlineConstAndOp {t} (e : Expr t) + : forall x, Interp (InlineConstAndOp e) x = Interp e x. + Proof. + refine (@InterpInlineConstAndOp _ _ _ _ _ t e _). + clear; abstract (intros []; intros; reflexivity). + Defined. + + Hint Rewrite @InterpInlineConstAndOp : reflective_interp. +End Rewrite. diff --git a/src/Compilers/ZExtended/InlineConstAndOpByRewriteWf.v b/src/Compilers/ZExtended/InlineConstAndOpByRewriteWf.v new file mode 100644 index 000000000..281bee6ab --- /dev/null +++ b/src/Compilers/ZExtended/InlineConstAndOpByRewriteWf.v @@ -0,0 +1,13 @@ +Require Import Crypto.Compilers.Syntax. +Require Import Crypto.Compilers.Wf. +Require Import Crypto.Compilers.InlineConstAndOpByRewriteWf. +Require Import Crypto.Compilers.ZExtended.Syntax. +Require Import Crypto.Compilers.ZExtended.InlineConstAndOpByRewrite. + +Module Export Rewrite. + Definition Wf_InlineConstAndOp {t} (e : Expr t) (Hwf : Wf e) + : Wf (InlineConstAndOp e) + := @Wf_InlineConstAndOp _ _ _ _ _ t e Hwf. + + Hint Resolve Wf_InlineConstAndOp : wf. +End Rewrite. |