Mini

Objective Bend

Mini's language: lazy open recursion over first-class, partial, composable specifications, after Faré's account of objects.

Mini supplies what the language does not: identity, authority, effect admission, funding and disclosure.

Core4

Example

spec Base for Shop:
  def price(n: Nat) -> Nat:
    n * 3n

spec Billing for Shop:
  def bill(n: Nat) -> Nat:
    self.price(n) + 1n

spec Surcharge for Shop:
  def price(n: Nat) -> Nat:
    super.price(n) + 2n

Billing calls self.price, so it sees a layer added later. bill(2) is 7 under Base and Billing, and 9 once Surcharge is composed in. A gate re-runs every command in the tutorial and fails on any changed output.

Proved

In Theory/ObjectiveBend*.lean; axioms propext, Classical.choice, Quot.sound; no sorry.

PropertyStatement
SoundnessIf the bounded machine finishes a closed term, the reference semantics evaluates it to the machine's result (weak head).
PreservationEvery machine step preserves typing.
No refusalA closed term the checker accepts never reaches a refusal. It may still diverge or exhaust its limits.
CompletenessA closed term that evaluates to an observable value finishes on the machine in finitely many steps, given large enough limits. No bound on those limits is proved.
Fast machineEvery compiled call runs a fast machine proved equal to the specified one.
Front endWhen the checker accepts the front end's output, that term is typed, the machine never refuses it, and a finished run is a deep evaluation of it. The checker's reading of the front end's packet is proved to be the elaborator's own term.

Not proved, not wired

Language guide: every theorem, its hypotheses, and what Core4 lacks.