aboutsummaryrefslogtreecommitdiff
path: root/src/Reflection/EtaInterp.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-04-02 12:56:36 -0400
committerGravatar Jason Gross <jgross@mit.edu>2017-04-02 12:56:36 -0400
commitfe0c2f54075c9f5c6805ee165dbf9df8b8058693 (patch)
treeede1b3280dfe82bb0193f7457b8e0307d19a3c2e /src/Reflection/EtaInterp.v
parentc4ce787fddb5d8eefd96cd4706aa1ee7a8ea8843 (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.v9
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.