Skip to content

Instantly share code, notes, and snippets.

@gterzian
Last active October 12, 2024 16:16
Show Gist options
  • Save gterzian/a3153151550ba8842589d7ad67cc4744 to your computer and use it in GitHub Desktop.
Save gterzian/a3153151550ba8842589d7ad67cc4744 to your computer and use it in GitHub Desktop.
---------------------- MODULE RenderingUpdateBatchingBroken ----------------------
EXTENDS FiniteSets, Naturals
VARIABLES task_queue, rendering_task_queued
CONSTANT N
----------------------------------------------------------------------------
Pipeline == 0..N
TypeOk == /\ task_queue \in [Pipeline -> BOOLEAN]
/\ rendering_task_queued \in BOOLEAN
QueuedTaskRuns == rendering_task_queued => \E p \in Pipeline: task_queue[p]
----------------------------------------------------------------------------
Init == /\ task_queue = [p \in Pipeline |-> FALSE]
/\ rendering_task_queued = FALSE
QueueTask(p) == /\ rendering_task_queued = FALSE
/\ rendering_task_queued' = TRUE
/\ task_queue' = [task_queue EXCEPT ![p] = TRUE]
RunTask(p) == /\ task_queue[p] = TRUE
/\ task_queue' = [task_queue EXCEPT ![p] = FALSE]
/\ rendering_task_queued' = FALSE
ClosePipeline(p) == /\ task_queue' = [task_queue EXCEPT ![p] = FALSE]
/\ UNCHANGED<<rendering_task_queued>>
Next == \E p \in Pipeline: \/ QueueTask(p)
\/ RunTask(p)
\/ ClosePipeline(p)
Spec == Init /\ [][Next]_<<task_queue, rendering_task_queued>>
----------------------------------------------------------------------------
THEOREM Spec => [](TypeOk /\ QueuedTaskRuns)
=============================================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment