Metamath Proof Explorer


Theorem ssfzoulel

Description: If a half-open integer range is a subset of a half-open range of nonnegative integers, but its lower bound is greater than or equal to the upper bound of the containing range, or its upper bound is less than or equal to 0, then its upper bound is less than or equal to its lower bound (and therefore it is actually empty). (Contributed by Alexander van der Vekens, 24-May-2018)

Ref Expression
Assertion ssfzoulel
|- ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( ( N <_ A \/ B <_ 0 ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> B <_ A ) ) )

Proof

Step Hyp Ref Expression
1 simpl2
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> A e. ZZ )
2 simpl3
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> B e. ZZ )
3 zre
 |-  ( A e. ZZ -> A e. RR )
4 zre
 |-  ( B e. ZZ -> B e. RR )
5 ltnle
 |-  ( ( A e. RR /\ B e. RR ) -> ( A < B <-> -. B <_ A ) )
6 3 4 5 syl2an
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> ( A < B <-> -. B <_ A ) )
7 6 3adant1
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( A < B <-> -. B <_ A ) )
8 7 biimpar
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> A < B )
9 ssfzo12
 |-  ( ( A e. ZZ /\ B e. ZZ /\ A < B ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> ( 0 <_ A /\ B <_ N ) ) )
10 1 2 8 9 syl3anc
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> ( 0 <_ A /\ B <_ N ) ) )
11 4 adantl
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> B e. RR )
12 0red
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> 0 e. RR )
13 3 adantr
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> A e. RR )
14 letr
 |-  ( ( B e. RR /\ 0 e. RR /\ A e. RR ) -> ( ( B <_ 0 /\ 0 <_ A ) -> B <_ A ) )
15 11 12 13 14 syl3anc
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> ( ( B <_ 0 /\ 0 <_ A ) -> B <_ A ) )
16 15 expcomd
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> ( 0 <_ A -> ( B <_ 0 -> B <_ A ) ) )
17 16 imp
 |-  ( ( ( A e. ZZ /\ B e. ZZ ) /\ 0 <_ A ) -> ( B <_ 0 -> B <_ A ) )
18 17 con3d
 |-  ( ( ( A e. ZZ /\ B e. ZZ ) /\ 0 <_ A ) -> ( -. B <_ A -> -. B <_ 0 ) )
19 18 ex
 |-  ( ( A e. ZZ /\ B e. ZZ ) -> ( 0 <_ A -> ( -. B <_ A -> -. B <_ 0 ) ) )
20 19 3adant1
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( 0 <_ A -> ( -. B <_ A -> -. B <_ 0 ) ) )
21 20 com23
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( -. B <_ A -> ( 0 <_ A -> -. B <_ 0 ) ) )
22 21 imp
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( 0 <_ A -> -. B <_ 0 ) )
23 nn0re
 |-  ( N e. NN0 -> N e. RR )
24 4 23 3 3anim123i
 |-  ( ( B e. ZZ /\ N e. NN0 /\ A e. ZZ ) -> ( B e. RR /\ N e. RR /\ A e. RR ) )
25 24 3coml
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( B e. RR /\ N e. RR /\ A e. RR ) )
26 letr
 |-  ( ( B e. RR /\ N e. RR /\ A e. RR ) -> ( ( B <_ N /\ N <_ A ) -> B <_ A ) )
27 25 26 syl
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( ( B <_ N /\ N <_ A ) -> B <_ A ) )
28 27 expdimp
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ B <_ N ) -> ( N <_ A -> B <_ A ) )
29 28 con3d
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ B <_ N ) -> ( -. B <_ A -> -. N <_ A ) )
30 29 impancom
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( B <_ N -> -. N <_ A ) )
31 22 30 anim12d
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( ( 0 <_ A /\ B <_ N ) -> ( -. B <_ 0 /\ -. N <_ A ) ) )
32 ioran
 |-  ( -. ( N <_ A \/ B <_ 0 ) <-> ( -. N <_ A /\ -. B <_ 0 ) )
33 32 biancomi
 |-  ( -. ( N <_ A \/ B <_ 0 ) <-> ( -. B <_ 0 /\ -. N <_ A ) )
34 31 33 syl6ibr
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( ( 0 <_ A /\ B <_ N ) -> -. ( N <_ A \/ B <_ 0 ) ) )
35 10 34 syld
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> -. ( N <_ A \/ B <_ 0 ) ) )
36 35 con2d
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ -. B <_ A ) -> ( ( N <_ A \/ B <_ 0 ) -> -. ( A ..^ B ) C_ ( 0 ..^ N ) ) )
37 36 impancom
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ ( N <_ A \/ B <_ 0 ) ) -> ( -. B <_ A -> -. ( A ..^ B ) C_ ( 0 ..^ N ) ) )
38 37 con4d
 |-  ( ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) /\ ( N <_ A \/ B <_ 0 ) ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> B <_ A ) )
39 38 ex
 |-  ( ( N e. NN0 /\ A e. ZZ /\ B e. ZZ ) -> ( ( N <_ A \/ B <_ 0 ) -> ( ( A ..^ B ) C_ ( 0 ..^ N ) -> B <_ A ) ) )