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 functionfbetween two preorders is monotone ifa ≤ bimpliesf a ≤ f b.antitone f: A functionfbetween two preorders is antitone ifa ≤ bimpliesf 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 functionfbetween two preorders is strictly monotone ifa < bimpliesf a < f b.strict_anti f: A functionfbetween two preorders is strictly antitone ifa < bimpliesf 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, thenfis monotone.antitone_nat_of_succ_le,antitone_int_of_succ_le: Iff : ℕ → αorf : ℤ → αandf (n + 1) ≤ f nfor alln, thenfis antitone.strict_mono_nat_of_lt_succ,strict_mono_int_of_lt_succ: Iff : ℕ → αorf : ℤ → αandf n < f (n + 1)for alln, thenfis strictly monotone.strict_anti_nat_of_succ_lt,strict_anti_int_of_succ_lt: Iff : ℕ → αorf : ℤ → αandf (n + 1) < f nfor alln, thenfis 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.
Often, you should not need the rewriting lemmas. Instead, you probably want to add .dual,
.dual_left or .dual_right to your monotone/antitone hypothesis.
Alias of antitone_comp_of_dual_iff.
Alias of monotone_comp_of_dual_iff.
Alias of antitone_to_dual_comp_iff.
Alias of monotone_to_dual_comp_iff.
Alias of antitone_on_comp_of_dual_iff.
Alias of monotone_on_comp_of_dual_iff.
Alias of antitone_on_to_dual_comp_iff.
Alias of monotone_on_to_dual_comp_iff.
Alias of strict_anti_comp_of_dual_iff.
Alias of strict_mono_comp_of_dual_iff.
Alias of strict_anti_to_dual_comp_iff.
Alias of strict_mono_to_dual_comp_iff.
Alias of strict_anti_on_comp_of_dual_iff.
Alias of strict_mono_on_comp_of_dual_iff.
Alias of strict_anti_on_to_dual_comp_iff.
Alias of strict_mono_on_to_dual_comp_iff.