Metamath Proof Explorer


Theorem efgredlemg

Description: Lemma for efgred . (Contributed by Mario Carneiro, 4-Jun-2016)

Ref Expression
Hypotheses efgval.w 𝑊 = ( I ‘ Word ( 𝐼 × 2o ) )
efgval.r = ( ~FG𝐼 )
efgval2.m 𝑀 = ( 𝑦𝐼 , 𝑧 ∈ 2o ↦ ⟨ 𝑦 , ( 1o𝑧 ) ⟩ )
efgval2.t 𝑇 = ( 𝑣𝑊 ↦ ( 𝑛 ∈ ( 0 ... ( ♯ ‘ 𝑣 ) ) , 𝑤 ∈ ( 𝐼 × 2o ) ↦ ( 𝑣 splice ⟨ 𝑛 , 𝑛 , ⟨“ 𝑤 ( 𝑀𝑤 ) ”⟩ ⟩ ) ) )
efgred.d 𝐷 = ( 𝑊 𝑥𝑊 ran ( 𝑇𝑥 ) )
efgred.s 𝑆 = ( 𝑚 ∈ { 𝑡 ∈ ( Word 𝑊 ∖ { ∅ } ) ∣ ( ( 𝑡 ‘ 0 ) ∈ 𝐷 ∧ ∀ 𝑘 ∈ ( 1 ..^ ( ♯ ‘ 𝑡 ) ) ( 𝑡𝑘 ) ∈ ran ( 𝑇 ‘ ( 𝑡 ‘ ( 𝑘 − 1 ) ) ) ) } ↦ ( 𝑚 ‘ ( ( ♯ ‘ 𝑚 ) − 1 ) ) )
efgredlem.1 ( 𝜑 → ∀ 𝑎 ∈ dom 𝑆𝑏 ∈ dom 𝑆 ( ( ♯ ‘ ( 𝑆𝑎 ) ) < ( ♯ ‘ ( 𝑆𝐴 ) ) → ( ( 𝑆𝑎 ) = ( 𝑆𝑏 ) → ( 𝑎 ‘ 0 ) = ( 𝑏 ‘ 0 ) ) ) )
efgredlem.2 ( 𝜑𝐴 ∈ dom 𝑆 )
efgredlem.3 ( 𝜑𝐵 ∈ dom 𝑆 )
efgredlem.4 ( 𝜑 → ( 𝑆𝐴 ) = ( 𝑆𝐵 ) )
efgredlem.5 ( 𝜑 → ¬ ( 𝐴 ‘ 0 ) = ( 𝐵 ‘ 0 ) )
efgredlemb.k 𝐾 = ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 )
efgredlemb.l 𝐿 = ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 )
efgredlemb.p ( 𝜑𝑃 ∈ ( 0 ... ( ♯ ‘ ( 𝐴𝐾 ) ) ) )
efgredlemb.q ( 𝜑𝑄 ∈ ( 0 ... ( ♯ ‘ ( 𝐵𝐿 ) ) ) )
efgredlemb.u ( 𝜑𝑈 ∈ ( 𝐼 × 2o ) )
efgredlemb.v ( 𝜑𝑉 ∈ ( 𝐼 × 2o ) )
efgredlemb.6 ( 𝜑 → ( 𝑆𝐴 ) = ( 𝑃 ( 𝑇 ‘ ( 𝐴𝐾 ) ) 𝑈 ) )
efgredlemb.7 ( 𝜑 → ( 𝑆𝐵 ) = ( 𝑄 ( 𝑇 ‘ ( 𝐵𝐿 ) ) 𝑉 ) )
Assertion efgredlemg ( 𝜑 → ( ♯ ‘ ( 𝐴𝐾 ) ) = ( ♯ ‘ ( 𝐵𝐿 ) ) )

Proof

Step Hyp Ref Expression
1 efgval.w 𝑊 = ( I ‘ Word ( 𝐼 × 2o ) )
2 efgval.r = ( ~FG𝐼 )
3 efgval2.m 𝑀 = ( 𝑦𝐼 , 𝑧 ∈ 2o ↦ ⟨ 𝑦 , ( 1o𝑧 ) ⟩ )
4 efgval2.t 𝑇 = ( 𝑣𝑊 ↦ ( 𝑛 ∈ ( 0 ... ( ♯ ‘ 𝑣 ) ) , 𝑤 ∈ ( 𝐼 × 2o ) ↦ ( 𝑣 splice ⟨ 𝑛 , 𝑛 , ⟨“ 𝑤 ( 𝑀𝑤 ) ”⟩ ⟩ ) ) )
5 efgred.d 𝐷 = ( 𝑊 𝑥𝑊 ran ( 𝑇𝑥 ) )
6 efgred.s 𝑆 = ( 𝑚 ∈ { 𝑡 ∈ ( Word 𝑊 ∖ { ∅ } ) ∣ ( ( 𝑡 ‘ 0 ) ∈ 𝐷 ∧ ∀ 𝑘 ∈ ( 1 ..^ ( ♯ ‘ 𝑡 ) ) ( 𝑡𝑘 ) ∈ ran ( 𝑇 ‘ ( 𝑡 ‘ ( 𝑘 − 1 ) ) ) ) } ↦ ( 𝑚 ‘ ( ( ♯ ‘ 𝑚 ) − 1 ) ) )
7 efgredlem.1 ( 𝜑 → ∀ 𝑎 ∈ dom 𝑆𝑏 ∈ dom 𝑆 ( ( ♯ ‘ ( 𝑆𝑎 ) ) < ( ♯ ‘ ( 𝑆𝐴 ) ) → ( ( 𝑆𝑎 ) = ( 𝑆𝑏 ) → ( 𝑎 ‘ 0 ) = ( 𝑏 ‘ 0 ) ) ) )
8 efgredlem.2 ( 𝜑𝐴 ∈ dom 𝑆 )
9 efgredlem.3 ( 𝜑𝐵 ∈ dom 𝑆 )
10 efgredlem.4 ( 𝜑 → ( 𝑆𝐴 ) = ( 𝑆𝐵 ) )
11 efgredlem.5 ( 𝜑 → ¬ ( 𝐴 ‘ 0 ) = ( 𝐵 ‘ 0 ) )
12 efgredlemb.k 𝐾 = ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 )
13 efgredlemb.l 𝐿 = ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 )
14 efgredlemb.p ( 𝜑𝑃 ∈ ( 0 ... ( ♯ ‘ ( 𝐴𝐾 ) ) ) )
15 efgredlemb.q ( 𝜑𝑄 ∈ ( 0 ... ( ♯ ‘ ( 𝐵𝐿 ) ) ) )
16 efgredlemb.u ( 𝜑𝑈 ∈ ( 𝐼 × 2o ) )
17 efgredlemb.v ( 𝜑𝑉 ∈ ( 𝐼 × 2o ) )
18 efgredlemb.6 ( 𝜑 → ( 𝑆𝐴 ) = ( 𝑃 ( 𝑇 ‘ ( 𝐴𝐾 ) ) 𝑈 ) )
19 efgredlemb.7 ( 𝜑 → ( 𝑆𝐵 ) = ( 𝑄 ( 𝑇 ‘ ( 𝐵𝐿 ) ) 𝑉 ) )
20 fviss ( I ‘ Word ( 𝐼 × 2o ) ) ⊆ Word ( 𝐼 × 2o )
21 1 20 eqsstri 𝑊 ⊆ Word ( 𝐼 × 2o )
22 1 2 3 4 5 6 7 8 9 10 11 12 13 efgredlemf ( 𝜑 → ( ( 𝐴𝐾 ) ∈ 𝑊 ∧ ( 𝐵𝐿 ) ∈ 𝑊 ) )
23 22 simpld ( 𝜑 → ( 𝐴𝐾 ) ∈ 𝑊 )
24 21 23 sselid ( 𝜑 → ( 𝐴𝐾 ) ∈ Word ( 𝐼 × 2o ) )
25 lencl ( ( 𝐴𝐾 ) ∈ Word ( 𝐼 × 2o ) → ( ♯ ‘ ( 𝐴𝐾 ) ) ∈ ℕ0 )
26 24 25 syl ( 𝜑 → ( ♯ ‘ ( 𝐴𝐾 ) ) ∈ ℕ0 )
27 26 nn0cnd ( 𝜑 → ( ♯ ‘ ( 𝐴𝐾 ) ) ∈ ℂ )
28 22 simprd ( 𝜑 → ( 𝐵𝐿 ) ∈ 𝑊 )
29 21 28 sselid ( 𝜑 → ( 𝐵𝐿 ) ∈ Word ( 𝐼 × 2o ) )
30 lencl ( ( 𝐵𝐿 ) ∈ Word ( 𝐼 × 2o ) → ( ♯ ‘ ( 𝐵𝐿 ) ) ∈ ℕ0 )
31 29 30 syl ( 𝜑 → ( ♯ ‘ ( 𝐵𝐿 ) ) ∈ ℕ0 )
32 31 nn0cnd ( 𝜑 → ( ♯ ‘ ( 𝐵𝐿 ) ) ∈ ℂ )
33 2cnd ( 𝜑 → 2 ∈ ℂ )
34 1 2 3 4 5 6 7 8 9 10 11 efgredlema ( 𝜑 → ( ( ( ♯ ‘ 𝐴 ) − 1 ) ∈ ℕ ∧ ( ( ♯ ‘ 𝐵 ) − 1 ) ∈ ℕ ) )
35 34 simpld ( 𝜑 → ( ( ♯ ‘ 𝐴 ) − 1 ) ∈ ℕ )
36 1 2 3 4 5 6 efgsdmi ( ( 𝐴 ∈ dom 𝑆 ∧ ( ( ♯ ‘ 𝐴 ) − 1 ) ∈ ℕ ) → ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐴 ‘ ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 ) ) ) )
37 8 35 36 syl2anc ( 𝜑 → ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐴 ‘ ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 ) ) ) )
38 12 fveq2i ( 𝐴𝐾 ) = ( 𝐴 ‘ ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 ) )
39 38 fveq2i ( 𝑇 ‘ ( 𝐴𝐾 ) ) = ( 𝑇 ‘ ( 𝐴 ‘ ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 ) ) )
40 39 rneqi ran ( 𝑇 ‘ ( 𝐴𝐾 ) ) = ran ( 𝑇 ‘ ( 𝐴 ‘ ( ( ( ♯ ‘ 𝐴 ) − 1 ) − 1 ) ) )
41 37 40 eleqtrrdi ( 𝜑 → ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐴𝐾 ) ) )
42 1 2 3 4 efgtlen ( ( ( 𝐴𝐾 ) ∈ 𝑊 ∧ ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐴𝐾 ) ) ) → ( ♯ ‘ ( 𝑆𝐴 ) ) = ( ( ♯ ‘ ( 𝐴𝐾 ) ) + 2 ) )
43 23 41 42 syl2anc ( 𝜑 → ( ♯ ‘ ( 𝑆𝐴 ) ) = ( ( ♯ ‘ ( 𝐴𝐾 ) ) + 2 ) )
44 34 simprd ( 𝜑 → ( ( ♯ ‘ 𝐵 ) − 1 ) ∈ ℕ )
45 1 2 3 4 5 6 efgsdmi ( ( 𝐵 ∈ dom 𝑆 ∧ ( ( ♯ ‘ 𝐵 ) − 1 ) ∈ ℕ ) → ( 𝑆𝐵 ) ∈ ran ( 𝑇 ‘ ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) ) ) )
46 9 44 45 syl2anc ( 𝜑 → ( 𝑆𝐵 ) ∈ ran ( 𝑇 ‘ ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) ) ) )
47 10 46 eqeltrd ( 𝜑 → ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) ) ) )
48 13 fveq2i ( 𝐵𝐿 ) = ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) )
49 48 fveq2i ( 𝑇 ‘ ( 𝐵𝐿 ) ) = ( 𝑇 ‘ ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) ) )
50 49 rneqi ran ( 𝑇 ‘ ( 𝐵𝐿 ) ) = ran ( 𝑇 ‘ ( 𝐵 ‘ ( ( ( ♯ ‘ 𝐵 ) − 1 ) − 1 ) ) )
51 47 50 eleqtrrdi ( 𝜑 → ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐵𝐿 ) ) )
52 1 2 3 4 efgtlen ( ( ( 𝐵𝐿 ) ∈ 𝑊 ∧ ( 𝑆𝐴 ) ∈ ran ( 𝑇 ‘ ( 𝐵𝐿 ) ) ) → ( ♯ ‘ ( 𝑆𝐴 ) ) = ( ( ♯ ‘ ( 𝐵𝐿 ) ) + 2 ) )
53 28 51 52 syl2anc ( 𝜑 → ( ♯ ‘ ( 𝑆𝐴 ) ) = ( ( ♯ ‘ ( 𝐵𝐿 ) ) + 2 ) )
54 43 53 eqtr3d ( 𝜑 → ( ( ♯ ‘ ( 𝐴𝐾 ) ) + 2 ) = ( ( ♯ ‘ ( 𝐵𝐿 ) ) + 2 ) )
55 27 32 33 54 addcan2ad ( 𝜑 → ( ♯ ‘ ( 𝐴𝐾 ) ) = ( ♯ ‘ ( 𝐵𝐿 ) ) )