diff options
author | Jason Gross <jagro@google.com> | 2018-08-10 18:29:25 -0400 |
---|---|---|
committer | Jason Gross <jagro@google.com> | 2018-08-10 18:29:25 -0400 |
commit | ff09c2ee30773578ca9e81d0b7ded9d18a666192 (patch) | |
tree | 9fc423a228e09801f4cdce3f7ec333b334d5e0a3 /src/Util/ListUtil.v | |
parent | 3e4207e23e26d30a61e95aca4172788f2279db6a (diff) |
Add ListUtil.map_nth_default_seq
Diffstat (limited to 'src/Util/ListUtil.v')
-rw-r--r-- | src/Util/ListUtil.v | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Util/ListUtil.v b/src/Util/ListUtil.v index 797796322..3d43bf509 100644 --- a/src/Util/ListUtil.v +++ b/src/Util/ListUtil.v @@ -2122,3 +2122,19 @@ Proof. rewrite combine_app_samelength, IHls1 by (rewrite ?rev_length; congruence); cbn [combine]. reflexivity. Qed. + +Lemma map_nth_default_seq {A} (d:A) n ls + : length ls = n -> List.map (List.nth_default d ls) (List.seq 0 n) = ls. +Proof. + intro; subst. + rewrite <- (List.rev_involutive ls); generalize (List.rev ls); clear ls; intro ls. + rewrite List.rev_length. + induction ls; cbn [length List.rev]; [ reflexivity | ]. + rewrite seq_snoc, List.map_app. + apply f_equal2; [ | cbn; rewrite nth_default_app, List.rev_length, Nat.sub_diag ]; + [ etransitivity; [ | eassumption ]; apply List.map_ext_in; intro; rewrite Lists.List.in_seq; + rewrite nth_default_app, List.rev_length; intros + | ]. + all: edestruct lt_dec; try (exfalso; lia). + all: reflexivity. +Qed. |