SchedulerChecksMC¶
Complete selected asymmetric reference profile. Definitions and supplied fixtures are distinct from the three teaching specializations; review and qualification are stated in the bound evidence and release.
Package reference-profile, input revision 2. Exact prepared source; CC0 1.0.
This is a definition inventory. Start with the learning chapters for the contract and its assumptions.
This model/fact module also contains 110 local fixture helpers outside the selected contract inventory. Their complete executable text remains in the exact module download and owning definition bodies. Listed dependencies include paths through those helpers. All selected contracts and frozen nested helpers retain their own entries.
ActualOptionT11 · operator
reference-profile · input revision 2 · CC0 1.0
ActualOptionT11(w,kind,actor,target) ==
LET option==OptionT11(kind,actor,target) IN BeginPriorityOption9(<<w>>,<<StartPriorityOptionFrame9(w,option,200)>>,option,TestObjectsT11,LegalityT11(w,option),[id |-> 0])Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BeginPriorityOption9, StartPriorityOptionFrame9, LegalityT11, OptionT11, TestObjectsT11
ActualSideADestinationsT11 · operator
reference-profile · input revision 2 · CC0 1.0
ActualSideADestinationsT11(f,workComplete) ==
{DestinationT11(after) : after \in {g \in SideACandidateFramesT11(f) : SideAStepAdvance5(f,g,workComplete)}}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DestinationT11, SideACandidateFramesT11, SideAStepAdvance5
ActualSideBDestinationsT11 · operator
reference-profile · input revision 2 · CC0 1.0
ActualSideBDestinationsT11(f,workComplete) ==
{SideBDestinationT11(after) : after \in {g \in SideBCandidateFramesT11(f) : SideBStepAdvance5(f,g,workComplete)}}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBCandidateFramesT11, SideBDestinationT11, SideBStepAdvance5
ChildNameT11 · operator
reference-profile · input revision 2 · CC0 1.0
ChildNameT11(id) == CASE id=1 -> "Child1" [] id=2 -> "Child2" [] OTHER -> "Child3"Exact module download · Source bundle and reproduction instructions
DestinationT11 · operator
reference-profile · input revision 2 · CC0 1.0
DestinationT11(f) == IF f.turn.owner="SideB" THEN <<"HandoffToSideB","DeferredSideBPhase">> ELSE <<f.step,f.turn.phase>>Exact module download · Source bundle and reproduction instructions
EmptyT11 · operator
reference-profile · input revision 2 · CC0 1.0
EmptyT11 == [id \in {} |-> id]Exact module download · Source bundle and reproduction instructions
ExpectedSideADestinationsT11 · operator
reference-profile · input revision 2 · CC0 1.0
ExpectedSideADestinationsT11(step,decision) ==
{IF e.after="HandoffToSideB" THEN <<e.after,"DeferredSideBPhase">> ELSE <<e.after,SideAOraclePhases11[e.after]>> :
e \in {e \in SideAOracleEdges11 : e.before=step /\ e.decision=decision}}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAOracleEdges11, SideAOraclePhases11
ExpectedSideBDestinationsT11 · operator
reference-profile · input revision 2 · CC0 1.0
ExpectedSideBDestinationsT11(step,decision) ==
{IF e.after="HandoffToSideA" THEN <<e.after,"DeferredSideAPhase">> ELSE <<e.after,SideBOraclePhases11[e.after]>> :
e \in {e \in SideBOracleEdges11 : e.before=step /\ e.decision=decision}}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBOracleEdges11, SideBOraclePhases11
IdleActionT11 · operator
reference-profile · input revision 2 · CC0 1.0
IdleActionT11 == [NewAction5(0,"SideA",BasicActionKey5("SideA","GainResourceUnit")) EXCEPT !.status="Idle"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BasicActionKey5, NewAction5
LegalityT11 · operator
reference-profile · input revision 2 · CC0 1.0
LegalityT11(w,option) == [tag |-> "PriorityOptionLegality",windowId |-> w.id,reception |-> w.reception,option |-> option,legal |-> TRUE,active |-> TRUE,transactionId |-> 200,costsPayable |-> TRUE]Exact module download · Source bundle and reproduction instructions
OpeningT11 · operator
reference-profile · input revision 2 · CC0 1.0
OpeningT11(f,id) ==
[tag |-> "PriorityWindowOpening",windowId |-> id,kind |-> "Paid",site |-> SideASiteT11(f,1),members |-> {},instances |-> EmptyT11,
group |-> 0,beginning |-> NoTimingRef9,instruction |-> [id |-> 0],effectRevision |-> 0]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NoTimingRef9, EmptyT11, SideASiteT11
OptionT11 · operator
reference-profile · input revision 2 · CC0 1.0
OptionT11(kind,actor,target) == PriorityOption9(20,kind,actor,0,0,RuleAbilitySource9("AuditOption"),target,{})Exact module download · Source bundle and reproduction instructions
Resolved project definitions: PriorityOption9, RuleAbilitySource9
PointwiseChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
PointwiseChecksT11 == CASE guideCaseT11=1 -> SideAEntryAndGraphChecksT11
[] guideCaseT11=2 -> SideAWindowChecksT11
[] guideCaseT11=3 -> SideAEffectAndBarrierChecksT11
[] guideCaseT11=4 -> SideBEntryAndGraphChecksT11
[] guideCaseT11=5 -> SideBWindowChecksT11
[] OTHER -> SideBEffectAndBarrierChecksT11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAEffectAndBarrierChecksT11, SideAEntryAndGraphChecksT11, SideAWindowChecksT11, SideBEffectAndBarrierChecksT11, SideBEntryAndGraphChecksT11, SideBWindowChecksT11, guideCaseT11
PointwiseInitT11 · operator
reference-profile · input revision 2 · CC0 1.0
PointwiseInitT11 == guideCaseT11 \in 1..6 /\ qT11=EmptyT11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: EmptyT11, guideCaseT11, qT11
PointwiseNextT11 · operator
reference-profile · input revision 2 · CC0 1.0
PointwiseNextT11 == UNCHANGED <<guideCaseT11,qT11>>Exact module download · Source bundle and reproduction instructions
Resolved project definitions: guideCaseT11, qT11
PointwiseSpecT11 · operator
reference-profile · input revision 2 · CC0 1.0
PointwiseSpecT11 == PointwiseInitT11 /\ [][PointwiseNextT11]_<<guideCaseT11,qT11>>Exact module download · Source bundle and reproduction instructions
Resolved project definitions: PointwiseInitT11, PointwiseNextT11, guideCaseT11, qT11
PreparedSideAT11 · operator
reference-profile · input revision 2 · CC0 1.0
PreparedSideAT11(step,decision) ==
[SideAInitialT11 EXCEPT !.step=step,!.turn.phase=SideAOraclePhases11[step],!.decision=decision,
!.turn.formalBegun=SourcePositionT11(step)>=SourcePositionT11("ProcedureCode824821d07be7"),
!.turn.begunCounts["SideA"]=IF SourcePositionT11(step)>=SourcePositionT11("ProcedureCode824821d07be7") THEN 1 ELSE 0,
!.turn.formalEnded=step \in {"ProcedureCodea107cee5c079","ProcedureCode72a65676fb11"},!.phaseEndMet=SourcePositionT11(step)>=SourcePositionT11("ProcedureCode042aa78ff256")]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAInitialT11, SourcePositionT11, SideAOraclePhases11
PreparedSideBT11 · operator
reference-profile · input revision 2 · CC0 1.0
PreparedSideBT11(step,decision) ==
[SideBInitialT11 EXCEPT !.step=step,!.turn.phase=SideBOraclePhases11[step],!.decision=decision,
!.turn.formalBegun=SideBPositionT11(step)>=SideBPositionT11("ProcedureCodebb587f61a951"),
!.turn.begunCounts["SideB"]=IF SideBPositionT11(step)>=SideBPositionT11("ProcedureCodebb587f61a951") THEN 1 ELSE 0,
!.turn.formalEnded=step \in {"ProcedureCode8f113080e47f","ProcedureCode49c3ccade13b"},!.phaseEndMet=SideBPositionT11(step)>=SideBPositionT11("ProcedureCodeb6952d25a4da")]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBInitialT11, SideBPositionT11, SideBOraclePhases11
PriorityCheckpointT11 · operator
reference-profile · input revision 2 · CC0 1.0
PriorityCheckpointT11(w) ==
[tag |-> "NormalPriorityCheckpoint",id |-> 10000+w.id*10+w.reception,windowId |-> w.id,reception |-> w.reception,player |-> w.priority,complete |-> TRUE,reactionsDrained |-> TRUE]Exact module download · Source bundle and reproduction instructions
PriorityReadyT11 · operator
reference-profile · input revision 2 · CC0 1.0
PriorityReadyT11(w) == [w EXCEPT !.stage="Ready",!.checkpoint=PriorityCheckpointT11(w).id]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: PriorityCheckpointT11
RecordWorkT11 · operator
reference-profile · input revision 2 · CC0 1.0
RecordWorkT11(before,after,events) ==
[after EXCEPT !.ready=TRUE,!.history=Append(@,[step |-> before.flow.step,kind |-> SideAStepInfo5(before.flow.step).kind,
visible |-> SideAOracleVisible11[before.flow.step],events |-> events,decision |-> after.flow.decision,decisionActionPoints |-> after.decisionActionPoints])]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAOracleVisible11, SideAStepInfo5
SideAAuditActionBodyT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditActionBodyT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NeutralValue00001"
/\ LET a==qT11.action child==ChildNameT11(a.id) IN
\/ /\ a.status="CostReactions" /\ ActionEffectsBegin5(a,[a EXCEPT !.status="Effects"],TRUE)
/\ qT11'=[qT11 EXCEPT !.action.status="Effects"]
\/ /\ a.status="Effects" /\ a.id \in qT11.nestedPlan /\ ~qT11.nestedUsed /\ ~qT11.tailDone
/\ ActionNestedBegin5(a,[a EXCEPT !.status="Nested",!.nested=child],child)
/\ qT11'=[qT11 EXCEPT !.action.status="Nested",!.action.nested=child,!.nestedUsed=TRUE]
\/ /\ a.status="Nested" /\ ~qT11.childDone
/\ qT11'=[qT11 EXCEPT !.childDone=TRUE]
\/ /\ a.status="Nested" /\ qT11.childDone
/\ ActionNestedReturn5(a,[a EXCEPT !.status="Effects",!.nested="NoValue"],child,qT11.childDone)
/\ qT11'=[qT11 EXCEPT !.action.status="Effects",!.action.nested="NoValue"]
\/ /\ a.status="Effects" /\ ~qT11.tailDone /\ (a.id \notin qT11.nestedPlan \/ qT11.nestedUsed)
/\ LET added==[id \in {3000+a.id} |-> [form |-> "Counter",card |-> "none",virtual |-> FALSE,kind |-> "ResourceUnit",zone |-> "SideAResourceUnits",host |-> 0]]
after==[id \in DOMAIN qT11.bank \cup DOMAIN added |-> IF id \in DOMAIN added THEN added[id] ELSE qT11.bank[id]]
IN /\ BankMintProjection4(qT11.bank,after,added,1,"ResourceUnit",qT11.usedBank,[kind |-> "Zone",zone |-> "Bank"],BasicAction5("SideA","GainResourceUnit").effect="GainResourceUnit",TRUE)
/\ qT11'=[qT11 EXCEPT !.bank=after,!.usedBank=@ \cup DOMAIN added,!.tailDone=TRUE]
\/ /\ a.status="Effects" /\ qT11.tailDone
/\ ActionComplete5(a,[a EXCEPT !.status="Complete"],qT11.tailDone)
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.action.status="Complete"],{})Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankMintProjection4, ChildNameT11, RecordWorkT11, SideAAuditDoneT11, qT11, ActionComplete5, ActionEffectsBegin5, ActionNestedBegin5, ActionNestedReturn5, BasicAction5
SideAAuditActionStartT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditActionStartT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NeutralValue00001"
/\ qT11.action.status \in {"Idle","Complete"} /\ qT11.actionPoints["SideA"]>0
/\ LET a==NewAction5(qT11.actions+1,"SideA",BasicActionKey5("SideA","GainResourceUnit")) IN
/\ ActionStart5(qT11.flow.turn,"SideA",TRUE,<<[kind |-> "SpendActionPoints",amount |-> 1]>>,WindowSiteAllowed9("NeutralValue00001",SideASiteT11(qT11.flow,qT11.actionPoints["SideA"])),TRUE,TRUE,a.id,a.key,a)
/\ qT11'=[qT11 EXCEPT !.actionPoints["SideA"]=@-1,!.action=a,!.actions=@+1,!.tailDone=FALSE,!.nestedUsed=FALSE,!.childDone=FALSE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: WindowSiteAllowed9, SideAAuditDoneT11, SideASiteT11, qT11, ActionStart5, BasicActionKey5, NewAction5
SideAAuditAdvanceT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditAdvanceT11 ==
/\ ~SideAAuditDoneT11 /\ qT11.ready /\ qT11.stack= <<>>
/\ \E g \in SideACandidateFramesT11(qT11.flow) :
/\ SideAStepAdvance5(qT11.flow,g,IF qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NeutralValue00001" THEN ActionReadyToContinue5(qT11.action) ELSE qT11.ready)
/\ qT11'=[qT11 EXCEPT !.flow=g,!.ready=FALSE,!.edges=Append(@,[before |-> qT11.flow.step,after |-> IF g.turn.owner="SideB" THEN "HandoffToSideB" ELSE g.step,phase |-> g.turn.phase,decision |-> qT11.flow.decision])]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAAuditDoneT11, SideACandidateFramesT11, qT11, ActionReadyToContinue5, SideAStepAdvance5
SideAAuditDoneT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditDoneT11 == qT11.flow.turn.owner="SideB"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: qT11
SideAAuditEventuallyHandoffT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditEventuallyHandoffT11 == <>SideAAuditDoneT11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAAuditDoneT11
SideAAuditInitT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditInitT11 ==
/\ guideCaseT11=4
/\ \E nestedPlan \in SUBSET {1,2,3}, recurring \in {0,3} :
qT11=[flow |-> SideAInitialT11,ready |-> FALSE,actionPoints |-> ZeroCountsT11,recurring |-> recurring,
draw |-> [deck |-> <<1,2>>,hand |-> {11,12,13,14,15,16}],discard |-> {},faces |-> [id \in 1..20 |-> "Up"],
windows |-> <<>>,stack |-> <<>>,nextWindow |-> 1,usedWindows |-> {},actionWindowReady |-> FALSE,
action |-> IdleActionT11,actions |-> 0,nestedPlan |-> nestedPlan,nestedUsed |-> FALSE,childDone |-> FALSE,tailDone |-> FALSE,
bank |-> EmptyT11,usedBank |-> {},decisionActionPoints |-> 0,history |-> <<>>,edges |-> <<>>]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: EmptyT11, IdleActionT11, SideAInitialT11, ZeroCountsT11, guideCaseT11, qT11
SideAAuditInvariantT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditInvariantT11 ==
/\ guideCaseT11=4 /\ qT11.actionPoints \in [SetupPlayers -> 0..3] /\ qT11.actions \in 0..3 /\ Cardinality(DOMAIN qT11.bank) \in 0..3
/\ IF SideAAuditDoneT11 THEN TurnFrameValid5(qT11.flow.turn) ELSE SideAProcedureValid5(qT11.flow)
/\ \A i \in 1..Len(qT11.edges) :
LET row==qT11.edges[i] IN
/\ \E e \in SideAOracleEdges11 : row.before=e.before /\ row.after=e.after /\ row.decision=e.decision
/\ (row.after#"HandoffToSideB" => row.phase=SideAOraclePhases11[row.after])
/\ \A i \in 1..Len(qT11.history) :
LET row==qT11.history[i] IN
/\ row.kind=SideAOracleKinds11[row.step]
/\ SideAFormalConditionsT11(row.events)=IF row.step \in DOMAIN SideAOracleFormalConditions11 THEN SideAOracleFormalConditions11[row.step] ELSE {}
/\ (row.step="ProcedureCode0e20572a4bab" => ((row.decision="NeutralValue00001")=(row.decisionActionPoints>0)))
/\ (qT11.action.status \in {"CostReactions","Effects","Nested"} => qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NeutralValue00001" /\ ~qT11.ready)
/\ (qT11.ready /\ qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NeutralValue00001" => qT11.action.status="Complete" /\ qT11.tailDone)
/\ (SideAAuditDoneT11 =>
/\ qT11.flow.turn.id=2 /\ qT11.flow.turn.begunCounts=[SideA |-> 1,SideB |-> 0] /\ ~qT11.flow.turn.formalBegun /\ ~qT11.flow.turn.formalEnded
/\ qT11.actions=3 /\ Cardinality(DOMAIN qT11.bank)=3 /\ qT11.actionPoints=ZeroCountsT11 /\ Cardinality(qT11.draw.hand)=5 /\ qT11.draw.deck= <<2>>
/\ Len(qT11.windows)=6 /\ Cardinality({i \in 1..Len(qT11.windows) : qT11.windows[i]="ProcedureCoded6fbcb09dd4f"})=4
/\ Len(qT11.history)=24 /\ Cardinality({i \in 1..Len(qT11.history) : qT11.history[i].visible#"Hidden"})=22
/\ \A id \in qT11.discard : qT11.faces[id]="Down")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAAuditDoneT11, SideAFormalConditionsT11, ZeroCountsT11, guideCaseT11, qT11, SideAOracleEdges11, SideAOracleFormalConditions11, SideAOracleKinds11, SideAOraclePhases11, SetupPlayers, SideAProcedureValid5, TurnFrameValid5
SideAAuditLatchT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditLatchT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode0e20572a4bab" /\ qT11.flow.decision="NoValue" /\ qT11.actionWindowReady
/\ LET g==[qT11.flow EXCEPT !.decision=IF qT11.actionPoints["SideA"]>0 THEN "NeutralValue00001" ELSE "End"]
next==[qT11 EXCEPT !.flow=g,!.decisionActionPoints=qT11.actionPoints["SideA"],!.actionWindowReady=FALSE] IN
/\ SideALatchDecision5(qT11.flow,g,qT11.actionPoints["SideA"],TRUE)
/\ qT11'=IF g.decision="End" THEN RecordWorkT11(qT11,next,{}) ELSE nextExact module download · Source bundle and reproduction instructions
Resolved project definitions: RecordWorkT11, SideAAuditDoneT11, qT11, SideALatchDecision5
SideAAuditNextT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditNextT11 == /\ UNCHANGED guideCaseT11
/\ (SideAAuditWorkT11 \/ SideAAuditWindowOpenT11 \/ SideAAuditWindowStepT11 \/ SideAAuditLatchT11 \/ SideAAuditActionStartT11 \/ SideAAuditActionBodyT11 \/ SideAAuditAdvanceT11 \/ (SideAAuditDoneT11 /\ UNCHANGED qT11))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAAuditActionBodyT11, SideAAuditActionStartT11, SideAAuditAdvanceT11, SideAAuditDoneT11, SideAAuditLatchT11, SideAAuditWindowOpenT11, SideAAuditWindowStepT11, SideAAuditWorkT11, guideCaseT11, qT11
SideAAuditSpecT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditSpecT11 == SideAAuditInitT11 /\ [][SideAAuditNextT11]_<<guideCaseT11,qT11>> /\ WF_<<guideCaseT11,qT11>>(SideAAuditNextT11)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAAuditInitT11, SideAAuditNextT11, guideCaseT11, qT11
SideAAuditWindowOpenT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditWindowOpenT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ qT11.stack= <<>> /\ SideAStepInfo5(qT11.flow.step).kind="PaidWindow"
/\ LET f==qT11.flow id==qT11.nextWindow site==SideASiteT11(f,qT11.actionPoints["SideA"])
opening==[OpeningT11(f,id) EXCEPT !.site=site]
w==NewPriorityWindow9(id,"Paid",site,EmptyT11,0,NoTimingRef9,[id |-> 0],0)
IN /\ OpenPriorityWindow9(<<>>,<<w>>,id,"Paid",site,EmptyT11,opening,qT11.usedWindows)
/\ qT11'=[qT11 EXCEPT !.stack= <<w>>,!.nextWindow=@+1,!.usedWindows=@ \cup {id}]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NewPriorityWindow9, NoTimingRef9, OpenPriorityWindow9, EmptyT11, OpeningT11, SideAAuditDoneT11, SideASiteT11, qT11, SideAStepInfo5
SideAAuditWindowStepT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditWindowStepT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ Len(qT11.stack)=1
/\ LET w==WindowTop9(qT11.stack) IN
\/ /\ w.stage="NeedCheckpoint"
/\ CheckpointPriority9(qT11.stack,<<PriorityReadyT11(w)>>,PriorityCheckpointT11(w))
/\ qT11'=[qT11 EXCEPT !.stack= <<PriorityReadyT11(w)>>]
\/ /\ w.stage="Ready"
/\ PassPriority9(qT11.stack,<<PassPriorityFrame9(w)>>,w.priority,[id |-> 0])
/\ qT11'=[qT11 EXCEPT !.stack= <<PassPriorityFrame9(w)>>]
\/ /\ w.stage="Closed" /\ PopClosedPriorityWindow9(qT11.stack,<<>>)
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.stack= <<>>,!.windows=Append(@,qT11.flow.step),!.actionWindowReady=qT11.flow.step="ProcedureCoded6fbcb09dd4f"],{})Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CheckpointPriority9, PassPriority9, PassPriorityFrame9, PopClosedPriorityWindow9, WindowTop9, PriorityCheckpointT11, PriorityReadyT11, RecordWorkT11, SideAAuditDoneT11, qT11
SideAAuditWorkT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAAuditWorkT11 ==
/\ ~SideAAuditDoneT11 /\ ~qT11.ready /\ qT11.stack= <<>>
/\ LET f==qT11.flow kind==SideAStepInfo5(f.step).kind IN
CASE kind="AllotActionPoints" ->
LET c==[qT11.actionPoints EXCEPT !.SideA=@+SideADefaultAllotment5] IN
/\ SideAAllotmentAtStep5(f,qT11.actionPoints,c,SideADefaultAllotment5)
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.actionPoints=c],{})
[] kind="Refill" ->
/\ SideARefillAtStep5(f,qT11.recurring,MaxOf(qT11.recurring,2),2,TRUE)
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.recurring=MaxOf(@,2)],{})
[] kind="TurnBegins" ->
LET g==[f EXCEPT !.turn.formalBegun=TRUE,!.turn.begunCounts["SideA"]=@+1] events=={TurnBeginEvent5(f.turn)} IN
/\ SideAFormalBeginAtStep5(f,g,events) /\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind="MandatoryDraw" ->
LET d==[qT11.draw EXCEPT !.deck=Tail(@),!.hand=@ \cup {qT11.draw.deck[1]}] IN
/\ SideAMandatoryDrawAtStep5(f,qT11.draw,d,TRUE,"NoValue",{MandatoryDrawEvent5})
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.draw=d],{MandatoryDrawEvent5})
[] kind="ActionPhaseEnds" ->
LET g==[f EXCEPT !.phaseEndMet=TRUE] events=={ActionPhaseEndEvent5(f.turn)} IN
/\ SideAActionPhaseEndAtStep5(f,g,events) /\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind="DiscardStep" ->
\E selected \in SUBSET qT11.draw.hand :
LET before==[hand |-> qT11.draw.hand,discard |-> qT11.discard,faces |-> qT11.faces]
after==[before EXCEPT !.hand=@ \ selected,!.discard=@ \cup selected,!.faces=[id \in DOMAIN @ |-> IF id \in selected THEN "Down" ELSE @[id]]]
events==IF selected={} THEN {} ELSE {DiscardBatchEvent5("SideA",selected)}
IN /\ SideADiscardAtStep5(f,before,after,FALSE,5,selected,TRUE,"NoValue",events)
/\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.draw.hand=after.hand,!.discard=after.discard,!.faces=after.faces],events)
[] kind="LoseUnspentActionPoints" ->
LET c==[qT11.actionPoints EXCEPT !.SideA=IF @>0 THEN 0 ELSE @] IN
/\ SideALoseActionPointsAtStep5(f,qT11.actionPoints,c) /\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.actionPoints=c],{})
[] kind="TurnEnds" ->
LET g==[f EXCEPT !.turn.formalEnded=TRUE] events==TurnEndEvents5(f.turn) IN
/\ SideAFormalEndAtStep5(f,g,events) /\ qT11'=RecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind \in {"PhaseComplete","Loop","Handoff"} -> qT11'=RecordWorkT11(qT11,qT11,{})
[] OTHER -> FALSEExact module download · Source bundle and reproduction instructions
Resolved project definitions: MaxOf, RecordWorkT11, SideAAuditDoneT11, qT11, ActionPhaseEndEvent5, DiscardBatchEvent5, MandatoryDrawEvent5, SideAActionPhaseEndAtStep5, SideAAllotmentAtStep5, SideADefaultAllotment5, SideADiscardAtStep5, SideAFormalBeginAtStep5, SideAFormalEndAtStep5, SideALoseActionPointsAtStep5, SideAMandatoryDrawAtStep5, SideARefillAtStep5, SideAStepInfo5, TurnBeginEvent5, TurnEndEvents5
SideACandidateFramesT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideACandidateFramesT11(f) ==
{[f EXCEPT !.step=step,!.turn.phase=phase,!.decision="NoValue"] : step \in SideAOracleStepSet11 \cup {"UnauthorizedStep"},phase \in {"Draw","NeutralValue00001","Discard"}} \cup
{[f EXCEPT !.turn=OpenTurn5("SideB",f.turn.id+1,f.turn.begunCounts),!.step=OpenSideBProcedure5(OpenTurn5("SideB",f.turn.id+1,f.turn.begunCounts)).step,!.decision="NoValue",!.phaseEndMet=FALSE]}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAOracleStepSet11, OpenSideBProcedure5, OpenTurn5
SideAEffectAndBarrierChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAEffectAndBarrierChecksT11 ==
LET actionPoints==[SideA |-> 1,SideB |-> 2] allotted==[actionPoints EXCEPT !.SideA=4]
d0==[PreparedSideAT11("ProcedureCode824821d07be7","NoValue") EXCEPT !.turn.formalBegun=FALSE,!.turn.begunCounts["SideA"]=0]
d1==[d0 EXCEPT !.turn.formalBegun=TRUE,!.turn.begunCounts["SideA"]=1]
draw==[deck |-> <<1,2>>,hand |-> {3},actionPoints |-> 4] drawn==[draw EXCEPT !.deck= <<2>>,!.hand={1,3}]
phase0==[PreparedSideAT11("ProcedureCode042aa78ff256","NoValue") EXCEPT !.phaseEndMet=FALSE] phase1==[phase0 EXCEPT !.phaseEndMet=TRUE]
end0==[PreparedSideAT11("ProcedureCodea107cee5c079","NoValue") EXCEPT !.turn.formalEnded=FALSE] end1==[end0 EXCEPT !.turn.formalEnded=TRUE]
hand==[hand |-> {1,2,3,4,5,6},discard |-> {},faces |-> [id \in 1..6 |-> "Up"]]
discarded==[hand EXCEPT !.hand={1,2,3,4,5},!.discard={6},!.faces[6]="Down"]
action==PreparedSideAT11("ProcedureCode0e20572a4bab","NoValue") latched==[action EXCEPT !.decision="NeutralValue00001"]
effects==[NewAction5(1,"SideA",BasicActionKey5("SideA","GainResourceUnit")) EXCEPT !.status="Effects"] nested==[effects EXCEPT !.status="Nested",!.nested="AuditChild"]
IN /\ SideAAllotmentAtStep5(SideAInitialT11,actionPoints,allotted,SideAOracleDefaultAllotment11)
/\ \A step \in SideAOracleStepSet11 \ {"ProcedureCode3557d050aec7"} : ~SideAAllotmentAtStep5(PreparedSideAT11(step,"NoValue"),actionPoints,allotted,3)
/\ \A before \in {0,1,2,3} : SideARefillAtStep5(PreparedSideAT11("ProcedureCode599a3c2d7264","NoValue"),before,MaxOf(before,2),2,TRUE)
/\ ~SideARefillAtStep5(PreparedSideAT11("ProcedureCode599a3c2d7264","NoValue"),0,2,2,FALSE)
/\ SideAFormalBeginAtStep5(d0,d1,{TurnBeginEvent5(d0.turn)}) /\ ~SideAFormalBeginAtStep5(d0,d1,{})
/\ ActualSideADestinationsT11(d0,TRUE)={} /\ ActualSideADestinationsT11(d1,TRUE)={<<"ProcedureCode59141ee1a13b","Draw">>}
/\ SideAMandatoryDrawAtStep5(PreparedSideAT11("ProcedureCode59141ee1a13b","NoValue"),draw,drawn,TRUE,"NoValue",{MandatoryDrawEvent5})
/\ ~SideAMandatoryDrawAtStep5(PreparedSideAT11("ProcedureCode59141ee1a13b","NoValue"),draw,drawn,FALSE,"NoValue",{MandatoryDrawEvent5})
/\ \A n \in {-1,0,1,3} : SideALatchDecision5(action,[action EXCEPT !.decision=IF n>0 THEN "NeutralValue00001" ELSE "End"],n,TRUE)
/\ ~SideALatchDecision5(action,latched,1,FALSE) /\ ~SideALatchDecision5(latched,latched,1,TRUE)
/\ SideAActionPhaseEndAtStep5(phase0,phase1,{ActionPhaseEndEvent5(phase0.turn)}) /\ ~SideAActionPhaseEndAtStep5(phase0,phase1,{})
/\ ActualSideADestinationsT11(phase0,TRUE)={}
/\ SideADiscardAtStep5(PreparedSideAT11("ProcedureCode93af477f9d95","NoValue"),hand,discarded,FALSE,5,{6},TRUE,"NoValue",{DiscardBatchEvent5("SideA",{6})})
/\ ~SideADiscardAtStep5(PreparedSideAT11("ProcedureCode438597bede05","NoValue"),hand,discarded,FALSE,5,{6},TRUE,"NoValue",{DiscardBatchEvent5("SideA",{6})})
/\ SideALoseActionPointsAtStep5(PreparedSideAT11("ProcedureCode4e363e6bb7cf","NoValue"),actionPoints,[actionPoints EXCEPT !.SideA=0])
/\ SideAFormalEndAtStep5(end0,end1,TurnEndEvents5(end0.turn)) /\ ~SideAFormalEndAtStep5(end0,end1,{}) /\ ActualSideADestinationsT11(end0,TRUE)={}
/\ ActualSideADestinationsT11([PreparedSideAT11("ProcedureCode72a65676fb11","NoValue") EXCEPT !.turn.formalEnded=FALSE],TRUE)={}
/\ ~ActionNestedReturn5(nested,effects,"WrongChild",TRUE) /\ ~ActionNestedReturn5(nested,effects,"AuditChild",FALSE) /\ ActionNestedReturn5(nested,effects,"AuditChild",TRUE)
/\ ~ActionEffectsBegin5(NewAction5(1,"SideA",effects.key),effects,FALSE)
/\ ~ActionStart5(action.turn,"SideA",TRUE,<<[kind |-> "SpendActionPoints",amount |-> 1]>>,TRUE,FALSE,TRUE,1,effects.key,NewAction5(1,"SideA",effects.key))
/\ ~ActionStart5(action.turn,"SideA",TRUE,<<[kind |-> "SpendActionPoints",amount |-> 1]>>,TRUE,TRUE,FALSE,1,effects.key,NewAction5(1,"SideA",effects.key))
/\ ~ActionComplete5(effects,[effects EXCEPT !.status="Complete"],FALSE) /\ ~ActionComplete5(nested,[effects EXCEPT !.status="Complete"],TRUE)
/\ ActualSideADestinationsT11(latched,ActionReadyToContinue5(nested))={} /\ ~ActionReadyToContinue5(effects)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: MaxOf, ActualSideADestinationsT11, PreparedSideAT11, SideAInitialT11, SideAOracleDefaultAllotment11, SideAOracleStepSet11, ActionComplete5, ActionEffectsBegin5, ActionNestedReturn5, ActionPhaseEndEvent5, ActionReadyToContinue5, ActionStart5, BasicActionKey5, DiscardBatchEvent5, MandatoryDrawEvent5, NewAction5, SideAActionPhaseEndAtStep5, SideAAllotmentAtStep5, SideADiscardAtStep5, SideAFormalBeginAtStep5, SideAFormalEndAtStep5, SideALatchDecision5, SideALoseActionPointsAtStep5, SideAMandatoryDrawAtStep5, SideARefillAtStep5, TurnBeginEvent5, TurnEndEvents5
SideAEntryAndGraphChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAEntryAndGraphChecksT11 ==
/\ SideAInitialT11.step=SideAOracleEntry11 /\ SideAInitialT11.turn.phase="Draw" /\ ~SideAInitialT11.turn.formalBegun /\ ~SideAInitialT11.turn.formalEnded
/\ SideADefaultAllotment5=SideAOracleDefaultAllotment11
/\ SetupRange(SideASteps5)=SideAOracleStepSet11
/\ \A step \in SideAOracleStepSet11 :
/\ SideAStepInfo5(step).kind=SideAOracleKinds11[step] /\ SideAStepInfo5(step).phase=SideAOraclePhases11[step]
/\ \A decision \in IF step="ProcedureCode0e20572a4bab" THEN {"NeutralValue00001","End"} ELSE {"NoValue"} :
ActualSideADestinationsT11(PreparedSideAT11(step,decision),TRUE)=ExpectedSideADestinationsT11(step,decision)
/\ \A step \in SideAOracleStepSet11 : ActualSideADestinationsT11(PreparedSideAT11(step,"NoValue"),FALSE)={}
/\ ActualSideADestinationsT11(PreparedSideAT11("ProcedureCode0e20572a4bab","NoValue"),TRUE)={}
/\ \A index \in 1..Len(SideAOracleVisibleEdges11) :
LET edge==SideAOracleVisibleEdges11[index] path== <<edge.before>> \o edge.via \o <<edge.after>> IN
/\ \A i \in 1..(Len(path)-1) :
LET d==IF i=1 THEN edge.decision ELSE "NoValue" target==path[i+1]
IN (IF target="HandoffToSideB" THEN <<target,"DeferredSideBPhase">> ELSE <<target,SideAOraclePhases11[target]>>) \in ActualSideADestinationsT11(PreparedSideAT11(path[i],d),TRUE)
/\ \A i \in 1..Len(edge.via) : edge.via[i] \in SideAOracleHidden11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ActualSideADestinationsT11, ExpectedSideADestinationsT11, PreparedSideAT11, SideAInitialT11, SideAOracleDefaultAllotment11, SideAOracleEntry11, SideAOracleHidden11, SideAOracleKinds11, SideAOraclePhases11, SideAOracleStepSet11, SideAOracleVisibleEdges11, SetupRange, SideADefaultAllotment5, SideAStepInfo5, SideASteps5
SideAFormalConditionsT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAFormalConditionsT11(events) ==
{CASE e.tag="TurnBegins" -> "SideATurnBegins" [] e.tag="ActionPhaseEnds" -> "SideAActionPhaseEnds" [] e.tag="TurnEnds" -> "SideATurnEnds" [] OTHER -> "SideADiscardPhaseEnds" : e \in {e \in events : e.tag \in {"TurnBegins","ActionPhaseEnds","TurnEnds","DiscardPhaseEnds"} /\ e.actor="SideA"}}Exact module download · Source bundle and reproduction instructions
SideAInitialT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAInitialT11 == OpenSideAProcedure5(OpenTurn5("SideA",1,ZeroCountsT11))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZeroCountsT11, OpenSideAProcedure5, OpenTurn5
SideASiteT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideASiteT11(f,actionPoints) == TurnPrioritySite9(f.turn,f.step,100,actionPoints,f)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: TurnPrioritySite9
SideAWindowChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideAWindowChecksT11 ==
/\ \A step \in SideAOracleStepSet11 :
LET f==PreparedSideAT11(step,"NoValue") info==SideAStepInfo5(step) expected==IF step \in DOMAIN SideAOracleWindowOptions11 THEN SideAOracleWindowOptions11[step] ELSE {} IN
/\ info.options=expected
/\ WindowSiteAllowed9("Paid",SideASiteT11(f,1))=(step \in DOMAIN SideAOracleWindowOptions11)
/\ (step \in DOMAIN SideAOracleWindowOptions11 =>
LET w==WindowT11(f,1) ready==PriorityReadyT11(w) passed==PassPriorityFrame9(ready) sideB==PriorityReadyT11(passed) IN
/\ info.activationNonBarrierOnly /\ OpenPriorityWindow9(<<>>,<<w>>,1,"Paid",w.site,EmptyT11,OpeningT11(f,1),{})
/\ CheckpointPriority9(<<w>>,<<ready>>,PriorityCheckpointT11(w))
/\ ActualOptionT11(ready,"RegularPaid","SideA",0) /\ ActualOptionT11(sideB,"RegularPaid","SideB",0)
/\ ActualOptionT11(ready,"Activation","SideA",1) /\ ActualOptionT11(ready,"Activation","SideA",2) /\ ~ActualOptionT11(ready,"Activation","SideA",3)
/\ ~ActualOptionT11(sideB,"Activation","SideB",1) /\ ~ActualOptionT11(sideB,"ObjectiveCompletion","SideB",0)
/\ ActualOptionT11(ready,"ObjectiveCompletion","SideA",0)=("ObjectiveCompletion" \in expected)
/\ ~ActualOptionT11(ready,"RegularPaid","SideB",0)
/\ ~CheckpointPriority9(<<w>>,<<ready>>,[PriorityCheckpointT11(w) EXCEPT !.reactionsDrained=FALSE])
/\ ~CheckpointPriority9(<<w>>,<<ready>>,[PriorityCheckpointT11(w) EXCEPT !.windowId=99])
/\ PassPriority9(<<ready>>,<<passed>>,"SideA",[id |-> 0]) /\ CheckpointPriority9(<<passed>>,<<sideB>>,PriorityCheckpointT11(passed))
/\ PassPriority9(<<sideB>>,<<PassPriorityFrame9(sideB)>>,"SideB",[id |-> 0])
/\ ~WindowSiteAllowed9("Paid",[w.site EXCEPT !.timingLive=FALSE]))
/\ ~WindowSiteAllowed9("NeutralValue00001",SideASiteT11(PreparedSideAT11("ProcedureCode0e20572a4bab","NoValue"),0))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CheckpointPriority9, OpenPriorityWindow9, PassPriority9, PassPriorityFrame9, WindowSiteAllowed9, ActualOptionT11, EmptyT11, OpeningT11, PreparedSideAT11, PriorityCheckpointT11, PriorityReadyT11, SideASiteT11, WindowT11, SideAOracleStepSet11, SideAOracleWindowOptions11, SideAStepInfo5
SideBAuditActionBodyT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditActionBodyT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NeutralValue00001"
/\ LET a==qT11.action child==SideBChildNameT11(a.id) IN
\/ /\ a.status="CostReactions" /\ ActionEffectsBegin5(a,[a EXCEPT !.status="Effects"],TRUE)
/\ qT11'=[qT11 EXCEPT !.action.status="Effects"]
\/ /\ a.status="Effects" /\ a.id \in qT11.nestedPlan /\ ~qT11.nestedUsed /\ ~qT11.tailDone
/\ ActionNestedBegin5(a,[a EXCEPT !.status="Nested",!.nested=child],child)
/\ qT11'=[qT11 EXCEPT !.action.status="Nested",!.action.nested=child,!.nestedUsed=TRUE]
\/ /\ a.status="Nested" /\ ~qT11.childDone
/\ qT11'=[qT11 EXCEPT !.childDone=TRUE]
\/ /\ a.status="Nested" /\ qT11.childDone
/\ ActionNestedReturn5(a,[a EXCEPT !.status="Effects",!.nested="NoValue"],child,qT11.childDone)
/\ qT11'=[qT11 EXCEPT !.action.status="Effects",!.action.nested="NoValue"]
\/ /\ a.status="Effects" /\ ~qT11.tailDone /\ (a.id \notin qT11.nestedPlan \/ qT11.nestedUsed)
/\ LET added==[id \in {3000+a.id} |-> [form |-> "Counter",card |-> "none",virtual |-> FALSE,kind |-> "ResourceUnit",zone |-> "SideBResourceUnits",host |-> 0]]
after==[id \in DOMAIN qT11.bank \cup DOMAIN added |-> IF id \in DOMAIN added THEN added[id] ELSE qT11.bank[id]]
IN /\ BankMintProjection4(qT11.bank,after,added,1,"ResourceUnit",qT11.usedBank,[kind |-> "Zone",zone |-> "Bank"],BasicAction5("SideB","GainResourceUnit").effect="GainResourceUnit",TRUE)
/\ qT11'=[qT11 EXCEPT !.bank=after,!.usedBank=@ \cup DOMAIN added,!.tailDone=TRUE]
\/ /\ a.status="Effects" /\ qT11.tailDone
/\ ActionComplete5(a,[a EXCEPT !.status="Complete"],qT11.tailDone)
/\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.action.status="Complete"],{})Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankMintProjection4, SideBAuditDoneT11, SideBChildNameT11, SideBRecordWorkT11, qT11, ActionComplete5, ActionEffectsBegin5, ActionNestedBegin5, ActionNestedReturn5, BasicAction5
SideBAuditActionStartT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditActionStartT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NeutralValue00001"
/\ qT11.action.status \in {"Idle","Complete"} /\ qT11.actionPoints["SideB"]>0
/\ LET a==NewAction5(qT11.actions+1,"SideB",BasicActionKey5("SideB","GainResourceUnit")) IN
/\ ActionStart5(qT11.flow.turn,"SideB",TRUE,<<[kind |-> "SpendActionPoints",amount |-> 1]>>,WindowSiteAllowed9("NeutralValue00001",SideBSiteT11(qT11.flow,qT11.actionPoints["SideB"])),TRUE,TRUE,a.id,a.key,a)
/\ qT11'=[qT11 EXCEPT !.actionPoints["SideB"]=@-1,!.action=a,!.actions=@+1,!.tailDone=FALSE,!.nestedUsed=FALSE,!.childDone=FALSE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: WindowSiteAllowed9, SideBAuditDoneT11, SideBSiteT11, qT11, ActionStart5, BasicActionKey5, NewAction5
SideBAuditAdvanceT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditAdvanceT11 ==
/\ ~SideBAuditDoneT11 /\ qT11.ready /\ qT11.stack= <<>>
/\ \E g \in SideBCandidateFramesT11(qT11.flow) :
/\ SideBStepAdvance5(qT11.flow,g,IF qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NeutralValue00001" THEN ActionReadyToContinue5(qT11.action) ELSE qT11.ready)
/\ qT11'=[qT11 EXCEPT !.flow=g,!.ready=FALSE,!.edges=Append(@,[before |-> qT11.flow.step,after |-> IF g.turn.owner="SideA" THEN "HandoffToSideA" ELSE g.step,phase |-> g.turn.phase,decision |-> qT11.flow.decision])]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditDoneT11, SideBCandidateFramesT11, qT11, ActionReadyToContinue5, SideBStepAdvance5
SideBAuditDoneT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditDoneT11 == qT11.flow.turn.owner="SideA"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: qT11
SideBAuditEventuallyHandoffT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditEventuallyHandoffT11 == <>SideBAuditDoneT11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditDoneT11
SideBAuditInitT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditInitT11 ==
/\ guideCaseT11=7
/\ \E nestedPlan \in SUBSET {1,2,3,4}, recurring \in {0,3} :
qT11=[flow |-> SideBInitialT11,ready |-> FALSE,actionPoints |-> ZeroCountsT11,recurring |-> recurring,
draw |-> [deck |-> <<1,2>>,hand |-> {11,12,13,14,15,16,17}],discard |-> {9},faces |-> [id \in 1..20 |-> IF id=9 THEN "Up" ELSE "Down"],
windows |-> <<>>,stack |-> <<>>,nextWindow |-> 1,usedWindows |-> {},actionWindowReady |-> FALSE,
action |-> SideBIdleActionT11,actions |-> 0,nestedPlan |-> nestedPlan,nestedUsed |-> FALSE,childDone |-> FALSE,tailDone |-> FALSE,
bank |-> EmptyT11,usedBank |-> {},decisionActionPoints |-> 0,history |-> <<>>,edges |-> <<>>]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: EmptyT11, SideBIdleActionT11, SideBInitialT11, ZeroCountsT11, guideCaseT11, qT11
SideBAuditInvariantT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditInvariantT11 ==
/\ guideCaseT11=7 /\ qT11.actionPoints \in [SetupPlayers -> 0..4] /\ qT11.actions \in 0..4 /\ Cardinality(DOMAIN qT11.bank) \in 0..4
/\ IF SideBAuditDoneT11 THEN TurnFrameValid5(qT11.flow.turn) ELSE SideBProcedureValid5(qT11.flow)
/\ \A i \in 1..Len(qT11.edges) :
LET row==qT11.edges[i] IN
/\ \E e \in SideBOracleEdges11 : row.before=e.before /\ row.after=e.after /\ row.decision=e.decision
/\ (row.after#"HandoffToSideA" => row.phase=SideBOraclePhases11[row.after])
/\ \A i \in 1..Len(qT11.history) :
LET row==qT11.history[i] IN
/\ row.kind=SideBOracleKinds11[row.step]
/\ SideBFormalConditionsT11(row.events)=IF row.step \in DOMAIN SideBOracleFormalConditions11 THEN SideBOracleFormalConditions11[row.step] ELSE {}
/\ (row.step="ProcedureCode989abc27e0c6" => ((row.decision="NeutralValue00001")=(row.decisionActionPoints>0)))
/\ (qT11.action.status \in {"CostReactions","Effects","Nested"} => qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NeutralValue00001" /\ ~qT11.ready)
/\ (qT11.ready /\ qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NeutralValue00001" => qT11.action.status="Complete" /\ qT11.tailDone)
/\ (SideBAuditDoneT11 =>
/\ qT11.flow.turn.id=3 /\ qT11.flow.turn.begunCounts=[SideA |-> 1,SideB |-> 1] /\ ~qT11.flow.turn.formalBegun /\ ~qT11.flow.turn.formalEnded
/\ qT11.actions=4 /\ Cardinality(DOMAIN qT11.bank)=4 /\ qT11.actionPoints=ZeroCountsT11 /\ Cardinality(qT11.draw.hand)=5 /\ qT11.draw.deck= <<1,2>>
/\ Len(qT11.windows)=7 /\ Cardinality({i \in 1..Len(qT11.windows) : qT11.windows[i]="ProcedureCode484be3e50aa9"})=5
/\ Len(qT11.history)=25 /\ Cardinality({i \in 1..Len(qT11.history) : qT11.history[i].visible#"Hidden"})=24
/\ \A id \in qT11.discard : qT11.faces[id]="Up")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditDoneT11, SideBFormalConditionsT11, ZeroCountsT11, guideCaseT11, qT11, SideBOracleEdges11, SideBOracleFormalConditions11, SideBOracleKinds11, SideBOraclePhases11, SetupPlayers, SideBProcedureValid5, TurnFrameValid5
SideBAuditLatchT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditLatchT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ qT11.flow.step="ProcedureCode989abc27e0c6" /\ qT11.flow.decision="NoValue" /\ qT11.actionWindowReady
/\ LET g==[qT11.flow EXCEPT !.decision=IF qT11.actionPoints["SideB"]>0 THEN "NeutralValue00001" ELSE "End"]
next==[qT11 EXCEPT !.flow=g,!.decisionActionPoints=qT11.actionPoints["SideB"],!.actionWindowReady=FALSE] IN
/\ SideBLatchDecision5(qT11.flow,g,qT11.actionPoints["SideB"],TRUE)
/\ qT11'=IF g.decision="End" THEN SideBRecordWorkT11(qT11,next,{}) ELSE nextExact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditDoneT11, SideBRecordWorkT11, qT11, SideBLatchDecision5
SideBAuditNextT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditNextT11 == /\ UNCHANGED guideCaseT11
/\ (SideBAuditWorkT11 \/ SideBAuditWindowOpenT11 \/ SideBAuditWindowStepT11 \/ SideBAuditLatchT11 \/ SideBAuditActionStartT11 \/ SideBAuditActionBodyT11 \/ SideBAuditAdvanceT11 \/ (SideBAuditDoneT11 /\ UNCHANGED qT11))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditActionBodyT11, SideBAuditActionStartT11, SideBAuditAdvanceT11, SideBAuditDoneT11, SideBAuditLatchT11, SideBAuditWindowOpenT11, SideBAuditWindowStepT11, SideBAuditWorkT11, guideCaseT11, qT11
SideBAuditSpecT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditSpecT11 == SideBAuditInitT11 /\ [][SideBAuditNextT11]_<<guideCaseT11,qT11>> /\ WF_<<guideCaseT11,qT11>>(SideBAuditNextT11)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBAuditInitT11, SideBAuditNextT11, guideCaseT11, qT11
SideBAuditWindowOpenT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditWindowOpenT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ qT11.stack= <<>> /\ SideBStepInfo5(qT11.flow.step).kind="PaidWindow"
/\ LET f==qT11.flow id==qT11.nextWindow site==SideBSiteT11(f,qT11.actionPoints["SideB"])
opening==[SideBOpeningT11(f,id) EXCEPT !.site=site]
w==NewPriorityWindow9(id,"Paid",site,EmptyT11,0,NoTimingRef9,[id |-> 0],0)
IN /\ OpenPriorityWindow9(<<>>,<<w>>,id,"Paid",site,EmptyT11,opening,qT11.usedWindows)
/\ qT11'=[qT11 EXCEPT !.stack= <<w>>,!.nextWindow=@+1,!.usedWindows=@ \cup {id}]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NewPriorityWindow9, NoTimingRef9, OpenPriorityWindow9, EmptyT11, SideBAuditDoneT11, SideBOpeningT11, SideBSiteT11, qT11, SideBStepInfo5
SideBAuditWindowStepT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditWindowStepT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ Len(qT11.stack)=1
/\ LET w==WindowTop9(qT11.stack) IN
\/ /\ w.stage="NeedCheckpoint"
/\ CheckpointPriority9(qT11.stack,<<PriorityReadyT11(w)>>,PriorityCheckpointT11(w))
/\ qT11'=[qT11 EXCEPT !.stack= <<PriorityReadyT11(w)>>]
\/ /\ w.stage="Ready"
/\ PassPriority9(qT11.stack,<<PassPriorityFrame9(w)>>,w.priority,[id |-> 0])
/\ qT11'=[qT11 EXCEPT !.stack= <<PassPriorityFrame9(w)>>]
\/ /\ w.stage="Closed" /\ PopClosedPriorityWindow9(qT11.stack,<<>>)
/\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.stack= <<>>,!.windows=Append(@,qT11.flow.step),!.actionWindowReady=qT11.flow.step="ProcedureCode484be3e50aa9"],{})Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CheckpointPriority9, PassPriority9, PassPriorityFrame9, PopClosedPriorityWindow9, WindowTop9, PriorityCheckpointT11, PriorityReadyT11, SideBAuditDoneT11, SideBRecordWorkT11, qT11
SideBAuditWorkT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBAuditWorkT11 ==
/\ ~SideBAuditDoneT11 /\ ~qT11.ready /\ qT11.stack= <<>>
/\ LET f==qT11.flow kind==SideBStepInfo5(f.step).kind IN
CASE kind="AllotActionPoints" ->
LET c==[qT11.actionPoints EXCEPT !.SideB=@+SideBDefaultAllotment5] IN
/\ SideBAllotmentAtStep5(f,qT11.actionPoints,c,SideBDefaultAllotment5)
/\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.actionPoints=c],{})
[] kind="Refill" ->
/\ SideBRefillAtStep5(f,qT11.recurring,MaxOf(qT11.recurring,2),2,TRUE)
/\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.recurring=MaxOf(@,2)],{})
[] kind="TurnBegins" ->
LET g==[f EXCEPT !.turn.formalBegun=TRUE,!.turn.begunCounts["SideB"]=@+1] events=={TurnBeginEvent5(f.turn)} IN
/\ SideBFormalBeginAtStep5(f,g,events) /\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind="ActionPhaseEnds" ->
LET g==[f EXCEPT !.phaseEndMet=TRUE] events=={ActionPhaseEndEvent5(f.turn)} IN
/\ SideBActionPhaseEndAtStep5(f,g,events) /\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind="DiscardStep" ->
\E selected \in SUBSET qT11.draw.hand :
LET before==[hand |-> qT11.draw.hand,discard |-> qT11.discard,faces |-> qT11.faces]
after==[before EXCEPT !.hand=@ \ selected,!.discard=@ \cup selected,!.faces=[id \in DOMAIN @ |-> IF id \in selected THEN "Up" ELSE @[id]]]
events==IF selected={} THEN {} ELSE {DiscardBatchEvent5("SideB",selected)}
IN /\ SideBDiscardAtStep5(f,before,after,FALSE,5,selected,TRUE,"NoValue",events)
/\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.draw.hand=after.hand,!.discard=after.discard,!.faces=after.faces],events)
[] kind="LoseUnspentActionPoints" ->
LET c==[qT11.actionPoints EXCEPT !.SideB=IF @>0 THEN 0 ELSE @] IN
/\ SideBLoseActionPointsAtStep5(f,qT11.actionPoints,c) /\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.actionPoints=c],{})
[] kind="TurnEnds" ->
LET g==[f EXCEPT !.turn.formalEnded=TRUE] events==TurnEndEvents5(f.turn) IN
/\ SideBFormalEndAtStep5(f,g,events) /\ qT11'=SideBRecordWorkT11(qT11,[qT11 EXCEPT !.flow=g],events)
[] kind \in {"PhaseComplete","Loop","Handoff"} -> qT11'=SideBRecordWorkT11(qT11,qT11,{})
[] OTHER -> FALSEExact module download · Source bundle and reproduction instructions
Resolved project definitions: MaxOf, SideBAuditDoneT11, SideBRecordWorkT11, qT11, ActionPhaseEndEvent5, DiscardBatchEvent5, SideBActionPhaseEndAtStep5, SideBAllotmentAtStep5, SideBDefaultAllotment5, SideBDiscardAtStep5, SideBFormalBeginAtStep5, SideBFormalEndAtStep5, SideBLoseActionPointsAtStep5, SideBRefillAtStep5, SideBStepInfo5, TurnBeginEvent5, TurnEndEvents5
SideBCandidateFramesT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBCandidateFramesT11(f) ==
{[f EXCEPT !.step=step,!.turn.phase=phase,!.decision="NoValue"] : step \in SideBOracleStepSet11 \cup {"UnauthorizedStep"},phase \in {"Draw","NeutralValue00001","Discard"}} \cup
{[f EXCEPT !.turn=OpenTurn5("SideA",f.turn.id+1,f.turn.begunCounts),!.step=OpenSideAProcedure5(OpenTurn5("SideA",f.turn.id+1,f.turn.begunCounts)).step,!.decision="NoValue",!.phaseEndMet=FALSE]}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBOracleStepSet11, OpenSideAProcedure5, OpenTurn5
SideBChildNameT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBChildNameT11(id) == CASE id=1 -> "Child1" [] id=2 -> "Child2" [] id=3 -> "Child3" [] OTHER -> "Child4"Exact module download · Source bundle and reproduction instructions
SideBDestinationT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBDestinationT11(f) == IF f.turn.owner="SideA" THEN <<"HandoffToSideA","DeferredSideAPhase">> ELSE <<f.step,f.turn.phase>>Exact module download · Source bundle and reproduction instructions
SideBEffectAndBarrierChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBEffectAndBarrierChecksT11 ==
LET actionPoints==[SideA |-> 2,SideB |-> 1] allotted==[actionPoints EXCEPT !.SideB=5]
d0==[PreparedSideBT11("ProcedureCodebb587f61a951","NoValue") EXCEPT !.turn.formalBegun=FALSE,!.turn.begunCounts["SideB"]=0] d1==[d0 EXCEPT !.turn.formalBegun=TRUE,!.turn.begunCounts["SideB"]=1]
phase0==[PreparedSideBT11("ProcedureCodeb6952d25a4da","NoValue") EXCEPT !.phaseEndMet=FALSE] phase1==[phase0 EXCEPT !.phaseEndMet=TRUE]
end0==[PreparedSideBT11("ProcedureCode8f113080e47f","NoValue") EXCEPT !.turn.formalEnded=FALSE] end1==[end0 EXCEPT !.turn.formalEnded=TRUE]
hand==[hand |-> {1,2,3,4,5,6},discard |-> {9},faces |-> [id \in 1..9 |-> IF id=9 THEN "Up" ELSE "Down"]]
discarded==[hand EXCEPT !.hand={1,2,3,4,5},!.discard={6,9},!.faces[6]="Up"]
action==PreparedSideBT11("ProcedureCode989abc27e0c6","NoValue") latched==[action EXCEPT !.decision="NeutralValue00001"]
effects==[NewAction5(1,"SideB",BasicActionKey5("SideB","GainResourceUnit")) EXCEPT !.status="Effects"] nested==[effects EXCEPT !.status="Nested",!.nested="SideBChild"]
IN /\ SideBAllotmentAtStep5(SideBInitialT11,actionPoints,allotted,SideBOracleDefaultAllotment11) /\ allotted["SideA"]=actionPoints["SideA"]
/\ \A step \in SideBOracleStepSet11 \ {"ProcedureCode81ed7b3ac00d"} : ~SideBAllotmentAtStep5(PreparedSideBT11(step,"NoValue"),actionPoints,allotted,4)
/\ \A before \in {0,1,2,3} : SideBRefillAtStep5(PreparedSideBT11("ProcedureCoded05d55b14bf9","NoValue"),before,MaxOf(before,2),2,TRUE)
/\ ~SideBRefillAtStep5(PreparedSideBT11("ProcedureCoded05d55b14bf9","NoValue"),0,2,2,FALSE)
/\ SideBFormalBeginAtStep5(d0,d1,{TurnBeginEvent5(d0.turn)}) /\ d1.turn.begunCounts["SideA"]=1 /\ ~SideBFormalBeginAtStep5(d0,d1,{})
/\ ActualSideBDestinationsT11(d0,TRUE)={} /\ ActualSideBDestinationsT11(d1,TRUE)={<<"ProcedureCode484be3e50aa9","NeutralValue00001">>}
/\ \A step \in SideBOracleStepSet11 : ~MandatoryDrawContext5(PreparedSideBT11(step,"NoValue").turn,TRUE)
/\ \A n \in {-1,0,1,4} : SideBLatchDecision5(action,[action EXCEPT !.decision=IF n>0 THEN "NeutralValue00001" ELSE "End"],n,TRUE)
/\ ~SideBLatchDecision5(action,latched,1,FALSE) /\ ~SideBLatchDecision5(latched,latched,1,TRUE)
/\ SideBActionPhaseEndAtStep5(phase0,phase1,{ActionPhaseEndEvent5(phase0.turn)}) /\ ~SideBActionPhaseEndAtStep5(phase0,phase1,{}) /\ ActualSideBDestinationsT11(phase0,TRUE)={}
/\ SideBDiscardAtStep5(PreparedSideBT11("ProcedureCode593c4a6fb4f5","NoValue"),hand,discarded,FALSE,5,{6},TRUE,"NoValue",{DiscardBatchEvent5("SideB",{6})})
/\ ~SideBDiscardAtStep5(PreparedSideBT11("ProcedureCode13c5f7239eb2","NoValue"),hand,discarded,FALSE,5,{6},TRUE,"NoValue",{DiscardBatchEvent5("SideB",{6})})
/\ SideBLoseActionPointsAtStep5(PreparedSideBT11("ProcedureCodede325c329e93","NoValue"),actionPoints,[actionPoints EXCEPT !.SideB=0])
/\ SideBFormalEndAtStep5(end0,end1,TurnEndEvents5(end0.turn)) /\ ~SideBFormalEndAtStep5(end0,end1,{}) /\ ActualSideBDestinationsT11(end0,TRUE)={}
/\ ActualSideBDestinationsT11([PreparedSideBT11("ProcedureCode49c3ccade13b","NoValue") EXCEPT !.turn.formalEnded=FALSE],TRUE)={}
/\ ~ActionNestedReturn5(nested,effects,"WrongChild",TRUE) /\ ~ActionNestedReturn5(nested,effects,"SideBChild",FALSE) /\ ActionNestedReturn5(nested,effects,"SideBChild",TRUE)
/\ ~ActionEffectsBegin5(NewAction5(1,"SideB",effects.key),effects,FALSE)
/\ ~ActionStart5(action.turn,"SideB",TRUE,<<[kind |-> "SpendActionPoints",amount |-> 1]>>,TRUE,FALSE,TRUE,1,effects.key,NewAction5(1,"SideB",effects.key))
/\ ~ActionComplete5(effects,[effects EXCEPT !.status="Complete"],FALSE) /\ ~ActionComplete5(nested,[effects EXCEPT !.status="Complete"],TRUE)
/\ ActualSideBDestinationsT11(latched,ActionReadyToContinue5(nested))={}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: MaxOf, ActualSideBDestinationsT11, PreparedSideBT11, SideBInitialT11, SideBOracleDefaultAllotment11, SideBOracleStepSet11, ActionComplete5, ActionEffectsBegin5, ActionNestedReturn5, ActionPhaseEndEvent5, ActionReadyToContinue5, ActionStart5, BasicActionKey5, DiscardBatchEvent5, MandatoryDrawContext5, NewAction5, SideBActionPhaseEndAtStep5, SideBAllotmentAtStep5, SideBDiscardAtStep5, SideBFormalBeginAtStep5, SideBFormalEndAtStep5, SideBLatchDecision5, SideBLoseActionPointsAtStep5, SideBRefillAtStep5, TurnBeginEvent5, TurnEndEvents5
SideBEntryAndGraphChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBEntryAndGraphChecksT11 ==
/\ SideBInitialT11.step=SideBOracleEntry11 /\ SideBInitialT11.turn.phase="NeutralValue00001" /\ ~SideBInitialT11.turn.formalBegun /\ ~SideBInitialT11.turn.formalEnded
/\ SideBDefaultAllotment5=SideBOracleDefaultAllotment11 /\ ~HasDrawPhase5("SideB") /\ ~TurnFrameValid5([SideBInitialT11.turn EXCEPT !.phase="Draw"])
/\ SetupRange(SideBSteps5)=SideBOracleStepSet11
/\ \A step \in SideBOracleStepSet11 :
/\ SideBStepInfo5(step).kind=SideBOracleKinds11[step] /\ SideBStepInfo5(step).phase=SideBOraclePhases11[step] /\ SideBStepInfo5(step).kind#"MandatoryDraw"
/\ \A decision \in IF step="ProcedureCode989abc27e0c6" THEN {"NeutralValue00001","End"} ELSE {"NoValue"} :
ActualSideBDestinationsT11(PreparedSideBT11(step,decision),TRUE)=ExpectedSideBDestinationsT11(step,decision)
/\ \A step \in SideBOracleStepSet11 : ActualSideBDestinationsT11(PreparedSideBT11(step,"NoValue"),FALSE)={}
/\ ActualSideBDestinationsT11(PreparedSideBT11("ProcedureCode989abc27e0c6","NoValue"),TRUE)={}
/\ \A index \in 1..Len(SideBOracleVisibleEdges11) :
LET edge==SideBOracleVisibleEdges11[index] path== <<edge.before>> \o edge.via \o <<edge.after>> IN
/\ \A i \in 1..(Len(path)-1) :
LET d==IF i=1 THEN edge.decision ELSE "NoValue" target==path[i+1]
IN (IF target="HandoffToSideA" THEN <<target,"DeferredSideAPhase">> ELSE <<target,SideBOraclePhases11[target]>>) \in ActualSideBDestinationsT11(PreparedSideBT11(path[i],d),TRUE)
/\ \A i \in 1..Len(edge.via) : edge.via[i] \in SideBOracleHidden11Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ActualSideBDestinationsT11, ExpectedSideBDestinationsT11, PreparedSideBT11, SideBInitialT11, SideBOracleDefaultAllotment11, SideBOracleEntry11, SideBOracleHidden11, SideBOracleKinds11, SideBOraclePhases11, SideBOracleStepSet11, SideBOracleVisibleEdges11, SetupRange, HasDrawPhase5, SideBDefaultAllotment5, SideBStepInfo5, SideBSteps5, TurnFrameValid5
SideBFormalConditionsT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBFormalConditionsT11(events) ==
{CASE e.tag="TurnBegins" -> "SideBTurnBegins" [] e.tag="ActionPhaseEnds" -> "SideBActionPhaseEnds" [] e.tag="TurnEnds" -> "SideBTurnEnds" [] OTHER -> "SideBDiscardPhaseEnds" : e \in {e \in events : e.tag \in {"TurnBegins","ActionPhaseEnds","TurnEnds","DiscardPhaseEnds"} /\ e.actor="SideB"}}Exact module download · Source bundle and reproduction instructions
SideBIdleActionT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBIdleActionT11 == [NewAction5(0,"SideB",BasicActionKey5("SideB","GainResourceUnit")) EXCEPT !.status="Idle"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BasicActionKey5, NewAction5
SideBInitialT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBInitialT11 == OpenSideBProcedure5(OpenTurn5("SideB",2,[SideA |-> 1,SideB |-> 0]))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: OpenSideBProcedure5, OpenTurn5
SideBOpeningT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBOpeningT11(f,id) ==
[tag |-> "PriorityWindowOpening",windowId |-> id,kind |-> "Paid",site |-> SideBSiteT11(f,1),members |-> {},instances |-> EmptyT11,
group |-> 0,beginning |-> NoTimingRef9,instruction |-> [id |-> 0],effectRevision |-> 0]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NoTimingRef9, EmptyT11, SideBSiteT11
SideBPositionT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBPositionT11(step) == CHOOSE i \in 1..Len(SideBOracleSteps11) : SideBOracleSteps11[i]=stepExact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBOracleSteps11
SideBRecordWorkT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBRecordWorkT11(before,after,events) ==
[after EXCEPT !.ready=TRUE,!.history=Append(@,[step |-> before.flow.step,kind |-> SideBStepInfo5(before.flow.step).kind,
visible |-> SideBOracleVisible11[before.flow.step],events |-> events,decision |-> after.flow.decision,decisionActionPoints |-> after.decisionActionPoints])]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideBOracleVisible11, SideBStepInfo5
SideBSiteT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBSiteT11(f,actionPoints) == TurnPrioritySite9(f.turn,f.step,200,actionPoints,f)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: TurnPrioritySite9
SideBWindowChecksT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBWindowChecksT11 ==
/\ \A step \in SideBOracleStepSet11 :
LET f==PreparedSideBT11(step,"NoValue") info==SideBStepInfo5(step) expected==IF step \in DOMAIN SideBOracleWindowOptions11 THEN SideBOracleWindowOptions11[step] ELSE {} IN
/\ info.options=expected /\ "ObjectiveCompletion" \notin info.options
/\ WindowSiteAllowed9("Paid",SideBSiteT11(f,1))=(step \in DOMAIN SideBOracleWindowOptions11)
/\ (step \in DOMAIN SideBOracleWindowOptions11 =>
LET w==SideBWindowT11(f,1) sideB==PriorityReadyT11(w) passed==PassPriorityFrame9(sideB) sideA==PriorityReadyT11(passed) IN
/\ info.activationNonBarrierOnly /\ w.active="SideB" /\ w.priority="SideB"
/\ OpenPriorityWindow9(<<>>,<<w>>,1,"Paid",w.site,EmptyT11,SideBOpeningT11(f,1),{}) /\ CheckpointPriority9(<<w>>,<<sideB>>,PriorityCheckpointT11(w))
/\ ActualOptionT11(sideB,"RegularPaid","SideB",0) /\ ActualOptionT11(sideA,"RegularPaid","SideA",0)
/\ ActualOptionT11(sideA,"Activation","SideA",1) /\ ActualOptionT11(sideA,"Activation","SideA",2) /\ ~ActualOptionT11(sideA,"Activation","SideA",3)
/\ ~ActualOptionT11(sideB,"Activation","SideB",1) /\ ~ActualOptionT11(sideB,"ObjectiveCompletion","SideB",0) /\ ~ActualOptionT11(sideA,"ObjectiveCompletion","SideA",0)
/\ ~ActualOptionT11(sideB,"RegularPaid","SideA",0)
/\ ~CheckpointPriority9(<<w>>,<<sideB>>,[PriorityCheckpointT11(w) EXCEPT !.player="SideA"])
/\ ~CheckpointPriority9(<<w>>,<<sideB>>,[PriorityCheckpointT11(w) EXCEPT !.reception=99])
/\ ~CheckpointPriority9(<<w>>,<<sideB>>,[PriorityCheckpointT11(w) EXCEPT !.windowId=99])
/\ ~CheckpointPriority9(<<w>>,<<sideB>>,[PriorityCheckpointT11(w) EXCEPT !.complete=FALSE])
/\ ~CheckpointPriority9(<<w>>,<<sideB>>,[PriorityCheckpointT11(w) EXCEPT !.reactionsDrained=FALSE])
/\ PassPriority9(<<sideB>>,<<passed>>,"SideB",[id |-> 0]) /\ CheckpointPriority9(<<passed>>,<<sideA>>,PriorityCheckpointT11(passed))
/\ PassPriority9(<<sideA>>,<<PassPriorityFrame9(sideA)>>,"SideA",[id |-> 0]) /\ ~WindowSiteAllowed9("Paid",[w.site EXCEPT !.timingLive=FALSE]))
/\ ~WindowSiteAllowed9("NeutralValue00001",SideBSiteT11(PreparedSideBT11("ProcedureCode989abc27e0c6","NoValue"),0))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CheckpointPriority9, OpenPriorityWindow9, PassPriority9, PassPriorityFrame9, WindowSiteAllowed9, ActualOptionT11, EmptyT11, PreparedSideBT11, PriorityCheckpointT11, PriorityReadyT11, SideBOpeningT11, SideBSiteT11, SideBWindowT11, SideBOracleStepSet11, SideBOracleWindowOptions11, SideBStepInfo5
SideBWindowT11 · operator
reference-profile · input revision 2 · CC0 1.0
SideBWindowT11(f,id) == NewPriorityWindow9(id,"Paid",SideBSiteT11(f,1),EmptyT11,0,NoTimingRef9,[id |-> 0],0)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NewPriorityWindow9, NoTimingRef9, EmptyT11, SideBSiteT11
SourcePositionT11 · operator
reference-profile · input revision 2 · CC0 1.0
SourcePositionT11(step) == CHOOSE i \in 1..Len(SideAOracleSteps11) : SideAOracleSteps11[i]=stepExact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAOracleSteps11
TestObjectsT11 · operator
reference-profile · input revision 2 · CC0 1.0
TestObjectsT11 == [id \in {1,2,3} |-> [form |-> "Card",side |-> "SideA",kind |-> CASE id=1 -> "Facility" [] id=2 -> "Attachment" [] OTHER -> "Barrier",zone |-> "Play",deployed |-> TRUE,face |-> "Down",activated |-> FALSE]]Exact module download · Source bundle and reproduction instructions
WindowT11 · operator
reference-profile · input revision 2 · CC0 1.0
WindowT11(f,id) == NewPriorityWindow9(id,"Paid",SideASiteT11(f,1),EmptyT11,0,NoTimingRef9,[id |-> 0],0)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: NewPriorityWindow9, NoTimingRef9, EmptyT11, SideASiteT11
ZeroCountsT11 · operator
reference-profile · input revision 2 · CC0 1.0
ZeroCountsT11 == [p \in SetupPlayers |-> 0]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupPlayers
guideCaseT11 · variable
reference-profile · input revision 2 · CC0 1.0
guideCaseT11Exact module download · Source bundle and reproduction instructions
qT11 · variable
reference-profile · input revision 2 · CC0 1.0
qT11Exact module download · Source bundle and reproduction instructions