Difference list #
This file provides a few results about DList
.
A difference list is a function that, given a list, returns the original content of the
difference list prepended to the given list. It is useful to represent elements of a given type
as a₁ + ... + aₙ
where + : α → α → α
is any operation, without actually computing.
This structure supports O(1)
append
and push
operations on lists, making it
useful for append-heavy uses such as logging and pretty printing.
theorem
Batteries.DList.toList_ofList
{α : Type u_1}
(l : List α)
:
(Batteries.DList.ofList l).toList = l
theorem
Batteries.DList.ofList_toList
{α : Type u_1}
(l : Batteries.DList α)
:
Batteries.DList.ofList l.toList = l
theorem
Batteries.DList.toList_singleton
{α : Type u_1}
(x : α)
:
(Batteries.DList.singleton x).toList = [x]
theorem
Batteries.DList.toList_append
{α : Type u_1}
(l₁ : Batteries.DList α)
(l₂ : Batteries.DList α)
:
theorem
Batteries.DList.toList_cons
{α : Type u_1}
(x : α)
(l : Batteries.DList α)
:
(Batteries.DList.cons x l).toList = x :: l.toList
@[simp]
theorem
Batteries.DList.singleton_eq_ofThunk
{α : Type u_1}
{a : α}
:
Batteries.DList.singleton a = Batteries.DList.ofThunk { fn := fun (x : Unit) => [a] }
@[simp]
theorem
Batteries.DList.ofThunk_coe
{α : Type u_1}
{l : List α}
:
Batteries.DList.ofThunk { fn := fun (x : Unit) => l } = Batteries.DList.ofList l
@[deprecated Batteries.DList.singleton_eq_ofThunk]
theorem
Batteries.DList.DList_singleton
{α : Type u_1}
{a : α}
:
Batteries.DList.singleton a = Batteries.DList.ofThunk { fn := fun (x : Unit) => [a] }
Alias of Batteries.DList.singleton_eq_ofThunk
.
@[deprecated Batteries.DList.ofThunk_coe]
theorem
Batteries.DList.DList_lazy
{α : Type u_1}
{l : List α}
:
Batteries.DList.ofThunk { fn := fun (x : Unit) => l } = Batteries.DList.ofList l
Alias of Batteries.DList.ofThunk_coe
.