Documentation
Init
.
Data
.
String
.
Lemmas
.
Pattern
.
TakeDrop
.
Pred
Search
return to top
source
Imports
Init.ByCases
Init.Data.Option.Lemmas
Init.Data.String.Slice
Init.Data.String.TakeDrop
Init.Data.String.Lemmas.FindPos
Init.Data.String.Lemmas.Pattern.Pred
Init.Data.String.Lemmas.Pattern.TakeDrop.Basic
Imported by
String
.
Slice
.
skipPrefix?_bool_eq_some_iff
String
.
Slice
.
startsWith_bool_iff_get
String
.
Slice
.
startsWith_bool_eq_false_iff_get
String
.
Slice
.
startsWith_bool_eq_head?
String
.
Slice
.
eq_append_of_dropPrefix?_bool_eq_some
String
.
Slice
.
skipPrefix?_prop_eq_some_iff
String
.
Slice
.
startsWith_prop_iff_get
String
.
Slice
.
startsWith_prop_eq_false_iff_get
String
.
Slice
.
startsWith_prop_eq_head?
String
.
Slice
.
eq_append_of_dropPrefix?_prop_eq_some
String
.
Slice
.
skipSuffix?_bool_eq_some_iff
String
.
Slice
.
endsWith_bool_iff_get
String
.
Slice
.
endsWith_bool_eq_false_iff_get
String
.
Slice
.
endsWith_bool_eq_getLast?
String
.
Slice
.
eq_append_of_dropSuffix?_bool_eq_some
String
.
Slice
.
skipSuffix?_prop_eq_some_iff
String
.
Slice
.
endsWith_prop_iff_get
String
.
Slice
.
endsWith_prop_eq_false_iff_get
String
.
Slice
.
endsWith_prop_eq_getLast?
String
.
Slice
.
eq_append_of_dropSuffix?_prop_eq_some
String
.
skipPrefix?_bool_eq_some_iff
String
.
startsWith_bool_iff_get
String
.
startsWith_bool_eq_false_iff_get
String
.
startsWith_bool_eq_head?
String
.
eq_append_of_dropPrefix?_bool_eq_some
String
.
skipPrefix?_prop_eq_some_iff
String
.
startsWith_prop_iff_get
String
.
startsWith_prop_eq_false_iff_get
String
.
startsWith_prop_eq_head?
String
.
eq_append_of_dropPrefix?_prop_eq_some
String
.
skipSuffix?_bool_eq_some_iff
String
.
endsWith_bool_iff_get
String
.
endsWith_bool_eq_false_iff_get
String
.
endsWith_bool_eq_getLast?
String
.
eq_append_of_dropSuffix?_bool_eq_some
String
.
skipSuffix?_prop_eq_some_iff
String
.
endsWith_prop_iff_get
String
.
endsWith_prop_eq_false_iff_get
String
.
endsWith_prop_eq_getLast?
String
.
eq_append_of_dropSuffix?_prop_eq_some
source
theorem
String
.
Slice
.
skipPrefix?_bool_eq_some_iff
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
{
pos
:
s
.
Pos
}
:
s
.
skipPrefix?
p
=
some
pos
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
pos
=
s
.
startPos
.
next
h
∧
p
(
s
.
startPos
.
get
h
)
=
true
source
theorem
String
.
Slice
.
startsWith_bool_iff_get
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
startsWith
p
=
true
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
p
(
s
.
startPos
.
get
h
)
=
true
source
theorem
String
.
Slice
.
startsWith_bool_eq_false_iff_get
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
startsWith
p
=
false
↔
∀ (
h
:
s
.
startPos
≠
s
.
endPos
),
p
(
s
.
startPos
.
get
h
)
=
false
source
theorem
String
.
Slice
.
startsWith_bool_eq_head?
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
startsWith
p
=
Option.any
p
s
.
copy
.
toList
.
head?
source
theorem
String
.
Slice
.
eq_append_of_dropPrefix?_bool_eq_some
{
p
:
Char
→
Bool
}
{
s
res
:
Slice
}
(
h
:
s
.
dropPrefix?
p
=
some
res
)
:
∃
(
c
:
Char
)
,
s
.
copy
=
singleton
c
++
res
.
copy
∧
p
c
=
true
source
theorem
String
.
Slice
.
skipPrefix?_prop_eq_some_iff
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
{
pos
:
s
.
Pos
}
:
s
.
skipPrefix?
P
=
some
pos
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
pos
=
s
.
startPos
.
next
h
∧
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
Slice
.
startsWith_prop_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
startsWith
P
=
true
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
Slice
.
startsWith_prop_eq_false_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
startsWith
P
=
false
↔
∀ (
h
:
s
.
startPos
≠
s
.
endPos
),
¬
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
Slice
.
startsWith_prop_eq_head?
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
startsWith
P
=
Option.any
(fun (
x
:
Char
) =>
decide
(
P
x
)
)
s
.
copy
.
toList
.
head?
source
theorem
String
.
Slice
.
eq_append_of_dropPrefix?_prop_eq_some
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
res
:
Slice
}
(
h
:
s
.
dropPrefix?
P
=
some
res
)
:
∃
(
c
:
Char
)
,
s
.
copy
=
singleton
c
++
res
.
copy
∧
P
c
source
theorem
String
.
Slice
.
skipSuffix?_bool_eq_some_iff
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
{
pos
:
s
.
Pos
}
:
s
.
skipSuffix?
p
=
some
pos
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
pos
=
s
.
endPos
.
prev
h
∧
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
true
source
theorem
String
.
Slice
.
endsWith_bool_iff_get
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
endsWith
p
=
true
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
true
source
theorem
String
.
Slice
.
endsWith_bool_eq_false_iff_get
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
endsWith
p
=
false
↔
∀ (
h
:
s
.
endPos
≠
s
.
startPos
),
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
false
source
theorem
String
.
Slice
.
endsWith_bool_eq_getLast?
{
p
:
Char
→
Bool
}
{
s
:
Slice
}
:
s
.
endsWith
p
=
Option.any
p
s
.
copy
.
toList
.
getLast?
source
theorem
String
.
Slice
.
eq_append_of_dropSuffix?_bool_eq_some
{
p
:
Char
→
Bool
}
{
s
res
:
Slice
}
(
h
:
s
.
dropSuffix?
p
=
some
res
)
:
∃
(
c
:
Char
)
,
s
.
copy
=
res
.
copy
++
singleton
c
∧
p
c
=
true
source
theorem
String
.
Slice
.
skipSuffix?_prop_eq_some_iff
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
{
pos
:
s
.
Pos
}
:
s
.
skipSuffix?
P
=
some
pos
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
pos
=
s
.
endPos
.
prev
h
∧
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
Slice
.
endsWith_prop_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
endsWith
P
=
true
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
Slice
.
endsWith_prop_eq_false_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
endsWith
P
=
false
↔
∀ (
h
:
s
.
endPos
≠
s
.
startPos
),
¬
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
Slice
.
endsWith_prop_eq_getLast?
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
Slice
}
:
s
.
endsWith
P
=
Option.any
(fun (
x
:
Char
) =>
decide
(
P
x
)
)
s
.
copy
.
toList
.
getLast?
source
theorem
String
.
Slice
.
eq_append_of_dropSuffix?_prop_eq_some
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
res
:
Slice
}
(
h
:
s
.
dropSuffix?
P
=
some
res
)
:
∃
(
c
:
Char
)
,
s
.
copy
=
res
.
copy
++
singleton
c
∧
P
c
source
theorem
String
.
skipPrefix?_bool_eq_some_iff
{
p
:
Char
→
Bool
}
{
s
:
String
}
{
pos
:
s
.
Pos
}
:
s
.
skipPrefix?
p
=
some
pos
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
pos
=
s
.
startPos
.
next
h
∧
p
(
s
.
startPos
.
get
h
)
=
true
source
theorem
String
.
startsWith_bool_iff_get
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
startsWith
p
=
true
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
p
(
s
.
startPos
.
get
h
)
=
true
source
theorem
String
.
startsWith_bool_eq_false_iff_get
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
startsWith
p
=
false
↔
∀ (
h
:
s
.
startPos
≠
s
.
endPos
),
p
(
s
.
startPos
.
get
h
)
=
false
source
theorem
String
.
startsWith_bool_eq_head?
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
startsWith
p
=
Option.any
p
s
.
toList
.
head?
source
theorem
String
.
eq_append_of_dropPrefix?_bool_eq_some
{
p
:
Char
→
Bool
}
{
s
:
String
}
{
res
:
Slice
}
(
h
:
s
.
dropPrefix?
p
=
some
res
)
:
∃
(
c
:
Char
)
,
s
=
singleton
c
++
res
.
copy
∧
p
c
=
true
source
theorem
String
.
skipPrefix?_prop_eq_some_iff
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
{
pos
:
s
.
Pos
}
:
s
.
skipPrefix?
P
=
some
pos
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
pos
=
s
.
startPos
.
next
h
∧
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
startsWith_prop_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
startsWith
P
=
true
↔
∃
(
h
:
s
.
startPos
≠
s
.
endPos
)
,
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
startsWith_prop_eq_false_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
startsWith
P
=
false
↔
∀ (
h
:
s
.
startPos
≠
s
.
endPos
),
¬
P
(
s
.
startPos
.
get
h
)
source
theorem
String
.
startsWith_prop_eq_head?
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
startsWith
P
=
Option.any
(fun (
x
:
Char
) =>
decide
(
P
x
)
)
s
.
toList
.
head?
source
theorem
String
.
eq_append_of_dropPrefix?_prop_eq_some
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
{
res
:
Slice
}
(
h
:
s
.
dropPrefix?
P
=
some
res
)
:
∃
(
c
:
Char
)
,
s
=
singleton
c
++
res
.
copy
∧
P
c
source
theorem
String
.
skipSuffix?_bool_eq_some_iff
{
p
:
Char
→
Bool
}
{
s
:
String
}
{
pos
:
s
.
Pos
}
:
s
.
skipSuffix?
p
=
some
pos
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
pos
=
s
.
endPos
.
prev
h
∧
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
true
source
theorem
String
.
endsWith_bool_iff_get
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
endsWith
p
=
true
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
true
source
theorem
String
.
endsWith_bool_eq_false_iff_get
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
endsWith
p
=
false
↔
∀ (
h
:
s
.
endPos
≠
s
.
startPos
),
p
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
=
false
source
theorem
String
.
endsWith_bool_eq_getLast?
{
p
:
Char
→
Bool
}
{
s
:
String
}
:
s
.
endsWith
p
=
Option.any
p
s
.
toList
.
getLast?
source
theorem
String
.
eq_append_of_dropSuffix?_bool_eq_some
{
p
:
Char
→
Bool
}
{
s
:
String
}
{
res
:
Slice
}
(
h
:
s
.
dropSuffix?
p
=
some
res
)
:
∃
(
c
:
Char
)
,
s
=
res
.
copy
++
singleton
c
∧
p
c
=
true
source
theorem
String
.
skipSuffix?_prop_eq_some_iff
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
{
pos
:
s
.
Pos
}
:
s
.
skipSuffix?
P
=
some
pos
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
pos
=
s
.
endPos
.
prev
h
∧
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
endsWith_prop_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
endsWith
P
=
true
↔
∃
(
h
:
s
.
endPos
≠
s
.
startPos
)
,
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
endsWith_prop_eq_false_iff_get
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
endsWith
P
=
false
↔
∀ (
h
:
s
.
endPos
≠
s
.
startPos
),
¬
P
(
(
s
.
endPos
.
prev
h
)
.
get
⋯
)
source
theorem
String
.
endsWith_prop_eq_getLast?
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
:
s
.
endsWith
P
=
Option.any
(fun (
x
:
Char
) =>
decide
(
P
x
)
)
s
.
toList
.
getLast?
source
theorem
String
.
eq_append_of_dropSuffix?_prop_eq_some
{
P
:
Char
→
Prop
}
[
DecidablePred
P
]
{
s
:
String
}
{
res
:
Slice
}
(
h
:
s
.
dropSuffix?
P
=
some
res
)
:
∃
(
c
:
Char
)
,
s
=
res
.
copy
++
singleton
c
∧
P
c