Metamath Proof Explorer


Theorem wunfunc

Description: A weak universe is closed under the functor set operation. (Contributed by Mario Carneiro, 12-Jan-2017)

Ref Expression
Hypotheses wunfunc.1 ( 𝜑𝑈 ∈ WUni )
wunfunc.2 ( 𝜑𝐶𝑈 )
wunfunc.3 ( 𝜑𝐷𝑈 )
Assertion wunfunc ( 𝜑 → ( 𝐶 Func 𝐷 ) ∈ 𝑈 )

Proof

Step Hyp Ref Expression
1 wunfunc.1 ( 𝜑𝑈 ∈ WUni )
2 wunfunc.2 ( 𝜑𝐶𝑈 )
3 wunfunc.3 ( 𝜑𝐷𝑈 )
4 df-base Base = Slot 1
5 4 1 3 wunstr ( 𝜑 → ( Base ‘ 𝐷 ) ∈ 𝑈 )
6 4 1 2 wunstr ( 𝜑 → ( Base ‘ 𝐶 ) ∈ 𝑈 )
7 1 5 6 wunmap ( 𝜑 → ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) ∈ 𝑈 )
8 df-hom Hom = Slot 1 4
9 8 1 2 wunstr ( 𝜑 → ( Hom ‘ 𝐶 ) ∈ 𝑈 )
10 1 9 wunrn ( 𝜑 → ran ( Hom ‘ 𝐶 ) ∈ 𝑈 )
11 1 10 wununi ( 𝜑 ran ( Hom ‘ 𝐶 ) ∈ 𝑈 )
12 8 1 3 wunstr ( 𝜑 → ( Hom ‘ 𝐷 ) ∈ 𝑈 )
13 1 12 wunrn ( 𝜑 → ran ( Hom ‘ 𝐷 ) ∈ 𝑈 )
14 1 13 wununi ( 𝜑 ran ( Hom ‘ 𝐷 ) ∈ 𝑈 )
15 1 11 14 wunxp ( 𝜑 → ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ∈ 𝑈 )
16 1 15 wunpw ( 𝜑 → 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ∈ 𝑈 )
17 1 6 6 wunxp ( 𝜑 → ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ∈ 𝑈 )
18 1 16 17 wunmap ( 𝜑 → ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ∈ 𝑈 )
19 1 7 18 wunxp ( 𝜑 → ( ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) × ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ) ∈ 𝑈 )
20 relfunc Rel ( 𝐶 Func 𝐷 )
21 20 a1i ( 𝜑 → Rel ( 𝐶 Func 𝐷 ) )
22 df-br ( 𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ↔ ⟨ 𝑓 , 𝑔 ⟩ ∈ ( 𝐶 Func 𝐷 ) )
23 eqid ( Base ‘ 𝐶 ) = ( Base ‘ 𝐶 )
24 eqid ( Base ‘ 𝐷 ) = ( Base ‘ 𝐷 )
25 simpr ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → 𝑓 ( 𝐶 Func 𝐷 ) 𝑔 )
26 23 24 25 funcf1 ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → 𝑓 : ( Base ‘ 𝐶 ) ⟶ ( Base ‘ 𝐷 ) )
27 fvex ( Base ‘ 𝐷 ) ∈ V
28 fvex ( Base ‘ 𝐶 ) ∈ V
29 27 28 elmap ( 𝑓 ∈ ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) ↔ 𝑓 : ( Base ‘ 𝐶 ) ⟶ ( Base ‘ 𝐷 ) )
30 26 29 sylibr ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → 𝑓 ∈ ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) )
31 mapsspw ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ 𝒫 ( ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) × ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) )
32 fvssunirn ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ⊆ ran ( Hom ‘ 𝐶 )
33 ovssunirn ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ⊆ ran ( Hom ‘ 𝐷 )
34 xpss12 ( ( ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ⊆ ran ( Hom ‘ 𝐶 ) ∧ ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ⊆ ran ( Hom ‘ 𝐷 ) ) → ( ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) × ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ) ⊆ ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) )
35 32 33 34 mp2an ( ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) × ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ) ⊆ ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) )
36 35 sspwi 𝒫 ( ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) × ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ) ⊆ 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) )
37 31 36 sstri ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) )
38 37 rgenw 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) )
39 ss2ixp ( ∀ 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) → X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) )
40 38 39 ax-mp X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) )
41 28 28 xpex ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ∈ V
42 fvex ( Hom ‘ 𝐶 ) ∈ V
43 42 rnex ran ( Hom ‘ 𝐶 ) ∈ V
44 43 uniex ran ( Hom ‘ 𝐶 ) ∈ V
45 fvex ( Hom ‘ 𝐷 ) ∈ V
46 45 rnex ran ( Hom ‘ 𝐷 ) ∈ V
47 46 uniex ran ( Hom ‘ 𝐷 ) ∈ V
48 44 47 xpex ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ∈ V
49 48 pwex 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ∈ V
50 41 49 ixpconst X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) = ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) )
51 40 50 sseqtri X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) ⊆ ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) )
52 eqid ( Hom ‘ 𝐶 ) = ( Hom ‘ 𝐶 )
53 eqid ( Hom ‘ 𝐷 ) = ( Hom ‘ 𝐷 )
54 23 52 53 25 funcixp ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → 𝑔X 𝑧 ∈ ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ( ( ( 𝑓 ‘ ( 1st𝑧 ) ) ( Hom ‘ 𝐷 ) ( 𝑓 ‘ ( 2nd𝑧 ) ) ) ↑m ( ( Hom ‘ 𝐶 ) ‘ 𝑧 ) ) )
55 51 54 sseldi ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → 𝑔 ∈ ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) )
56 30 55 opelxpd ( ( 𝜑𝑓 ( 𝐶 Func 𝐷 ) 𝑔 ) → ⟨ 𝑓 , 𝑔 ⟩ ∈ ( ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) × ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ) )
57 56 ex ( 𝜑 → ( 𝑓 ( 𝐶 Func 𝐷 ) 𝑔 → ⟨ 𝑓 , 𝑔 ⟩ ∈ ( ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) × ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ) ) )
58 22 57 syl5bir ( 𝜑 → ( ⟨ 𝑓 , 𝑔 ⟩ ∈ ( 𝐶 Func 𝐷 ) → ⟨ 𝑓 , 𝑔 ⟩ ∈ ( ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) × ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ) ) )
59 21 58 relssdv ( 𝜑 → ( 𝐶 Func 𝐷 ) ⊆ ( ( ( Base ‘ 𝐷 ) ↑m ( Base ‘ 𝐶 ) ) × ( 𝒫 ( ran ( Hom ‘ 𝐶 ) × ran ( Hom ‘ 𝐷 ) ) ↑m ( ( Base ‘ 𝐶 ) × ( Base ‘ 𝐶 ) ) ) ) )
60 1 19 59 wunss ( 𝜑 → ( 𝐶 Func 𝐷 ) ∈ 𝑈 )