MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  ccatalpha Structured version   Visualization version   GIF version

Theorem ccatalpha 13228
Description: 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.)
Assertion
Ref Expression
ccatalpha ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))

Proof of Theorem ccatalpha
Dummy variables 𝑥 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 ccatfval 13211 . . . 4 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (𝐴 ++ 𝐵) = (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))
21eleq1d 2672 . . 3 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆))
3 wrdf 13165 . . . 4 ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆 → (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆)
4 funmpt 5840 . . . . . . . . 9 Fun (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))
5 fzofi 12635 . . . . . . . . . . 11 (0..^((#‘𝐴) + (#‘𝐵))) ∈ Fin
6 mptfi 8148 . . . . . . . . . . 11 ((0..^((#‘𝐴) + (#‘𝐵))) ∈ Fin → (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Fin)
75, 6ax-mp 5 . . . . . . . . . 10 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Fin
8 hashfun 13084 . . . . . . . . . 10 ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Fin → (Fun (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ↔ (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))))
97, 8mp1i 13 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (Fun (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ↔ (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))))
104, 9mpbii 222 . . . . . . . 8 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))
11 dmmptg 5549 . . . . . . . . . . 11 (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V → dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (0..^((#‘𝐴) + (#‘𝐵))))
12 fvex 6113 . . . . . . . . . . . . 13 (𝐴𝑥) ∈ V
13 fvex 6113 . . . . . . . . . . . . 13 (𝐵‘(𝑥 − (#‘𝐴))) ∈ V
1412, 13ifex 4106 . . . . . . . . . . . 12 if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V
1514a1i 11 . . . . . . . . . . 11 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V)
1611, 15mprg 2910 . . . . . . . . . 10 dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (0..^((#‘𝐴) + (#‘𝐵)))
1716fveq2i 6106 . . . . . . . . 9 (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘(0..^((#‘𝐴) + (#‘𝐵))))
18 lencl 13179 . . . . . . . . . . 11 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℕ0)
19 lencl 13179 . . . . . . . . . . 11 (𝐵 ∈ Word V → (#‘𝐵) ∈ ℕ0)
20 nn0addcl 11205 . . . . . . . . . . 11 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) ∈ ℕ0)
2118, 19, 20syl2an 493 . . . . . . . . . 10 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) ∈ ℕ0)
22 hashfzo0 13077 . . . . . . . . . 10 (((#‘𝐴) + (#‘𝐵)) ∈ ℕ0 → (#‘(0..^((#‘𝐴) + (#‘𝐵)))) = ((#‘𝐴) + (#‘𝐵)))
2321, 22syl 17 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(0..^((#‘𝐴) + (#‘𝐵)))) = ((#‘𝐴) + (#‘𝐵)))
2417, 23syl5eq 2656 . . . . . . . 8 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = ((#‘𝐴) + (#‘𝐵)))
2510, 24eqtrd 2644 . . . . . . 7 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = ((#‘𝐴) + (#‘𝐵)))
2625oveq2d 6565 . . . . . 6 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))) = (0..^((#‘𝐴) + (#‘𝐵))))
2726feq2d 5944 . . . . 5 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆))
28 eqid 2610 . . . . . . 7 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))
2928fmpt 6289 . . . . . 6 (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆)
30 simpl 472 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → 𝐴 ∈ Word V)
31 nn0cn 11179 . . . . . . . . . . . . . . . . . . 19 ((#‘𝐴) ∈ ℕ0 → (#‘𝐴) ∈ ℂ)
32 nn0cn 11179 . . . . . . . . . . . . . . . . . . 19 ((#‘𝐵) ∈ ℕ0 → (#‘𝐵) ∈ ℂ)
33 addcom 10101 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐴) ∈ ℂ ∧ (#‘𝐵) ∈ ℂ) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
3431, 32, 33syl2an 493 . . . . . . . . . . . . . . . . . 18 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
35 nn0z 11277 . . . . . . . . . . . . . . . . . . . . 21 ((#‘𝐴) ∈ ℕ0 → (#‘𝐴) ∈ ℤ)
3635anim1i 590 . . . . . . . . . . . . . . . . . . . 20 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) ∈ ℤ ∧ (#‘𝐵) ∈ ℕ0))
3736ancomd 466 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐵) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℤ))
38 nn0pzuz 11621 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐵) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℤ) → ((#‘𝐵) + (#‘𝐴)) ∈ (ℤ‘(#‘𝐴)))
3937, 38syl 17 . . . . . . . . . . . . . . . . . 18 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐵) + (#‘𝐴)) ∈ (ℤ‘(#‘𝐴)))
4034, 39eqeltrd 2688 . . . . . . . . . . . . . . . . 17 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)))
4118, 19, 40syl2an 493 . . . . . . . . . . . . . . . 16 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)))
42 fzoss2 12365 . . . . . . . . . . . . . . . 16 (((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)) → (0..^(#‘𝐴)) ⊆ (0..^((#‘𝐴) + (#‘𝐵))))
4341, 42syl 17 . . . . . . . . . . . . . . 15 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^(#‘𝐴)) ⊆ (0..^((#‘𝐴) + (#‘𝐵))))
4443sselda 3568 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → 𝑦 ∈ (0..^((#‘𝐴) + (#‘𝐵))))
45 eleq1 2676 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝑥 ∈ (0..^(#‘𝐴)) ↔ 𝑦 ∈ (0..^(#‘𝐴))))
46 fveq2 6103 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝐴𝑥) = (𝐴𝑦))
47 oveq1 6556 . . . . . . . . . . . . . . . . . 18 (𝑥 = 𝑦 → (𝑥 − (#‘𝐴)) = (𝑦 − (#‘𝐴)))
4847fveq2d 6107 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝐵‘(𝑥 − (#‘𝐴))) = (𝐵‘(𝑦 − (#‘𝐴))))
4945, 46, 48ifbieq12d 4063 . . . . . . . . . . . . . . . 16 (𝑥 = 𝑦 → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) = if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))))
5049eleq1d 2672 . . . . . . . . . . . . . . 15 (𝑥 = 𝑦 → (if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
5150rspcv 3278 . . . . . . . . . . . . . 14 (𝑦 ∈ (0..^((#‘𝐴) + (#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
5244, 51syl 17 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
53 iftrue 4042 . . . . . . . . . . . . . . 15 (𝑦 ∈ (0..^(#‘𝐴)) → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) = (𝐴𝑦))
5453adantl 481 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) = (𝐴𝑦))
5554eleq1d 2672 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆 ↔ (𝐴𝑦) ∈ 𝑆))
5652, 55sylibd 228 . . . . . . . . . . . 12 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐴𝑦) ∈ 𝑆))
5756impancom 455 . . . . . . . . . . 11 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝑦 ∈ (0..^(#‘𝐴)) → (𝐴𝑦) ∈ 𝑆))
5857imp 444 . . . . . . . . . 10 ((((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (𝐴𝑦) ∈ 𝑆)
5958ralrimiva 2949 . . . . . . . . 9 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → ∀𝑦 ∈ (0..^(#‘𝐴))(𝐴𝑦) ∈ 𝑆)
60 iswrdsymb 13177 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ ∀𝑦 ∈ (0..^(#‘𝐴))(𝐴𝑦) ∈ 𝑆) → 𝐴 ∈ Word 𝑆)
6130, 59, 60syl2an2r 872 . . . . . . . 8 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → 𝐴 ∈ Word 𝑆)
62 simpr 476 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → 𝐵 ∈ Word V)
63 simpr 476 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → 𝑦 ∈ (0..^(#‘𝐵)))
6418adantr 480 . . . . . . . . . . . . . . . . 17 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℕ0)
6564adantr 480 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ∈ ℕ0)
66 elincfzoext 12393 . . . . . . . . . . . . . . . 16 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (#‘𝐴) ∈ ℕ0) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴))))
6763, 65, 66syl2anc 691 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴))))
6818nn0cnd 11230 . . . . . . . . . . . . . . . . . . 19 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℂ)
6919nn0cnd 11230 . . . . . . . . . . . . . . . . . . 19 (𝐵 ∈ Word V → (#‘𝐵) ∈ ℂ)
7068, 69, 33syl2an 493 . . . . . . . . . . . . . . . . . 18 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
7170oveq2d 6565 . . . . . . . . . . . . . . . . 17 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^((#‘𝐴) + (#‘𝐵))) = (0..^((#‘𝐵) + (#‘𝐴))))
7271eleq2d 2673 . . . . . . . . . . . . . . . 16 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴)))))
7372adantr 480 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴)))))
7467, 73mpbird 246 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))))
75 eleq1 2676 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝑥 ∈ (0..^(#‘𝐴)) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴))))
76 fveq2 6103 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝐴𝑥) = (𝐴‘(𝑦 + (#‘𝐴))))
77 oveq1 6556 . . . . . . . . . . . . . . . . . 18 (𝑥 = (𝑦 + (#‘𝐴)) → (𝑥 − (#‘𝐴)) = ((𝑦 + (#‘𝐴)) − (#‘𝐴)))
7877fveq2d 6107 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝐵‘(𝑥 − (#‘𝐴))) = (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))))
7975, 76, 78ifbieq12d 4063 . . . . . . . . . . . . . . . 16 (𝑥 = (𝑦 + (#‘𝐴)) → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) = if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))))
8079eleq1d 2672 . . . . . . . . . . . . . . 15 (𝑥 = (𝑦 + (#‘𝐴)) → (if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8180rspcv 3278 . . . . . . . . . . . . . 14 ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8274, 81syl 17 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8318nn0red 11229 . . . . . . . . . . . . . . . . . . . . 21 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℝ)
8483adantr 480 . . . . . . . . . . . . . . . . . . . 20 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℝ)
8584adantr 480 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ∈ ℝ)
86 elfzoelz 12339 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℤ)
8786zred 11358 . . . . . . . . . . . . . . . . . . . . . 22 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℝ)
8887adantr 480 . . . . . . . . . . . . . . . . . . . . 21 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → 𝑦 ∈ ℝ)
8984adantl 481 . . . . . . . . . . . . . . . . . . . . 21 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → (#‘𝐴) ∈ ℝ)
9088, 89readdcld 9948 . . . . . . . . . . . . . . . . . . . 20 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → (𝑦 + (#‘𝐴)) ∈ ℝ)
9190ancoms 468 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ ℝ)
92 elfzole1 12347 . . . . . . . . . . . . . . . . . . . . 21 (𝑦 ∈ (0..^(#‘𝐵)) → 0 ≤ 𝑦)
9392adantl 481 . . . . . . . . . . . . . . . . . . . 20 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → 0 ≤ 𝑦)
94 addge02 10418 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝐴) ∈ ℝ ∧ 𝑦 ∈ ℝ) → (0 ≤ 𝑦 ↔ (#‘𝐴) ≤ (𝑦 + (#‘𝐴))))
9584, 87, 94syl2an 493 . . . . . . . . . . . . . . . . . . . 20 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (0 ≤ 𝑦 ↔ (#‘𝐴) ≤ (𝑦 + (#‘𝐴))))
9693, 95mpbid 221 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ≤ (𝑦 + (#‘𝐴)))
9785, 91, 96lensymd 10067 . . . . . . . . . . . . . . . . . 18 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ (𝑦 + (#‘𝐴)) < (#‘𝐴))
9897intn3an3d 1436 . . . . . . . . . . . . . . . . 17 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ ((𝑦 + (#‘𝐴)) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℕ ∧ (𝑦 + (#‘𝐴)) < (#‘𝐴)))
99 elfzo0 12376 . . . . . . . . . . . . . . . . 17 ((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)) ↔ ((𝑦 + (#‘𝐴)) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℕ ∧ (𝑦 + (#‘𝐴)) < (#‘𝐴)))
10098, 99sylnibr 318 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ (𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)))
101100iffalsed 4047 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) = (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))))
102101eleq1d 2672 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆 ↔ (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆))
10386zcnd 11359 . . . . . . . . . . . . . . . . . 18 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℂ)
10468adantr 480 . . . . . . . . . . . . . . . . . 18 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℂ)
105 pncan 10166 . . . . . . . . . . . . . . . . . 18 ((𝑦 ∈ ℂ ∧ (#‘𝐴) ∈ ℂ) → ((𝑦 + (#‘𝐴)) − (#‘𝐴)) = 𝑦)
106103, 104, 105syl2anr 494 . . . . . . . . . . . . . . . . 17 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝑦 + (#‘𝐴)) − (#‘𝐴)) = 𝑦)
107106fveq2d 6107 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) = (𝐵𝑦))
108107eleq1d 2672 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆 ↔ (𝐵𝑦) ∈ 𝑆))
109108biimpd 218 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
110102, 109sylbid 229 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
11182, 110syld 46 . . . . . . . . . . . 12 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
112111impancom 455 . . . . . . . . . . 11 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝑦 ∈ (0..^(#‘𝐵)) → (𝐵𝑦) ∈ 𝑆))
113112imp 444 . . . . . . . . . 10 ((((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝐵𝑦) ∈ 𝑆)
114113ralrimiva 2949 . . . . . . . . 9 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → ∀𝑦 ∈ (0..^(#‘𝐵))(𝐵𝑦) ∈ 𝑆)
115 iswrdsymb 13177 . . . . . . . . 9 ((𝐵 ∈ Word V ∧ ∀𝑦 ∈ (0..^(#‘𝐵))(𝐵𝑦) ∈ 𝑆) → 𝐵 ∈ Word 𝑆)
11662, 114, 115syl2an2r 872 . . . . . . . 8 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → 𝐵 ∈ Word 𝑆)
11761, 116jca 553 . . . . . . 7 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆))
118117ex 449 . . . . . 6 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
11929, 118syl5bir 232 . . . . 5 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
12027, 119sylbid 229 . . . 4 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
1213, 120syl5 33 . . 3 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
1222, 121sylbid 229 . 2 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
123 ccatcl 13212 . 2 ((𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆) → (𝐴 ++ 𝐵) ∈ Word 𝑆)
124122, 123impbid1 214 1 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 195  wa 383  w3a 1031   = wceq 1475  wcel 1977  wral 2896  Vcvv 3173  wss 3540  ifcif 4036   class class class wbr 4583  cmpt 4643  dom cdm 5038  Fun wfun 5798  wf 5800  cfv 5804  (class class class)co 6549  Fincfn 7841  cc 9813  cr 9814  0cc0 9815   + caddc 9818   < clt 9953  cle 9954  cmin 10145  cn 10897  0cn0 11169  cz 11254  cuz 11563  ..^cfzo 12334  #chash 12979  Word cword 13146   ++ cconcat 13148
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847  ax-cnex 9871  ax-resscn 9872  ax-1cn 9873  ax-icn 9874  ax-addcl 9875  ax-addrcl 9876  ax-mulcl 9877  ax-mulrcl 9878  ax-mulcom 9879  ax-addass 9880  ax-mulass 9881  ax-distr 9882  ax-i2m1 9883  ax-1ne0 9884  ax-1rid 9885  ax-rnegex 9886  ax-rrecex 9887  ax-cnre 9888  ax-pre-lttri 9889  ax-pre-lttrn 9890  ax-pre-ltadd 9891  ax-pre-mulgt0 9892
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-nel 2783  df-ral 2901  df-rex 2902  df-reu 2903  df-rmo 2904  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-pss 3556  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-tp 4130  df-op 4132  df-uni 4373  df-int 4411  df-iun 4457  df-br 4584  df-opab 4644  df-mpt 4645  df-tr 4681  df-eprel 4949  df-id 4953  df-po 4959  df-so 4960  df-fr 4997  df-we 4999  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-pred 5597  df-ord 5643  df-on 5644  df-lim 5645  df-suc 5646  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-riota 6511  df-ov 6552  df-oprab 6553  df-mpt2 6554  df-om 6958  df-1st 7059  df-2nd 7060  df-wrecs 7294  df-recs 7355  df-rdg 7393  df-1o 7447  df-oadd 7451  df-er 7629  df-en 7842  df-dom 7843  df-sdom 7844  df-fin 7845  df-card 8648  df-cda 8873  df-pnf 9955  df-mnf 9956  df-xr 9957  df-ltxr 9958  df-le 9959  df-sub 10147  df-neg 10148  df-nn 10898  df-2 10956  df-n0 11170  df-xnn0 11241  df-z 11255  df-uz 11564  df-fz 12198  df-fzo 12335  df-hash 12980  df-word 13154  df-concat 13156
This theorem is referenced by:  ccatrcl1  13229
  Copyright terms: Public domain W3C validator