Additive, multiplicative, and anti- function classes #
Unbundled equational classes for maps between (semi)lattices: IsAdditive
(f (p ⊔ q) = f p ⊔ f q), IsMultiplicative (meets to meets),
IsAntiAdditive (joins to meets), IsAntiMultiplicative (meets to
joins), and IsAntiMorphic (both anti-properties). Each class implies
monotonicity or antitonicity; the IsCompletely* variants add the unit
conditions (f ⊤ = ⊤, f ⊤ = ⊥, …). The anti-classes are the plain
classes read into the order dual, so an additive function bundles as a
SupHom and anti-additivity is additivity composed with toDual.
Main declarations #
IsAdditive,IsMultiplicative,IsAntiAdditive,IsAntiMultiplicative,IsAntiMorphic— the classes, withMonotone/Antitoneconsequence lemmas.IsCompletely*— the unit-condition refinements.IsAdditive.toSupHom,isAntiAdditive_iff_isAdditive_toDual— the bundled-hom and duality bridges.isAntiAdditive_iff_mem,isAntiAdditive_iff_gq— pointwise forms at theSet- andProp-valued instances.GaloisConnection.isAdditiveand friends — adjoints land in the classes;exists_galoisConnection_iff_forall_sSup— the poset adjoint functor theorem ([UPSTREAM]candidate), with the finite corollaryisAdditive_and_bot_iff_exists_galoisConnection.
The property family #
Additive: f (p ⊔ q) = f p ⊔ f q.
Equations
- IsAdditive f = ∀ (p q : α), f (p ⊔ q) = f p ⊔ f q
Instances For
Multiplicative: f (p ⊓ q) = f p ⊓ f q.
Equations
- IsMultiplicative f = ∀ (p q : α), f (p ⊓ q) = f p ⊓ f q
Instances For
Anti-additive: f (p ⊔ q) = f p ⊓ f q, polymorphic in domain and
codomain.
Equations
- IsAntiAdditive f = ∀ (p q : α), f (p ⊔ q) = f p ⊓ f q
Instances For
Anti-multiplicative: f (p ⊓ q) = f p ⊔ f q.
Equations
- IsAntiMultiplicative f = ∀ (p q : α), f (p ⊓ q) = f p ⊔ f q
Instances For
Anti-morphic: anti-additive and anti-multiplicative.
Equations
- IsAntiMorphic f = (IsAntiAdditive f ∧ IsAntiMultiplicative f)
Instances For
Completely-variants #
Completely additive: additive and f ⊤ = ⊤.
Equations
- IsCompletelyAdditive f = (IsAdditive f ∧ f ⊤ = ⊤)
Instances For
Completely multiplicative: multiplicative and f ⊥ = ⊥.
Equations
- IsCompletelyMultiplicative f = (IsMultiplicative f ∧ f ⊥ = ⊥)
Instances For
Completely anti-additive: anti-additive and f ⊤ = ⊥.
Equations
- IsCompletelyAntiAdditive f = (IsAntiAdditive f ∧ f ⊤ = ⊥)
Instances For
Completely anti-multiplicative: anti-multiplicative and f ⊥ = ⊤.
Equations
- IsCompletelyAntiMultiplicative f = (IsAntiMultiplicative f ∧ f ⊥ = ⊤)
Instances For
Monotonicity consequences #
Additive implies monotone.
Multiplicative implies monotone.
Anti-additive implies antitone.
Anti-multiplicative implies antitone.
Anti-morphic implies anti-additive.
Anti-morphic implies anti-multiplicative.
Anti-morphic implies antitone.
mathlib hom-hierarchy bridges #
The function classes are the unbundled predicates for mathlib's bundled
lattice homs: an additive function is a SupHom, a multiplicative one an
InfHom. The anti-classes are the same notions read into the order dual —
anti-additivity is additivity composed with toDual (De Morgan duality),
so the .antitone consequences are the duals of the .monotone ones.
An additive function bundles as a SupHom.
Equations
- h.toSupHom = { toFun := f, map_sup' := h }
Instances For
A multiplicative function bundles as an InfHom.
Equations
- h.toInfHom = { toFun := f, map_inf' := h }
Instances For
De Morgan duality: anti-additivity is additivity into the order
dual — f sends joins to meets iff toDual ∘ f preserves joins.
Complementation #
Pointwise bridges #
The equational properties at the Set and GQ instances, in the membership
forms consumers destructure.
The Prop-valued instance: anti-additivity is
f (p ∪ q) ↔ f p ∧ f q.
Any function of the form fun X y => ∀ x ∈ X, P x y is anti-additive
in X.
Galois connections #
Adjoints land in the function classes: a left adjoint is additive, a
right adjoint multiplicative, and the anti-classes are adjoints into the
order dual. A single adjunction yields ⊥- (resp. ⊤-) preservation,
never the opposite unit, so only bi-adjoints reach the IsCompletely*
classes. exists_galoisConnection_iff_forall_sSup is the poset adjoint
functor theorem, an [UPSTREAM] candidate: mathlib has
GaloisConnection.l_sSup but not the converse.
A left adjoint is additive.
A right adjoint is multiplicative.
An antitone left adjoint — a left adjoint into the order dual — is anti-additive.
An antitone right adjoint — a right adjoint into the order dual — is anti-multiplicative.
A map with adjoints on both sides is completely additive: additivity
from its left adjunction, f ⊤ = ⊤ from its right one.
A map with adjoints on both sides is completely multiplicative:
multiplicativity from its right adjunction, f ⊥ = ⊥ from its left
one.
The morphism and anti-morphism unit conditions collide on a nontrivial codomain.
Poset adjoint functor theorem, construction half: a sSup-preserving
map between complete lattices is a left adjoint, with right adjoint
λ b => sSup {a | f a ≤ b}.
Poset adjoint functor theorem: a map between complete lattices is a left adjoint iff it preserves arbitrary suprema.
On a finite lattice, binary additivity plus ⊥-preservation is
exactly left-adjointness.