Documentation
Mathlib
.
Data
.
List
.
Scan
Search
return to top
source
Imports
Init
Mathlib.Order.Basic
Mathlib.Tactic.Cases
Mathlib.Data.Nat.Basic
Mathlib.Data.Option.Basic
Imported by
List
.
length_scanl
List
.
scanl_nil
List
.
scanl_cons
List
.
getElem?_scanl_zero
List
.
getElem_scanl_zero
List
.
get?_succ_scanl
List
.
getElem_succ_scanl
List
.
get_succ_scanl
List
.
scanr_nil
List
.
scanr_cons
List.scanl and List.scanr
#
source
theorem
List
.
length_scanl
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
(a :
β
)
(l :
List
α
)
:
(
scanl
f
a
l
)
.
length
=
l
.
length
+
1
source
@[simp]
theorem
List
.
scanl_nil
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
(b :
β
)
:
scanl
f
b
[
]
=
[
b
]
source
@[simp]
theorem
List
.
scanl_cons
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{a :
α
}
{l :
List
α
}
:
scanl
f
b
(
a
::
l
)
=
[
b
]
++
scanl
f
(
f
b
a
)
l
source
@[simp]
theorem
List
.
getElem?_scanl_zero
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{l :
List
α
}
:
(
scanl
f
b
l
)
[
0
]
?
=
some
b
source
@[simp]
theorem
List
.
getElem_scanl_zero
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{l :
List
α
}
{h :
0
<
(
scanl
f
b
l
)
.
length
}
:
(
scanl
f
b
l
)
[
0
]
=
b
source
theorem
List
.
get?_succ_scanl
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{l :
List
α
}
{i :
ℕ
}
:
(
scanl
f
b
l
)
.
get?
(
i
+
1
)
=
(
(
scanl
f
b
l
)
.
get?
i
)
.
bind
fun (
x
:
β
) =>
Option.map
(fun (
y
:
α
) =>
f
x
y
)
(
l
.
get?
i
)
source
theorem
List
.
getElem_succ_scanl
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{l :
List
α
}
{i :
ℕ
}
(h :
i
+
1
<
(
scanl
f
b
l
)
.
length
)
:
(
scanl
f
b
l
)
[
i
+
1
]
=
f
(
scanl
f
b
l
)
[
i
]
l
[
i
]
source
@[deprecated List.getElem_succ_scanl (since := "2024-08-22")]
theorem
List
.
get_succ_scanl
{α :
Type
u_1}
{β :
Type
u_2}
{f :
β
→
α
→
β
}
{b :
β
}
{l :
List
α
}
{i :
ℕ
}
{h :
i
+
1
<
(
scanl
f
b
l
)
.
length
}
:
(
scanl
f
b
l
)
.
get
⟨
i
+
1
,
h
⟩
=
f
(
(
scanl
f
b
l
)
.
get
⟨
i
,
⋯
⟩
)
(
l
.
get
⟨
i
,
⋯
⟩
)
source
@[simp]
theorem
List
.
scanr_nil
{α :
Type
u_1}
{β :
Type
u_2}
(f :
α
→
β
→
β
)
(b :
β
)
:
scanr
f
b
[
]
=
[
b
]
source
@[simp]
theorem
List
.
scanr_cons
{α :
Type
u_1}
{β :
Type
u_2}
(f :
α
→
β
→
β
)
(b :
β
)
(a :
α
)
(l :
List
α
)
:
scanr
f
b
(
a
::
l
)
=
foldr
f
b
(
a
::
l
)
::
scanr
f
b
l