Metamath Proof Explorer


Theorem curf1

Description: Value of the object part of the curry functor. (Contributed by Mario Carneiro, 12-Jan-2017)

Ref Expression
Hypotheses curfval.g 𝐺 = ( ⟨ 𝐶 , 𝐷 ⟩ curryF 𝐹 )
curfval.a 𝐴 = ( Base ‘ 𝐶 )
curfval.c ( 𝜑𝐶 ∈ Cat )
curfval.d ( 𝜑𝐷 ∈ Cat )
curfval.f ( 𝜑𝐹 ∈ ( ( 𝐶 ×c 𝐷 ) Func 𝐸 ) )
curfval.b 𝐵 = ( Base ‘ 𝐷 )
curf1.x ( 𝜑𝑋𝐴 )
curf1.k 𝐾 = ( ( 1st𝐺 ) ‘ 𝑋 )
curf1.j 𝐽 = ( Hom ‘ 𝐷 )
curf1.1 1 = ( Id ‘ 𝐶 )
Assertion curf1 ( 𝜑𝐾 = ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ )

Proof

Step Hyp Ref Expression
1 curfval.g 𝐺 = ( ⟨ 𝐶 , 𝐷 ⟩ curryF 𝐹 )
2 curfval.a 𝐴 = ( Base ‘ 𝐶 )
3 curfval.c ( 𝜑𝐶 ∈ Cat )
4 curfval.d ( 𝜑𝐷 ∈ Cat )
5 curfval.f ( 𝜑𝐹 ∈ ( ( 𝐶 ×c 𝐷 ) Func 𝐸 ) )
6 curfval.b 𝐵 = ( Base ‘ 𝐷 )
7 curf1.x ( 𝜑𝑋𝐴 )
8 curf1.k 𝐾 = ( ( 1st𝐺 ) ‘ 𝑋 )
9 curf1.j 𝐽 = ( Hom ‘ 𝐷 )
10 curf1.1 1 = ( Id ‘ 𝐶 )
11 1 2 3 4 5 6 9 10 curf1fval ( 𝜑 → ( 1st𝐺 ) = ( 𝑥𝐴 ↦ ⟨ ( 𝑦𝐵 ↦ ( 𝑥 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑥 ) ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ ) )
12 simpr ( ( 𝜑𝑥 = 𝑋 ) → 𝑥 = 𝑋 )
13 12 oveq1d ( ( 𝜑𝑥 = 𝑋 ) → ( 𝑥 ( 1st𝐹 ) 𝑦 ) = ( 𝑋 ( 1st𝐹 ) 𝑦 ) )
14 13 mpteq2dv ( ( 𝜑𝑥 = 𝑋 ) → ( 𝑦𝐵 ↦ ( 𝑥 ( 1st𝐹 ) 𝑦 ) ) = ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) )
15 simp1r ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → 𝑥 = 𝑋 )
16 15 opeq1d ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ⟨ 𝑥 , 𝑦 ⟩ = ⟨ 𝑋 , 𝑦 ⟩ )
17 15 opeq1d ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ⟨ 𝑥 , 𝑧 ⟩ = ⟨ 𝑋 , 𝑧 ⟩ )
18 16 17 oveq12d ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) = ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) )
19 15 fveq2d ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ( 1𝑥 ) = ( 1𝑋 ) )
20 eqidd ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → 𝑔 = 𝑔 )
21 18 19 20 oveq123d ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ( ( 1𝑥 ) ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) 𝑔 ) = ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) )
22 21 mpteq2dv ( ( ( 𝜑𝑥 = 𝑋 ) ∧ 𝑦𝐵𝑧𝐵 ) → ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑥 ) ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) 𝑔 ) ) = ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) )
23 22 mpoeq3dva ( ( 𝜑𝑥 = 𝑋 ) → ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑥 ) ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) 𝑔 ) ) ) = ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) )
24 14 23 opeq12d ( ( 𝜑𝑥 = 𝑋 ) → ⟨ ( 𝑦𝐵 ↦ ( 𝑥 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑥 ) ( ⟨ 𝑥 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑥 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ = ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ )
25 opex ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ ∈ V
26 25 a1i ( 𝜑 → ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ ∈ V )
27 11 24 7 26 fvmptd ( 𝜑 → ( ( 1st𝐺 ) ‘ 𝑋 ) = ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ )
28 8 27 syl5eq ( 𝜑𝐾 = ⟨ ( 𝑦𝐵 ↦ ( 𝑋 ( 1st𝐹 ) 𝑦 ) ) , ( 𝑦𝐵 , 𝑧𝐵 ↦ ( 𝑔 ∈ ( 𝑦 𝐽 𝑧 ) ↦ ( ( 1𝑋 ) ( ⟨ 𝑋 , 𝑦 ⟩ ( 2nd𝐹 ) ⟨ 𝑋 , 𝑧 ⟩ ) 𝑔 ) ) ) ⟩ )