Documentation

Lean.Elab.Tactic.Do.Contract

Intrinsic verification syntax #

A definition carrying given xs / requires P / ensures b => Q / throws e => R clauses expands to the plain definition plus a vcgen-proven, @[spec]-tagged specification theorem f.spec. An assert element in a do block elaborates to the assertion gadget that vcgen proves in the course of that theorem.

The identifiers bound by an explicit (…) binder, used to apply the definition in its spec.

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

    Expand a def carrying given/requires/ensures/throws clauses into the plain def plus a spec theorem @[spec] theorem f.spec : ∀ xs, ⦃P⦄ f args ⦃fun b => Q; E⦄ proved by vcgen. A where finally | spec => steps section supplies grind-mode steps for the verification conditions finish leaves open.

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

      Elaborating contract_eposts% e unfolds the EPostSlot.set applications and ⊥ in e, e.g. to an estack⟨...⟩ expression. Used in the expansion of throws clauses to yield simpler specs.

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

        Report the experimental status of each contract clause the notice carries, in a slight command-level misuse of a contractDeclVal node. Does not change the environment.

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