Metamath Proof Explorer


Theorem sseqf

Description: A strong recursive sequence is a function over the nonnegative integers. (Contributed by Thierry Arnoux, 23-Apr-2019) (Proof shortened by AV, 7-Mar-2022)

Ref Expression
Hypotheses sseqval.1 ⊢ φ → S ∈ V
sseqval.2 ⊢ φ → M ∈ Word S
sseqval.3 ⊢ W = Word S ∩ . -1 ℤ ≥ M
sseqval.4 ⊢ φ → F : W ⟶ S
Assertion sseqf ⊢ φ → M seq str F : ℕ 0 ⟶ S

Proof

Step Hyp Ref Expression
1 sseqval.1 ⊢ φ → S ∈ V
2 sseqval.2 ⊢ φ → M ∈ Word S
3 sseqval.3 ⊢ W = Word S ∩ . -1 ℤ ≥ M
4 sseqval.4 ⊢ φ → F : W ⟶ S
5 wrdf ⊢ M ∈ Word S → M : 0 ..^ M ⟶ S
6 2 5 syl ⊢ φ → M : 0 ..^ M ⟶ S
7 vex ⊢ w ∈ V
8 7 a1i ⊢ φ ∧ w ∈ W ∖ ∅ → w ∈ V
9 fvex ⊢ x ⁡ x − 1 ∈ V
10 df-lsw ⊢ lastS = x ∈ V ⟼ x ⁡ x − 1
11 9 10 dmmpti ⊢ dom ⁡ lastS = V
12 8 11 eleqtrrdi ⊢ φ ∧ w ∈ W ∖ ∅ → w ∈ dom ⁡ lastS
13 eldifsn ⊢ w ∈ W ∖ ∅ ↔ w ∈ W ∧ w ≠ ∅
14 inss1 ⊢ Word S ∩ . -1 ℤ ≥ M ⊆ Word S
15 3 14 eqsstri ⊢ W ⊆ Word S
16 15 sseli ⊢ w ∈ W → w ∈ Word S
17 lswcl ⊢ w ∈ Word S ∧ w ≠ ∅ → lastS ⁡ w ∈ S
18 16 17 sylan ⊢ w ∈ W ∧ w ≠ ∅ → lastS ⁡ w ∈ S
19 13 18 sylbi ⊢ w ∈ W ∖ ∅ → lastS ⁡ w ∈ S
20 19 adantl ⊢ φ ∧ w ∈ W ∖ ∅ → lastS ⁡ w ∈ S
21 12 20 jca ⊢ φ ∧ w ∈ W ∖ ∅ → w ∈ dom ⁡ lastS ∧ lastS ⁡ w ∈ S
22 21 ralrimiva ⊢ φ → ∀ w ∈ W ∖ ∅ w ∈ dom ⁡ lastS ∧ lastS ⁡ w ∈ S
23 9 10 fnmpti ⊢ lastS Fn V
24 fnfun ⊢ lastS Fn V → Fun ⁡ lastS
25 ffvresb ⊢ Fun ⁡ lastS → lastS ↾ W ∖ ∅ : W ∖ ∅ ⟶ S ↔ ∀ w ∈ W ∖ ∅ w ∈ dom ⁡ lastS ∧ lastS ⁡ w ∈ S
26 23 24 25 mp2b ⊢ lastS ↾ W ∖ ∅ : W ∖ ∅ ⟶ S ↔ ∀ w ∈ W ∖ ∅ w ∈ dom ⁡ lastS ∧ lastS ⁡ w ∈ S
27 22 26 sylibr ⊢ φ → lastS ↾ W ∖ ∅ : W ∖ ∅ ⟶ S
28 eqid ⊢ ℤ ≥ M = ℤ ≥ M
29 lencl ⊢ M ∈ Word S → M ∈ ℕ 0
30 29 nn0zd ⊢ M ∈ Word S → M ∈ ℤ
31 2 30 syl ⊢ φ → M ∈ ℤ
32 ovex ⊢ M ++ ⟨“ F ⁡ M ”⟩ ∈ V
33 simpr ⊢ φ ∧ a ∈ ℤ ≥ M → a ∈ ℤ ≥ M
34 2 29 syl ⊢ φ → M ∈ ℕ 0
35 34 adantr ⊢ φ ∧ a ∈ ℤ ≥ M → M ∈ ℕ 0
36 elnn0uz ⊢ M ∈ ℕ 0 ↔ M ∈ ℤ ≥ 0
37 35 36 sylib ⊢ φ ∧ a ∈ ℤ ≥ M → M ∈ ℤ ≥ 0
38 uztrn ⊢ a ∈ ℤ ≥ M ∧ M ∈ ℤ ≥ 0 → a ∈ ℤ ≥ 0
39 33 37 38 syl2anc ⊢ φ ∧ a ∈ ℤ ≥ M → a ∈ ℤ ≥ 0
40 nn0uz ⊢ ℕ 0 = ℤ ≥ 0
41 39 40 eleqtrrdi ⊢ φ ∧ a ∈ ℤ ≥ M → a ∈ ℕ 0
42 fvconst2g ⊢ M ++ ⟨“ F ⁡ M ”⟩ ∈ V ∧ a ∈ ℕ 0 → ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ ⁡ a = M ++ ⟨“ F ⁡ M ”⟩
43 32 41 42 sylancr ⊢ φ ∧ a ∈ ℤ ≥ M → ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ ⁡ a = M ++ ⟨“ F ⁡ M ”⟩
44 1 2 3 4 sseqmw ⊢ φ → M ∈ W
45 4 44 ffvelcdmd ⊢ φ → F ⁡ M ∈ S
46 45 s1cld ⊢ φ → ⟨“ F ⁡ M ”⟩ ∈ Word S
47 ccatcl ⊢ M ∈ Word S ∧ ⟨“ F ⁡ M ”⟩ ∈ Word S → M ++ ⟨“ F ⁡ M ”⟩ ∈ Word S
48 2 46 47 syl2anc ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ Word S
49 32 a1i ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ V
50 ccatws1len ⊢ M ∈ Word S → M ++ ⟨“ F ⁡ M ”⟩ = M + 1
51 2 50 syl ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ = M + 1
52 uzid ⊢ M ∈ ℤ → M ∈ ℤ ≥ M
53 peano2uz ⊢ M ∈ ℤ ≥ M → M + 1 ∈ ℤ ≥ M
54 31 52 53 3syl ⊢ φ → M + 1 ∈ ℤ ≥ M
55 51 54 eqeltrd ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ ℤ ≥ M
56 hashf ⊢ . : V ⟶ ℕ 0 ∪ +∞
57 ffn ⊢ . : V ⟶ ℕ 0 ∪ +∞ → . Fn V
58 elpreima ⊢ . Fn V → M ++ ⟨“ F ⁡ M ”⟩ ∈ . -1 ℤ ≥ M ↔ M ++ ⟨“ F ⁡ M ”⟩ ∈ V ∧ M ++ ⟨“ F ⁡ M ”⟩ ∈ ℤ ≥ M
59 56 57 58 mp2b ⊢ M ++ ⟨“ F ⁡ M ”⟩ ∈ . -1 ℤ ≥ M ↔ M ++ ⟨“ F ⁡ M ”⟩ ∈ V ∧ M ++ ⟨“ F ⁡ M ”⟩ ∈ ℤ ≥ M
60 49 55 59 sylanbrc ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ . -1 ℤ ≥ M
61 48 60 elind ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ Word S ∩ . -1 ℤ ≥ M
62 61 3 eleqtrrdi ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ∈ W
63 62 adantr ⊢ φ ∧ a ∈ ℤ ≥ M → M ++ ⟨“ F ⁡ M ”⟩ ∈ W
64 ccatws1n0 ⊢ M ∈ Word S → M ++ ⟨“ F ⁡ M ”⟩ ≠ ∅
65 2 64 syl ⊢ φ → M ++ ⟨“ F ⁡ M ”⟩ ≠ ∅
66 65 adantr ⊢ φ ∧ a ∈ ℤ ≥ M → M ++ ⟨“ F ⁡ M ”⟩ ≠ ∅
67 eldifsn ⊢ M ++ ⟨“ F ⁡ M ”⟩ ∈ W ∖ ∅ ↔ M ++ ⟨“ F ⁡ M ”⟩ ∈ W ∧ M ++ ⟨“ F ⁡ M ”⟩ ≠ ∅
68 63 66 67 sylanbrc ⊢ φ ∧ a ∈ ℤ ≥ M → M ++ ⟨“ F ⁡ M ”⟩ ∈ W ∖ ∅
69 43 68 eqeltrd ⊢ φ ∧ a ∈ ℤ ≥ M → ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ ⁡ a ∈ W ∖ ∅
70 eqidd ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ = x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩
71 simprl ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ ∧ x = a ∧ y = b → x = a
72 71 fveq2d ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ ∧ x = a ∧ y = b → F ⁡ x = F ⁡ a
73 72 s1eqd ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ ∧ x = a ∧ y = b → ⟨“ F ⁡ x ”⟩ = ⟨“ F ⁡ a ”⟩
74 71 73 oveq12d ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ ∧ x = a ∧ y = b → x ++ ⟨“ F ⁡ x ”⟩ = a ++ ⟨“ F ⁡ a ”⟩
75 vex ⊢ a ∈ V
76 75 a1i ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ V
77 vex ⊢ b ∈ V
78 77 a1i ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → b ∈ V
79 ovex ⊢ a ++ ⟨“ F ⁡ a ”⟩ ∈ V
80 79 a1i ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ V
81 70 74 76 78 80 ovmpod ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ b = a ++ ⟨“ F ⁡ a ”⟩
82 eldifi ⊢ a ∈ W ∖ ∅ → a ∈ W
83 82 ad2antrl ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ W
84 15 83 sselid ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ Word S
85 4 adantr ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → F : W ⟶ S
86 85 83 ffvelcdmd ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → F ⁡ a ∈ S
87 86 s1cld ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → ⟨“ F ⁡ a ”⟩ ∈ Word S
88 ccatcl ⊢ a ∈ Word S ∧ ⟨“ F ⁡ a ”⟩ ∈ Word S → a ++ ⟨“ F ⁡ a ”⟩ ∈ Word S
89 84 87 88 syl2anc ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ Word S
90 15 82 sselid ⊢ a ∈ W ∖ ∅ → a ∈ Word S
91 90 ad2antrl ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ Word S
92 ccatws1len ⊢ a ∈ Word S → a ++ ⟨“ F ⁡ a ”⟩ = a + 1
93 91 92 syl ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ = a + 1
94 83 3 eleqtrdi ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ Word S ∩ . -1 ℤ ≥ M
95 94 elin2d ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ . -1 ℤ ≥ M
96 elpreima ⊢ . Fn V → a ∈ . -1 ℤ ≥ M ↔ a ∈ V ∧ a ∈ ℤ ≥ M
97 56 57 96 mp2b ⊢ a ∈ . -1 ℤ ≥ M ↔ a ∈ V ∧ a ∈ ℤ ≥ M
98 95 97 sylib ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ∈ V ∧ a ∈ ℤ ≥ M
99 peano2uz ⊢ a ∈ ℤ ≥ M → a + 1 ∈ ℤ ≥ M
100 98 99 simpl2im ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a + 1 ∈ ℤ ≥ M
101 93 100 eqeltrd ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ ℤ ≥ M
102 elpreima ⊢ . Fn V → a ++ ⟨“ F ⁡ a ”⟩ ∈ . -1 ℤ ≥ M ↔ a ++ ⟨“ F ⁡ a ”⟩ ∈ V ∧ a ++ ⟨“ F ⁡ a ”⟩ ∈ ℤ ≥ M
103 56 57 102 mp2b ⊢ a ++ ⟨“ F ⁡ a ”⟩ ∈ . -1 ℤ ≥ M ↔ a ++ ⟨“ F ⁡ a ”⟩ ∈ V ∧ a ++ ⟨“ F ⁡ a ”⟩ ∈ ℤ ≥ M
104 80 101 103 sylanbrc ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ . -1 ℤ ≥ M
105 89 104 elind ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ Word S ∩ . -1 ℤ ≥ M
106 105 3 eleqtrrdi ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ W
107 ccatws1n0 ⊢ a ∈ Word S → a ++ ⟨“ F ⁡ a ”⟩ ≠ ∅
108 91 107 syl ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ≠ ∅
109 eldifsn ⊢ a ++ ⟨“ F ⁡ a ”⟩ ∈ W ∖ ∅ ↔ a ++ ⟨“ F ⁡ a ”⟩ ∈ W ∧ a ++ ⟨“ F ⁡ a ”⟩ ≠ ∅
110 106 108 109 sylanbrc ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a ++ ⟨“ F ⁡ a ”⟩ ∈ W ∖ ∅
111 81 110 eqeltrd ⊢ φ ∧ a ∈ W ∖ ∅ ∧ b ∈ W ∖ ∅ → a x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ b ∈ W ∖ ∅
112 28 31 69 111 seqf ⊢ φ → seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : ℤ ≥ M ⟶ W ∖ ∅
113 fco2 ⊢ lastS ↾ W ∖ ∅ : W ∖ ∅ ⟶ S ∧ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : ℤ ≥ M ⟶ W ∖ ∅ → lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : ℤ ≥ M ⟶ S
114 27 112 113 syl2anc ⊢ φ → lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : ℤ ≥ M ⟶ S
115 fzouzdisj ⊢ 0 ..^ M ∩ ℤ ≥ M = ∅
116 115 a1i ⊢ φ → 0 ..^ M ∩ ℤ ≥ M = ∅
117 fun ⊢ M : 0 ..^ M ⟶ S ∧ lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : ℤ ≥ M ⟶ S ∧ 0 ..^ M ∩ ℤ ≥ M = ∅ → M ∪ lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : 0 ..^ M ∪ ℤ ≥ M ⟶ S ∪ S
118 6 114 116 117 syl21anc ⊢ φ → M ∪ lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : 0 ..^ M ∪ ℤ ≥ M ⟶ S ∪ S
119 1 2 3 4 sseqval ⊢ φ → M seq str F = M ∪ lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩
120 fzouzsplit ⊢ M ∈ ℤ ≥ 0 → ℤ ≥ 0 = 0 ..^ M ∪ ℤ ≥ M
121 36 120 sylbi ⊢ M ∈ ℕ 0 → ℤ ≥ 0 = 0 ..^ M ∪ ℤ ≥ M
122 2 29 121 3syl ⊢ φ → ℤ ≥ 0 = 0 ..^ M ∪ ℤ ≥ M
123 40 122 eqtrid ⊢ φ → ℕ 0 = 0 ..^ M ∪ ℤ ≥ M
124 unidm ⊢ S ∪ S = S
125 124 a1i ⊢ φ → S ∪ S = S
126 125 eqcomd ⊢ φ → S = S ∪ S
127 119 123 126 feq123d ⊢ φ → M seq str F : ℕ 0 ⟶ S ↔ M ∪ lastS ∘ seq M x ∈ V , y ∈ V ⟼ x ++ ⟨“ F ⁡ x ”⟩ ℕ 0 × M ++ ⟨“ F ⁡ M ”⟩ : 0 ..^ M ∪ ℤ ≥ M ⟶ S ∪ S
128 118 127 mpbird ⊢ φ → M seq str F : ℕ 0 ⟶ S