Splitting a list to chunks of specified lengths #
This file defines splitting a list to chunks of given lengths, and some proofs about that.
Split a list to chunks of given lengths.
Instances For
@[simp]
theorem
List.length_splitLengths
{α : Type u_1}
(l : List α)
(sz : List ā)
:
(sz.splitLengths l).length = sz.length
@[simp]
@[simp]
theorem
List.splitLengths_cons
{α : Type u_1}
(l : List α)
(sz : List ā)
(n : ā)
:
(n :: sz).splitLengths l = take n l :: sz.splitLengths (drop n l)
theorem
List.take_splitLength
{α : Type u_1}
(l : List α)
(sz : List ā)
(i : ā)
:
take i (sz.splitLengths l) = (take i sz).splitLengths l
theorem
List.length_splitLengths_getElem_le
{α : Type u_1}
(l : List α)
(sz : List ā)
{i : ā}
{hi : i < (sz.splitLengths l).length}
:
theorem
List.flatten_splitLengths
{α : Type u_1}
(l : List α)
(sz : List ā)
(h : l.length ⤠sz.sum)
:
(sz.splitLengths l).flatten = l
theorem
List.map_splitLengths_length
{α : Type u_1}
(l : List α)
(sz : List ā)
(h : sz.sum ⤠l.length)
:
map length (sz.splitLengths l) = sz
theorem
List.length_splitLengths_getElem_eq
{α : Type u_1}
(l : List α)
(sz : List ā)
{i : ā}
(hi : i < sz.length)
(h : (take (i + 1) sz).sum ⤠l.length)
:
(sz.splitLengths l)[i].length = sz[i]
theorem
List.splitLengths_length_getElem
{α : Type u_2}
(l : List α)
(sz : List ā)
(h : sz.sum ⤠l.length)
(i : ā)
(hi : i < (sz.splitLengths l).length)
:
(sz.splitLengths l)[i].length = sz[i]
theorem
List.length_mem_splitLengths
{α : Type u_2}
(l : List α)
(sz : List ā)
(b : ā)
(h : ā n ā sz, n ⤠b)
(lā : List α)
:
lā ā sz.splitLengths l ā lā.length ⤠b