Metamath Proof Explorer


Theorem efgsres

Description: An initial segment of an extension sequence is an extension sequence. (Contributed by Mario Carneiro, 1-Oct-2015) (Proof shortened by AV, 3-Nov-2022)

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 ) ) )
Assertion efgsres ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ dom 𝑆 )

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 1 2 3 4 5 6 efgsdm ( 𝐹 ∈ dom 𝑆 ↔ ( 𝐹 ∈ ( Word 𝑊 ∖ { ∅ } ) ∧ ( 𝐹 ‘ 0 ) ∈ 𝐷 ∧ ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) ) )
8 7 simp1bi ( 𝐹 ∈ dom 𝑆𝐹 ∈ ( Word 𝑊 ∖ { ∅ } ) )
9 8 adantr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 𝐹 ∈ ( Word 𝑊 ∖ { ∅ } ) )
10 9 eldifad ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 𝐹 ∈ Word 𝑊 )
11 fz1ssfz0 ( 1 ... ( ♯ ‘ 𝐹 ) ) ⊆ ( 0 ... ( ♯ ‘ 𝐹 ) )
12 simpr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) )
13 11 12 sseldi ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 𝑁 ∈ ( 0 ... ( ♯ ‘ 𝐹 ) ) )
14 pfxres ( ( 𝐹 ∈ Word 𝑊𝑁 ∈ ( 0 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 prefix 𝑁 ) = ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) )
15 10 13 14 syl2anc ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 prefix 𝑁 ) = ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) )
16 pfxcl ( 𝐹 ∈ Word 𝑊 → ( 𝐹 prefix 𝑁 ) ∈ Word 𝑊 )
17 10 16 syl ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 prefix 𝑁 ) ∈ Word 𝑊 )
18 15 17 eqeltrrd ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ Word 𝑊 )
19 pfxlen ( ( 𝐹 ∈ Word 𝑊𝑁 ∈ ( 0 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) = 𝑁 )
20 10 13 19 syl2anc ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) = 𝑁 )
21 elfznn ( 𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) → 𝑁 ∈ ℕ )
22 21 adantl ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 𝑁 ∈ ℕ )
23 20 22 eqeltrd ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) ∈ ℕ )
24 wrdfin ( ( 𝐹 prefix 𝑁 ) ∈ Word 𝑊 → ( 𝐹 prefix 𝑁 ) ∈ Fin )
25 hashnncl ( ( 𝐹 prefix 𝑁 ) ∈ Fin → ( ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) ∈ ℕ ↔ ( 𝐹 prefix 𝑁 ) ≠ ∅ ) )
26 17 24 25 3syl ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) ∈ ℕ ↔ ( 𝐹 prefix 𝑁 ) ≠ ∅ ) )
27 23 26 mpbid ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 prefix 𝑁 ) ≠ ∅ )
28 15 27 eqnetrrd ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ≠ ∅ )
29 eldifsn ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ ( Word 𝑊 ∖ { ∅ } ) ↔ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ Word 𝑊 ∧ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ≠ ∅ ) )
30 18 28 29 sylanbrc ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ ( Word 𝑊 ∖ { ∅ } ) )
31 lbfzo0 ( 0 ∈ ( 0 ..^ 𝑁 ) ↔ 𝑁 ∈ ℕ )
32 22 31 sylibr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → 0 ∈ ( 0 ..^ 𝑁 ) )
33 32 fvresd ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 0 ) = ( 𝐹 ‘ 0 ) )
34 7 simp2bi ( 𝐹 ∈ dom 𝑆 → ( 𝐹 ‘ 0 ) ∈ 𝐷 )
35 34 adantr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ‘ 0 ) ∈ 𝐷 )
36 33 35 eqeltrd ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 0 ) ∈ 𝐷 )
37 elfzuz3 ( 𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) → ( ♯ ‘ 𝐹 ) ∈ ( ℤ𝑁 ) )
38 37 adantl ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ 𝐹 ) ∈ ( ℤ𝑁 ) )
39 fzoss2 ( ( ♯ ‘ 𝐹 ) ∈ ( ℤ𝑁 ) → ( 1 ..^ 𝑁 ) ⊆ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) )
40 38 39 syl ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 1 ..^ 𝑁 ) ⊆ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) )
41 7 simp3bi ( 𝐹 ∈ dom 𝑆 → ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
42 41 adantr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
43 ssralv ( ( 1 ..^ 𝑁 ) ⊆ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) → ( ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ 𝐹 ) ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) → ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) ) )
44 40 42 43 sylc ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
45 fzo0ss1 ( 1 ..^ 𝑁 ) ⊆ ( 0 ..^ 𝑁 )
46 45 sseli ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑖 ∈ ( 0 ..^ 𝑁 ) )
47 46 fvresd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) = ( 𝐹𝑖 ) )
48 elfzoel2 ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑁 ∈ ℤ )
49 peano2zm ( 𝑁 ∈ ℤ → ( 𝑁 − 1 ) ∈ ℤ )
50 48 49 syl ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( 𝑁 − 1 ) ∈ ℤ )
51 uzid ( 𝑁 ∈ ℤ → 𝑁 ∈ ( ℤ𝑁 ) )
52 48 51 syl ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑁 ∈ ( ℤ𝑁 ) )
53 48 zcnd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑁 ∈ ℂ )
54 ax-1cn 1 ∈ ℂ
55 npcan ( ( 𝑁 ∈ ℂ ∧ 1 ∈ ℂ ) → ( ( 𝑁 − 1 ) + 1 ) = 𝑁 )
56 53 54 55 sylancl ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( ( 𝑁 − 1 ) + 1 ) = 𝑁 )
57 56 fveq2d ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( ℤ ‘ ( ( 𝑁 − 1 ) + 1 ) ) = ( ℤ𝑁 ) )
58 52 57 eleqtrrd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑁 ∈ ( ℤ ‘ ( ( 𝑁 − 1 ) + 1 ) ) )
59 peano2uzr ( ( ( 𝑁 − 1 ) ∈ ℤ ∧ 𝑁 ∈ ( ℤ ‘ ( ( 𝑁 − 1 ) + 1 ) ) ) → 𝑁 ∈ ( ℤ ‘ ( 𝑁 − 1 ) ) )
60 50 58 59 syl2anc ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → 𝑁 ∈ ( ℤ ‘ ( 𝑁 − 1 ) ) )
61 fzoss2 ( 𝑁 ∈ ( ℤ ‘ ( 𝑁 − 1 ) ) → ( 0 ..^ ( 𝑁 − 1 ) ) ⊆ ( 0 ..^ 𝑁 ) )
62 60 61 syl ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( 0 ..^ ( 𝑁 − 1 ) ) ⊆ ( 0 ..^ 𝑁 ) )
63 elfzo1elm1fzo0 ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( 𝑖 − 1 ) ∈ ( 0 ..^ ( 𝑁 − 1 ) ) )
64 62 63 sseldd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( 𝑖 − 1 ) ∈ ( 0 ..^ 𝑁 ) )
65 64 fvresd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) = ( 𝐹 ‘ ( 𝑖 − 1 ) ) )
66 65 fveq2d ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) = ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
67 66 rneqd ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) = ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
68 47 67 eleq12d ( 𝑖 ∈ ( 1 ..^ 𝑁 ) → ( ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) ↔ ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) ) )
69 68 ralbiia ( ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) ↔ ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( 𝐹𝑖 ) ∈ ran ( 𝑇 ‘ ( 𝐹 ‘ ( 𝑖 − 1 ) ) ) )
70 44 69 sylibr ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) )
71 15 fveq2d ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ ( 𝐹 prefix 𝑁 ) ) = ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) )
72 71 20 eqtr3d ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) = 𝑁 )
73 72 oveq2d ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 1 ..^ ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) ) = ( 1 ..^ 𝑁 ) )
74 73 raleqdv ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) ↔ ∀ 𝑖 ∈ ( 1 ..^ 𝑁 ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) ) )
75 70 74 mpbird ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) )
76 1 2 3 4 5 6 efgsdm ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ dom 𝑆 ↔ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ ( Word 𝑊 ∖ { ∅ } ) ∧ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 0 ) ∈ 𝐷 ∧ ∀ 𝑖 ∈ ( 1 ..^ ( ♯ ‘ ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ) ) ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ 𝑖 ) ∈ ran ( 𝑇 ‘ ( ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ‘ ( 𝑖 − 1 ) ) ) ) )
77 30 36 75 76 syl3anbrc ( ( 𝐹 ∈ dom 𝑆𝑁 ∈ ( 1 ... ( ♯ ‘ 𝐹 ) ) ) → ( 𝐹 ↾ ( 0 ..^ 𝑁 ) ) ∈ dom 𝑆 )