Basic properties of lists #
There is only one list of an empty type
mem #
length #
Alias of the reverse direction of List.length_pos_iff.
set-theoretic notation of lists #
bounded quantifiers over lists #
list subset #
append #
replicate #
pure #
bind #
concat #
reverse #
getLast #
getLast? #
head(!?) and tail #
sublists #
If the first element of two lists are different, then a sublist relation can be reduced.
indexOf #
nth element #
A version of getElem_map that can be used for rewriting.
If two lists l₁ and l₂ are the same length and l₁[n]! = l₂[n]! for all n,
then the lists are equal.
map #
eq_nil_or_concat in simp normal form
foldl, foldr #
Consider two lists l₁ and l₂ with designated elements a₁ and a₂ somewhere in them:
l₁ = x₁ ++ [a₁] ++ z₁ and l₂ = x₂ ++ [a₂] ++ z₂.
Assume the designated element a₂ is present in neither x₁ nor z₁.
We conclude that the lists are equal (l₁ = l₂) if and only if their respective parts are equal
(x₁ = x₂ ∧ a₁ = a₂ ∧ z₁ = z₂).
foldlM, foldrM, mapM #
filter #
filterMap #
filter #
eraseP #
erase #
diff #
Forall #
Miscellaneous lemmas #
The images of disjoint lists under a partially defined map are disjoint
The images of disjoint lists under an injective map are disjoint
Alias of List.disjoint_map.
The images of disjoint lists under an injective map are disjoint