Documentation

Std.Internal.Order.OfProp

Embedding of propositions into a complete lattice #

⌜p⌝ embeds a proposition p into an assertion lattice as if p holds and otherwise.

noncomputable def Lean.Order.CompleteLattice.ofProp {l : Type u_1} [CompleteLattice l] (p : Prop) :
l

Embedding of propositions into an CompleteLattice type. ⌜p⌝ embeds p : Prop as if p holds and otherwise.

Equations
Instances For

    Embedding of propositions into an CompleteLattice type. ⌜p⌝ embeds p : Prop as if p holds and otherwise.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Lean.Order.CompleteLattice.ofProp_imp {l : Type u_1} [CompleteLattice l] (p₁ p₂ : Prop) :
      (p₁p₂)PartialOrder.rel (ofProp p₁) (ofProp p₂)
      @[simp]
      @[simp]
      @[simp]
      theorem Lean.Order.CompleteLattice.ofProp_apply {σ : Type v} {β : Type u} [CompleteLattice β] (p : Prop) (s : σ) :

      Pointwise characterization of CompleteLattice.ofProp on a function lattice.

      theorem Lean.Order.le_ofProp {l : Type u_1} [CompleteLattice l] (x : l) (p : Prop) :

      x ⊑ ⌜p⌝ whenever p holds.

      theorem Lean.Order.ofProp_le {l : Type u_1} [CompleteLattice l] (p : Prop) (rhs : l) :

      ⌜p⌝ ⊑ rhs reduces to assuming p and proving ⊤ ⊑ rhs.

      theorem Lean.Order.ofProp_meet_le {l : Type u_1} [CompleteLattice l] (p : Prop) (x rhs : l) :

      ⌜p⌝ ⊓ x ⊑ rhs reduces to assuming p and proving x ⊑ rhs.

      @[simp]

      Embedding a proposition into the Prop lattice (⌜p⌝) is the proposition itself.

      Prop-valued, fixed-arity specializations of CompleteLattice.ofProp_apply: ⌜p⌝ at a state-indexed Prop lattice, applied to its states, is p. Fixing the carrier to Prop (a ground instance) leaves every parameter recoverable from the trigger, so these are usable @[grind =] lemmas where the general ofProp_apply is not. They reduce a guard straight to its Prop in one step, avoiding the intermediate (⌜p⌝ : Prop) whose instance ofProp_prop_eq fails to match.

      theorem Lean.Order.CompleteLattice.ofProp_apply_1 {σ₁ : Type u_1} (p : Prop) (s₁ : σ₁) :
      ofProp p s₁ = p
      theorem Lean.Order.CompleteLattice.ofProp_apply_2 {σ₁ : Type u_1} {σ₂ : Type u_2} (p : Prop) (s₁ : σ₁) (s₂ : σ₂) :
      ofProp p s₁ s₂ = p
      theorem Lean.Order.CompleteLattice.ofProp_apply_3 {σ₁ : Type u_1} {σ₂ : Type u_2} {σ₃ : Type u_3} (p : Prop) (s₁ : σ₁) (s₂ : σ₂) (s₃ : σ₃) :
      ofProp p s₁ s₂ s₃ = p
      theorem Lean.Order.CompleteLattice.ofProp_apply_4 {σ₁ : Type u_1} {σ₂ : Type u_2} {σ₃ : Type u_3} {σ₄ : Type u_4} (p : Prop) (s₁ : σ₁) (s₂ : σ₂) (s₃ : σ₃) (s₄ : σ₄) :
      ofProp p s₁ s₂ s₃ s₄ = p
      theorem Lean.Order.CompleteLattice.ofProp_apply_5 {σ₁ : Type u_1} {σ₂ : Type u_2} {σ₃ : Type u_3} {σ₄ : Type u_4} {σ₅ : Type u_5} (p : Prop) (s₁ : σ₁) (s₂ : σ₂) (s₃ : σ₃) (s₄ : σ₄) (s₅ : σ₅) :
      ofProp p s₁ s₂ s₃ s₄ s₅ = p
      theorem Lean.Order.ofProp_elim {l : Type u} [CompleteLattice l] {Q R : l} {φ : Prop} (h1 : PartialOrder.rel Q (CompleteLattice.ofProp φ)) (h2 : φPartialOrder.rel Q R) :
      theorem Lean.Order.ofProp_mono {l : Type u} [CompleteLattice l] {φ₁ φ₂ : Prop} (h : φ₁φ₂) :
      theorem Lean.Order.ofProp_congr {l : Type u} [CompleteLattice l] {φ₁ φ₂ : Prop} (h : φ₁ φ₂) :
      theorem Lean.Order.ofProp_forall_le {l : Type u} [CompleteLattice l] {β : Type u_1} {Φ : βProp} :
      PartialOrder.rel (CompleteLattice.ofProp (∀ (x : β), Φ x)) (iInf fun (x : β) => CompleteLattice.ofProp (Φ x))
      theorem Lean.Order.ofProp_exists {l : Type u} [CompleteLattice l] {β : Type u_1} {Φ : βProp} :
      (iSup fun (x : β) => CompleteLattice.ofProp (Φ x)) = CompleteLattice.ofProp ( (x : β), Φ x)
      theorem Lean.Order.ofProp_forall {l : Type u} [CompleteLattice l] {β : Type u_1} {Φ : βProp} :
      (iInf fun (x : β) => CompleteLattice.ofProp (Φ x)) = CompleteLattice.ofProp (∀ (x : β), Φ x)
      theorem Lean.Order.le_apply_of_point_meet_le {σ : Type u} {β : Type v} [CompleteLattice β] (s : σ) (pre : β) (Q : σβ) (h : PartialOrder.rel (fun (u : σ) => meet (CompleteLattice.ofProp (u = s)) pre) Q) :

      Frame a single state coordinate: from the function-order premise (fun u => ⌜u = s⌝ ⊓ pre) ⊑ Q conclude the point entailment pre ⊑ Q s. Instantiating the premise at u := s collapses ⌜s = s⌝ ⊓ pre to pre. Iterating it over a state chain point-frames pre ⊑ Q s₁ … sₙ to the function-order goal (fun u⃗ => ⌜u⃗ = s⃗⌝ ⊓ pre) ⊑ Q.