Additional Complete Lattice Operations #
Extensions to Lean.Order.CompleteLattice providing additional operations
needed for program verification.
Bottom element of a complete lattice (infimum of all elements)
Instances For
Prop Embedding into Partial Order #
Embedding propositions into a partial order with top and bottom.
Pure embedding of propositions into a complete lattice.
Instances For
Pure embedding of propositions into a complete lattice.
Instances For
@[simp]
@[simp]
theorem
Lean.Order.LE.pure_imp
{l : Type u}
[CompleteLattice l]
(p₁ p₂ : Prop)
:
(p₁ → p₂) → PartialOrder.rel (CompleteLattice.pure p₁) (CompleteLattice.pure p₂)
@[simp]
theorem
Lean.Order.le_pure
{l : Type u}
[CompleteLattice l]
(x : l)
(p : Prop)
:
p → PartialOrder.rel x (CompleteLattice.pure p)
Proving pre ⊑ ⌜p⌝ reduces to proving p.
Pointwise characterization of ⌜p⌝ on function lattices: (⌜p⌝ : σ → β) s = (⌜p⌝ : β).
@[simp]
theorem
Lean.Order.pure_fun_apply
{σ : Type v}
{β : Type w}
[CompleteLattice β]
(p : Prop)
(s : σ)
:
@[simp]
@[simp]
CompleteLattice instance for Prop #
We define a CompleteLattice structure on Prop where:
- rel is implication (→)
- sup is existential quantification over the predicate
theorem
Lean.Order.loom_prop_pre_intro
(x y : Prop)
:
(x → PartialOrder.rel True y) → PartialOrder.rel x y
theorem
Lean.Order.meet_pre_intro
(a b c : Prop)
:
(a → PartialOrder.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)
:
(b → PartialOrder.rel a c) → PartialOrder.rel (meet a b) c
Intro the right component of a meet precondition: a ⊓ b ⊑ c becomes a → b ⊑ c.
theorem
Lean.Order.true_meet_pre_elim
(b c : Prop)
:
PartialOrder.rel b c → PartialOrder.rel (meet True b) c
Eliminate True from the left of a meet precondition.