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

Theorem ccatalpha 13375
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 13358 . . . 4 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (𝐴 ++ 𝐵) = (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))
21eleq1d 2686 . . 3 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆))
3 wrdf 13310 . . . 4 ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆 → (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆)
4 funmpt 5926 . . . . . . . . 9 Fun (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))
5 fzofi 12773 . . . . . . . . . . 11 (0..^((#‘𝐴) + (#‘𝐵))) ∈ Fin
6 mptfi 8265 . . . . . . . . . . 11 ((0..^((#‘𝐴) + (#‘𝐵))) ∈ Fin → (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Fin)
75, 6ax-mp 5 . . . . . . . . . 10 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Fin
8 hashfun 13224 . . . . . . . . . 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 223 . . . . . . . 8 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))
11 dmmptg 5632 . . . . . . . . . . 11 (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V → dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (0..^((#‘𝐴) + (#‘𝐵))))
12 fvex 6201 . . . . . . . . . . . . 13 (𝐴𝑥) ∈ V
13 fvex 6201 . . . . . . . . . . . . 13 (𝐵‘(𝑥 − (#‘𝐴))) ∈ V
1412, 13ifex 4156 . . . . . . . . . . . 12 if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V
1514a1i 11 . . . . . . . . . . 11 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ V)
1611, 15mprg 2926 . . . . . . . . . 10 dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (0..^((#‘𝐴) + (#‘𝐵)))
1716fveq2i 6194 . . . . . . . . 9 (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = (#‘(0..^((#‘𝐴) + (#‘𝐵))))
18 lencl 13324 . . . . . . . . . . 11 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℕ0)
19 lencl 13324 . . . . . . . . . . 11 (𝐵 ∈ Word V → (#‘𝐵) ∈ ℕ0)
20 nn0addcl 11328 . . . . . . . . . . 11 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) ∈ ℕ0)
2118, 19, 20syl2an 494 . . . . . . . . . 10 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) ∈ ℕ0)
22 hashfzo0 13217 . . . . . . . . . 10 (((#‘𝐴) + (#‘𝐵)) ∈ ℕ0 → (#‘(0..^((#‘𝐴) + (#‘𝐵)))) = ((#‘𝐴) + (#‘𝐵)))
2321, 22syl 17 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(0..^((#‘𝐴) + (#‘𝐵)))) = ((#‘𝐴) + (#‘𝐵)))
2417, 23syl5eq 2668 . . . . . . . 8 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘dom (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = ((#‘𝐴) + (#‘𝐵)))
2510, 24eqtrd 2656 . . . . . . 7 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))) = ((#‘𝐴) + (#‘𝐵)))
2625oveq2d 6666 . . . . . 6 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))))) = (0..^((#‘𝐴) + (#‘𝐵))))
2726feq2d 6031 . . . . 5 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆))
28 eqid 2622 . . . . . . 7 (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) = (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))
2928fmpt 6381 . . . . . 6 (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ (𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆)
30 simpl 473 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → 𝐴 ∈ Word V)
31 nn0cn 11302 . . . . . . . . . . . . . . . . . . 19 ((#‘𝐴) ∈ ℕ0 → (#‘𝐴) ∈ ℂ)
32 nn0cn 11302 . . . . . . . . . . . . . . . . . . 19 ((#‘𝐵) ∈ ℕ0 → (#‘𝐵) ∈ ℂ)
33 addcom 10222 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐴) ∈ ℂ ∧ (#‘𝐵) ∈ ℂ) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
3431, 32, 33syl2an 494 . . . . . . . . . . . . . . . . . 18 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
35 nn0z 11400 . . . . . . . . . . . . . . . . . . . . 21 ((#‘𝐴) ∈ ℕ0 → (#‘𝐴) ∈ ℤ)
3635anim1i 592 . . . . . . . . . . . . . . . . . . . 20 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) ∈ ℤ ∧ (#‘𝐵) ∈ ℕ0))
3736ancomd 467 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐵) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℤ))
38 nn0pzuz 11745 . . . . . . . . . . . . . . . . . . 19 (((#‘𝐵) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℤ) → ((#‘𝐵) + (#‘𝐴)) ∈ (ℤ‘(#‘𝐴)))
3937, 38syl 17 . . . . . . . . . . . . . . . . . 18 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐵) + (#‘𝐴)) ∈ (ℤ‘(#‘𝐴)))
4034, 39eqeltrd 2701 . . . . . . . . . . . . . . . . 17 (((#‘𝐴) ∈ ℕ0 ∧ (#‘𝐵) ∈ ℕ0) → ((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)))
4118, 19, 40syl2an 494 . . . . . . . . . . . . . . . 16 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)))
42 fzoss2 12496 . . . . . . . . . . . . . . . 16 (((#‘𝐴) + (#‘𝐵)) ∈ (ℤ‘(#‘𝐴)) → (0..^(#‘𝐴)) ⊆ (0..^((#‘𝐴) + (#‘𝐵))))
4341, 42syl 17 . . . . . . . . . . . . . . 15 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^(#‘𝐴)) ⊆ (0..^((#‘𝐴) + (#‘𝐵))))
4443sselda 3603 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → 𝑦 ∈ (0..^((#‘𝐴) + (#‘𝐵))))
45 eleq1 2689 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝑥 ∈ (0..^(#‘𝐴)) ↔ 𝑦 ∈ (0..^(#‘𝐴))))
46 fveq2 6191 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝐴𝑥) = (𝐴𝑦))
47 oveq1 6657 . . . . . . . . . . . . . . . . . 18 (𝑥 = 𝑦 → (𝑥 − (#‘𝐴)) = (𝑦 − (#‘𝐴)))
4847fveq2d 6195 . . . . . . . . . . . . . . . . 17 (𝑥 = 𝑦 → (𝐵‘(𝑥 − (#‘𝐴))) = (𝐵‘(𝑦 − (#‘𝐴))))
4945, 46, 48ifbieq12d 4113 . . . . . . . . . . . . . . . 16 (𝑥 = 𝑦 → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) = if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))))
5049eleq1d 2686 . . . . . . . . . . . . . . 15 (𝑥 = 𝑦 → (if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
5150rspcv 3305 . . . . . . . . . . . . . 14 (𝑦 ∈ (0..^((#‘𝐴) + (#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
5244, 51syl 17 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆))
53 iftrue 4092 . . . . . . . . . . . . . . 15 (𝑦 ∈ (0..^(#‘𝐴)) → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) = (𝐴𝑦))
5453adantl 482 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) = (𝐴𝑦))
5554eleq1d 2686 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (if(𝑦 ∈ (0..^(#‘𝐴)), (𝐴𝑦), (𝐵‘(𝑦 − (#‘𝐴)))) ∈ 𝑆 ↔ (𝐴𝑦) ∈ 𝑆))
5652, 55sylibd 229 . . . . . . . . . . . 12 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐴𝑦) ∈ 𝑆))
5756impancom 456 . . . . . . . . . . 11 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝑦 ∈ (0..^(#‘𝐴)) → (𝐴𝑦) ∈ 𝑆))
5857imp 445 . . . . . . . . . 10 ((((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) ∧ 𝑦 ∈ (0..^(#‘𝐴))) → (𝐴𝑦) ∈ 𝑆)
5958ralrimiva 2966 . . . . . . . . 9 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → ∀𝑦 ∈ (0..^(#‘𝐴))(𝐴𝑦) ∈ 𝑆)
60 iswrdsymb 13322 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ ∀𝑦 ∈ (0..^(#‘𝐴))(𝐴𝑦) ∈ 𝑆) → 𝐴 ∈ Word 𝑆)
6130, 59, 60syl2an2r 876 . . . . . . . 8 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → 𝐴 ∈ Word 𝑆)
62 simpr 477 . . . . . . . . 9 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → 𝐵 ∈ Word V)
63 simpr 477 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → 𝑦 ∈ (0..^(#‘𝐵)))
6418adantr 481 . . . . . . . . . . . . . . . . 17 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℕ0)
6564adantr 481 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ∈ ℕ0)
66 elincfzoext 12525 . . . . . . . . . . . . . . . 16 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (#‘𝐴) ∈ ℕ0) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴))))
6763, 65, 66syl2anc 693 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴))))
6818nn0cnd 11353 . . . . . . . . . . . . . . . . . . 19 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℂ)
6919nn0cnd 11353 . . . . . . . . . . . . . . . . . . 19 (𝐵 ∈ Word V → (#‘𝐵) ∈ ℂ)
7068, 69, 33syl2an 494 . . . . . . . . . . . . . . . . . 18 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((#‘𝐴) + (#‘𝐵)) = ((#‘𝐵) + (#‘𝐴)))
7170oveq2d 6666 . . . . . . . . . . . . . . . . 17 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (0..^((#‘𝐴) + (#‘𝐵))) = (0..^((#‘𝐵) + (#‘𝐴))))
7271eleq2d 2687 . . . . . . . . . . . . . . . 16 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴)))))
7372adantr 481 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐵) + (#‘𝐴)))))
7467, 73mpbird 247 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))))
75 eleq1 2689 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝑥 ∈ (0..^(#‘𝐴)) ↔ (𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴))))
76 fveq2 6191 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝐴𝑥) = (𝐴‘(𝑦 + (#‘𝐴))))
77 oveq1 6657 . . . . . . . . . . . . . . . . . 18 (𝑥 = (𝑦 + (#‘𝐴)) → (𝑥 − (#‘𝐴)) = ((𝑦 + (#‘𝐴)) − (#‘𝐴)))
7877fveq2d 6195 . . . . . . . . . . . . . . . . 17 (𝑥 = (𝑦 + (#‘𝐴)) → (𝐵‘(𝑥 − (#‘𝐴))) = (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))))
7975, 76, 78ifbieq12d 4113 . . . . . . . . . . . . . . . 16 (𝑥 = (𝑦 + (#‘𝐴)) → if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) = if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))))
8079eleq1d 2686 . . . . . . . . . . . . . . 15 (𝑥 = (𝑦 + (#‘𝐴)) → (if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 ↔ if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8180rspcv 3305 . . . . . . . . . . . . . 14 ((𝑦 + (#‘𝐴)) ∈ (0..^((#‘𝐴) + (#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8274, 81syl 17 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆))
8318nn0red 11352 . . . . . . . . . . . . . . . . . . . . 21 (𝐴 ∈ Word V → (#‘𝐴) ∈ ℝ)
8483adantr 481 . . . . . . . . . . . . . . . . . . . 20 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℝ)
8584adantr 481 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ∈ ℝ)
86 elfzoelz 12470 . . . . . . . . . . . . . . . . . . . . . . 23 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℤ)
8786zred 11482 . . . . . . . . . . . . . . . . . . . . . 22 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℝ)
8887adantr 481 . . . . . . . . . . . . . . . . . . . . 21 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → 𝑦 ∈ ℝ)
8984adantl 482 . . . . . . . . . . . . . . . . . . . . 21 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → (#‘𝐴) ∈ ℝ)
9088, 89readdcld 10069 . . . . . . . . . . . . . . . . . . . 20 ((𝑦 ∈ (0..^(#‘𝐵)) ∧ (𝐴 ∈ Word V ∧ 𝐵 ∈ Word V)) → (𝑦 + (#‘𝐴)) ∈ ℝ)
9190ancoms 469 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝑦 + (#‘𝐴)) ∈ ℝ)
92 elfzole1 12478 . . . . . . . . . . . . . . . . . . . . 21 (𝑦 ∈ (0..^(#‘𝐵)) → 0 ≤ 𝑦)
9392adantl 482 . . . . . . . . . . . . . . . . . . . 20 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → 0 ≤ 𝑦)
94 addge02 10539 . . . . . . . . . . . . . . . . . . . . 21 (((#‘𝐴) ∈ ℝ ∧ 𝑦 ∈ ℝ) → (0 ≤ 𝑦 ↔ (#‘𝐴) ≤ (𝑦 + (#‘𝐴))))
9584, 87, 94syl2an 494 . . . . . . . . . . . . . . . . . . . 20 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (0 ≤ 𝑦 ↔ (#‘𝐴) ≤ (𝑦 + (#‘𝐴))))
9693, 95mpbid 222 . . . . . . . . . . . . . . . . . . 19 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (#‘𝐴) ≤ (𝑦 + (#‘𝐴)))
9785, 91, 96lensymd 10188 . . . . . . . . . . . . . . . . . 18 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ (𝑦 + (#‘𝐴)) < (#‘𝐴))
9897intn3an3d 1444 . . . . . . . . . . . . . . . . 17 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ ((𝑦 + (#‘𝐴)) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℕ ∧ (𝑦 + (#‘𝐴)) < (#‘𝐴)))
99 elfzo0 12508 . . . . . . . . . . . . . . . . 17 ((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)) ↔ ((𝑦 + (#‘𝐴)) ∈ ℕ0 ∧ (#‘𝐴) ∈ ℕ ∧ (𝑦 + (#‘𝐴)) < (#‘𝐴)))
10098, 99sylnibr 319 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ¬ (𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)))
101100iffalsed 4097 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) = (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))))
102101eleq1d 2686 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆 ↔ (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆))
10386zcnd 11483 . . . . . . . . . . . . . . . . . 18 (𝑦 ∈ (0..^(#‘𝐵)) → 𝑦 ∈ ℂ)
10468adantr 481 . . . . . . . . . . . . . . . . . 18 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (#‘𝐴) ∈ ℂ)
105 pncan 10287 . . . . . . . . . . . . . . . . . 18 ((𝑦 ∈ ℂ ∧ (#‘𝐴) ∈ ℂ) → ((𝑦 + (#‘𝐴)) − (#‘𝐴)) = 𝑦)
106103, 104, 105syl2anr 495 . . . . . . . . . . . . . . . . 17 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝑦 + (#‘𝐴)) − (#‘𝐴)) = 𝑦)
107106fveq2d 6195 . . . . . . . . . . . . . . . 16 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) = (𝐵𝑦))
108107eleq1d 2686 . . . . . . . . . . . . . . 15 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆 ↔ (𝐵𝑦) ∈ 𝑆))
109108biimpd 219 . . . . . . . . . . . . . 14 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → ((𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
110102, 109sylbid 230 . . . . . . . . . . . . 13 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (if((𝑦 + (#‘𝐴)) ∈ (0..^(#‘𝐴)), (𝐴‘(𝑦 + (#‘𝐴))), (𝐵‘((𝑦 + (#‘𝐴)) − (#‘𝐴)))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
11182, 110syld 47 . . . . . . . . . . . 12 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐵𝑦) ∈ 𝑆))
112111impancom 456 . . . . . . . . . . 11 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝑦 ∈ (0..^(#‘𝐵)) → (𝐵𝑦) ∈ 𝑆))
113112imp 445 . . . . . . . . . 10 ((((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) ∧ 𝑦 ∈ (0..^(#‘𝐵))) → (𝐵𝑦) ∈ 𝑆)
114113ralrimiva 2966 . . . . . . . . 9 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → ∀𝑦 ∈ (0..^(#‘𝐵))(𝐵𝑦) ∈ 𝑆)
115 iswrdsymb 13322 . . . . . . . . 9 ((𝐵 ∈ Word V ∧ ∀𝑦 ∈ (0..^(#‘𝐵))(𝐵𝑦) ∈ 𝑆) → 𝐵 ∈ Word 𝑆)
11662, 114, 115syl2an2r 876 . . . . . . . 8 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → 𝐵 ∈ Word 𝑆)
11761, 116jca 554 . . . . . . 7 (((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) ∧ ∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆) → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆))
118117ex 450 . . . . . 6 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → (∀𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵)))if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))) ∈ 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
11929, 118syl5bir 233 . . . . 5 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^((#‘𝐴) + (#‘𝐵)))⟶𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
12027, 119sylbid 230 . . . 4 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))):(0..^(#‘(𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴)))))))⟶𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
1213, 120syl5 34 . . 3 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝑥 ∈ (0..^((#‘𝐴) + (#‘𝐵))) ↦ if(𝑥 ∈ (0..^(#‘𝐴)), (𝐴𝑥), (𝐵‘(𝑥 − (#‘𝐴))))) ∈ Word 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
1222, 121sylbid 230 . 2 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 → (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
123 ccatcl 13359 . 2 ((𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆) → (𝐴 ++ 𝐵) ∈ Word 𝑆)
124122, 123impbid1 215 1 ((𝐴 ∈ Word V ∧ 𝐵 ∈ Word V) → ((𝐴 ++ 𝐵) ∈ Word 𝑆 ↔ (𝐴 ∈ Word 𝑆𝐵 ∈ Word 𝑆)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 196  wa 384  w3a 1037   = wceq 1483  wcel 1990  wral 2912  Vcvv 3200  wss 3574  ifcif 4086   class class class wbr 4653  cmpt 4729  dom cdm 5114  Fun wfun 5882  wf 5884  cfv 5888  (class class class)co 6650  Fincfn 7955  cc 9934  cr 9935  0cc0 9936   + caddc 9939   < clt 10074  cle 10075  cmin 10266  cn 11020  0cn0 11292  cz 11377  cuz 11687  ..^cfzo 12465  #chash 13117  Word cword 13291   ++ cconcat 13293
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-om 7066  df-1st 7168  df-2nd 7169  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-oadd 7564  df-er 7742  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-card 8765  df-cda 8990  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-nn 11021  df-2 11079  df-n0 11293  df-xnn0 11364  df-z 11378  df-uz 11688  df-fz 12327  df-fzo 12466  df-hash 13118  df-word 13299  df-concat 13301
This theorem is referenced by:  ccatrcl1  13376
  Copyright terms: Public domain W3C validator