Users' Mathboxes Mathbox for Thierry Arnoux < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  gsumwrd2dccatlem Structured version   Visualization version   GIF version

Theorem gsumwrd2dccatlem 33051
Description: Lemma for gsumwrd2dccat 33052. Expose a bijection 𝐹 between (ordered) pairs of words and words with a length of a subword. (Contributed by Thierry Arnoux, 5-Oct-2025.)
Hypotheses
Ref Expression
gsumwrd2dccatlem.u 𝑈 = 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤)))
gsumwrd2dccatlem.f 𝐹 = (𝑎 ∈ (Word 𝐴 × Word 𝐴) ↦ ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩)
gsumwrd2dccatlem.g 𝐺 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩)
gsumwrd2dccatlem.a (𝜑𝐴𝑉)
Assertion
Ref Expression
gsumwrd2dccatlem (𝜑 → (𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈𝐹 = 𝐺))
Distinct variable groups:   𝐴,𝑎,𝑏,𝑤   𝐹,𝑏   𝑈,𝑎,𝑏   𝜑,𝑎,𝑏,𝑤
Allowed substitution hints:   𝑈(𝑤)   𝐹(𝑤,𝑎)   𝐺(𝑤,𝑎,𝑏)   𝑉(𝑤,𝑎,𝑏)

Proof of Theorem gsumwrd2dccatlem
Dummy variables 𝑛 𝑢 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 gsumwrd2dccatlem.f . . . 4 𝐹 = (𝑎 ∈ (Word 𝐴 × Word 𝐴) ↦ ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩)
2 sneq 4640 . . . . . . . . 9 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → {𝑤} = {((1st𝑎) ++ (2nd𝑎))})
3 fveq2 6906 . . . . . . . . . 10 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (♯‘𝑤) = (♯‘((1st𝑎) ++ (2nd𝑎))))
43oveq2d 7446 . . . . . . . . 9 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (0...(♯‘𝑤)) = (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))
52, 4xpeq12d 5719 . . . . . . . 8 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → ({𝑤} × (0...(♯‘𝑤))) = ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎))))))
65eleq2d 2824 . . . . . . 7 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({𝑤} × (0...(♯‘𝑤))) ↔ ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))))
7 xp1st 8044 . . . . . . . . 9 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (1st𝑎) ∈ Word 𝐴)
87adantl 481 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (1st𝑎) ∈ Word 𝐴)
9 xp2nd 8045 . . . . . . . . 9 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (2nd𝑎) ∈ Word 𝐴)
109adantl 481 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (2nd𝑎) ∈ Word 𝐴)
11 ccatcl 14608 . . . . . . . 8 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → ((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴)
128, 10, 11syl2anc 584 . . . . . . 7 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴)
13 ovex 7463 . . . . . . . . . 10 ((1st𝑎) ++ (2nd𝑎)) ∈ V
1413snid 4666 . . . . . . . . 9 ((1st𝑎) ++ (2nd𝑎)) ∈ {((1st𝑎) ++ (2nd𝑎))}
1514a1i 11 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((1st𝑎) ++ (2nd𝑎)) ∈ {((1st𝑎) ++ (2nd𝑎))})
16 0zd 12622 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ∈ ℤ)
17 lencl 14567 . . . . . . . . . . 11 (((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴 → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℕ0)
1812, 17syl 17 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℕ0)
1918nn0zd 12636 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℤ)
20 lencl 14567 . . . . . . . . . . 11 ((1st𝑎) ∈ Word 𝐴 → (♯‘(1st𝑎)) ∈ ℕ0)
218, 20syl 17 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℕ0)
2221nn0zd 12636 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℤ)
2321nn0ge0d 12587 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ≤ (♯‘(1st𝑎)))
24 lencl 14567 . . . . . . . . . . . . 13 ((2nd𝑎) ∈ Word 𝐴 → (♯‘(2nd𝑎)) ∈ ℕ0)
2510, 24syl 17 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(2nd𝑎)) ∈ ℕ0)
2625nn0ge0d 12587 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ≤ (♯‘(2nd𝑎)))
2721nn0red 12585 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℝ)
2825nn0red 12585 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(2nd𝑎)) ∈ ℝ)
2927, 28addge01d 11848 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (0 ≤ (♯‘(2nd𝑎)) ↔ (♯‘(1st𝑎)) ≤ ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))))
3026, 29mpbid 232 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ≤ ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
31 ccatlen 14609 . . . . . . . . . . 11 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
328, 10, 31syl2anc 584 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
3330, 32breqtrrd 5175 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ≤ (♯‘((1st𝑎) ++ (2nd𝑎))))
3416, 19, 22, 23, 33elfzd 13551 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))
3515, 34opelxpd 5727 . . . . . . 7 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎))))))
366, 12, 35rspcedvdw 3624 . . . . . 6 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑤 ∈ Word 𝐴⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({𝑤} × (0...(♯‘𝑤))))
3736eliund 5002 . . . . 5 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
38 gsumwrd2dccatlem.u . . . . 5 𝑈 = 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤)))
3937, 38eleqtrrdi 2849 . . . 4 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ 𝑈)
40 simpr 484 . . . . . . . . . 10 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))))
41 xp1st 8044 . . . . . . . . . 10 (𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) → (1st𝑏) ∈ {𝑢})
42 elsni 4647 . . . . . . . . . 10 ((1st𝑏) ∈ {𝑢} → (1st𝑏) = 𝑢)
4340, 41, 423syl 18 . . . . . . . . 9 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) = 𝑢)
44 simplr 769 . . . . . . . . 9 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → 𝑢 ∈ Word 𝐴)
4543, 44eqeltrd 2838 . . . . . . . 8 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) ∈ Word 𝐴)
4645adantllr 719 . . . . . . 7 ((((𝜑𝑏𝑈) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) ∈ Word 𝐴)
4738eleq2i 2830 . . . . . . . . . . 11 (𝑏𝑈𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
4847biimpi 216 . . . . . . . . . 10 (𝑏𝑈𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
4948adantl 481 . . . . . . . . 9 ((𝜑𝑏𝑈) → 𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
50 eliun 4999 . . . . . . . . 9 (𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ↔ ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
5149, 50sylib 218 . . . . . . . 8 ((𝜑𝑏𝑈) → ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
52 sneq 4640 . . . . . . . . . . 11 (𝑢 = 𝑤 → {𝑢} = {𝑤})
53 fveq2 6906 . . . . . . . . . . . 12 (𝑢 = 𝑤 → (♯‘𝑢) = (♯‘𝑤))
5453oveq2d 7446 . . . . . . . . . . 11 (𝑢 = 𝑤 → (0...(♯‘𝑢)) = (0...(♯‘𝑤)))
5552, 54xpeq12d 5719 . . . . . . . . . 10 (𝑢 = 𝑤 → ({𝑢} × (0...(♯‘𝑢))) = ({𝑤} × (0...(♯‘𝑤))))
5655eleq2d 2824 . . . . . . . . 9 (𝑢 = 𝑤 → (𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) ↔ 𝑏 ∈ ({𝑤} × (0...(♯‘𝑤)))))
5756cbvrexvw 3235 . . . . . . . 8 (∃𝑢 ∈ Word 𝐴𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) ↔ ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
5851, 57sylibr 234 . . . . . . 7 ((𝜑𝑏𝑈) → ∃𝑢 ∈ Word 𝐴𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))))
5946, 58r19.29a 3159 . . . . . 6 ((𝜑𝑏𝑈) → (1st𝑏) ∈ Word 𝐴)
60 pfxcl 14711 . . . . . 6 ((1st𝑏) ∈ Word 𝐴 → ((1st𝑏) prefix (2nd𝑏)) ∈ Word 𝐴)
6159, 60syl 17 . . . . 5 ((𝜑𝑏𝑈) → ((1st𝑏) prefix (2nd𝑏)) ∈ Word 𝐴)
62 swrdcl 14679 . . . . . 6 ((1st𝑏) ∈ Word 𝐴 → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) ∈ Word 𝐴)
6359, 62syl 17 . . . . 5 ((𝜑𝑏𝑈) → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) ∈ Word 𝐴)
6461, 63opelxpd 5727 . . . 4 ((𝜑𝑏𝑈) → ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ∈ (Word 𝐴 × Word 𝐴))
6549adantr 480 . . . . . . . . . 10 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
66 eliunxp 5850 . . . . . . . . . 10 (𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ↔ ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
6765, 66sylib 218 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
68 opeq1 4877 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → ⟨𝑢, 𝑛⟩ = ⟨𝑤, 𝑛⟩)
6968eqeq2d 2745 . . . . . . . . . . . 12 (𝑢 = 𝑤 → (𝑏 = ⟨𝑢, 𝑛⟩ ↔ 𝑏 = ⟨𝑤, 𝑛⟩))
70 eleq1w 2821 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → (𝑢 ∈ Word 𝐴𝑤 ∈ Word 𝐴))
7154eleq2d 2824 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → (𝑛 ∈ (0...(♯‘𝑢)) ↔ 𝑛 ∈ (0...(♯‘𝑤))))
7270, 71anbi12d 632 . . . . . . . . . . . 12 (𝑢 = 𝑤 → ((𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢))) ↔ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
7369, 72anbi12d 632 . . . . . . . . . . 11 (𝑢 = 𝑤 → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ (𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤))))))
7473exbidv 1918 . . . . . . . . . 10 (𝑢 = 𝑤 → (∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ ∃𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤))))))
7574cbvexvw 2033 . . . . . . . . 9 (∃𝑢𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
7667, 75sylibr 234 . . . . . . . 8 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑢𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))))
77 simplr 769 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑎) = ((1st𝑏) prefix (2nd𝑏)))
78 simpr 484 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))
7977, 78oveq12d 7448 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → ((1st𝑎) ++ (2nd𝑎)) = (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
80 vex 3481 . . . . . . . . . . . . . . . . . . . . 21 𝑢 ∈ V
81 vex 3481 . . . . . . . . . . . . . . . . . . . . 21 𝑛 ∈ V
8280, 81op1std 8022 . . . . . . . . . . . . . . . . . . . 20 (𝑏 = ⟨𝑢, 𝑛⟩ → (1st𝑏) = 𝑢)
8382ad5antlr 735 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) = 𝑢)
84 simp-4r 784 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑢 ∈ Word 𝐴)
8583, 84eqeltrd 2838 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) ∈ Word 𝐴)
8680, 81op2ndd 8023 . . . . . . . . . . . . . . . . . . . 20 (𝑏 = ⟨𝑢, 𝑛⟩ → (2nd𝑏) = 𝑛)
8786ad5antlr 735 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) = 𝑛)
88 simpllr 776 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑛 ∈ (0...(♯‘𝑢)))
8983eqcomd 2740 . . . . . . . . . . . . . . . . . . . . . 22 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑢 = (1st𝑏))
9089fveq2d 6910 . . . . . . . . . . . . . . . . . . . . 21 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘𝑢) = (♯‘(1st𝑏)))
9190oveq2d 7446 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (0...(♯‘𝑢)) = (0...(♯‘(1st𝑏))))
9288, 91eleqtrd 2840 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑛 ∈ (0...(♯‘(1st𝑏))))
9387, 92eqeltrd 2838 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) ∈ (0...(♯‘(1st𝑏))))
94 pfxcctswrd 14744 . . . . . . . . . . . . . . . . . 18 (((1st𝑏) ∈ Word 𝐴 ∧ (2nd𝑏) ∈ (0...(♯‘(1st𝑏)))) → (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) = (1st𝑏))
9585, 93, 94syl2anc 584 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) = (1st𝑏))
9679, 95eqtr2d 2775 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) = ((1st𝑎) ++ (2nd𝑎)))
9777fveq2d 6910 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘(1st𝑎)) = (♯‘((1st𝑏) prefix (2nd𝑏))))
98 pfxlen 14717 . . . . . . . . . . . . . . . . . 18 (((1st𝑏) ∈ Word 𝐴 ∧ (2nd𝑏) ∈ (0...(♯‘(1st𝑏)))) → (♯‘((1st𝑏) prefix (2nd𝑏))) = (2nd𝑏))
9985, 93, 98syl2anc 584 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘((1st𝑏) prefix (2nd𝑏))) = (2nd𝑏))
10097, 99eqtr2d 2775 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) = (♯‘(1st𝑎)))
10196, 100jca 511 . . . . . . . . . . . . . . 15 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))
102101anasss 466 . . . . . . . . . . . . . 14 ((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))) → ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))
103 simplr 769 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑏) = ((1st𝑎) ++ (2nd𝑎)))
104 simpr 484 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑏) = (♯‘(1st𝑎)))
105103, 104oveq12d 7448 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑏) prefix (2nd𝑏)) = (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))))
1068ad5antr 734 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑎) ∈ Word 𝐴)
10710ad5antr 734 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑎) ∈ Word 𝐴)
108 pfxccat1 14736 . . . . . . . . . . . . . . . . . 18 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))) = (1st𝑎))
109106, 107, 108syl2anc 584 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))) = (1st𝑎))
110105, 109eqtr2d 2775 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑎) = ((1st𝑏) prefix (2nd𝑏)))
111103fveq2d 6910 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘(1st𝑏)) = (♯‘((1st𝑎) ++ (2nd𝑎))))
112106, 107, 31syl2anc 584 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
113111, 112eqtrd 2774 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘(1st𝑏)) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
114104, 113opeq12d 4885 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ⟨(2nd𝑏), (♯‘(1st𝑏))⟩ = ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩)
115103, 114oveq12d 7448 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) = (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩))
116 swrdccat2 14703 . . . . . . . . . . . . . . . . . 18 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩) = (2nd𝑎))
117106, 107, 116syl2anc 584 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩) = (2nd𝑎))
118115, 117eqtr2d 2775 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))
119110, 118jca 511 . . . . . . . . . . . . . . 15 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
120119anasss 466 . . . . . . . . . . . . . 14 ((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))) → ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
121102, 120impbida 801 . . . . . . . . . . . . 13 (((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
122121anasss 466 . . . . . . . . . . . 12 ((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
123122expl 457 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
124123adantlr 715 . . . . . . . . . 10 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
125124exlimdv 1930 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
126125imp 406 . . . . . . . 8 ((((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ ∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢))))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
12776, 126exlimddv 1932 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
128 eqop 8054 . . . . . . . 8 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))))
129128adantl 481 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))))
130 snssi 4812 . . . . . . . . . . . . 13 (𝑤 ∈ Word 𝐴 → {𝑤} ⊆ Word 𝐴)
131130adantl 481 . . . . . . . . . . . 12 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑤 ∈ Word 𝐴) → {𝑤} ⊆ Word 𝐴)
132 fz0ssnn0 13658 . . . . . . . . . . . 12 (0...(♯‘𝑤)) ⊆ ℕ0
133 xpss12 5703 . . . . . . . . . . . 12 (({𝑤} ⊆ Word 𝐴 ∧ (0...(♯‘𝑤)) ⊆ ℕ0) → ({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
134131, 132, 133sylancl 586 . . . . . . . . . . 11 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑤 ∈ Word 𝐴) → ({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
135134iunssd 5054 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
136135adantlr 715 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
137136, 65sseldd 3995 . . . . . . . 8 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑏 ∈ (Word 𝐴 × ℕ0))
138 eqop 8054 . . . . . . . 8 (𝑏 ∈ (Word 𝐴 × ℕ0) → (𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
139137, 138syl 17 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
140127, 129, 1393bitr4d 311 . . . . . 6 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
141140an32s 652 . . . . 5 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏𝑈) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
142141anasss 466 . . . 4 ((𝜑 ∧ (𝑎 ∈ (Word 𝐴 × Word 𝐴) ∧ 𝑏𝑈)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
1431, 39, 64, 142f1ocnv2d 7685 . . 3 (𝜑 → (𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈𝐹 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩)))
144143simpld 494 . 2 (𝜑𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈)
145143simprd 495 . . 3 (𝜑𝐹 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩))
146 gsumwrd2dccatlem.g . . 3 𝐺 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩)
147145, 146eqtr4di 2792 . 2 (𝜑𝐹 = 𝐺)
148144, 147jca 511 1 (𝜑 → (𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈𝐹 = 𝐺))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 206  wa 395   = wceq 1536  wex 1775  wcel 2105  wrex 3067  wss 3962  {csn 4630  cop 4636   ciun 4995   class class class wbr 5147  cmpt 5230   × cxp 5686  ccnv 5687  1-1-ontowf1o 6561  cfv 6562  (class class class)co 7430  1st c1st 8010  2nd c2nd 8011  0cc0 11152   + caddc 11155  cle 11293  0cn0 12523  ...cfz 13543  chash 14365  Word cword 14548   ++ cconcat 14604   substr csubstr 14674   prefix cpfx 14704
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1791  ax-4 1805  ax-5 1907  ax-6 1964  ax-7 2004  ax-8 2107  ax-9 2115  ax-10 2138  ax-11 2154  ax-12 2174  ax-ext 2705  ax-rep 5284  ax-sep 5301  ax-nul 5311  ax-pow 5370  ax-pr 5437  ax-un 7753  ax-cnex 11208  ax-resscn 11209  ax-1cn 11210  ax-icn 11211  ax-addcl 11212  ax-addrcl 11213  ax-mulcl 11214  ax-mulrcl 11215  ax-mulcom 11216  ax-addass 11217  ax-mulass 11218  ax-distr 11219  ax-i2m1 11220  ax-1ne0 11221  ax-1rid 11222  ax-rnegex 11223  ax-rrecex 11224  ax-cnre 11225  ax-pre-lttri 11226  ax-pre-lttrn 11227  ax-pre-ltadd 11228  ax-pre-mulgt0 11229
This theorem depends on definitions:  df-bi 207  df-an 396  df-or 848  df-3or 1087  df-3an 1088  df-tru 1539  df-fal 1549  df-ex 1776  df-nf 1780  df-sb 2062  df-mo 2537  df-eu 2566  df-clab 2712  df-cleq 2726  df-clel 2813  df-nfc 2889  df-ne 2938  df-nel 3044  df-ral 3059  df-rex 3068  df-reu 3378  df-rab 3433  df-v 3479  df-sbc 3791  df-csb 3908  df-dif 3965  df-un 3967  df-in 3969  df-ss 3979  df-pss 3982  df-nul 4339  df-if 4531  df-pw 4606  df-sn 4631  df-pr 4633  df-op 4637  df-uni 4912  df-int 4951  df-iun 4997  df-br 5148  df-opab 5210  df-mpt 5231  df-tr 5265  df-id 5582  df-eprel 5588  df-po 5596  df-so 5597  df-fr 5640  df-we 5642  df-xp 5694  df-rel 5695  df-cnv 5696  df-co 5697  df-dm 5698  df-rn 5699  df-res 5700  df-ima 5701  df-pred 6322  df-ord 6388  df-on 6389  df-lim 6390  df-suc 6391  df-iota 6515  df-fun 6564  df-fn 6565  df-f 6566  df-f1 6567  df-fo 6568  df-f1o 6569  df-fv 6570  df-riota 7387  df-ov 7433  df-oprab 7434  df-mpo 7435  df-om 7887  df-1st 8012  df-2nd 8013  df-frecs 8304  df-wrecs 8335  df-recs 8409  df-rdg 8448  df-1o 8504  df-er 8743  df-en 8984  df-dom 8985  df-sdom 8986  df-fin 8987  df-card 9976  df-pnf 11294  df-mnf 11295  df-xr 11296  df-ltxr 11297  df-le 11298  df-sub 11491  df-neg 11492  df-nn 12264  df-n0 12524  df-z 12611  df-uz 12876  df-fz 13544  df-fzo 13691  df-hash 14366  df-word 14549  df-concat 14605  df-substr 14675  df-pfx 14705
This theorem is referenced by:  gsumwrd2dccat  33052
  Copyright terms: Public domain W3C validator