Documentation

Mathlib.Order.ModularLattice

Modular Lattices #

This file defines (semi)modular lattices, a kind of lattice useful in algebra. For examples, look to the subobject lattices of abelian groups, submodules, and ideals, or consider any distributive lattice.

Typeclasses #

We define (semi)modularity typeclasses as Prop-valued mixins.

Main Definitions #

Main Results #

References #

TODO #

class IsWeakUpperModularLattice (α : Type u_1) [inst : Lattice α] :
  • a ⊔ b⊔ b covers a and b if a and b both cover a ⊓ b⊓ b.

    covby_sup_of_inf_covby_covby : ∀ {a b : α}, a b aa b ba a b

A weakly upper modular lattice is a lattice where a ⊔ b⊔ b covers a and b if a and b both cover a ⊓ b⊓ b.

Instances
    class IsWeakLowerModularLattice (α : Type u_1) [inst : Lattice α] :
    • a and b cover a ⊓ b⊓ b if a ⊔ b⊔ b covers both a and b

      inf_covby_of_covby_covby_sup : ∀ {a b : α}, a a bb a ba b a

    A weakly lower modular lattice is a lattice where a and b cover a ⊓ b⊓ b if a ⊔ b⊔ b covers both a and b.

    Instances
      class IsUpperModularLattice (α : Type u_1) [inst : Lattice α] :
      • a ⊔ b⊔ b covers a and b if either a or b covers a ⊓ b⊓ b

        covby_sup_of_inf_covby : ∀ {a b : α}, a b ab a b

      An upper modular lattice, aka semimodular lattice, is a lattice where a ⊔ b⊔ b covers a and b if either a or b covers a ⊓ b⊓ b.

      Instances
        class IsLowerModularLattice (α : Type u_1) [inst : Lattice α] :
        • a and b both cover a ⊓ b⊓ b if a ⊔ b⊔ b covers either a or b

          inf_covby_of_covby_sup : ∀ {a b : α}, a a ba b b

        A lower modular lattice is a lattice where a and b both cover a ⊓ b⊓ b if a ⊔ b⊔ b covers either a or b.

        Instances
          class IsModularLattice (α : Type u_1) [inst : Lattice α] :
          • Whenever x ≤ z≤ z, then for any y, (x ⊔ y) ⊓ z ≤ x ⊔ (y ⊓ z)⊔ y) ⊓ z ≤ x ⊔ (y ⊓ z)⊓ z ≤ x ⊔ (y ⊓ z)≤ x ⊔ (y ⊓ z)⊔ (y ⊓ z)⊓ z)

            sup_inf_le_assoc_of_le : ∀ {x : α} (y : α) {z : α}, x z(x y) z x y z

          A modular lattice is one with a limited associativity between ⊓⊓ and ⊔⊔.

          Instances
            theorem covby_sup_of_inf_covby_of_inf_covby_left {α : Type u_1} [inst : Lattice α] [inst : IsWeakUpperModularLattice α] {a : α} {b : α} :
            a b aa b ba a b
            theorem covby_sup_of_inf_covby_of_inf_covby_right {α : Type u_1} [inst : Lattice α] [inst : IsWeakUpperModularLattice α] {a : α} {b : α} :
            a b aa b bb a b
            theorem Covby.sup_of_inf_of_inf_left {α : Type u_1} [inst : Lattice α] [inst : IsWeakUpperModularLattice α] {a : α} {b : α} :
            a b aa b ba a b

            Alias of covby_sup_of_inf_covby_of_inf_covby_left.

            theorem Covby.sup_of_inf_of_inf_right {α : Type u_1} [inst : Lattice α] [inst : IsWeakUpperModularLattice α] {a : α} {b : α} :
            a b aa b bb a b

            Alias of covby_sup_of_inf_covby_of_inf_covby_right.

            theorem inf_covby_of_covby_sup_of_covby_sup_left {α : Type u_1} [inst : Lattice α] [inst : IsWeakLowerModularLattice α] {a : α} {b : α} :
            a a bb a ba b a
            theorem inf_covby_of_covby_sup_of_covby_sup_right {α : Type u_1} [inst : Lattice α] [inst : IsWeakLowerModularLattice α] {a : α} {b : α} :
            a a bb a ba b b
            theorem Covby.inf_of_sup_of_sup_left {α : Type u_1} [inst : Lattice α] [inst : IsWeakLowerModularLattice α] {a : α} {b : α} :
            a a bb a ba b a

            Alias of inf_covby_of_covby_sup_of_covby_sup_left.

            theorem Covby.inf_of_sup_of_sup_right {α : Type u_1} [inst : Lattice α] [inst : IsWeakLowerModularLattice α] {a : α} {b : α} :
            a a bb a ba b b

            Alias of inf_covby_of_covby_sup_of_covby_sup_right.

            theorem covby_sup_of_inf_covby_left {α : Type u_1} [inst : Lattice α] [inst : IsUpperModularLattice α] {a : α} {b : α} :
            a b ab a b
            theorem covby_sup_of_inf_covby_right {α : Type u_1} [inst : Lattice α] [inst : IsUpperModularLattice α] {a : α} {b : α} :
            a b ba a b
            theorem Covby.sup_of_inf_left {α : Type u_1} [inst : Lattice α] [inst : IsUpperModularLattice α] {a : α} {b : α} :
            a b ab a b

            Alias of covby_sup_of_inf_covby_left.

            theorem Covby.sup_of_inf_right {α : Type u_1} [inst : Lattice α] [inst : IsUpperModularLattice α] {a : α} {b : α} :
            a b ba a b

            Alias of covby_sup_of_inf_covby_right.

            theorem inf_covby_of_covby_sup_left {α : Type u_1} [inst : Lattice α] [inst : IsLowerModularLattice α] {a : α} {b : α} :
            a a ba b b
            theorem inf_covby_of_covby_sup_right {α : Type u_1} [inst : Lattice α] [inst : IsLowerModularLattice α] {a : α} {b : α} :
            b a ba b a
            theorem Covby.inf_of_sup_left {α : Type u_1} [inst : Lattice α] [inst : IsLowerModularLattice α] {a : α} {b : α} :
            a a ba b b

            Alias of inf_covby_of_covby_sup_left.

            theorem Covby.inf_of_sup_right {α : Type u_1} [inst : Lattice α] [inst : IsLowerModularLattice α] {a : α} {b : α} :
            b a ba b a

            Alias of inf_covby_of_covby_sup_right.

            theorem sup_inf_assoc_of_le {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} (y : α) {z : α} (h : x z) :
            (x y) z = x y z
            theorem IsModularLattice.inf_sup_inf_assoc {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} {y : α} {z : α} :
            x z y z = (x z y) z
            theorem inf_sup_assoc_of_le {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} (y : α) {z : α} (h : z x) :
            x y z = x (y z)
            theorem IsModularLattice.sup_inf_sup_assoc {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} {y : α} {z : α} :
            (x z) (y z) = (x z) y z
            theorem eq_of_le_of_inf_le_of_sup_le {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} {y : α} {z : α} (hxy : x y) (hinf : y z x z) (hsup : y z x z) :
            x = y
            theorem sup_lt_sup_of_lt_of_inf_le_inf {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} {y : α} {z : α} (hxy : x < y) (hinf : y z x z) :
            x z < y z
            theorem inf_lt_inf_of_lt_of_sup_le_sup {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {x : α} {y : α} {z : α} (hxy : x < y) (hinf : y z x z) :
            x z < y z
            theorem wellFounded_lt_exact_sequence {α : Type u_3} [inst : Lattice α] [inst : IsModularLattice α] {β : Type u_1} {γ : Type u_2} [inst : PartialOrder β] [inst : Preorder γ] (h₁ : WellFounded fun x x_1 => x < x_1) (h₂ : WellFounded fun x x_1 => x < x_1) (K : α) (f₁ : βα) (f₂ : αβ) (g₁ : γα) (g₂ : αγ) (gci : GaloisCoinsertion f₁ f₂) (gi : GaloisInsertion g₂ g₁) (hf : ∀ (a : α), f₁ (f₂ a) = a K) (hg : ∀ (a : α), g₁ (g₂ a) = a K) :
            WellFounded fun x x_1 => x < x_1

            A generalization of the theorem that if N is a submodule of M and N and M / N are both Artinian, then M is Artinian.

            theorem wellFounded_gt_exact_sequence {α : Type u_3} [inst : Lattice α] [inst : IsModularLattice α] {β : Type u_1} {γ : Type u_2} [inst : Preorder β] [inst : PartialOrder γ] (h₁ : WellFounded fun x x_1 => x > x_1) (h₂ : WellFounded fun x x_1 => x > x_1) (K : α) (f₁ : βα) (f₂ : αβ) (g₁ : γα) (g₂ : αγ) (gci : GaloisCoinsertion f₁ f₂) (gi : GaloisInsertion g₂ g₁) (hf : ∀ (a : α), f₁ (f₂ a) = a K) (hg : ∀ (a : α), g₁ (g₂ a) = a K) :
            WellFounded fun x x_1 => x > x_1

            A generalization of the theorem that if N is a submodule of M and N and M / N are both Noetherian, then M is Noetherian.

            @[simp]
            theorem infIccOrderIsoIccSup_apply_coe {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) (x : ↑(Set.Icc (a b) a)) :
            ↑((RelIso.toRelEmbedding (infIccOrderIsoIccSup a b)).toEmbedding x) = x b
            @[simp]
            theorem infIccOrderIsoIccSup_symm_apply_coe {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) (x : ↑(Set.Icc b (a b))) :
            ↑((RelIso.toRelEmbedding (RelIso.symm (infIccOrderIsoIccSup a b))).toEmbedding x) = a x
            def infIccOrderIsoIccSup {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) :
            ↑(Set.Icc (a b) a) ≃o ↑(Set.Icc b (a b))

            The diamond isomorphism between the intervals [a ⊓ b, a]⊓ b, a] and [b, a ⊔ b]⊔ b]

            Equations
            • One or more equations did not get rendered due to their size.
            theorem inf_strictMonoOn_Icc_sup {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {a : α} {b : α} :
            StrictMonoOn (fun c => a c) (Set.Icc b (a b))
            theorem sup_strictMonoOn_Icc_inf {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] {a : α} {b : α} :
            StrictMonoOn (fun c => c b) (Set.Icc (a b) a)
            @[simp]
            theorem infIooOrderIsoIooSup_apply_coe {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) (c : ↑(Set.Ioo (a b) a)) :
            ↑((RelIso.toRelEmbedding (infIooOrderIsoIooSup a b)).toEmbedding c) = c b
            @[simp]
            theorem infIooOrderIsoIooSup_symm_apply_coe {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) (c : ↑(Set.Ioo b (a b))) :
            ↑((RelIso.toRelEmbedding (RelIso.symm (infIooOrderIsoIooSup a b))).toEmbedding c) = a c
            def infIooOrderIsoIooSup {α : Type u_1} [inst : Lattice α] [inst : IsModularLattice α] (a : α) (b : α) :
            ↑(Set.Ioo (a b) a) ≃o ↑(Set.Ioo b (a b))

            The diamond isomorphism between the intervals ]a ⊓ b, a[⊓ b, a[ and }b, a ⊔ b[⊔ b[.

            Equations
            • One or more equations did not get rendered due to their size.
            def IsCompl.IicOrderIsoIci {α : Type u_1} [inst : Lattice α] [inst : BoundedOrder α] [inst : IsModularLattice α] {a : α} {b : α} (h : IsCompl a b) :
            ↑(Set.Iic a) ≃o ↑(Set.Ici b)

            The diamond isomorphism between the intervals Set.Iic a and Set.Ici b.

            Equations
            • One or more equations did not get rendered due to their size.
            theorem isModularLattice_iff_inf_sup_inf_assoc {α : Type u_1} [inst : Lattice α] :
            IsModularLattice α ∀ (x y z : α), x z y z = (x z y) z
            theorem Disjoint.disjoint_sup_right_of_disjoint_sup_left {α : Type u_1} [inst : Lattice α] [inst : OrderBot α] [inst : IsModularLattice α] {a : α} {b : α} {c : α} (h : Disjoint a b) (hsup : Disjoint (a b) c) :
            Disjoint a (b c)
            theorem Disjoint.disjoint_sup_left_of_disjoint_sup_right {α : Type u_1} [inst : Lattice α] [inst : OrderBot α] [inst : IsModularLattice α] {a : α} {b : α} {c : α} (h : Disjoint b c) (hsup : Disjoint a (b c)) :
            Disjoint (a b) c