Theorem List for Intuitionistic Logic Explorer - 11301-11400 *Has distinct variable
group(s)
| Type | Label | Description |
| Statement |
| |
| Theorem | lsw0g 11301 |
The last symbol of an empty word does not exist. (Contributed by
Alexander van der Vekens, 11-Nov-2018.)
|
| ⊢ (lastS‘∅) =
∅ |
| |
| Theorem | lsw1 11302 |
The last symbol of a word of length 1 is the first symbol of this word.
(Contributed by Alexander van der Vekens, 19-Mar-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = 1) → (lastS‘𝑊) = (𝑊‘0)) |
| |
| Theorem | lswcl 11303 |
Closure of the last symbol: the last symbol of a nonempty word belongs to
the alphabet for the word. (Contributed by AV, 2-Aug-2018.) (Proof
shortened by AV, 29-Apr-2020.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅) → (lastS‘𝑊) ∈ 𝑉) |
| |
| Theorem | lswex 11304 |
Existence of the last symbol. The last symbol of a word is a set. See
lsw0g 11301 or lswcl 11303 if you want more specific results
for empty or
nonempty words, respectively. (Contributed by Jim Kingdon,
27-Dec-2025.)
|
| ⊢ (𝑊 ∈ Word 𝑉 → (lastS‘𝑊) ∈ V) |
| |
| Theorem | lswlgt0cl 11305 |
The last symbol of a nonempty word is an element of the alphabet for the
word. (Contributed by Alexander van der Vekens, 1-Oct-2018.) (Proof
shortened by AV, 29-Apr-2020.)
|
| ⊢ ((𝑁 ∈ ℕ ∧ (𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = 𝑁)) → (lastS‘𝑊) ∈ 𝑉) |
| |
| 4.7.3 Concatenations of words
|
| |
| Syntax | cconcat 11306 |
Syntax for the concatenation operator.
|
| class ++ |
| |
| Definition | df-concat 11307* |
Define the concatenation operator which combines two words. Definition
in Section 9.1 of [AhoHopUll] p. 318.
(Contributed by FL, 14-Jan-2014.)
(Revised by Stefan O'Rear, 15-Aug-2015.)
|
| ⊢ ++ = (𝑠 ∈ V, 𝑡 ∈ V ↦ (𝑥 ∈ (0..^((♯‘𝑠) + (♯‘𝑡))) ↦ if(𝑥 ∈
(0..^(♯‘𝑠)),
(𝑠‘𝑥), (𝑡‘(𝑥 − (♯‘𝑠)))))) |
| |
| Theorem | ccatfvalfi 11308* |
Value of the concatenation operator. (Contributed by Stefan O'Rear,
15-Aug-2015.)
|
| ⊢ ((𝑆 ∈ Fin ∧ 𝑇 ∈ Fin) → (𝑆 ++ 𝑇) = (𝑥 ∈ (0..^((♯‘𝑆) + (♯‘𝑇))) ↦ if(𝑥 ∈
(0..^(♯‘𝑆)),
(𝑆‘𝑥), (𝑇‘(𝑥 − (♯‘𝑆)))))) |
| |
| Theorem | ccatcl 11309 |
The concatenation of two words is a word. (Contributed by FL,
2-Feb-2014.) (Proof shortened by Stefan O'Rear, 15-Aug-2015.) (Proof
shortened by AV, 29-Apr-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) ∈ Word 𝐵) |
| |
| Theorem | ccatclab 11310 |
The concatenation of words over two sets is a word over the union of
those sets. (Contributed by Jim Kingdon, 19-Dec-2025.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (𝑆 ++ 𝑇) ∈ Word (𝐴 ∪ 𝐵)) |
| |
| Theorem | ccatlen 11311 |
The length of a concatenated word. (Contributed by Stefan O'Rear,
15-Aug-2015.) (Revised by JJ, 1-Jan-2024.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → (♯‘(𝑆 ++ 𝑇)) = ((♯‘𝑆) + (♯‘𝑇))) |
| |
| Theorem | ccat0 11312 |
The concatenation of two words is empty iff the two words are empty.
(Contributed by AV, 4-Mar-2022.) (Revised by JJ, 18-Jan-2024.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) = ∅ ↔ (𝑆 = ∅ ∧ 𝑇 = ∅))) |
| |
| Theorem | ccatval1 11313 |
Value of a symbol in the left half of a concatenated word. (Contributed
by Stefan O'Rear, 15-Aug-2015.) (Revised by Mario Carneiro,
22-Sep-2015.) (Proof shortened by AV, 30-Apr-2020.) (Revised by JJ,
18-Jan-2024.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝐼 ∈ (0..^(♯‘𝑆))) → ((𝑆 ++ 𝑇)‘𝐼) = (𝑆‘𝐼)) |
| |
| Theorem | ccatval2 11314 |
Value of a symbol in the right half of a concatenated word.
(Contributed by Stefan O'Rear, 15-Aug-2015.) (Revised by Mario
Carneiro, 22-Sep-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝐼 ∈ ((♯‘𝑆)..^((♯‘𝑆) + (♯‘𝑇)))) → ((𝑆 ++ 𝑇)‘𝐼) = (𝑇‘(𝐼 − (♯‘𝑆)))) |
| |
| Theorem | ccatval3 11315 |
Value of a symbol in the right half of a concatenated word, using an
index relative to the subword. (Contributed by Stefan O'Rear,
16-Aug-2015.) (Proof shortened by AV, 30-Apr-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝐼 ∈ (0..^(♯‘𝑇))) → ((𝑆 ++ 𝑇)‘(𝐼 + (♯‘𝑆))) = (𝑇‘𝐼)) |
| |
| Theorem | elfzelfzccat 11316 |
An element of a finite set of sequential integers up to the length of a
word is an element of an extended finite set of sequential integers up to
the length of a concatenation of this word with another word.
(Contributed by Alexander van der Vekens, 28-Mar-2018.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝑁 ∈ (0...(♯‘𝐴)) → 𝑁 ∈ (0...(♯‘(𝐴 ++ 𝐵))))) |
| |
| Theorem | ccatvalfn 11317 |
The concatenation of two words is a function over the half-open integer
range having the sum of the lengths of the word as length. (Contributed
by Alexander van der Vekens, 30-Mar-2018.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉) → (𝐴 ++ 𝐵) Fn (0..^((♯‘𝐴) + (♯‘𝐵)))) |
| |
| Theorem | ccatsymb 11318 |
The symbol at a given position in a concatenated word. (Contributed by
AV, 26-May-2018.) (Proof shortened by AV, 24-Nov-2018.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ 𝐼 ∈ ℤ) → ((𝐴 ++ 𝐵)‘𝐼) = if(𝐼 < (♯‘𝐴), (𝐴‘𝐼), (𝐵‘(𝐼 − (♯‘𝐴))))) |
| |
| Theorem | ccatfv0 11319 |
The first symbol of a concatenation of two words is the first symbol of
the first word if the first word is not empty. (Contributed by Alexander
van der Vekens, 22-Sep-2018.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ 0 < (♯‘𝐴)) → ((𝐴 ++ 𝐵)‘0) = (𝐴‘0)) |
| |
| Theorem | ccatval1lsw 11320 |
The last symbol of the left (nonempty) half of a concatenated word.
(Contributed by Alexander van der Vekens, 3-Oct-2018.) (Proof shortened
by AV, 1-May-2020.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ 𝐴 ≠ ∅) → ((𝐴 ++ 𝐵)‘((♯‘𝐴) − 1)) = (lastS‘𝐴)) |
| |
| Theorem | ccatval21sw 11321 |
The first symbol of the right (nonempty) half of a concatenated word.
(Contributed by AV, 23-Apr-2022.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ 𝐵 ≠ ∅) → ((𝐴 ++ 𝐵)‘(♯‘𝐴)) = (𝐵‘0)) |
| |
| Theorem | ccatlid 11322 |
Concatenation of a word by the empty word on the left. (Contributed by
Stefan O'Rear, 15-Aug-2015.) (Proof shortened by AV, 1-May-2020.)
|
| ⊢ (𝑆 ∈ Word 𝐵 → (∅ ++ 𝑆) = 𝑆) |
| |
| Theorem | ccatrid 11323 |
Concatenation of a word by the empty word on the right. (Contributed by
Stefan O'Rear, 15-Aug-2015.) (Proof shortened by AV, 1-May-2020.)
|
| ⊢ (𝑆 ∈ Word 𝐵 → (𝑆 ++ ∅) = 𝑆) |
| |
| Theorem | ccatass 11324 |
Associative law for concatenation of words. (Contributed by Stefan
O'Rear, 15-Aug-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵 ∧ 𝑈 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) ++ 𝑈) = (𝑆 ++ (𝑇 ++ 𝑈))) |
| |
| Theorem | ccatrn 11325 |
The range of a concatenated word. (Contributed by Stefan O'Rear,
15-Aug-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ran (𝑆 ++ 𝑇) = (ran 𝑆 ∪ ran 𝑇)) |
| |
| Theorem | ccatidid 11326 |
Concatenation of the empty word by the empty word. (Contributed by AV,
26-Mar-2022.)
|
| ⊢ (∅ ++ ∅) =
∅ |
| |
| Theorem | lswccatn0lsw 11327 |
The last symbol of a word concatenated with a nonempty word is the last
symbol of the nonempty word. (Contributed by AV, 22-Oct-2018.) (Proof
shortened by AV, 1-May-2020.)
|
| ⊢ ((𝐴 ∈ Word 𝑉 ∧ 𝐵 ∈ Word 𝑉 ∧ 𝐵 ≠ ∅) → (lastS‘(𝐴 ++ 𝐵)) = (lastS‘𝐵)) |
| |
| Theorem | lswccat0lsw 11328 |
The last symbol of a word concatenated with the empty word is the last
symbol of the word. (Contributed by AV, 22-Oct-2018.) (Proof shortened
by AV, 1-May-2020.)
|
| ⊢ (𝑊 ∈ Word 𝑉 → (lastS‘(𝑊 ++ ∅)) = (lastS‘𝑊)) |
| |
| Theorem | ccatalpha 11329 |
A concatenation of two arbitrary words is a word over an alphabet iff
the symbols of both words belong to the alphabet. (Contributed by AV,
28-Feb-2021.)
|
| ⊢ ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝐴 ∈ Word 𝑆 ∧ 𝐵 ∈ Word 𝑆))) |
| |
| Theorem | ccatrcl1 11330 |
Reverse closure of a concatenation: If the concatenation of two arbitrary
words is a word over an alphabet then the symbols of the first word belong
to the alphabet. (Contributed by AV, 3-Mar-2021.)
|
| ⊢ ((𝐴 ∈ Word 𝑋 ∧ 𝐵 ∈ Word 𝑌 ∧ (𝑊 = (𝐴 ++ 𝐵) ∧ 𝑊 ∈ Word 𝑆)) → 𝐴 ∈ Word 𝑆) |
| |
| 4.7.4 Singleton words
|
| |
| Syntax | cs1 11331 |
Syntax for the singleton word constructor.
|
| class 〈“𝐴”〉 |
| |
| Definition | df-s1 11332 |
Define the canonical injection from symbols to words. Although not
required, 𝐴 should usually be a set. Otherwise,
the singleton word
〈“𝐴”〉 would be the singleton
word consisting of the empty set, see
s1prc 11339, and not, as maybe expected, the empty word.
(Contributed by
Stefan O'Rear, 15-Aug-2015.) (Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ 〈“𝐴”〉 = {〈0, ( I ‘𝐴)〉} |
| |
| Theorem | s1val 11333 |
Value of a singleton word. (Contributed by Stefan O'Rear, 15-Aug-2015.)
(Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ (𝐴 ∈ 𝑉 → 〈“𝐴”〉 = {〈0, 𝐴〉}) |
| |
| Theorem | s1rn 11334 |
The range of a singleton word. (Contributed by Mario Carneiro,
18-Jul-2016.)
|
| ⊢ (𝐴 ∈ 𝑉 → ran 〈“𝐴”〉 = {𝐴}) |
| |
| Theorem | s1eq 11335 |
Equality theorem for a singleton word. (Contributed by Mario Carneiro,
26-Feb-2016.)
|
| ⊢ (𝐴 = 𝐵 → 〈“𝐴”〉 = 〈“𝐵”〉) |
| |
| Theorem | s1eqd 11336 |
Equality theorem for a singleton word. (Contributed by Mario Carneiro,
26-Feb-2016.)
|
| ⊢ (𝜑 → 𝐴 = 𝐵) ⇒ ⊢ (𝜑 → 〈“𝐴”〉 = 〈“𝐵”〉) |
| |
| Theorem | s1cl 11337 |
A singleton word is a word. (Contributed by Stefan O'Rear, 15-Aug-2015.)
(Revised by Mario Carneiro, 26-Feb-2016.) (Proof shortened by AV,
23-Nov-2018.)
|
| ⊢ (𝐴 ∈ 𝐵 → 〈“𝐴”〉 ∈ Word 𝐵) |
| |
| Theorem | s1cld 11338 |
A singleton word is a word. (Contributed by Mario Carneiro,
26-Feb-2016.)
|
| ⊢ (𝜑 → 𝐴 ∈ 𝐵) ⇒ ⊢ (𝜑 → 〈“𝐴”〉 ∈ Word 𝐵) |
| |
| Theorem | s1prc 11339 |
Value of a singleton word if the symbol is a proper class. (Contributed
by AV, 26-Mar-2022.)
|
| ⊢ (¬ 𝐴 ∈ V → 〈“𝐴”〉 =
〈“∅”〉) |
| |
| Theorem | s1leng 11340 |
Length of a singleton word. (Contributed by Stefan O'Rear, 15-Aug-2015.)
(Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ (𝐴 ∈ 𝑉 → (♯‘〈“𝐴”〉) =
1) |
| |
| Theorem | s1dmg 11341 |
The domain of a singleton word is a singleton. (Contributed by AV,
9-Jan-2020.)
|
| ⊢ (𝐴 ∈ 𝑆 → dom 〈“𝐴”〉 = {0}) |
| |
| Theorem | s1fv 11342 |
Sole symbol of a singleton word. (Contributed by Stefan O'Rear,
15-Aug-2015.) (Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ (𝐴 ∈ 𝐵 → (〈“𝐴”〉‘0) = 𝐴) |
| |
| Theorem | lsws1 11343 |
The last symbol of a singleton word is its symbol. (Contributed by AV,
22-Oct-2018.)
|
| ⊢ (𝐴 ∈ 𝑉 → (lastS‘〈“𝐴”〉) = 𝐴) |
| |
| Theorem | eqs1 11344 |
A word of length 1 is a singleton word. (Contributed by Stefan O'Rear,
23-Aug-2015.) (Proof shortened by AV, 1-May-2020.)
|
| ⊢ ((𝑊 ∈ Word 𝐴 ∧ (♯‘𝑊) = 1) → 𝑊 = 〈“(𝑊‘0)”〉) |
| |
| Theorem | wrdl1exs1 11345* |
A word of length 1 is a singleton word. (Contributed by AV,
24-Jan-2021.)
|
| ⊢ ((𝑊 ∈ Word 𝑆 ∧ (♯‘𝑊) = 1) → ∃𝑠 ∈ 𝑆 𝑊 = 〈“𝑠”〉) |
| |
| Theorem | wrdl1s1 11346 |
A word of length 1 is a singleton word consisting of the first symbol of
the word. (Contributed by AV, 22-Jul-2018.) (Proof shortened by AV,
14-Oct-2018.)
|
| ⊢ (𝑆 ∈ 𝑉 → (𝑊 = 〈“𝑆”〉 ↔ (𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = 1 ∧ (𝑊‘0) = 𝑆))) |
| |
| Theorem | s111 11347 |
The singleton word function is injective. (Contributed by Mario Carneiro,
1-Oct-2015.) (Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ ((𝑆 ∈ 𝐴 ∧ 𝑇 ∈ 𝐴) → (〈“𝑆”〉 = 〈“𝑇”〉 ↔ 𝑆 = 𝑇)) |
| |
| 4.7.5 Concatenations with singleton
words
|
| |
| Theorem | ccatws1cl 11348 |
The concatenation of a word with a singleton word is a word. (Contributed
by Alexander van der Vekens, 22-Sep-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑉) → (𝑊 ++ 〈“𝑋”〉) ∈ Word 𝑉) |
| |
| Theorem | ccat2s1cl 11349 |
The concatenation of two singleton words is a word. (Contributed by
Alexander van der Vekens, 22-Sep-2018.)
|
| ⊢ ((𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉) → (〈“𝑋”〉 ++ 〈“𝑌”〉) ∈ Word
𝑉) |
| |
| Theorem | ccatws1leng 11350 |
The length of the concatenation of a word with a singleton word.
(Contributed by Alexander van der Vekens, 22-Sep-2018.) (Revised by AV,
4-Mar-2022.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑌) → (♯‘(𝑊 ++ 〈“𝑋”〉)) = ((♯‘𝑊) + 1)) |
| |
| Theorem | ccatws1lenp1bg 11351 |
The length of a word is 𝑁 iff the length of the concatenation
of the
word with a singleton word is 𝑁 + 1. (Contributed by AV,
4-Mar-2022.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑌 ∧ 𝑁 ∈ ℕ0) →
((♯‘(𝑊 ++
〈“𝑋”〉)) = (𝑁 + 1) ↔ (♯‘𝑊) = 𝑁)) |
| |
| Theorem | wrdlenccats1lenm1g 11352 |
The length of a word is the length of the word concatenated with a
singleton word minus 1. (Contributed by AV, 28-Jun-2018.) (Revised by
AV, 5-Mar-2022.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑆 ∈ 𝐵) → ((♯‘(𝑊 ++ 〈“𝑆”〉)) − 1) =
(♯‘𝑊)) |
| |
| Theorem | ccatw2s1cl 11353 |
The concatenation of a word with two singleton words is a word.
(Contributed by Alexander van der Vekens, 22-Sep-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉) → ((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉) ∈ Word
𝑉) |
| |
| Theorem | ccatw2s1leng 11354 |
The length of the concatenation of a word with two singleton words.
(Contributed by Alexander van der Vekens, 22-Sep-2018.) (Revised by AV,
5-Mar-2022.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉) → (♯‘((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉)) =
((♯‘𝑊) +
2)) |
| |
| Theorem | ccats1val1g 11355 |
Value of a symbol in the left half of a word concatenated with a single
symbol. (Contributed by Alexander van der Vekens, 5-Aug-2018.) (Revised
by JJ, 20-Jan-2024.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑆 ∈ 𝑌 ∧ 𝐼 ∈ (0..^(♯‘𝑊))) → ((𝑊 ++ 〈“𝑆”〉)‘𝐼) = (𝑊‘𝐼)) |
| |
| Theorem | ccats1val2 11356 |
Value of the symbol concatenated with a word. (Contributed by Alexander
van der Vekens, 5-Aug-2018.) (Proof shortened by Alexander van der
Vekens, 14-Oct-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑆 ∈ 𝑉 ∧ 𝐼 = (♯‘𝑊)) → ((𝑊 ++ 〈“𝑆”〉)‘𝐼) = 𝑆) |
| |
| Theorem | ccat1st1st 11357 |
The first symbol of a word concatenated with its first symbol is the first
symbol of the word. This theorem holds even if 𝑊 is the empty word.
(Contributed by AV, 26-Mar-2022.)
|
| ⊢ (𝑊 ∈ Word 𝑉 → ((𝑊 ++ 〈“(𝑊‘0)”〉)‘0) = (𝑊‘0)) |
| |
| Theorem | ccatws1ls 11358 |
The last symbol of the concatenation of a word with a singleton word is
the symbol of the singleton word. (Contributed by AV, 29-Sep-2018.)
(Proof shortened by AV, 14-Oct-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑋 ∈ 𝑉) → ((𝑊 ++ 〈“𝑋”〉)‘(♯‘𝑊)) = 𝑋) |
| |
| Theorem | lswccats1 11359 |
The last symbol of a word concatenated with a singleton word is the symbol
of the singleton word. (Contributed by AV, 6-Aug-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑆 ∈ 𝑉) → (lastS‘(𝑊 ++ 〈“𝑆”〉)) = 𝑆) |
| |
| Theorem | lswccats1fst 11360 |
The last symbol of a nonempty word concatenated with its first symbol is
the first symbol. (Contributed by AV, 28-Jun-2018.) (Proof shortened by
AV, 1-May-2020.)
|
| ⊢ ((𝑃 ∈ Word 𝑉 ∧ 1 ≤ (♯‘𝑃)) → (lastS‘(𝑃 ++ 〈“(𝑃‘0)”〉)) =
((𝑃 ++ 〈“(𝑃‘0)”〉)‘0)) |
| |
| Theorem | ccatw2s1p1g 11361 |
Extract the symbol of the first singleton word of a word concatenated with
this singleton word and another singleton word. (Contributed by Alexander
van der Vekens, 22-Sep-2018.) (Proof shortened by AV, 1-May-2020.)
(Revised by AV, 1-May-2020.) (Revised by AV, 29-Jan-2024.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = 𝑁) ∧ (𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉)) → (((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉)‘𝑁) = 𝑋) |
| |
| Theorem | ccatw2s1p2 11362 |
Extract the second of two single symbols concatenated with a word.
(Contributed by Alexander van der Vekens, 22-Sep-2018.) (Proof shortened
by AV, 1-May-2020.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ (♯‘𝑊) = 𝑁) ∧ (𝑋 ∈ 𝑉 ∧ 𝑌 ∈ 𝑉)) → (((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉)‘(𝑁 + 1)) = 𝑌) |
| |
| Theorem | ccat2s1fvwd 11363 |
Extract a symbol of a word from the concatenation of the word with two
single symbols. (Contributed by AV, 22-Sep-2018.) (Revised by AV,
13-Jan-2020.) (Proof shortened by AV, 1-May-2020.) (Revised by AV,
28-Jan-2024.)
|
| ⊢ (𝜑 → 𝑊 ∈ Word 𝑉)
& ⊢ (𝜑 → 𝐼 ∈ ℕ0) & ⊢ (𝜑 → 𝐼 < (♯‘𝑊)) & ⊢ (𝜑 → 𝑋 ∈ 𝐴)
& ⊢ (𝜑 → 𝑌 ∈ 𝐵) ⇒ ⊢ (𝜑 → (((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉)‘𝐼) = (𝑊‘𝐼)) |
| |
| Theorem | ccat2s1fstg 11364 |
The first symbol of the concatenation of a word with two single symbols.
(Contributed by Alexander van der Vekens, 22-Sep-2018.) (Revised by AV,
28-Jan-2024.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ 0 < (♯‘𝑊)) ∧ (𝑋 ∈ 𝐴 ∧ 𝑌 ∈ 𝐵)) → (((𝑊 ++ 〈“𝑋”〉) ++ 〈“𝑌”〉)‘0) =
(𝑊‘0)) |
| |
| 4.7.6 Subwords/substrings
|
| |
| Syntax | csubstr 11365 |
Syntax for the subword operator.
|
| class substr |
| |
| Definition | df-substr 11366* |
Define an operation which extracts portions (called subwords or
substrings) of words. Definition in Section 9.1 of [AhoHopUll]
p. 318. (Contributed by Stefan O'Rear, 15-Aug-2015.)
|
| ⊢ substr = (𝑠 ∈ V, 𝑏 ∈ (ℤ × ℤ) ↦
if(((1st ‘𝑏)..^(2nd ‘𝑏)) ⊆ dom 𝑠, (𝑥 ∈ (0..^((2nd ‘𝑏) − (1st
‘𝑏))) ↦ (𝑠‘(𝑥 + (1st ‘𝑏)))), ∅)) |
| |
| Theorem | fzowrddc 11367 |
Decidability of whether a range of integers is a subset of a word's
domain. (Contributed by Jim Kingdon, 23-Dec-2025.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) →
DECID (𝐹..^𝐿) ⊆ dom 𝑆) |
| |
| Theorem | swrdval 11368* |
Value of a subword. (Contributed by Stefan O'Rear, 15-Aug-2015.)
|
| ⊢ ((𝑆 ∈ 𝑉 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) → (𝑆 substr 〈𝐹, 𝐿〉) = if((𝐹..^𝐿) ⊆ dom 𝑆, (𝑥 ∈ (0..^(𝐿 − 𝐹)) ↦ (𝑆‘(𝑥 + 𝐹))), ∅)) |
| |
| Theorem | swrd00g 11369 |
A zero length substring. (Contributed by Stefan O'Rear,
27-Aug-2015.)
|
| ⊢ ((𝑆 ∈ 𝑉 ∧ 𝑋 ∈ ℤ) → (𝑆 substr 〈𝑋, 𝑋〉) = ∅) |
| |
| Theorem | swrdclg 11370 |
Closure of the subword extractor. (Contributed by Stefan O'Rear,
16-Aug-2015.) (Revised by Mario Carneiro, 26-Feb-2016.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) → (𝑆 substr 〈𝐹, 𝐿〉) ∈ Word 𝐴) |
| |
| Theorem | swrdval2 11371* |
Value of the subword extractor in its intended domain. (Contributed by
Stefan O'Rear, 15-Aug-2015.) (Proof shortened by AV, 2-May-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ (0...𝐿) ∧ 𝐿 ∈ (0...(♯‘𝑆))) → (𝑆 substr 〈𝐹, 𝐿〉) = (𝑥 ∈ (0..^(𝐿 − 𝐹)) ↦ (𝑆‘(𝑥 + 𝐹)))) |
| |
| Theorem | swrdlen 11372 |
Length of an extracted subword. (Contributed by Stefan O'Rear,
16-Aug-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ (0...𝐿) ∧ 𝐿 ∈ (0...(♯‘𝑆))) →
(♯‘(𝑆 substr
〈𝐹, 𝐿〉)) = (𝐿 − 𝐹)) |
| |
| Theorem | swrdfv 11373 |
A symbol in an extracted subword, indexed using the subword's indices.
(Contributed by Stefan O'Rear, 16-Aug-2015.)
|
| ⊢ (((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ (0...𝐿) ∧ 𝐿 ∈ (0...(♯‘𝑆))) ∧ 𝑋 ∈ (0..^(𝐿 − 𝐹))) → ((𝑆 substr 〈𝐹, 𝐿〉)‘𝑋) = (𝑆‘(𝑋 + 𝐹))) |
| |
| Theorem | swrdfv0 11374 |
The first symbol in an extracted subword. (Contributed by AV,
27-Apr-2022.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐹 ∈ (0..^𝐿) ∧ 𝐿 ∈ (0...(♯‘𝑆))) → ((𝑆 substr 〈𝐹, 𝐿〉)‘0) = (𝑆‘𝐹)) |
| |
| Theorem | swrdf 11375 |
A subword of a word is a function from a half-open range of nonnegative
integers of the same length as the subword to the set of symbols for the
original word. (Contributed by AV, 13-Nov-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑊))) → (𝑊 substr 〈𝑀, 𝑁〉):(0..^(𝑁 − 𝑀))⟶𝑉) |
| |
| Theorem | swrdvalfn 11376 |
Value of the subword extractor as function with domain. (Contributed by
Alexander van der Vekens, 28-Mar-2018.) (Proof shortened by AV,
2-May-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝑉 ∧ 𝐹 ∈ (0...𝐿) ∧ 𝐿 ∈ (0...(♯‘𝑆))) → (𝑆 substr 〈𝐹, 𝐿〉) Fn (0..^(𝐿 − 𝐹))) |
| |
| Theorem | swrdrn 11377 |
The range of a subword of a word is a subset of the set of symbols for the
word. (Contributed by AV, 13-Nov-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑊))) → ran (𝑊 substr 〈𝑀, 𝑁〉) ⊆ 𝑉) |
| |
| Theorem | swrdlend 11378 |
The value of the subword extractor is the empty set (undefined) if the
range is not valid. (Contributed by Alexander van der Vekens,
16-Mar-2018.) (Proof shortened by AV, 2-May-2020.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) → (𝐿 ≤ 𝐹 → (𝑊 substr 〈𝐹, 𝐿〉) = ∅)) |
| |
| Theorem | swrdnd 11379 |
The value of the subword extractor is the empty set (undefined) if the
range is not valid. (Contributed by Alexander van der Vekens,
16-Mar-2018.) (Proof shortened by AV, 2-May-2020.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) → ((𝐹 < 0 ∨ 𝐿 ≤ 𝐹 ∨ (♯‘𝑊) < 𝐿) → (𝑊 substr 〈𝐹, 𝐿〉) = ∅)) |
| |
| Theorem | swrd0g 11380 |
A subword of an empty set is always the empty set. (Contributed by AV,
31-Mar-2018.) (Revised by AV, 20-Oct-2018.) (Proof shortened by AV,
2-May-2020.)
|
| ⊢ ((𝐹 ∈ ℤ ∧ 𝐿 ∈ ℤ) → (∅ substr
〈𝐹, 𝐿〉) = ∅) |
| |
| Theorem | swrdrlen 11381 |
Length of a right-anchored subword. (Contributed by Alexander van der
Vekens, 5-Apr-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝐼 ∈ (0...(♯‘𝑊))) →
(♯‘(𝑊 substr
〈𝐼,
(♯‘𝑊)〉))
= ((♯‘𝑊)
− 𝐼)) |
| |
| Theorem | swrdlen2 11382 |
Length of an extracted subword. (Contributed by AV, 5-May-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝑉 ∧ (𝐹 ∈ ℕ0 ∧ 𝐿 ∈
(ℤ≥‘𝐹)) ∧ 𝐿 ≤ (♯‘𝑆)) → (♯‘(𝑆 substr 〈𝐹, 𝐿〉)) = (𝐿 − 𝐹)) |
| |
| Theorem | swrdfv2 11383 |
A symbol in an extracted subword, indexed using the word's indices.
(Contributed by AV, 5-May-2020.)
|
| ⊢ (((𝑆 ∈ Word 𝑉 ∧ (𝐹 ∈ ℕ0 ∧ 𝐿 ∈
(ℤ≥‘𝐹)) ∧ 𝐿 ≤ (♯‘𝑆)) ∧ 𝑋 ∈ (𝐹..^𝐿)) → ((𝑆 substr 〈𝐹, 𝐿〉)‘(𝑋 − 𝐹)) = (𝑆‘𝑋)) |
| |
| Theorem | swrdwrdsymbg 11384 |
A subword is a word over the symbols it consists of. (Contributed by
AV, 2-Dec-2022.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝑀 ∈ (0...𝑁) ∧ 𝑁 ∈ (0...(♯‘𝑆))) → (𝑆 substr 〈𝑀, 𝑁〉) ∈ Word (𝑆 “ (𝑀..^𝑁))) |
| |
| Theorem | swrdsb0eq 11385 |
Two subwords with the same bounds are equal if the range is not valid.
(Contributed by AV, 4-May-2020.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉) ∧ (𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0)
∧ 𝑁 ≤ 𝑀) → (𝑊 substr 〈𝑀, 𝑁〉) = (𝑈 substr 〈𝑀, 𝑁〉)) |
| |
| Theorem | swrdsbslen 11386 |
Two subwords with the same bounds have the same length. (Contributed by
AV, 4-May-2020.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉) ∧ (𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0)
∧ (𝑁 ≤
(♯‘𝑊) ∧
𝑁 ≤
(♯‘𝑈))) →
(♯‘(𝑊 substr
〈𝑀, 𝑁〉)) = (♯‘(𝑈 substr 〈𝑀, 𝑁〉))) |
| |
| Theorem | swrdspsleq 11387* |
Two words have a common subword (starting at the same position with the
same length) iff they have the same symbols at each position.
(Contributed by Alexander van der Vekens, 7-Aug-2018.) (Proof shortened
by AV, 7-May-2020.)
|
| ⊢ (((𝑊 ∈ Word 𝑉 ∧ 𝑈 ∈ Word 𝑉) ∧ (𝑀 ∈ ℕ0 ∧ 𝑁 ∈ ℕ0)
∧ (𝑁 ≤
(♯‘𝑊) ∧
𝑁 ≤
(♯‘𝑈))) →
((𝑊 substr 〈𝑀, 𝑁〉) = (𝑈 substr 〈𝑀, 𝑁〉) ↔ ∀𝑖 ∈ (𝑀..^𝑁)(𝑊‘𝑖) = (𝑈‘𝑖))) |
| |
| Theorem | swrds1 11388 |
Extract a single symbol from a word. (Contributed by Stefan O'Rear,
23-Aug-2015.)
|
| ⊢ ((𝑊 ∈ Word 𝐴 ∧ 𝐼 ∈ (0..^(♯‘𝑊))) → (𝑊 substr 〈𝐼, (𝐼 + 1)〉) = 〈“(𝑊‘𝐼)”〉) |
| |
| Theorem | swrdlsw 11389 |
Extract the last single symbol from a word. (Contributed by Alexander van
der Vekens, 23-Sep-2018.)
|
| ⊢ ((𝑊 ∈ Word 𝑉 ∧ 𝑊 ≠ ∅) → (𝑊 substr 〈((♯‘𝑊) − 1),
(♯‘𝑊)〉) =
〈“(lastS‘𝑊)”〉) |
| |
| Theorem | ccatswrd 11390 |
Joining two adjacent subwords makes a longer subword. (Contributed by
Stefan O'Rear, 20-Aug-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ (𝑋 ∈ (0...𝑌) ∧ 𝑌 ∈ (0...𝑍) ∧ 𝑍 ∈ (0...(♯‘𝑆)))) → ((𝑆 substr 〈𝑋, 𝑌〉) ++ (𝑆 substr 〈𝑌, 𝑍〉)) = (𝑆 substr 〈𝑋, 𝑍〉)) |
| |
| Theorem | swrdccat2 11391 |
Recover the right half of a concatenated word. (Contributed by Mario
Carneiro, 27-Sep-2015.)
|
| ⊢ ((𝑆 ∈ Word 𝐵 ∧ 𝑇 ∈ Word 𝐵) → ((𝑆 ++ 𝑇) substr 〈(♯‘𝑆), ((♯‘𝑆) + (♯‘𝑇))〉) = 𝑇) |
| |
| 4.7.7 Prefixes of a word
|
| |
| Syntax | cpfx 11392 |
Syntax for the prefix operator.
|
| class prefix |
| |
| Definition | df-pfx 11393* |
Define an operation which extracts prefixes of words, i.e. subwords (or
substrings) starting at the beginning of a word (or string). In other
words, (𝑆 prefix 𝐿) is the prefix of the word 𝑆 of
length
𝐿. Definition in Section 9.1 of [AhoHopUll] p. 318. See also
Wikipedia "Substring" https://en.wikipedia.org/wiki/Substring#Prefix.
(Contributed by AV, 2-May-2020.)
|
| ⊢ prefix = (𝑠 ∈ V, 𝑙 ∈ ℕ0 ↦ (𝑠 substr 〈0, 𝑙〉)) |
| |
| Theorem | pfxval 11394 |
Value of a prefix operation. (Contributed by AV, 2-May-2020.)
|
| ⊢ ((𝑆 ∈ 𝑉 ∧ 𝐿 ∈ ℕ0) → (𝑆 prefix 𝐿) = (𝑆 substr 〈0, 𝐿〉)) |
| |
| Theorem | pfx00g 11395 |
The zero length prefix is the empty set. (Contributed by AV,
2-May-2020.)
|
| ⊢ (𝑆 ∈ 𝑉 → (𝑆 prefix 0) = ∅) |
| |
| Theorem | pfx0g 11396 |
A prefix of an empty set is always the empty set. (Contributed by AV,
3-May-2020.)
|
| ⊢ (𝐿 ∈ ℕ0 → (∅
prefix 𝐿) =
∅) |
| |
| Theorem | fnpfx 11397 |
The domain of the prefix extractor. (Contributed by Jim Kingdon,
8-Jan-2026.)
|
| ⊢ prefix Fn (V ×
ℕ0) |
| |
| Theorem | pfxclg 11398 |
Closure of the prefix extractor. (Contributed by AV, 2-May-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐿 ∈ ℕ0) → (𝑆 prefix 𝐿) ∈ Word 𝐴) |
| |
| Theorem | pfxclz 11399 |
Closure of the prefix extractor. This extends pfxclg 11398 from ℕ0 to
ℤ (negative lengths are trivial, resulting
in the empty word).
(Contributed by Jim Kingdon, 8-Jan-2026.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐿 ∈ ℤ) → (𝑆 prefix 𝐿) ∈ Word 𝐴) |
| |
| Theorem | pfxmpt 11400* |
Value of the prefix extractor as a mapping. (Contributed by AV,
2-May-2020.)
|
| ⊢ ((𝑆 ∈ Word 𝐴 ∧ 𝐿 ∈ (0...(♯‘𝑆))) → (𝑆 prefix 𝐿) = (𝑥 ∈ (0..^𝐿) ↦ (𝑆‘𝑥))) |