Skip to content

Instantly share code, notes, and snippets.

@gterzian
Last active March 17, 2025 16:35
Show Gist options
  • Save gterzian/7b22a48c0e9b02606363ba9a953ded0b to your computer and use it in GitHub Desktop.
Save gterzian/7b22a48c0e9b02606363ba9a953ded0b to your computer and use it in GitHub Desktop.
-------------------------- MODULE CanvasRenderingBroken --------------------------
EXTENDS FiniteSets, Integers, Sequences
VARIABLES images_updated, display_lists_applied, compositor_messages
----------------------------------------------------------------------------
Messages == {"DISPLAY_LIST", "UPDATE_IMAGE"}
ReadyToApplyDisplayList == images_updated = display_lists_applied + 1
ImageUpdatedAndDisplayListApplied == images_updated = display_lists_applied
TypeOk == /\ images_updated \in Int
/\ display_lists_applied \in Int
/\ compositor_messages \in Seq(Messages)
ImageUpdatesAndDisplayListsInSync == \/ ImageUpdatedAndDisplayListApplied
\/ ReadyToApplyDisplayList
Init == /\ images_updated = 0
/\ display_lists_applied = 0
/\ compositor_messages = <<>>
LayoutSendsDisplayList == /\ compositor_messages' = Append(compositor_messages, "DISPLAY_LIST")
/\ UNCHANGED<<images_updated, display_lists_applied>>
CanvasSendsUpdateImage == /\ compositor_messages' = Append(compositor_messages, "UPDATE_IMAGE")
/\ UNCHANGED<<images_updated, display_lists_applied>>
CompositorReceivesMessage ==
LET msg == Head(compositor_messages)
IN /\ Len(compositor_messages) # 0
/\ CASE msg = "DISPLAY_LIST" ->
/\ display_lists_applied' = display_lists_applied + 1
/\ UNCHANGED<<images_updated>>
[] msg = "UPDATE_IMAGE" ->
/\ images_updated' = images_updated + 1
/\ UNCHANGED<<display_lists_applied>>
/\ compositor_messages' = Tail(compositor_messages)
Next == \/ LayoutSendsDisplayList
\/ CanvasSendsUpdateImage
\/ CompositorReceivesMessage
Spec == Init /\ [][Next]_<<images_updated,
display_lists_applied,
compositor_messages>>
----------------------------------------------------------------------------
THEOREM Spec => [](TypeOk /\ ImageUpdatesAndDisplayListsInSync)
=============================================================================
@gterzian
Copy link
Author

Screenshot 2025-03-16 at 5 25 41 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment