Metamath Proof Explorer


Theorem dfrdg2

Description: Alternate definition of the recursive function generator when I is a set. (Contributed by Scott Fenton, 26-Mar-2014) (Revised by Mario Carneiro, 19-Apr-2014)

Ref Expression
Assertion dfrdg2 ( 𝐼𝑉 → rec ( 𝐹 , 𝐼 ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } )

Proof

Step Hyp Ref Expression
1 rdgeq2 ( 𝑖 = 𝐼 → rec ( 𝐹 , 𝑖 ) = rec ( 𝐹 , 𝐼 ) )
2 ifeq1 ( 𝑖 = 𝐼 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
3 2 eqeq2d ( 𝑖 = 𝐼 → ( ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ↔ ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
4 3 ralbidv ( 𝑖 = 𝐼 → ( ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ↔ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
5 4 anbi2d ( 𝑖 = 𝐼 → ( ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) ↔ ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) ) )
6 5 rexbidv ( 𝑖 = 𝐼 → ( ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) ↔ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) ) )
7 6 abbidv ( 𝑖 = 𝐼 → { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } )
8 7 unieqd ( 𝑖 = 𝐼 { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } )
9 1 8 eqeq12d ( 𝑖 = 𝐼 → ( rec ( 𝐹 , 𝑖 ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } ↔ rec ( 𝐹 , 𝐼 ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } ) )
10 df-rdg rec ( 𝐹 , 𝑖 ) = recs ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) )
11 dfrecs3 recs ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ) }
12 vex 𝑓 ∈ V
13 12 resex ( 𝑓𝑦 ) ∈ V
14 eqeq1 ( 𝑔 = ( 𝑓𝑦 ) → ( 𝑔 = ∅ ↔ ( 𝑓𝑦 ) = ∅ ) )
15 relres Rel ( 𝑓𝑦 )
16 reldm0 ( Rel ( 𝑓𝑦 ) → ( ( 𝑓𝑦 ) = ∅ ↔ dom ( 𝑓𝑦 ) = ∅ ) )
17 15 16 ax-mp ( ( 𝑓𝑦 ) = ∅ ↔ dom ( 𝑓𝑦 ) = ∅ )
18 14 17 bitrdi ( 𝑔 = ( 𝑓𝑦 ) → ( 𝑔 = ∅ ↔ dom ( 𝑓𝑦 ) = ∅ ) )
19 dmeq ( 𝑔 = ( 𝑓𝑦 ) → dom 𝑔 = dom ( 𝑓𝑦 ) )
20 limeq ( dom 𝑔 = dom ( 𝑓𝑦 ) → ( Lim dom 𝑔 ↔ Lim dom ( 𝑓𝑦 ) ) )
21 19 20 syl ( 𝑔 = ( 𝑓𝑦 ) → ( Lim dom 𝑔 ↔ Lim dom ( 𝑓𝑦 ) ) )
22 rneq ( 𝑔 = ( 𝑓𝑦 ) → ran 𝑔 = ran ( 𝑓𝑦 ) )
23 df-ima ( 𝑓𝑦 ) = ran ( 𝑓𝑦 )
24 22 23 eqtr4di ( 𝑔 = ( 𝑓𝑦 ) → ran 𝑔 = ( 𝑓𝑦 ) )
25 24 unieqd ( 𝑔 = ( 𝑓𝑦 ) → ran 𝑔 = ( 𝑓𝑦 ) )
26 id ( 𝑔 = ( 𝑓𝑦 ) → 𝑔 = ( 𝑓𝑦 ) )
27 19 unieqd ( 𝑔 = ( 𝑓𝑦 ) → dom 𝑔 = dom ( 𝑓𝑦 ) )
28 26 27 fveq12d ( 𝑔 = ( 𝑓𝑦 ) → ( 𝑔 dom 𝑔 ) = ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) )
29 28 fveq2d ( 𝑔 = ( 𝑓𝑦 ) → ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) = ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) )
30 21 25 29 ifbieq12d ( 𝑔 = ( 𝑓𝑦 ) → if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) = if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) )
31 18 30 ifbieq2d ( 𝑔 = ( 𝑓𝑦 ) → if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) = if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) )
32 eqid ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) = ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) )
33 vex 𝑖 ∈ V
34 imaexg ( 𝑓 ∈ V → ( 𝑓𝑦 ) ∈ V )
35 12 34 ax-mp ( 𝑓𝑦 ) ∈ V
36 35 uniex ( 𝑓𝑦 ) ∈ V
37 fvex ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ∈ V
38 36 37 ifex if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ∈ V
39 33 38 ifex if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) ∈ V
40 31 32 39 fvmpt ( ( 𝑓𝑦 ) ∈ V → ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) = if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) )
41 13 40 ax-mp ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) = if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) )
42 dmres dom ( 𝑓𝑦 ) = ( 𝑦 ∩ dom 𝑓 )
43 onelss ( 𝑥 ∈ On → ( 𝑦𝑥𝑦𝑥 ) )
44 43 imp ( ( 𝑥 ∈ On ∧ 𝑦𝑥 ) → 𝑦𝑥 )
45 44 3adant2 ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → 𝑦𝑥 )
46 fndm ( 𝑓 Fn 𝑥 → dom 𝑓 = 𝑥 )
47 46 3ad2ant2 ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → dom 𝑓 = 𝑥 )
48 45 47 sseqtrrd ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → 𝑦 ⊆ dom 𝑓 )
49 df-ss ( 𝑦 ⊆ dom 𝑓 ↔ ( 𝑦 ∩ dom 𝑓 ) = 𝑦 )
50 48 49 sylib ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → ( 𝑦 ∩ dom 𝑓 ) = 𝑦 )
51 42 50 eqtrid ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → dom ( 𝑓𝑦 ) = 𝑦 )
52 eqeq1 ( dom ( 𝑓𝑦 ) = 𝑦 → ( dom ( 𝑓𝑦 ) = ∅ ↔ 𝑦 = ∅ ) )
53 limeq ( dom ( 𝑓𝑦 ) = 𝑦 → ( Lim dom ( 𝑓𝑦 ) ↔ Lim 𝑦 ) )
54 unieq ( dom ( 𝑓𝑦 ) = 𝑦 dom ( 𝑓𝑦 ) = 𝑦 )
55 54 fveq2d ( dom ( 𝑓𝑦 ) = 𝑦 → ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) = ( ( 𝑓𝑦 ) ‘ 𝑦 ) )
56 55 fveq2d ( dom ( 𝑓𝑦 ) = 𝑦 → ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) = ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) )
57 53 56 ifbieq2d ( dom ( 𝑓𝑦 ) = 𝑦 → if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) = if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) )
58 52 57 ifbieq2d ( dom ( 𝑓𝑦 ) = 𝑦 → if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) )
59 onelon ( ( 𝑥 ∈ On ∧ 𝑦𝑥 ) → 𝑦 ∈ On )
60 eloni ( 𝑦 ∈ On → Ord 𝑦 )
61 59 60 syl ( ( 𝑥 ∈ On ∧ 𝑦𝑥 ) → Ord 𝑦 )
62 61 3adant2 ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → Ord 𝑦 )
63 ordzsl ( Ord 𝑦 ↔ ( 𝑦 = ∅ ∨ ∃ 𝑧 ∈ On 𝑦 = suc 𝑧 ∨ Lim 𝑦 ) )
64 iftrue ( 𝑦 = ∅ → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = 𝑖 )
65 iftrue ( 𝑦 = ∅ → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) = 𝑖 )
66 64 65 eqtr4d ( 𝑦 = ∅ → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
67 vex 𝑧 ∈ V
68 67 sucid 𝑧 ∈ suc 𝑧
69 fvres ( 𝑧 ∈ suc 𝑧 → ( ( 𝑓 ↾ suc 𝑧 ) ‘ 𝑧 ) = ( 𝑓𝑧 ) )
70 68 69 ax-mp ( ( 𝑓 ↾ suc 𝑧 ) ‘ 𝑧 ) = ( 𝑓𝑧 )
71 eloni ( 𝑧 ∈ On → Ord 𝑧 )
72 ordunisuc ( Ord 𝑧 suc 𝑧 = 𝑧 )
73 71 72 syl ( 𝑧 ∈ On → suc 𝑧 = 𝑧 )
74 73 fveq2d ( 𝑧 ∈ On → ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) = ( ( 𝑓 ↾ suc 𝑧 ) ‘ 𝑧 ) )
75 73 fveq2d ( 𝑧 ∈ On → ( 𝑓 suc 𝑧 ) = ( 𝑓𝑧 ) )
76 70 74 75 3eqtr4a ( 𝑧 ∈ On → ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) = ( 𝑓 suc 𝑧 ) )
77 76 fveq2d ( 𝑧 ∈ On → ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) = ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) )
78 nsuceq0 suc 𝑧 ≠ ∅
79 78 neii ¬ suc 𝑧 = ∅
80 79 iffalsei if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) ) = if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) )
81 nlimsucg ( 𝑧 ∈ V → ¬ Lim suc 𝑧 )
82 iffalse ( ¬ Lim suc 𝑧 → if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) = ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) )
83 67 81 82 mp2b if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) = ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) )
84 80 83 eqtri if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) ) = ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) )
85 79 iffalsei if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) ) = if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) )
86 iffalse ( ¬ Lim suc 𝑧 → if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) = ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) )
87 67 81 86 mp2b if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) = ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) )
88 85 87 eqtri if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) ) = ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) )
89 77 84 88 3eqtr4g ( 𝑧 ∈ On → if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) ) = if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) ) )
90 eqeq1 ( 𝑦 = suc 𝑧 → ( 𝑦 = ∅ ↔ suc 𝑧 = ∅ ) )
91 limeq ( 𝑦 = suc 𝑧 → ( Lim 𝑦 ↔ Lim suc 𝑧 ) )
92 reseq2 ( 𝑦 = suc 𝑧 → ( 𝑓𝑦 ) = ( 𝑓 ↾ suc 𝑧 ) )
93 unieq ( 𝑦 = suc 𝑧 𝑦 = suc 𝑧 )
94 92 93 fveq12d ( 𝑦 = suc 𝑧 → ( ( 𝑓𝑦 ) ‘ 𝑦 ) = ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) )
95 94 fveq2d ( 𝑦 = suc 𝑧 → ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) = ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) )
96 91 95 ifbieq2d ( 𝑦 = suc 𝑧 → if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) = if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) )
97 90 96 ifbieq2d ( 𝑦 = suc 𝑧 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) ) )
98 93 fveq2d ( 𝑦 = suc 𝑧 → ( 𝑓 𝑦 ) = ( 𝑓 suc 𝑧 ) )
99 98 fveq2d ( 𝑦 = suc 𝑧 → ( 𝐹 ‘ ( 𝑓 𝑦 ) ) = ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) )
100 91 99 ifbieq2d ( 𝑦 = suc 𝑧 → if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) = if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) )
101 90 100 ifbieq2d ( 𝑦 = suc 𝑧 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) = if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) ) )
102 97 101 eqeq12d ( 𝑦 = suc 𝑧 → ( if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ↔ if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓 ↾ suc 𝑧 ) ‘ suc 𝑧 ) ) ) ) = if ( suc 𝑧 = ∅ , 𝑖 , if ( Lim suc 𝑧 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 suc 𝑧 ) ) ) ) ) )
103 89 102 syl5ibrcom ( 𝑧 ∈ On → ( 𝑦 = suc 𝑧 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
104 103 rexlimiv ( ∃ 𝑧 ∈ On 𝑦 = suc 𝑧 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
105 iftrue ( Lim 𝑦 → if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) = ( 𝑓𝑦 ) )
106 df-lim ( Lim 𝑦 ↔ ( Ord 𝑦𝑦 ≠ ∅ ∧ 𝑦 = 𝑦 ) )
107 106 simp2bi ( Lim 𝑦𝑦 ≠ ∅ )
108 107 neneqd ( Lim 𝑦 → ¬ 𝑦 = ∅ )
109 108 iffalsed ( Lim 𝑦 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) )
110 iftrue ( Lim 𝑦 → if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) = ( 𝑓𝑦 ) )
111 105 109 110 3eqtr4d ( Lim 𝑦 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) )
112 108 iffalsed ( Lim 𝑦 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) = if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) )
113 111 112 eqtr4d ( Lim 𝑦 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
114 66 104 113 3jaoi ( ( 𝑦 = ∅ ∨ ∃ 𝑧 ∈ On 𝑦 = suc 𝑧 ∨ Lim 𝑦 ) → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
115 63 114 sylbi ( Ord 𝑦 → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
116 62 115 syl ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ 𝑦 ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
117 58 116 sylan9eqr ( ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) ∧ dom ( 𝑓𝑦 ) = 𝑦 ) → if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
118 51 117 mpdan ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → if ( dom ( 𝑓𝑦 ) = ∅ , 𝑖 , if ( Lim dom ( 𝑓𝑦 ) , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( ( 𝑓𝑦 ) ‘ dom ( 𝑓𝑦 ) ) ) ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
119 41 118 eqtrid ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) )
120 119 eqeq2d ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥𝑦𝑥 ) → ( ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ↔ ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
121 120 3expa ( ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥 ) ∧ 𝑦𝑥 ) → ( ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ↔ ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
122 121 ralbidva ( ( 𝑥 ∈ On ∧ 𝑓 Fn 𝑥 ) → ( ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ↔ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
123 122 pm5.32da ( 𝑥 ∈ On → ( ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ) ↔ ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) ) )
124 123 rexbiia ( ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ) ↔ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) )
125 124 abbii { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ) } = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) }
126 125 unieqi { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = ( ( 𝑔 ∈ V ↦ if ( 𝑔 = ∅ , 𝑖 , if ( Lim dom 𝑔 , ran 𝑔 , ( 𝐹 ‘ ( 𝑔 dom 𝑔 ) ) ) ) ) ‘ ( 𝑓𝑦 ) ) ) } = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) }
127 10 11 126 3eqtri rec ( 𝐹 , 𝑖 ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝑖 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) }
128 9 127 vtoclg ( 𝐼𝑉 → rec ( 𝐹 , 𝐼 ) = { 𝑓 ∣ ∃ 𝑥 ∈ On ( 𝑓 Fn 𝑥 ∧ ∀ 𝑦𝑥 ( 𝑓𝑦 ) = if ( 𝑦 = ∅ , 𝐼 , if ( Lim 𝑦 , ( 𝑓𝑦 ) , ( 𝐹 ‘ ( 𝑓 𝑦 ) ) ) ) ) } )