Documentation

Loom.LatticeExt

Additional Complete Lattice Operations #

Extensions to Lean.Order.CompleteLattice providing additional operations needed for program verification.

noncomputable def Lean.Order.latticeTop {α : Type u} [CompleteLattice α] :
α

Top element of a complete lattice (supremum of all elements)

Instances For

    Top element of a complete lattice (supremum of all elements)

    Instances For
      noncomputable def Lean.Order.latticeBot {α : Type u} [CompleteLattice α] :
      α

      Bottom element of a complete lattice (infimum of all elements)

      Instances For
        noncomputable def Lean.Order.meet {α : Type u} [CompleteLattice α] (x y : α) :
        α

        Binary meet (infimum)

        Instances For

          Binary meet (infimum)

          Instances For
            theorem Lean.Order.meet_le_left {α : Type u} [CompleteLattice α] (x y : α) :
            theorem Lean.Order.meet_le_right {α : Type u} [CompleteLattice α] (x y : α) :
            theorem Lean.Order.le_meet {α : Type u} [CompleteLattice α] (x y z : α) :
            noncomputable def Lean.Order.join {α : Type u} [CompleteLattice α] (x y : α) :
            α

            Binary join (supremum)

            Instances For

              Binary join (supremum)

              Instances For
                theorem Lean.Order.left_le_join {α : Type u} [CompleteLattice α] (x y : α) :
                theorem Lean.Order.right_le_join {α : Type u} [CompleteLattice α] (x y : α) :
                theorem Lean.Order.join_le {α : Type u} [CompleteLattice α] (x y z : α) :
                noncomputable def Lean.Order.iInf {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) :
                α

                Indexed infimum

                Instances For
                  theorem Lean.Order.iInf_le {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) (i : ι) :
                  theorem Lean.Order.le_iInf {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) (x : α) :
                  (∀ (i : ι), PartialOrder.rel x (f i))PartialOrder.rel x (iInf f)
                  @[simp]
                  theorem Lean.Order.iInf_fun_apply {ι : Type v} {σ : Type w} {β : Type u} [CompleteLattice β] (f : ισβ) (s : σ) :
                  iInf f s = iInf fun (i : ι) => f i s

                  Pointwise characterization of indexed infimum on function lattices.

                  noncomputable def Lean.Order.iSup {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) :
                  α

                  Indexed supremum

                  Instances For
                    theorem Lean.Order.le_iSup {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) (i : ι) :
                    theorem Lean.Order.iSup_le {α : Type u} [CompleteLattice α] {ι : Type v} (f : ια) (x : α) :
                    (∀ (i : ι), PartialOrder.rel (f i) x)PartialOrder.rel (iSup f) x
                    theorem Lean.Order.sup_fun_apply {σ : Type v} {β : Type w} [CompleteLattice β] (c : (σβ)Prop) (s : σ) :
                    CompleteLattice.sup c s = CompleteLattice.sup fun (y : β) => (f : σβ), c f f s = y

                    Pointwise characterization of CompleteLattice.sup on function lattices: (sup c) s = sup (fun y => ∃ f, c f ∧ f s = y).

                    @[simp]
                    theorem Lean.Order.meet_fun_apply {σ : Type v} {β : Type w} [CompleteLattice β] (a b : σβ) (s : σ) :
                    meet a b s = meet (a s) (b s)

                    Pointwise characterization of binary meet on function lattices.

                    @[simp]
                    theorem Lean.Order.join_fun_apply {σ : Type v} {β : Type w} [CompleteLattice β] (a b : σβ) (s : σ) :
                    join a b s = join (a s) (b s)

                    Pointwise characterization of binary join on function lattices.

                    Prop Embedding into Partial Order #

                    Embedding propositions into a partial order with top and bottom.

                    noncomputable def Lean.Order.CompleteLattice.pure {l : Type u} [CompleteLattice l] :
                    Propl

                    Pure embedding of propositions into a complete lattice.

                    Instances For

                      Pure embedding of propositions into a complete lattice.

                      Instances For
                        theorem Lean.Order.LE.pure_imp {l : Type u} [CompleteLattice l] (p₁ p₂ : Prop) :
                        theorem Lean.Order.le_pure {l : Type u} [CompleteLattice l] (x : l) (p : Prop) :

                        Proving pre ⊑ ⌜p⌝ reduces to proving p.

                        theorem Lean.Order.top_fun_apply {σ : Type v} {β : Type w} [CompleteLattice β] (s : σ) :

                        Pointwise characterization of ⌜p⌝ on function lattices: (⌜p⌝ : σ → β) s = (⌜p⌝ : β).

                        @[simp]
                        @[simp]
                        @[simp]

                        CompleteLattice instance for Prop #

                        We define a CompleteLattice structure on Prop where:

                        Supremum for Prop: true iff some element of the set is true

                        Instances For
                          theorem Lean.Order.meet_pre_intro (a b c : Prop) :
                          (aPartialOrder.rel b c)PartialOrder.rel (meet a b) c

                          Intro the left component of a meet precondition: a ⊓ b ⊑ c becomes a → b ⊑ c.

                          theorem Lean.Order.meet_pre_intro' (a b c : Prop) :
                          (bPartialOrder.rel a c)PartialOrder.rel (meet a b) c

                          Intro the right component of a meet precondition: a ⊓ b ⊑ c becomes a → b ⊑ c.

                          Eliminate True from the left of a meet precondition.

                          @[simp]
                          theorem Lean.Order.iInf_prop_eq_forall {ι : Type u} (f : ιProp) :
                          iInf f = ∀ (i : ι), f i
                          @[simp]
                          theorem Lean.Order.meet_prop_eq_and (a b : Prop) :
                          meet a b = (a b)
                          @[simp]
                          theorem Lean.Order.join_prop_eq_or (a b : Prop) :
                          join a b = (a b)