Metamath Proof Explorer


Theorem limcco

Description: Composition of two limits. (Contributed by Mario Carneiro, 29-Dec-2016)

Ref Expression
Hypotheses limcco.r ( ( 𝜑 ∧ ( 𝑥𝐴𝑅𝐶 ) ) → 𝑅𝐵 )
limcco.s ( ( 𝜑𝑦𝐵 ) → 𝑆 ∈ ℂ )
limcco.c ( 𝜑𝐶 ∈ ( ( 𝑥𝐴𝑅 ) lim 𝑋 ) )
limcco.d ( 𝜑𝐷 ∈ ( ( 𝑦𝐵𝑆 ) lim 𝐶 ) )
limcco.1 ( 𝑦 = 𝑅𝑆 = 𝑇 )
limcco.2 ( ( 𝜑 ∧ ( 𝑥𝐴𝑅 = 𝐶 ) ) → 𝑇 = 𝐷 )
Assertion limcco ( 𝜑𝐷 ∈ ( ( 𝑥𝐴𝑇 ) lim 𝑋 ) )

Proof

Step Hyp Ref Expression
1 limcco.r ( ( 𝜑 ∧ ( 𝑥𝐴𝑅𝐶 ) ) → 𝑅𝐵 )
2 limcco.s ( ( 𝜑𝑦𝐵 ) → 𝑆 ∈ ℂ )
3 limcco.c ( 𝜑𝐶 ∈ ( ( 𝑥𝐴𝑅 ) lim 𝑋 ) )
4 limcco.d ( 𝜑𝐷 ∈ ( ( 𝑦𝐵𝑆 ) lim 𝐶 ) )
5 limcco.1 ( 𝑦 = 𝑅𝑆 = 𝑇 )
6 limcco.2 ( ( 𝜑 ∧ ( 𝑥𝐴𝑅 = 𝐶 ) ) → 𝑇 = 𝐷 )
7 1 expr ( ( 𝜑𝑥𝐴 ) → ( 𝑅𝐶𝑅𝐵 ) )
8 7 necon1bd ( ( 𝜑𝑥𝐴 ) → ( ¬ 𝑅𝐵𝑅 = 𝐶 ) )
9 limccl ( ( 𝑥𝐴𝑅 ) lim 𝑋 ) ⊆ ℂ
10 9 3 sselid ( 𝜑𝐶 ∈ ℂ )
11 10 adantr ( ( 𝜑𝑥𝐴 ) → 𝐶 ∈ ℂ )
12 elsn2g ( 𝐶 ∈ ℂ → ( 𝑅 ∈ { 𝐶 } ↔ 𝑅 = 𝐶 ) )
13 11 12 syl ( ( 𝜑𝑥𝐴 ) → ( 𝑅 ∈ { 𝐶 } ↔ 𝑅 = 𝐶 ) )
14 8 13 sylibrd ( ( 𝜑𝑥𝐴 ) → ( ¬ 𝑅𝐵𝑅 ∈ { 𝐶 } ) )
15 14 orrd ( ( 𝜑𝑥𝐴 ) → ( 𝑅𝐵𝑅 ∈ { 𝐶 } ) )
16 elun ( 𝑅 ∈ ( 𝐵 ∪ { 𝐶 } ) ↔ ( 𝑅𝐵𝑅 ∈ { 𝐶 } ) )
17 15 16 sylibr ( ( 𝜑𝑥𝐴 ) → 𝑅 ∈ ( 𝐵 ∪ { 𝐶 } ) )
18 17 fmpttd ( 𝜑 → ( 𝑥𝐴𝑅 ) : 𝐴 ⟶ ( 𝐵 ∪ { 𝐶 } ) )
19 eqid ( 𝑦𝐵𝑆 ) = ( 𝑦𝐵𝑆 )
20 19 2 dmmptd ( 𝜑 → dom ( 𝑦𝐵𝑆 ) = 𝐵 )
21 limcrcl ( 𝐷 ∈ ( ( 𝑦𝐵𝑆 ) lim 𝐶 ) → ( ( 𝑦𝐵𝑆 ) : dom ( 𝑦𝐵𝑆 ) ⟶ ℂ ∧ dom ( 𝑦𝐵𝑆 ) ⊆ ℂ ∧ 𝐶 ∈ ℂ ) )
22 4 21 syl ( 𝜑 → ( ( 𝑦𝐵𝑆 ) : dom ( 𝑦𝐵𝑆 ) ⟶ ℂ ∧ dom ( 𝑦𝐵𝑆 ) ⊆ ℂ ∧ 𝐶 ∈ ℂ ) )
23 22 simp2d ( 𝜑 → dom ( 𝑦𝐵𝑆 ) ⊆ ℂ )
24 20 23 eqsstrrd ( 𝜑𝐵 ⊆ ℂ )
25 10 snssd ( 𝜑 → { 𝐶 } ⊆ ℂ )
26 24 25 unssd ( 𝜑 → ( 𝐵 ∪ { 𝐶 } ) ⊆ ℂ )
27 eqid ( TopOpen ‘ ℂfld ) = ( TopOpen ‘ ℂfld )
28 eqid ( ( TopOpen ‘ ℂfld ) ↾t ( 𝐵 ∪ { 𝐶 } ) ) = ( ( TopOpen ‘ ℂfld ) ↾t ( 𝐵 ∪ { 𝐶 } ) )
29 24 10 2 28 27 limcmpt ( 𝜑 → ( 𝐷 ∈ ( ( 𝑦𝐵𝑆 ) lim 𝐶 ) ↔ ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∈ ( ( ( ( TopOpen ‘ ℂfld ) ↾t ( 𝐵 ∪ { 𝐶 } ) ) CnP ( TopOpen ‘ ℂfld ) ) ‘ 𝐶 ) ) )
30 4 29 mpbid ( 𝜑 → ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∈ ( ( ( ( TopOpen ‘ ℂfld ) ↾t ( 𝐵 ∪ { 𝐶 } ) ) CnP ( TopOpen ‘ ℂfld ) ) ‘ 𝐶 ) )
31 18 26 27 28 3 30 limccnp ( 𝜑 → ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ‘ 𝐶 ) ∈ ( ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∘ ( 𝑥𝐴𝑅 ) ) lim 𝑋 ) )
32 eqid ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) = ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) )
33 iftrue ( 𝑦 = 𝐶 → if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) = 𝐷 )
34 ssun2 { 𝐶 } ⊆ ( 𝐵 ∪ { 𝐶 } )
35 snssg ( 𝐶 ∈ ( ( 𝑥𝐴𝑅 ) lim 𝑋 ) → ( 𝐶 ∈ ( 𝐵 ∪ { 𝐶 } ) ↔ { 𝐶 } ⊆ ( 𝐵 ∪ { 𝐶 } ) ) )
36 3 35 syl ( 𝜑 → ( 𝐶 ∈ ( 𝐵 ∪ { 𝐶 } ) ↔ { 𝐶 } ⊆ ( 𝐵 ∪ { 𝐶 } ) ) )
37 34 36 mpbiri ( 𝜑𝐶 ∈ ( 𝐵 ∪ { 𝐶 } ) )
38 32 33 37 4 fvmptd3 ( 𝜑 → ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ‘ 𝐶 ) = 𝐷 )
39 eqidd ( 𝜑 → ( 𝑥𝐴𝑅 ) = ( 𝑥𝐴𝑅 ) )
40 eqidd ( 𝜑 → ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) = ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) )
41 eqeq1 ( 𝑦 = 𝑅 → ( 𝑦 = 𝐶𝑅 = 𝐶 ) )
42 41 5 ifbieq2d ( 𝑦 = 𝑅 → if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) = if ( 𝑅 = 𝐶 , 𝐷 , 𝑇 ) )
43 17 39 40 42 fmptco ( 𝜑 → ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∘ ( 𝑥𝐴𝑅 ) ) = ( 𝑥𝐴 ↦ if ( 𝑅 = 𝐶 , 𝐷 , 𝑇 ) ) )
44 6 anassrs ( ( ( 𝜑𝑥𝐴 ) ∧ 𝑅 = 𝐶 ) → 𝑇 = 𝐷 )
45 44 ifeq1da ( ( 𝜑𝑥𝐴 ) → if ( 𝑅 = 𝐶 , 𝑇 , 𝑇 ) = if ( 𝑅 = 𝐶 , 𝐷 , 𝑇 ) )
46 ifid if ( 𝑅 = 𝐶 , 𝑇 , 𝑇 ) = 𝑇
47 45 46 eqtr3di ( ( 𝜑𝑥𝐴 ) → if ( 𝑅 = 𝐶 , 𝐷 , 𝑇 ) = 𝑇 )
48 47 mpteq2dva ( 𝜑 → ( 𝑥𝐴 ↦ if ( 𝑅 = 𝐶 , 𝐷 , 𝑇 ) ) = ( 𝑥𝐴𝑇 ) )
49 43 48 eqtrd ( 𝜑 → ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∘ ( 𝑥𝐴𝑅 ) ) = ( 𝑥𝐴𝑇 ) )
50 49 oveq1d ( 𝜑 → ( ( ( 𝑦 ∈ ( 𝐵 ∪ { 𝐶 } ) ↦ if ( 𝑦 = 𝐶 , 𝐷 , 𝑆 ) ) ∘ ( 𝑥𝐴𝑅 ) ) lim 𝑋 ) = ( ( 𝑥𝐴𝑇 ) lim 𝑋 ) )
51 31 38 50 3eltr3d ( 𝜑𝐷 ∈ ( ( 𝑥𝐴𝑇 ) lim 𝑋 ) )