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 33259
Description: Lemma for gsumwrd2dccat 33260. 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 4594 . . . . . . . . 9 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → {𝑤} = {((1st𝑎) ++ (2nd𝑎))})
3 fveq2 6869 . . . . . . . . . 10 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (♯‘𝑤) = (♯‘((1st𝑎) ++ (2nd𝑎))))
43oveq2d 7414 . . . . . . . . 9 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (0...(♯‘𝑤)) = (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))
52, 4xpeq12d 5680 . . . . . . . 8 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → ({𝑤} × (0...(♯‘𝑤))) = ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎))))))
65eleq2d 2850 . . . . . . 7 (𝑤 = ((1st𝑎) ++ (2nd𝑎)) → (⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({𝑤} × (0...(♯‘𝑤))) ↔ ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))))
7 xp1st 8004 . . . . . . . . 9 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (1st𝑎) ∈ Word 𝐴)
87adantl 485 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (1st𝑎) ∈ Word 𝐴)
9 xp2nd 8005 . . . . . . . . 9 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (2nd𝑎) ∈ Word 𝐴)
109adantl 485 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (2nd𝑎) ∈ Word 𝐴)
11 ccatcl 14589 . . . . . . . 8 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → ((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴)
128, 10, 11syl2anc 593 . . . . . . 7 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴)
13 ovex 7431 . . . . . . . . . 10 ((1st𝑎) ++ (2nd𝑎)) ∈ V
1413snid 4623 . . . . . . . . 9 ((1st𝑎) ++ (2nd𝑎)) ∈ {((1st𝑎) ++ (2nd𝑎))}
1514a1i 11 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((1st𝑎) ++ (2nd𝑎)) ∈ {((1st𝑎) ++ (2nd𝑎))})
16 0zd 12582 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ∈ ℤ)
17 lencl 14548 . . . . . . . . . . 11 (((1st𝑎) ++ (2nd𝑎)) ∈ Word 𝐴 → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℕ0)
1812, 17syl 17 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℕ0)
1918nn0zd 12595 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) ∈ ℤ)
20 lencl 14548 . . . . . . . . . . 11 ((1st𝑎) ∈ Word 𝐴 → (♯‘(1st𝑎)) ∈ ℕ0)
218, 20syl 17 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℕ0)
2221nn0zd 12595 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℤ)
2321nn0ge0d 12547 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ≤ (♯‘(1st𝑎)))
24 lencl 14548 . . . . . . . . . . . . 13 ((2nd𝑎) ∈ Word 𝐴 → (♯‘(2nd𝑎)) ∈ ℕ0)
2510, 24syl 17 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(2nd𝑎)) ∈ ℕ0)
2625nn0ge0d 12547 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 0 ≤ (♯‘(2nd𝑎)))
2721nn0red 12545 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ ℝ)
2825nn0red 12545 . . . . . . . . . . . 12 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(2nd𝑎)) ∈ ℝ)
2927, 28addge01d 11777 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (0 ≤ (♯‘(2nd𝑎)) ↔ (♯‘(1st𝑎)) ≤ ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))))
3026, 29mpbid 234 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ≤ ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
31 ccatlen 14590 . . . . . . . . . . 11 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
328, 10, 31syl2anc 593 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
3330, 32breqtrrd 5130 . . . . . . . . 9 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ≤ (♯‘((1st𝑎) ++ (2nd𝑎))))
3416, 19, 22, 23, 33elfzd 13522 . . . . . . . 8 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (♯‘(1st𝑎)) ∈ (0...(♯‘((1st𝑎) ++ (2nd𝑎)))))
3515, 34opelxpd 5688 . . . . . . 7 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({((1st𝑎) ++ (2nd𝑎))} × (0...(♯‘((1st𝑎) ++ (2nd𝑎))))))
366, 12, 35rspcedvdw 3586 . . . . . 6 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑤 ∈ Word 𝐴⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ ({𝑤} × (0...(♯‘𝑤))))
3736eliund 4958 . . . . 5 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
38 gsumwrd2dccatlem.u . . . . 5 𝑈 = 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤)))
3937, 38eleqtrrdi 2875 . . . 4 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ∈ 𝑈)
40 simpr 488 . . . . . . . . . 10 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))))
41 xp1st 8004 . . . . . . . . . 10 (𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) → (1st𝑏) ∈ {𝑢})
42 elsni 4601 . . . . . . . . . 10 ((1st𝑏) ∈ {𝑢} → (1st𝑏) = 𝑢)
4340, 41, 423syl 18 . . . . . . . . 9 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) = 𝑢)
44 simplr 778 . . . . . . . . 9 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → 𝑢 ∈ Word 𝐴)
4543, 44eqeltrd 2864 . . . . . . . 8 (((𝜑𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) ∈ Word 𝐴)
4645adantllr 729 . . . . . . 7 ((((𝜑𝑏𝑈) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑏 ∈ ({𝑢} × (0...(♯‘𝑢)))) → (1st𝑏) ∈ Word 𝐴)
4738eleq2i 2856 . . . . . . . . . 10 (𝑏𝑈𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
4847bilani 508 . . . . . . . . 9 ((𝜑𝑏𝑈) → 𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
49 eliun 4955 . . . . . . . . 9 (𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ↔ ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
5048, 49sylib 220 . . . . . . . 8 ((𝜑𝑏𝑈) → ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
51 sneq 4594 . . . . . . . . . . 11 (𝑢 = 𝑤 → {𝑢} = {𝑤})
52 fveq2 6869 . . . . . . . . . . . 12 (𝑢 = 𝑤 → (♯‘𝑢) = (♯‘𝑤))
5352oveq2d 7414 . . . . . . . . . . 11 (𝑢 = 𝑤 → (0...(♯‘𝑢)) = (0...(♯‘𝑤)))
5451, 53xpeq12d 5680 . . . . . . . . . 10 (𝑢 = 𝑤 → ({𝑢} × (0...(♯‘𝑢))) = ({𝑤} × (0...(♯‘𝑤))))
5554eleq2d 2850 . . . . . . . . 9 (𝑢 = 𝑤 → (𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) ↔ 𝑏 ∈ ({𝑤} × (0...(♯‘𝑤)))))
5655cbvrexvw 3243 . . . . . . . 8 (∃𝑢 ∈ Word 𝐴𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))) ↔ ∃𝑤 ∈ Word 𝐴𝑏 ∈ ({𝑤} × (0...(♯‘𝑤))))
5750, 56sylibr 236 . . . . . . 7 ((𝜑𝑏𝑈) → ∃𝑢 ∈ Word 𝐴𝑏 ∈ ({𝑢} × (0...(♯‘𝑢))))
5846, 57r19.29a 3172 . . . . . 6 ((𝜑𝑏𝑈) → (1st𝑏) ∈ Word 𝐴)
59 pfxcl 14693 . . . . . 6 ((1st𝑏) ∈ Word 𝐴 → ((1st𝑏) prefix (2nd𝑏)) ∈ Word 𝐴)
6058, 59syl 17 . . . . 5 ((𝜑𝑏𝑈) → ((1st𝑏) prefix (2nd𝑏)) ∈ Word 𝐴)
61 swrdcl 14661 . . . . . 6 ((1st𝑏) ∈ Word 𝐴 → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) ∈ Word 𝐴)
6258, 61syl 17 . . . . 5 ((𝜑𝑏𝑈) → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) ∈ Word 𝐴)
6360, 62opelxpd 5688 . . . 4 ((𝜑𝑏𝑈) → ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ∈ (Word 𝐴 × Word 𝐴))
6448adantr 484 . . . . . . . . . 10 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))))
65 eliunxp 5811 . . . . . . . . . 10 (𝑏 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ↔ ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
6664, 65sylib 220 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
67 opeq1 4833 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → ⟨𝑢, 𝑛⟩ = ⟨𝑤, 𝑛⟩)
6867eqeq2d 2775 . . . . . . . . . . . 12 (𝑢 = 𝑤 → (𝑏 = ⟨𝑢, 𝑛⟩ ↔ 𝑏 = ⟨𝑤, 𝑛⟩))
69 eleq1w 2847 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → (𝑢 ∈ Word 𝐴𝑤 ∈ Word 𝐴))
7053eleq2d 2850 . . . . . . . . . . . . 13 (𝑢 = 𝑤 → (𝑛 ∈ (0...(♯‘𝑢)) ↔ 𝑛 ∈ (0...(♯‘𝑤))))
7169, 70anbi12d 641 . . . . . . . . . . . 12 (𝑢 = 𝑤 → ((𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢))) ↔ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
7268, 71anbi12d 641 . . . . . . . . . . 11 (𝑢 = 𝑤 → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ (𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤))))))
7372exbidv 1943 . . . . . . . . . 10 (𝑢 = 𝑤 → (∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ ∃𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤))))))
7473cbvexvw 2059 . . . . . . . . 9 (∃𝑢𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) ↔ ∃𝑤𝑛(𝑏 = ⟨𝑤, 𝑛⟩ ∧ (𝑤 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑤)))))
7566, 74sylibr 236 . . . . . . . 8 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ∃𝑢𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))))
76 simplr 778 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑎) = ((1st𝑏) prefix (2nd𝑏)))
77 simpr 488 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))
7876, 77oveq12d 7416 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → ((1st𝑎) ++ (2nd𝑎)) = (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
79 vex 3460 . . . . . . . . . . . . . . . . . . . . 21 𝑢 ∈ V
80 vex 3460 . . . . . . . . . . . . . . . . . . . . 21 𝑛 ∈ V
8179, 80op1std 7982 . . . . . . . . . . . . . . . . . . . 20 (𝑏 = ⟨𝑢, 𝑛⟩ → (1st𝑏) = 𝑢)
8281ad5antlr 745 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) = 𝑢)
83 simp-4r 793 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑢 ∈ Word 𝐴)
8482, 83eqeltrd 2864 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) ∈ Word 𝐴)
8579, 80op2ndd 7983 . . . . . . . . . . . . . . . . . . . 20 (𝑏 = ⟨𝑢, 𝑛⟩ → (2nd𝑏) = 𝑛)
8685ad5antlr 745 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) = 𝑛)
87 simpllr 785 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑛 ∈ (0...(♯‘𝑢)))
8882eqcomd 2770 . . . . . . . . . . . . . . . . . . . . . 22 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑢 = (1st𝑏))
8988fveq2d 6873 . . . . . . . . . . . . . . . . . . . . 21 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘𝑢) = (♯‘(1st𝑏)))
9089oveq2d 7414 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (0...(♯‘𝑢)) = (0...(♯‘(1st𝑏))))
9187, 90eleqtrd 2866 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → 𝑛 ∈ (0...(♯‘(1st𝑏))))
9286, 91eqeltrd 2864 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) ∈ (0...(♯‘(1st𝑏))))
93 pfxcctswrd 14725 . . . . . . . . . . . . . . . . . 18 (((1st𝑏) ∈ Word 𝐴 ∧ (2nd𝑏) ∈ (0...(♯‘(1st𝑏)))) → (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) = (1st𝑏))
9484, 92, 93syl2anc 593 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (((1st𝑏) prefix (2nd𝑏)) ++ ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) = (1st𝑏))
9578, 94eqtr2d 2800 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (1st𝑏) = ((1st𝑎) ++ (2nd𝑎)))
9676fveq2d 6873 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘(1st𝑎)) = (♯‘((1st𝑏) prefix (2nd𝑏))))
97 pfxlen 14699 . . . . . . . . . . . . . . . . . 18 (((1st𝑏) ∈ Word 𝐴 ∧ (2nd𝑏) ∈ (0...(♯‘(1st𝑏)))) → (♯‘((1st𝑏) prefix (2nd𝑏))) = (2nd𝑏))
9884, 92, 97syl2anc 593 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (♯‘((1st𝑏) prefix (2nd𝑏))) = (2nd𝑏))
9996, 98eqtr2d 2800 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → (2nd𝑏) = (♯‘(1st𝑎)))
10095, 99jca 519 . . . . . . . . . . . . . . 15 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑎) = ((1st𝑏) prefix (2nd𝑏))) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) → ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))
101100anasss 470 . . . . . . . . . . . . . 14 ((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))) → ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))
102 simplr 778 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑏) = ((1st𝑎) ++ (2nd𝑎)))
103 simpr 488 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑏) = (♯‘(1st𝑎)))
104102, 103oveq12d 7416 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑏) prefix (2nd𝑏)) = (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))))
1058ad5antr 744 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑎) ∈ Word 𝐴)
10610ad5antr 744 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑎) ∈ Word 𝐴)
107 pfxccat1 14717 . . . . . . . . . . . . . . . . . 18 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))) = (1st𝑎))
108105, 106, 107syl2anc 593 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (((1st𝑎) ++ (2nd𝑎)) prefix (♯‘(1st𝑎))) = (1st𝑎))
109104, 108eqtr2d 2800 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (1st𝑎) = ((1st𝑏) prefix (2nd𝑏)))
110102fveq2d 6873 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘(1st𝑏)) = (♯‘((1st𝑎) ++ (2nd𝑎))))
111105, 106, 31syl2anc 593 . . . . . . . . . . . . . . . . . . . 20 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘((1st𝑎) ++ (2nd𝑎))) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
112110, 111eqtrd 2799 . . . . . . . . . . . . . . . . . . 19 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (♯‘(1st𝑏)) = ((♯‘(1st𝑎)) + (♯‘(2nd𝑎))))
113103, 112opeq12d 4841 . . . . . . . . . . . . . . . . . 18 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ⟨(2nd𝑏), (♯‘(1st𝑏))⟩ = ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩)
114102, 113oveq12d 7416 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩) = (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩))
115 swrdccat2 14685 . . . . . . . . . . . . . . . . . 18 (((1st𝑎) ∈ Word 𝐴 ∧ (2nd𝑎) ∈ Word 𝐴) → (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩) = (2nd𝑎))
116105, 106, 115syl2anc 593 . . . . . . . . . . . . . . . . 17 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (((1st𝑎) ++ (2nd𝑎)) substr ⟨(♯‘(1st𝑎)), ((♯‘(1st𝑎)) + (♯‘(2nd𝑎)))⟩) = (2nd𝑎))
117114, 116eqtr2d 2800 . . . . . . . . . . . . . . . 16 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))
118109, 117jca 519 . . . . . . . . . . . . . . 15 (((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ (1st𝑏) = ((1st𝑎) ++ (2nd𝑎))) ∧ (2nd𝑏) = (♯‘(1st𝑎))) → ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
119118anasss 470 . . . . . . . . . . . . . 14 ((((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) ∧ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))) → ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)))
120101, 119impbida 810 . . . . . . . . . . . . 13 (((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ 𝑢 ∈ Word 𝐴) ∧ 𝑛 ∈ (0...(♯‘𝑢))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
121120anasss 470 . . . . . . . . . . . 12 ((((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏 = ⟨𝑢, 𝑛⟩) ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
122121expl 461 . . . . . . . . . . 11 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
123122adantlr 725 . . . . . . . . . 10 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → ((𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
124123exlimdv 1955 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢)))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎))))))
125124imp 410 . . . . . . . 8 ((((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ ∃𝑛(𝑏 = ⟨𝑢, 𝑛⟩ ∧ (𝑢 ∈ Word 𝐴𝑛 ∈ (0...(♯‘𝑢))))) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
12675, 125exlimddv 1957 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)) ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
127 eqop 8014 . . . . . . . 8 (𝑎 ∈ (Word 𝐴 × Word 𝐴) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))))
128127adantl 485 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ ((1st𝑎) = ((1st𝑏) prefix (2nd𝑏)) ∧ (2nd𝑎) = ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩))))
129 snssi 4746 . . . . . . . . . . . . 13 (𝑤 ∈ Word 𝐴 → {𝑤} ⊆ Word 𝐴)
130129adantl 485 . . . . . . . . . . . 12 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑤 ∈ Word 𝐴) → {𝑤} ⊆ Word 𝐴)
131 fz0ssnn0 13629 . . . . . . . . . . . 12 (0...(♯‘𝑤)) ⊆ ℕ0
132 xpss12 5664 . . . . . . . . . . . 12 (({𝑤} ⊆ Word 𝐴 ∧ (0...(♯‘𝑤)) ⊆ ℕ0) → ({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
133130, 131, 132sylancl 595 . . . . . . . . . . 11 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑤 ∈ Word 𝐴) → ({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
134133iunssd 5010 . . . . . . . . . 10 ((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
135134adantlr 725 . . . . . . . . 9 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑤 ∈ Word 𝐴({𝑤} × (0...(♯‘𝑤))) ⊆ (Word 𝐴 × ℕ0))
136135, 64sseldd 3939 . . . . . . . 8 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → 𝑏 ∈ (Word 𝐴 × ℕ0))
137 eqop 8014 . . . . . . . 8 (𝑏 ∈ (Word 𝐴 × ℕ0) → (𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
138136, 137syl 17 . . . . . . 7 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩ ↔ ((1st𝑏) = ((1st𝑎) ++ (2nd𝑎)) ∧ (2nd𝑏) = (♯‘(1st𝑎)))))
139126, 128, 1383bitr4d 313 . . . . . 6 (((𝜑𝑏𝑈) ∧ 𝑎 ∈ (Word 𝐴 × Word 𝐴)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
140139an32s 662 . . . . 5 (((𝜑𝑎 ∈ (Word 𝐴 × Word 𝐴)) ∧ 𝑏𝑈) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
141140anasss 470 . . . 4 ((𝜑 ∧ (𝑎 ∈ (Word 𝐴 × Word 𝐴) ∧ 𝑏𝑈)) → (𝑎 = ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩ ↔ 𝑏 = ⟨((1st𝑎) ++ (2nd𝑎)), (♯‘(1st𝑎))⟩))
1421, 39, 63, 141f1ocnv2d 7651 . . 3 (𝜑 → (𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈𝐹 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩)))
143142simpld 498 . 2 (𝜑𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈)
144142simprd 499 . . 3 (𝜑𝐹 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩))
145 gsumwrd2dccatlem.g . . 3 𝐺 = (𝑏𝑈 ↦ ⟨((1st𝑏) prefix (2nd𝑏)), ((1st𝑏) substr ⟨(2nd𝑏), (♯‘(1st𝑏))⟩)⟩)
146144, 145eqtr4di 2817 . 2 (𝜑𝐹 = 𝐺)
147143, 146jca 519 1 (𝜑 → (𝐹:(Word 𝐴 × Word 𝐴)–1-1-onto𝑈𝐹 = 𝐺))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wb 208  wa 399   = wceq 1562  wex 1801  wcel 2144  wrex 3088  wss 3906  {csn 4584  cop 4590   ciun 4951   class class class wbr 5102  cmpt 5183   × cxp 5647  ccnv 5648  1-1-ontowf1o 6522  cfv 6523  (class class class)co 7398  1st c1st 7970  2nd c2nd 7971  0cc0 11075   + caddc 11078  cle 11219  0cn0 12483  ...cfz 13514  chash 14345  Word cword 14528   ++ cconcat 14585   substr csubstr 14656   prefix cpfx 14686
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1817  ax-4 1831  ax-5 1932  ax-6 1989  ax-7 2030  ax-8 2146  ax-9 2154  ax-10 2177  ax-11 2193  ax-12 2214  ax-ext 2736  ax-rep 5229  ax-sep 5248  ax-nul 5258  ax-pow 5324  ax-pr 5392  ax-un 7720  ax-cnex 11131  ax-resscn 11132  ax-1cn 11133  ax-icn 11134  ax-addcl 11135  ax-addrcl 11136  ax-mulcl 11137  ax-mulrcl 11138  ax-mulcom 11139  ax-addass 11140  ax-mulass 11141  ax-distr 11142  ax-i2m1 11143  ax-1ne0 11144  ax-1rid 11145  ax-rnegex 11146  ax-rrecex 11147  ax-cnre 11148  ax-pre-lttri 11149  ax-pre-lttrn 11150  ax-pre-ltadd 11151  ax-pre-mulgt0 11152
This theorem depends on definitions:  df-bi 209  df-an 400  df-or 859  df-3or 1100  df-3an 1101  df-tru 1565  df-fal 1575  df-ex 1802  df-nf 1806  df-sb 2093  df-mo 2568  df-eu 2598  df-clab 2743  df-cleq 2756  df-clel 2839  df-nfc 2913  df-ne 2960  df-nel 3064  df-ral 3079  df-rex 3089  df-reu 3370  df-rab 3417  df-v 3458  df-sbc 3747  df-csb 3855  df-dif 3909  df-un 3911  df-in 3913  df-ss 3923  df-pss 3926  df-nul 4288  df-if 4483  df-pw 4559  df-sn 4585  df-pr 4587  df-op 4591  df-uni 4868  df-int 4908  df-iun 4953  df-br 5103  df-opab 5165  df-mpt 5184  df-tr 5210  df-id 5544  df-eprel 5549  df-po 5557  df-so 5558  df-fr 5602  df-we 5604  df-xp 5655  df-rel 5656  df-cnv 5657  df-co 5658  df-dm 5659  df-rn 5660  df-res 5661  df-ima 5662  df-pred 6290  df-ord 6351  df-on 6352  df-lim 6353  df-suc 6354  df-iota 6479  df-fun 6525  df-fn 6526  df-f 6527  df-f1 6528  df-fo 6529  df-f1o 6530  df-fv 6531  df-riota 7355  df-ov 7401  df-oprab 7402  df-mpo 7403  df-om 7849  df-1st 7972  df-2nd 7973  df-frecs 8264  df-wrecs 8295  df-recs 8344  df-rdg 8383  df-1o 8439  df-er 8680  df-en 8930  df-dom 8931  df-sdom 8932  df-fin 8933  df-card 9899  df-pnf 11220  df-mnf 11221  df-xr 11222  df-ltxr 11223  df-le 11224  df-sub 11418  df-neg 11419  df-nn 12213  df-n0 12484  df-z 12571  df-uz 12842  df-fz 13515  df-fzo 13662  df-hash 14346  df-word 14529  df-concat 14586  df-substr 14657  df-pfx 14687
This theorem is referenced by:  gsumwrd2dccat  33260
  Copyright terms: Public domain W3C validator