Equations
- Mt.instIsReservationReservation = spec.is_reservation
Equations
- Mt.mk_thread task = { T := T, block_until := fun x => true, task := task }
- Done: {spec : Mt.Spec} → spec.State → Mt.Thread.IterationResult spec
- Panic: {spec : Mt.Spec} → spec.State → Mt.Thread.IterationResult spec
- Running: {spec : Mt.Spec} → spec.State → Mt.Thread spec → Mt.Thread.IterationResult spec
Instances For
Equations
- One or more equations did not get rendered due to their size.
def
Mt.Thread.iterate
{spec : Mt.Spec}
:
Mt.Thread spec → spec.State → Mt.Thread.IterationResult spec
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
- Mt.Thread.valid thread = Mt.TaskM.valid thread.task Mt.IsReservation.empty thread.block_until fun x r => r = Mt.IsReservation.empty