A complete lattice is a frame if binary meet distributes over arbitrary joins
(the frame law). This matches the Mathlib definition Order.Frame.
We keep CompleteLattice as a parameter (instead of extending it), so the class only
adds the frame law.
Instances
Heyting implication in a frame, defined as the join of all x such that a ⊓ x ⊑ b.
Equations
- Lean.Order.himp a b = Lean.Order.CompleteLattice.sup fun (x : α) => Lean.Order.PartialOrder.rel (Lean.Order.meet a x) b
Instances For
Equations
- Lean.Order.«term_⇨_» = Lean.ParserDescr.trailingNode `Lean.Order.«term_⇨_» 60 61 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⇨ ") (Lean.ParserDescr.cat `term 60))
Instances For
a ⇨ b is the least upper bound of {x | a ⊓ x ⊑ b} by definition.
Completeness direction that only needs CompleteLattice:
if a ⊓ x ⊑ b, then x ⊑ a ⇨ b.
⊤-specialized completeness direction: if a ⊑ b, then ⊤ ⊑ a ⇨ b.
This avoids the redundant ⊓ ⊤ that himp_complete would leave when the precondition is ⊤.
Soundness direction (a ⊓ (a ⇨ b) ⊑ b) from the frame distributivity law.
Pointwise characterization of Heyting implication on function lattices.