diff options
author | Jason Gross <jgross@mit.edu> | 2017-04-02 12:56:36 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-04-02 12:56:36 -0400 |
commit | fe0c2f54075c9f5c6805ee165dbf9df8b8058693 (patch) | |
tree | ede1b3280dfe82bb0193f7457b8e0307d19a3c2e /src/Reflection/EtaInterp.v | |
parent | c4ce787fddb5d8eefd96cd4706aa1ee7a8ea8843 (diff) |
Add InterpEta
It's a version of [Interp] that works even when there are destructuring lets.
Diffstat (limited to 'src/Reflection/EtaInterp.v')
-rw-r--r-- | src/Reflection/EtaInterp.v | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Reflection/EtaInterp.v b/src/Reflection/EtaInterp.v index 4dd5b00bb..4ab42a63f 100644 --- a/src/Reflection/EtaInterp.v +++ b/src/Reflection/EtaInterp.v @@ -93,6 +93,13 @@ Section language. Lemma InterpExprEta'_arrow {s d e} : forall x, Interp (t:=Arrow s d) (@interp_op) (ExprEta' (t:=Arrow s d) e) x = Interp (@interp_op) e x. Proof. exact (@InterpExprEta' (Arrow s d) e). Qed. + + Lemma eq_interp_eta {t e} + : forall x, interp_eta interp_op (t:=t) e x = interp interp_op e x. + Proof. apply eq_interp_flat_type_eta. Qed. + Lemma eq_InterpEta {t e} + : forall x, InterpEta interp_op (t:=t) e x = Interp interp_op e x. + Proof. apply eq_interp_eta. Qed. End language. -Hint Rewrite @eq_interp_flat_type_eta @eq_interp_flat_type_eta' @interpf_exprf_eta @interpf_exprf_eta' @interp_expr_eta @interp_expr_eta' @InterpExprEta @InterpExprEta' @InterpExprEta_arrow @InterpExprEta'_arrow : reflective_interp. +Hint Rewrite @eq_interp_flat_type_eta @eq_interp_flat_type_eta' @interpf_exprf_eta @interpf_exprf_eta' @interp_expr_eta @interp_expr_eta' @InterpExprEta @InterpExprEta' @InterpExprEta_arrow @InterpExprEta'_arrow @eq_interp_eta @eq_InterpEta : reflective_interp. |