diff options
author | Jason Gross <jgross@mit.edu> | 2017-05-15 22:37:02 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-05-15 22:37:02 -0400 |
commit | 9480dccb77f9e9312c9159a4c7fca8814bc73433 (patch) | |
tree | e97a61ecca3f2654a881575baf2a0c850790dc74 /src/Compilers | |
parent | d3054c8ba755bea855cbcecd12b1e54529d15693 (diff) |
Add Named.ExprInversion
Diffstat (limited to 'src/Compilers')
-rw-r--r-- | src/Compilers/Named/ExprInversion.v | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/Compilers/Named/ExprInversion.v b/src/Compilers/Named/ExprInversion.v new file mode 100644 index 000000000..783341f26 --- /dev/null +++ b/src/Compilers/Named/ExprInversion.v @@ -0,0 +1,21 @@ +Require Import Crypto.Compilers.TypeInversion. +Require Import Crypto.Compilers.Syntax. +Require Import Crypto.Compilers.Named.Syntax. + +Module Export Named. + Ltac invert_one_expr e := + preinvert_one_type e; + intros ? e; + destruct e; + try exact I. + + Ltac invert_expr_step := + match goal with + | [ e : Named.exprf _ _ _ (Tbase _) |- _ ] => invert_one_expr e + | [ e : Named.exprf _ _ _ (Prod _ _) |- _ ] => invert_one_expr e + | [ e : Named.exprf _ _ _ Unit |- _ ] => invert_one_expr e + | [ e : Named.expr _ _ _ (Arrow _ _) |- _ ] => invert_one_expr e + end. + + Ltac invert_expr := repeat invert_expr_step. +End Named. |