Documentation

Mt.Thread.Basic

structure Mt.Thread (spec : Mt.Spec) :
Type 1
  • T : Type
  • block_until : spec.StateBool
  • task : Mt.TaskM spec T

A single thread of the system. It consists of a task to execute and a blocking predicate. The system only iterates a thread if the blocking predicate holds

Instances For
    Equations
    • Mt.instIsReservationReservation = spec.is_reservation
    def Mt.mk_thread {spec : Mt.Spec} {T : Type} (task : Mt.TaskM spec T) :
    Equations
    inductive Mt.Thread.IterationResult (spec : Mt.Spec) :
    Type 1
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      def Mt.Thread.iterate {spec : Mt.Spec} :
      Mt.Thread specspec.StateMt.Thread.IterationResult spec
      def Mt.Thread.valid {spec : Mt.Spec} (thread : Mt.Thread spec) :
      Prop

      Small wrapper around TaskM.valid. A thread is considered valid if its underlying task is valid and ensures that it drops its reservation in the end.

      To prove Thread.valid, you should unfold Thread.valid, for example using rw [Thread.valid] and continue applying the validation theoreoms for TaskM.valid, like TaskM.valid_bind

      Equations