Metamath Proof Explorer


Theorem ioondisj2

Description: A condition for two open intervals not to be disjoint. (Contributed by Glauco Siliprandi, 11-Dec-2019)

Ref Expression
Assertion ioondisj2 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( ( 𝐴 (,) 𝐵 ) ∩ ( 𝐶 (,) 𝐷 ) ) ≠ ∅ )

Proof

Step Hyp Ref Expression
1 simpll1 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐴 ∈ ℝ* )
2 simpll2 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐵 ∈ ℝ* )
3 simplr1 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐶 ∈ ℝ* )
4 simplr2 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐷 ∈ ℝ* )
5 iooin ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ* ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ* ) ) → ( ( 𝐴 (,) 𝐵 ) ∩ ( 𝐶 (,) 𝐷 ) ) = ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) if ( 𝐵𝐷 , 𝐵 , 𝐷 ) ) )
6 1 2 3 4 5 syl22anc ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( ( 𝐴 (,) 𝐵 ) ∩ ( 𝐶 (,) 𝐷 ) ) = ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) if ( 𝐵𝐷 , 𝐵 , 𝐷 ) ) )
7 simprr ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐷𝐵 )
8 xrmineq ( ( 𝐵 ∈ ℝ*𝐷 ∈ ℝ*𝐷𝐵 ) → if ( 𝐵𝐷 , 𝐵 , 𝐷 ) = 𝐷 )
9 2 4 7 8 syl3anc ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → if ( 𝐵𝐷 , 𝐵 , 𝐷 ) = 𝐷 )
10 9 oveq2d ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) if ( 𝐵𝐷 , 𝐵 , 𝐷 ) ) = ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) 𝐷 ) )
11 simpr ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ 𝐴𝐶 ) → 𝐴𝐶 )
12 11 iftrued ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ 𝐴𝐶 ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) = 𝐶 )
13 simplr3 ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → 𝐶 < 𝐷 )
14 13 adantr ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ 𝐴𝐶 ) → 𝐶 < 𝐷 )
15 12 14 eqbrtrd ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ 𝐴𝐶 ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) < 𝐷 )
16 simpr ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ ¬ 𝐴𝐶 ) → ¬ 𝐴𝐶 )
17 16 iffalsed ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ ¬ 𝐴𝐶 ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) = 𝐴 )
18 simplrl ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ ¬ 𝐴𝐶 ) → 𝐴 < 𝐷 )
19 17 18 eqbrtrd ( ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) ∧ ¬ 𝐴𝐶 ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) < 𝐷 )
20 15 19 pm2.61dan ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) < 𝐷 )
21 3 1 ifcld ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → if ( 𝐴𝐶 , 𝐶 , 𝐴 ) ∈ ℝ* )
22 ioon0 ( ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) ∈ ℝ*𝐷 ∈ ℝ* ) → ( ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) 𝐷 ) ≠ ∅ ↔ if ( 𝐴𝐶 , 𝐶 , 𝐴 ) < 𝐷 ) )
23 21 4 22 syl2anc ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) 𝐷 ) ≠ ∅ ↔ if ( 𝐴𝐶 , 𝐶 , 𝐴 ) < 𝐷 ) )
24 20 23 mpbird ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) 𝐷 ) ≠ ∅ )
25 10 24 eqnetrd ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( if ( 𝐴𝐶 , 𝐶 , 𝐴 ) (,) if ( 𝐵𝐷 , 𝐵 , 𝐷 ) ) ≠ ∅ )
26 6 25 eqnetrd ( ( ( ( 𝐴 ∈ ℝ*𝐵 ∈ ℝ*𝐴 < 𝐵 ) ∧ ( 𝐶 ∈ ℝ*𝐷 ∈ ℝ*𝐶 < 𝐷 ) ) ∧ ( 𝐴 < 𝐷𝐷𝐵 ) ) → ( ( 𝐴 (,) 𝐵 ) ∩ ( 𝐶 (,) 𝐷 ) ) ≠ ∅ )