Documentation

Lean.Elab.Tactic.Do.Internal.VCGen.Entails

Entailment-shaped goal decomposition for pre ⊑ rhs targets: unfolding Triple, introducing excess state arguments and pure preconditions, reducing exception-postcondition projections, and decomposing lattice connectives.

Unfold ⦃P⦄ x ⦃Q; E⦄ into the underlying entailment P ⊑ wp x Q E.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Apply precondition-intro rule rule to goal, then introduce the freed hypothesis, leaving as the residual precondition. Returns the new goal and the introduced hypothesis.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Reduce an EPost.Cons.head projection on the RHS of pre ⊑ rhs to the underlying component: concrete epost⟨…⟩ values project to the selected component, and ⊥.head x₁ … xₙ rewrites to via replaceEPostHeadBot?. Returns none if the RHS is not such a projection.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Decompose a supported lattice connective (, , ⌜p⌝, ) or a registered frame operator on the RHS of pre ⊑ rhs by saturating it with the built-in and @[frameproc] rewrites, closing it with a terminal, and point-framing any excess state arguments. Returns none if the head is neither a built-in connective nor a frame operator, or its rule does not apply.

        An embedded proposition ⌜p⌝ is decomposed only when the precondition is : its -fixed terminal top_le_ofProp fails to apply otherwise, since turning pre ⊑ ⌜p⌝ into the subgoal p drops pre.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Reduce a precondition that is the bare top applied to the state arguments introduced by le_of_forall_le, (⊤ : σ₁ → … → σₙ → Prop) s₁ … sₙ, to the bare (⊤ : Prop), rewriting goal's target pre ⊑ rhs to ⊤ ⊑ rhs. The equation pre = ⊤ is built on demand by folding Lean.Order.top_apply over the excess arguments (mirroring replaceEPostHeadBot?'s bot_apply fold) and applied with replaceTargetEq.

          The proof term is built directly with mkApp/mkConst and instances extracted from pre, avoiding mkAppM/instance synthesis (both expensive and unable to unify max-of-universe-variable instance levels in the abstract-monad setting). Returns none if pre is not the bare top applied to ≥ 1 argument, or its lattice instances are not in the expected instCompleteLatticePi shape (the caller then falls through).

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Reduce a Prop-lattice goal (⊤ : Prop) ⊑ φ to the bare proposition φ via top_le_prop, returning any other goal unchanged. The match on Sort 0 keeps it to the Prop base lattice, where the reduction is sound; entailments at an abstract lattice carrier pass through.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For