Monotonicity #
This file defines (strictly) monotone/antitone functions. Contrary to standard mathematical usage, "monotone"/"mono" here means "increasing", not "increasing or decreasing". We use "antitone"/"anti" to mean "decreasing".
Definitions #
monotone f
: A functionf
between two preorders is monotone ifa ≤ b
impliesf a ≤ f b
.antitone f
: A functionf
between two preorders is antitone ifa ≤ b
impliesf b ≤ f a
.monotone_on f s
: Same asmonotone f
, but for alla, b ∈ s
.antitone_on f s
: Same asantitone f
, but for alla, b ∈ s
.strict_mono f
: A functionf
between two preorders is strictly monotone ifa < b
impliesf a < f b
.strict_anti f
: A functionf
between two preorders is strictly antitone ifa < b
impliesf b < f a
.strict_mono_on f s
: Same asstrict_mono f
, but for alla, b ∈ s
.strict_anti_on f s
: Same asstrict_anti f
, but for alla, b ∈ s
.
Main theorems #
monotone_nat_of_le_succ
,monotone_int_of_le_succ
: Iff : ℕ → α
orf : ℤ → α
andf n ≤ f (n + 1)
for alln
, thenf
is monotone.antitone_nat_of_succ_le
,antitone_int_of_succ_le
: Iff : ℕ → α
orf : ℤ → α
andf (n + 1) ≤ f n
for alln
, thenf
is antitone.strict_mono_nat_of_lt_succ
,strict_mono_int_of_lt_succ
: Iff : ℕ → α
orf : ℤ → α
andf n < f (n + 1)
for alln
, thenf
is strictly monotone.strict_anti_nat_of_succ_lt
,strict_anti_int_of_succ_lt
: Iff : ℕ → α
orf : ℤ → α
andf (n + 1) < f n
for alln
, thenf
is strictly antitone.
Implementation notes #
Some of these definitions used to only require has_le α
or has_lt α
. The advantage of this is
unclear and it led to slight elaboration issues. Now, everything requires preorder α
and seems to
work fine. Related Zulip discussion:
https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Order.20diamond/near/254353352.
TODO #
The above theorems are also true in ℕ+
, fin n
... To make that work, we need succ_order α
and succ_archimedean α
.
Tags #
monotone, strictly monotone, antitone, strictly antitone, increasing, strictly increasing, decreasing, strictly decreasing
A function f
is strictly monotone if a < b
implies f a < f b
.
Equations
- strict_mono f = ∀ ⦃a b : α⦄, a < b → f a < f b
A function f
is strictly antitone if a < b
implies f b < f a
.
Equations
- strict_anti f = ∀ ⦃a b : α⦄, a < b → f b < f a
Monotonicity on the dual order #
Strictly many of the *_on.dual
lemmas in this section should use of_dual ⁻¹' s
instead of s
,
but right now this is not possible as set.preimage
is not defined yet, and importing it creates
an import cycle.