diff options
author | Jason Gross <jgross@mit.edu> | 2016-11-06 16:33:16 -0500 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2016-11-06 16:33:16 -0500 |
commit | 58f22878e0c1f455c3cfd419ef3251cc31785c6e (patch) | |
tree | 2a074ec108008930e3526f3d2dcc0afa1ffa5529 /src/Util/Tuple.v | |
parent | 54bb7895d16c719400c7730a3049f2295aec9d91 (diff) |
Add Tuple lift push
Diffstat (limited to 'src/Util/Tuple.v')
-rw-r--r-- | src/Util/Tuple.v | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Util/Tuple.v b/src/Util/Tuple.v index 3dfa2c13e..7af4dfe96 100644 --- a/src/Util/Tuple.v +++ b/src/Util/Tuple.v @@ -183,6 +183,14 @@ Definition lift_option {n A} (xs : tuple (option A) n) : option (tuple A n) Definition push_option {n A} (xs : option (tuple A n)) : tuple (option A) n := push_monad option option_bind (@Some) xs. +Lemma lift_push_option {n A} (xs : option (tuple A (S n))) : lift_option (push_option xs) = xs. +Proof. + simpl in *. + induction n; [ reflexivity | ]. + simpl in *; rewrite IHn; clear IHn. + destruct xs as [ [? ?] | ]; reflexivity. +Qed. + Fixpoint fieldwise' {A B} (n:nat) (R:A->B->Prop) (a:tuple' A n) (b:tuple' B n) {struct n} : Prop. destruct n; simpl @tuple' in *. { exact (R a b). } |