Metamath Proof Explorer


Theorem fsuppcurry1

Description: Finite support of a curried function with a constant first argument. (Contributed by Thierry Arnoux, 7-Jul-2023)

Ref Expression
Hypotheses fsuppcurry1.g 𝐺 = ( 𝑥𝐵 ↦ ( 𝐶 𝐹 𝑥 ) )
fsuppcurry1.z ( 𝜑𝑍𝑈 )
fsuppcurry1.a ( 𝜑𝐴𝑉 )
fsuppcurry1.b ( 𝜑𝐵𝑊 )
fsuppcurry1.f ( 𝜑𝐹 Fn ( 𝐴 × 𝐵 ) )
fsuppcurry1.c ( 𝜑𝐶𝐴 )
fsuppcurry1.1 ( 𝜑𝐹 finSupp 𝑍 )
Assertion fsuppcurry1 ( 𝜑𝐺 finSupp 𝑍 )

Proof

Step Hyp Ref Expression
1 fsuppcurry1.g 𝐺 = ( 𝑥𝐵 ↦ ( 𝐶 𝐹 𝑥 ) )
2 fsuppcurry1.z ( 𝜑𝑍𝑈 )
3 fsuppcurry1.a ( 𝜑𝐴𝑉 )
4 fsuppcurry1.b ( 𝜑𝐵𝑊 )
5 fsuppcurry1.f ( 𝜑𝐹 Fn ( 𝐴 × 𝐵 ) )
6 fsuppcurry1.c ( 𝜑𝐶𝐴 )
7 fsuppcurry1.1 ( 𝜑𝐹 finSupp 𝑍 )
8 oveq2 ( 𝑥 = 𝑦 → ( 𝐶 𝐹 𝑥 ) = ( 𝐶 𝐹 𝑦 ) )
9 8 cbvmptv ( 𝑥𝐵 ↦ ( 𝐶 𝐹 𝑥 ) ) = ( 𝑦𝐵 ↦ ( 𝐶 𝐹 𝑦 ) )
10 1 9 eqtri 𝐺 = ( 𝑦𝐵 ↦ ( 𝐶 𝐹 𝑦 ) )
11 4 mptexd ( 𝜑 → ( 𝑦𝐵 ↦ ( 𝐶 𝐹 𝑦 ) ) ∈ V )
12 10 11 eqeltrid ( 𝜑𝐺 ∈ V )
13 1 funmpt2 Fun 𝐺
14 13 a1i ( 𝜑 → Fun 𝐺 )
15 fo2nd 2nd : V –onto→ V
16 fofun ( 2nd : V –onto→ V → Fun 2nd )
17 15 16 ax-mp Fun 2nd
18 funres ( Fun 2nd → Fun ( 2nd ↾ ( V × V ) ) )
19 17 18 mp1i ( 𝜑 → Fun ( 2nd ↾ ( V × V ) ) )
20 7 fsuppimpd ( 𝜑 → ( 𝐹 supp 𝑍 ) ∈ Fin )
21 imafi ( ( Fun ( 2nd ↾ ( V × V ) ) ∧ ( 𝐹 supp 𝑍 ) ∈ Fin ) → ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ∈ Fin )
22 19 20 21 syl2anc ( 𝜑 → ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ∈ Fin )
23 ovexd ( ( 𝜑𝑦𝐵 ) → ( 𝐶 𝐹 𝑦 ) ∈ V )
24 23 10 fmptd ( 𝜑𝐺 : 𝐵 ⟶ V )
25 eldif ( 𝑦 ∈ ( 𝐵 ∖ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) ↔ ( 𝑦𝐵 ∧ ¬ 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) )
26 6 ad2antrr ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → 𝐶𝐴 )
27 simplr ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → 𝑦𝐵 )
28 26 27 opelxpd ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐴 × 𝐵 ) )
29 df-ov ( 𝐶 𝐹 𝑦 ) = ( 𝐹 ‘ ⟨ 𝐶 , 𝑦 ⟩ )
30 ovexd ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝐶 𝐹 𝑦 ) ∈ V )
31 1 8 27 30 fvmptd3 ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝐺𝑦 ) = ( 𝐶 𝐹 𝑦 ) )
32 simpr ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ¬ ( 𝐺𝑦 ) = 𝑍 )
33 32 neqned ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝐺𝑦 ) ≠ 𝑍 )
34 31 33 eqnetrrd ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝐶 𝐹 𝑦 ) ≠ 𝑍 )
35 29 34 eqnetrrid ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝐹 ‘ ⟨ 𝐶 , 𝑦 ⟩ ) ≠ 𝑍 )
36 3 4 xpexd ( 𝜑 → ( 𝐴 × 𝐵 ) ∈ V )
37 elsuppfn ( ( 𝐹 Fn ( 𝐴 × 𝐵 ) ∧ ( 𝐴 × 𝐵 ) ∈ V ∧ 𝑍𝑈 ) → ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐹 supp 𝑍 ) ↔ ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐴 × 𝐵 ) ∧ ( 𝐹 ‘ ⟨ 𝐶 , 𝑦 ⟩ ) ≠ 𝑍 ) ) )
38 5 36 2 37 syl3anc ( 𝜑 → ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐹 supp 𝑍 ) ↔ ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐴 × 𝐵 ) ∧ ( 𝐹 ‘ ⟨ 𝐶 , 𝑦 ⟩ ) ≠ 𝑍 ) ) )
39 38 ad2antrr ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐹 supp 𝑍 ) ↔ ( ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐴 × 𝐵 ) ∧ ( 𝐹 ‘ ⟨ 𝐶 , 𝑦 ⟩ ) ≠ 𝑍 ) ) )
40 28 35 39 mpbir2and ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐹 supp 𝑍 ) )
41 simpr ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ )
42 41 fveq2d ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ( ( 2nd ↾ ( V × V ) ) ‘ 𝑧 ) = ( ( 2nd ↾ ( V × V ) ) ‘ ⟨ 𝐶 , 𝑦 ⟩ ) )
43 xpss ( 𝐴 × 𝐵 ) ⊆ ( V × V )
44 28 adantr ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ⟨ 𝐶 , 𝑦 ⟩ ∈ ( 𝐴 × 𝐵 ) )
45 43 44 sseldi ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ⟨ 𝐶 , 𝑦 ⟩ ∈ ( V × V ) )
46 45 fvresd ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ( ( 2nd ↾ ( V × V ) ) ‘ ⟨ 𝐶 , 𝑦 ⟩ ) = ( 2nd ‘ ⟨ 𝐶 , 𝑦 ⟩ ) )
47 26 adantr ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → 𝐶𝐴 )
48 27 adantr ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → 𝑦𝐵 )
49 op2ndg ( ( 𝐶𝐴𝑦𝐵 ) → ( 2nd ‘ ⟨ 𝐶 , 𝑦 ⟩ ) = 𝑦 )
50 47 48 49 syl2anc ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ( 2nd ‘ ⟨ 𝐶 , 𝑦 ⟩ ) = 𝑦 )
51 42 46 50 3eqtrd ( ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) ∧ 𝑧 = ⟨ 𝐶 , 𝑦 ⟩ ) → ( ( 2nd ↾ ( V × V ) ) ‘ 𝑧 ) = 𝑦 )
52 40 51 rspcedeq1vd ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ∃ 𝑧 ∈ ( 𝐹 supp 𝑍 ) ( ( 2nd ↾ ( V × V ) ) ‘ 𝑧 ) = 𝑦 )
53 fofn ( 2nd : V –onto→ V → 2nd Fn V )
54 fnresin ( 2nd Fn V → ( 2nd ↾ ( V × V ) ) Fn ( V ∩ ( V × V ) ) )
55 15 53 54 mp2b ( 2nd ↾ ( V × V ) ) Fn ( V ∩ ( V × V ) )
56 ssv ( V × V ) ⊆ V
57 sseqin2 ( ( V × V ) ⊆ V ↔ ( V ∩ ( V × V ) ) = ( V × V ) )
58 56 57 mpbi ( V ∩ ( V × V ) ) = ( V × V )
59 58 fneq2i ( ( 2nd ↾ ( V × V ) ) Fn ( V ∩ ( V × V ) ) ↔ ( 2nd ↾ ( V × V ) ) Fn ( V × V ) )
60 55 59 mpbi ( 2nd ↾ ( V × V ) ) Fn ( V × V )
61 60 a1i ( 𝜑 → ( 2nd ↾ ( V × V ) ) Fn ( V × V ) )
62 suppssdm ( 𝐹 supp 𝑍 ) ⊆ dom 𝐹
63 5 fndmd ( 𝜑 → dom 𝐹 = ( 𝐴 × 𝐵 ) )
64 62 63 sseqtrid ( 𝜑 → ( 𝐹 supp 𝑍 ) ⊆ ( 𝐴 × 𝐵 ) )
65 64 43 sstrdi ( 𝜑 → ( 𝐹 supp 𝑍 ) ⊆ ( V × V ) )
66 61 65 fvelimabd ( 𝜑 → ( 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ↔ ∃ 𝑧 ∈ ( 𝐹 supp 𝑍 ) ( ( 2nd ↾ ( V × V ) ) ‘ 𝑧 ) = 𝑦 ) )
67 66 ad2antrr ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → ( 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ↔ ∃ 𝑧 ∈ ( 𝐹 supp 𝑍 ) ( ( 2nd ↾ ( V × V ) ) ‘ 𝑧 ) = 𝑦 ) )
68 52 67 mpbird ( ( ( 𝜑𝑦𝐵 ) ∧ ¬ ( 𝐺𝑦 ) = 𝑍 ) → 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) )
69 68 ex ( ( 𝜑𝑦𝐵 ) → ( ¬ ( 𝐺𝑦 ) = 𝑍𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) )
70 69 con1d ( ( 𝜑𝑦𝐵 ) → ( ¬ 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) → ( 𝐺𝑦 ) = 𝑍 ) )
71 70 impr ( ( 𝜑 ∧ ( 𝑦𝐵 ∧ ¬ 𝑦 ∈ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) ) → ( 𝐺𝑦 ) = 𝑍 )
72 25 71 sylan2b ( ( 𝜑𝑦 ∈ ( 𝐵 ∖ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) ) → ( 𝐺𝑦 ) = 𝑍 )
73 24 72 suppss ( 𝜑 → ( 𝐺 supp 𝑍 ) ⊆ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) )
74 suppssfifsupp ( ( ( 𝐺 ∈ V ∧ Fun 𝐺𝑍𝑈 ) ∧ ( ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ∈ Fin ∧ ( 𝐺 supp 𝑍 ) ⊆ ( ( 2nd ↾ ( V × V ) ) “ ( 𝐹 supp 𝑍 ) ) ) ) → 𝐺 finSupp 𝑍 )
75 12 14 2 22 73 74 syl32anc ( 𝜑𝐺 finSupp 𝑍 )