Library Coq.Numbers.Integer.Abstract.ZMaxMin
Require
Import
ZAxioms
ZMulOrder
GenericMinMax
.
Properties of minimum and maximum specific to integer numbers
Module
Type
ZMaxMinProp
(
Import
Z
:
ZAxiomsMiniSig´
).
Include
ZMulOrderProp
Z
.
The following results are concrete instances of
max_monotone
and similar lemmas.
Succ
Lemma
succ_max_distr
:
forall
n
m
,
S
(
max
n
m
)
==
max
(
S
n
) (
S
m
).
Lemma
succ_min_distr
:
forall
n
m
,
S
(
min
n
m
)
==
min
(
S
n
) (
S
m
).
Pred
Lemma
pred_max_distr
:
forall
n
m
,
P
(
max
n
m
)
==
max
(
P
n
) (
P
m
).
Lemma
pred_min_distr
:
forall
n
m
,
P
(
min
n
m
)
==
min
(
P
n
) (
P
m
).
Add
Lemma
add_max_distr_l
:
forall
n
m
p
,
max
(
p
+
n
) (
p
+
m
)
==
p
+
max
n
m
.
Lemma
add_max_distr_r
:
forall
n
m
p
,
max
(
n
+
p
) (
m
+
p
)
==
max
n
m
+
p
.
Lemma
add_min_distr_l
:
forall
n
m
p
,
min
(
p
+
n
) (
p
+
m
)
==
p
+
min
n
m
.
Lemma
add_min_distr_r
:
forall
n
m
p
,
min
(
n
+
p
) (
m
+
p
)
==
min
n
m
+
p
.
Opp
Lemma
opp_max_distr
:
forall
n
m
,
-(
max
n
m
)
==
min
(
-
n
) (
-
m
).
Lemma
opp_min_distr
:
forall
n
m
,
-(
min
n
m
)
==
max
(
-
n
) (
-
m
).
Sub
Lemma
sub_max_distr_l
:
forall
n
m
p
,
max
(
p
-
n
) (
p
-
m
)
==
p
-
min
n
m
.
Lemma
sub_max_distr_r
:
forall
n
m
p
,
max
(
n
-
p
) (
m
-
p
)
==
max
n
m
-
p
.
Lemma
sub_min_distr_l
:
forall
n
m
p
,
min
(
p
-
n
) (
p
-
m
)
==
p
-
max
n
m
.
Lemma
sub_min_distr_r
:
forall
n
m
p
,
min
(
n
-
p
) (
m
-
p
)
==
min
n
m
-
p
.
Mul
Lemma
mul_max_distr_nonneg_l
:
forall
n
m
p
, 0
<=
p
->
max
(
p
*
n
) (
p
*
m
)
==
p
*
max
n
m
.
Lemma
mul_max_distr_nonneg_r
:
forall
n
m
p
, 0
<=
p
->
max
(
n
*
p
) (
m
*
p
)
==
max
n
m
*
p
.
Lemma
mul_min_distr_nonneg_l
:
forall
n
m
p
, 0
<=
p
->
min
(
p
*
n
) (
p
*
m
)
==
p
*
min
n
m
.
Lemma
mul_min_distr_nonneg_r
:
forall
n
m
p
, 0
<=
p
->
min
(
n
*
p
) (
m
*
p
)
==
min
n
m
*
p
.
Lemma
mul_max_distr_nonpos_l
:
forall
n
m
p
,
p
<=
0 ->
max
(
p
*
n
) (
p
*
m
)
==
p
*
min
n
m
.
Lemma
mul_max_distr_nonpos_r
:
forall
n
m
p
,
p
<=
0 ->
max
(
n
*
p
) (
m
*
p
)
==
min
n
m
*
p
.
Lemma
mul_min_distr_nonpos_l
:
forall
n
m
p
,
p
<=
0 ->
min
(
p
*
n
) (
p
*
m
)
==
p
*
max
n
m
.
Lemma
mul_min_distr_nonpos_r
:
forall
n
m
p
,
p
<=
0 ->
min
(
n
*
p
) (
m
*
p
)
==
max
n
m
*
p
.
End
ZMaxMinProp
.