Metamath Proof Explorer


Theorem phtpcer

Description: Path homotopy is an equivalence relation. Proposition 1.2 of Hatcher p. 26. (Contributed by Jeff Madsen, 2-Sep-2009) (Revised by Mario Carneiro, 6-Jul-2015) (Proof shortened by AV, 1-May-2021)

Ref Expression
Assertion phtpcer ( ≃ph𝐽 ) Er ( II Cn 𝐽 )

Proof

Step Hyp Ref Expression
1 phtpcrel Rel ( ≃ph𝐽 )
2 isphtpc ( 𝑥 ( ≃ph𝐽 ) 𝑦 ↔ ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ 𝑦 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ≠ ∅ ) )
3 2 simp2bi ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ∈ ( II Cn 𝐽 ) )
4 2 simp1bi ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑥 ∈ ( II Cn 𝐽 ) )
5 2 simp3bi ( 𝑥 ( ≃ph𝐽 ) 𝑦 → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ≠ ∅ )
6 n0 ( ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ≠ ∅ ↔ ∃ 𝑓 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) )
7 5 6 sylib ( 𝑥 ( ≃ph𝐽 ) 𝑦 → ∃ 𝑓 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) )
8 4 adantr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ) → 𝑥 ∈ ( II Cn 𝐽 ) )
9 3 adantr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ) → 𝑦 ∈ ( II Cn 𝐽 ) )
10 eqid ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ ( 𝑢 𝑓 ( 1 − 𝑣 ) ) ) = ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ ( 𝑢 𝑓 ( 1 − 𝑣 ) ) )
11 simpr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ) → 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) )
12 8 9 10 11 phtpycom ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ) → ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ ( 𝑢 𝑓 ( 1 − 𝑣 ) ) ) ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑥 ) )
13 12 ne0d ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ) → ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ )
14 7 13 exlimddv ( 𝑥 ( ≃ph𝐽 ) 𝑦 → ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ )
15 isphtpc ( 𝑦 ( ≃ph𝐽 ) 𝑥 ↔ ( 𝑦 ∈ ( II Cn 𝐽 ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) )
16 3 4 14 15 syl3anbrc ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑥 )
17 4 adantr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → 𝑥 ∈ ( II Cn 𝐽 ) )
18 simpr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → 𝑦 ( ≃ph𝐽 ) 𝑧 )
19 isphtpc ( 𝑦 ( ≃ph𝐽 ) 𝑧 ↔ ( 𝑦 ∈ ( II Cn 𝐽 ) ∧ 𝑧 ∈ ( II Cn 𝐽 ) ∧ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ) )
20 18 19 sylib ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( 𝑦 ∈ ( II Cn 𝐽 ) ∧ 𝑧 ∈ ( II Cn 𝐽 ) ∧ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ) )
21 20 simp2d ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → 𝑧 ∈ ( II Cn 𝐽 ) )
22 5 adantr ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ≠ ∅ )
23 22 6 sylib ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ∃ 𝑓 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) )
24 20 simp3d ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ )
25 n0 ( ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ↔ ∃ 𝑔 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) )
26 24 25 sylib ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ∃ 𝑔 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) )
27 exdistrv ( ∃ 𝑓𝑔 ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ↔ ( ∃ 𝑓 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ ∃ 𝑔 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) )
28 23 26 27 sylanbrc ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ∃ 𝑓𝑔 ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) )
29 eqid ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ if ( 𝑣 ≤ ( 1 / 2 ) , ( 𝑢 𝑓 ( 2 · 𝑣 ) ) , ( 𝑢 𝑔 ( ( 2 · 𝑣 ) − 1 ) ) ) ) = ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ if ( 𝑣 ≤ ( 1 / 2 ) , ( 𝑢 𝑓 ( 2 · 𝑣 ) ) , ( 𝑢 𝑔 ( ( 2 · 𝑣 ) − 1 ) ) ) )
30 17 adantr ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → 𝑥 ∈ ( II Cn 𝐽 ) )
31 20 simp1d ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → 𝑦 ∈ ( II Cn 𝐽 ) )
32 31 adantr ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → 𝑦 ∈ ( II Cn 𝐽 ) )
33 21 adantr ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → 𝑧 ∈ ( II Cn 𝐽 ) )
34 simprl ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) )
35 simprr ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) )
36 29 30 32 33 34 35 phtpycc ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → ( 𝑢 ∈ ( 0 [,] 1 ) , 𝑣 ∈ ( 0 [,] 1 ) ↦ if ( 𝑣 ≤ ( 1 / 2 ) , ( 𝑢 𝑓 ( 2 · 𝑣 ) ) , ( 𝑢 𝑔 ( ( 2 · 𝑣 ) − 1 ) ) ) ) ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) )
37 36 ne0d ( ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) ∧ ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ )
38 37 ex ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ) )
39 38 exlimdvv ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( ∃ 𝑓𝑔 ( 𝑓 ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑦 ) ∧ 𝑔 ∈ ( 𝑦 ( PHtpy ‘ 𝐽 ) 𝑧 ) ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ) )
40 28 39 mpd ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ )
41 isphtpc ( 𝑥 ( ≃ph𝐽 ) 𝑧 ↔ ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ 𝑧 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑧 ) ≠ ∅ ) )
42 17 21 40 41 syl3anbrc ( ( 𝑥 ( ≃ph𝐽 ) 𝑦𝑦 ( ≃ph𝐽 ) 𝑧 ) → 𝑥 ( ≃ph𝐽 ) 𝑧 )
43 eqid ( 𝑦 ∈ ( 0 [,] 1 ) , 𝑧 ∈ ( 0 [,] 1 ) ↦ ( 𝑥𝑦 ) ) = ( 𝑦 ∈ ( 0 [,] 1 ) , 𝑧 ∈ ( 0 [,] 1 ) ↦ ( 𝑥𝑦 ) )
44 id ( 𝑥 ∈ ( II Cn 𝐽 ) → 𝑥 ∈ ( II Cn 𝐽 ) )
45 43 44 phtpyid ( 𝑥 ∈ ( II Cn 𝐽 ) → ( 𝑦 ∈ ( 0 [,] 1 ) , 𝑧 ∈ ( 0 [,] 1 ) ↦ ( 𝑥𝑦 ) ) ∈ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) )
46 45 ne0d ( 𝑥 ∈ ( II Cn 𝐽 ) → ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ )
47 46 ancli ( 𝑥 ∈ ( II Cn 𝐽 ) → ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) )
48 47 pm4.71ri ( 𝑥 ∈ ( II Cn 𝐽 ) ↔ ( ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ) )
49 df-3an ( ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ∧ 𝑥 ∈ ( II Cn 𝐽 ) ) ↔ ( ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ) )
50 3ancomb ( ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ∧ 𝑥 ∈ ( II Cn 𝐽 ) ) ↔ ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) )
51 48 49 50 3bitr2i ( 𝑥 ∈ ( II Cn 𝐽 ) ↔ ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) )
52 isphtpc ( 𝑥 ( ≃ph𝐽 ) 𝑥 ↔ ( 𝑥 ∈ ( II Cn 𝐽 ) ∧ 𝑥 ∈ ( II Cn 𝐽 ) ∧ ( 𝑥 ( PHtpy ‘ 𝐽 ) 𝑥 ) ≠ ∅ ) )
53 51 52 bitr4i ( 𝑥 ∈ ( II Cn 𝐽 ) ↔ 𝑥 ( ≃ph𝐽 ) 𝑥 )
54 1 16 42 53 iseri ( ≃ph𝐽 ) Er ( II Cn 𝐽 )