---------------------------- MODULE AdditionalChecksMC ---------------------------- EXTENDS AdditionalContracts, SpecimenFactsB VARIABLE block10 Init10 == block10 \in 1..14 Next10 == UNCHANGED block10 Spec10 == Init10 /\ [][Next10]_block10 Empty10 == [id \in {} |-> id] Obj101(card,form,kind,zone,host,virtual) == [card |-> card,form |-> form,kind |-> kind,zone |-> zone,host |-> host,virtual |-> virtual,deployed |-> FALSE,owner |-> IF card="NeutralValue00006" THEN "SideB" ELSE "SideA"] LoopProfile101(a,b) == a=b LoopIncrement101(a,b) == b=a+1 GeneralChecks101 == LET objects==[i \in {1,2,3,4} |-> Obj101("NeutralValue00006","Card","Equipment","Play",0,FALSE)] names==[i \in DOMAIN objects |-> IF i=4 THEN "other" ELSE "Specimen0036"] plan==UniqueActivationPlan101(objects,names,{1,2,3},{1,2,4},{1,2,3,4},3) restrictedDemandObjects==[i \in 1..8 |-> CASE i=1 -> Obj101("Specimen0174","Card","Technique","Play",0,FALSE) [] i=2 -> Obj101("none","Counter","SchemaAtom180","Play",1,FALSE) [] i=3 -> Obj101("none","Counter","Power","Play",1,FALSE) [] i=4 -> Obj101("none","Counter","SchemaAtom180","Play",1,TRUE) [] i=5 -> Obj101("none","Counter","SchemaAtom180","SideAExposureMarkers",0,FALSE) [] i=6 -> Obj101("none","Counter","SchemaAtom180","Play",3,FALSE) [] i=7 -> Obj101("Specimen0046","Counter","SchemaAtom180","Play",1,FALSE) [] OTHER -> Obj101("Specimen0061","Card","Plan","SideADiscard",0,FALSE)] purged==Without101(restrictedDemandObjects,{2,7}) objective==[mode |-> "Objective",card |-> "Specimen0158",createdBy |-> 101,owner |-> "SideA", gained |-> [kind |-> "Objective",objectivePoints |-> -1]] counter==[mode |-> "Counter",card |-> "Specimen0046",createdBy |-> 102,owner |-> "SideA", gained |-> [kind |-> "SchemaAtom043",ability |-> 99]] printedObjective==[kind |-> "Facility",objectivePoints |-> 0,subtypes |-> {"SchemaAtom014"},ability |-> 4] printedCounter==[kind |-> "Plan",ability |-> 5] source==[i \in {10} |-> Obj101("Specimen0158","Card","Objective","SideBObjectiveCompletion",0,FALSE)] discarded==[i \in {11} |-> [card |-> "Specimen0158",form |-> "Card",kind |-> "Facility",zone |-> "SideADiscard",host |-> 0,deployed |-> FALSE,properties |-> printedObjective,owner |-> "SideA"]] forfeited==[i \in {11} |-> [discarded[11] EXCEPT !.zone="Removed"]] trash==[original |-> 10,successor |-> 11,physical |-> "Specimen0158",complete |-> TRUE,owner |-> "SideA"] sourceCounter==[i \in {10} |-> Obj101("Specimen0046","Counter","SchemaAtom043","Play",1,FALSE)] revertedCounter==[i \in {11} |-> [card |-> "Specimen0046",form |-> "Card",kind |-> "Plan",zone |-> "SideADiscard",host |-> 0,deployed |-> FALSE,properties |-> printedCounter,owner |-> "SideA"]] counterRetire==[trash EXCEPT !.physical="Specimen0046"] mandatory==[id |-> 501,kind |-> "Mandatory",phase |-> "Detected",resolver |-> "SideA",traversal |-> 8,caller |-> 17,iterations |-> 0,disposition |-> "NoValue"] optional==[mandatory EXCEPT !.kind="Optional"] ended==[mandatory EXCEPT !.phase="Ended",!.iterations=2157] IN /\ CardRepositoryPin10="7ac9f802fcac1fc55eb4c8de3aabdd46c9b5d45f" /\ CardFacts10["NeutralValue00006"].unique /\ ~CardFacts10["Specimen0267"].unique /\ plan.valid /\ plan.targets={1,2} /\ plan.timing="NextCheckpoint" /\ ~plan.preventable /\ UniqueActivationRetire101(plan,{1,2},"ProcedureCodefe50c31480ea",FALSE) /\ ~UniqueActivationRetire101(plan,{1},"ProcedureCodefe50c31480ea",FALSE) /\ ~UniqueActivationRetire101(plan,{1,2},"ProcedureCodee605a78f5d5e",FALSE) /\ ~UniqueActivationRetire101(plan,{1,2},"ProcedureCodefe50c31480ea",TRUE) /\ ~UniqueActivationPlan101(objects,names,{1,2,3},{1,2,3,4},{1,2,3,4},3).valid /\ ~UniqueActivationPlan101(objects,names,{1,2},{1,2,4},{1,2,3,4},3).valid /\ UniqueActivationPlan101(objects,names,{3},{1,2,4},{1,2,3,4},3).targets={1,2} /\ PurgeClusterPlan101(restrictedDemandObjects)=[targets |-> {2,7},bank |-> {2},revertAndRetire |-> {7}] /\ PurgeClusterOriginalProjectionPost101(restrictedDemandObjects,purged,{2},{7}) /\ ~PurgeClusterOriginalProjectionPost101(restrictedDemandObjects,Without101(restrictedDemandObjects,{2,4,7}),{2,4},{7}) /\ ~PurgeClusterOriginalProjectionPost101(restrictedDemandObjects,Without101(restrictedDemandObjects,{2,3,7}),{2,3},{7}) /\ ~PurgeClusterOriginalProjectionPost101(restrictedDemandObjects,purged,{2,7},{}) /\ ConversionValid101(objective) /\ ConversionValid101(counter) /\ ~ConversionValid101([objective EXCEPT !.gained.kind="Facility"]) /\ ~ConversionValid101([counter EXCEPT !.gained.kind="Plan"]) /\ ConversionProperties101(objective,printedObjective,"SideBObjectiveCompletion","SideBObjectiveCompletion")=objective.gained /\ ConversionProperties101(objective,printedObjective,"SideBObjectiveCompletion","SideAObjectiveCompletion")=objective.gained /\ "ability" \notin DOMAIN ConversionProperties101(objective,printedObjective,"SideBObjectiveCompletion","SideAObjectiveCompletion") /\ ConversionExitPlan101(objective,printedObjective,"SideBObjectiveCompletion","SideAHand","Add").trashImmediately /\ ~ConversionExitPlan101(objective,printedObjective,"SideBObjectiveCompletion","Removed","Forfeit").trashImmediately /\ ConversionExitPost101(objective,printedObjective,10,11,source,discarded,{10},"SideAHand","Add",trash) /\ ConversionExitPost101(objective,printedObjective,10,11,source,forfeited,{10},"Removed","Forfeit",trash) /\ ~ConversionExitPost101(objective,printedObjective,10,11,source,forfeited,{10},"Removed","Add",trash) /\ ~ConversionExitPost101(objective,printedObjective,10,11,source,discarded,{10,11},"SideAHand","Add",trash) /\ ~ConversionExitPost101(objective,printedObjective,10,11,source,discarded,{10},"SideAHand","Add",[trash EXCEPT !.physical="NeutralValue00006"]) /\ ~ConversionExitPost101(objective,printedObjective,10,11,source,[discarded EXCEPT ![11].zone="SideBDiscard"],{10},"SideAHand","Add",[trash EXCEPT !.owner="SideB"]) /\ ~ConversionExitPost101(objective,printedObjective,10,11,source,[discarded EXCEPT ![11].properties=objective.gained],{10},"SideAHand","Add",trash) /\ ConversionProperties101(counter,printedCounter,"Play","Play")=counter.gained /\ ConversionProperties101(counter,printedCounter,"Play","SetAside")=printedCounter /\ ConversionExitPlan101(counter,printedCounter,"Play","SetAside","Forfeit").trashImmediately /\ ConversionExitPost101(counter,printedCounter,10,11,sourceCounter,revertedCounter,{10},"SetAside","Add",counterRetire) /\ NamedReference101(1,"Specimen0036","Specimen0036",FALSE,objects,names)={1} /\ NamedReference101(1,"Specimen0036","Specimen0036",TRUE,objects,names)={1,2,3} /\ NamedReference101(9,"Specimen0129","Specimen0129",FALSE,objects,names)={9} /\ NamedReference101(9,"Specimen0129","Specimen0036",FALSE,objects,names)={1,2,3} /\ LoopTrait101("Mandatory",FALSE,FALSE)="ChooseCount" /\ LoopTrait101("Optional",TRUE,FALSE)="SideBWithdrawTraversal" /\ LoopTrait101("Optional",TRUE,TRUE)="SideAContinueTraversal" /\ LoopTrait101("Optional",FALSE,FALSE)="NoRuleIn10.1.6" /\ ResolveMandatoryLoop101(mandatory,ended,17,17,2157,[i \in 1..2158 |-> 17],LoopProfile101) /\ ResolveMandatoryLoop101(mandatory,[mandatory EXCEPT !.phase="Ended"],17,17,0,<<17>>,LoopProfile101) /\ ~ResolveMandatoryLoop101(mandatory,ended,17,18,2157,[i \in 1..2158 |-> 17],LoopProfile101) /\ ResolveMandatoryLoop101(mandatory,[mandatory EXCEPT !.phase="Ended",!.iterations=2],0,2,2,<<0,1,2>>,LoopIncrement101) /\ ~ResolveMandatoryLoop101(mandatory,[mandatory EXCEPT !.phase="Ended",!.iterations=2],0,9,2,<<0,1,9>>,LoopIncrement101) /\ ResolveOptionalTraversalLoop101(optional,[optional EXCEPT !.phase="Ended",!.disposition="WithdrawTraversal"],FALSE,"SideB","WithdrawTraversal") /\ ResolveOptionalTraversalLoop101(optional,[optional EXCEPT !.phase="Ended",!.disposition="Continue"],TRUE,"SideA","Continue") /\ ~ResolveOptionalTraversalLoop101(optional,[optional EXCEPT !.phase="Ended",!.disposition="Continue"],FALSE,"SideA","Continue") /\ ~ResolveOptionalTraversalLoop101(optional,[optional EXCEPT !.phase="Ended",!.disposition="WithdrawTraversal"],TRUE,"SideB","WithdrawTraversal") /\ ~ResolveOptionalTraversalLoop101(optional,[optional EXCEPT !.phase="Ended",!.disposition="Continue"],TRUE,"SideB","Continue") SimultaneousActivationChecks101 == LET objects==[i \in {1,2,3} |-> Obj101("NeutralValue00006","Card","Equipment","Play",0,FALSE)] names==[i \in DOMAIN objects |-> IF i=3 THEN "different" ELSE "Specimen0036"] tiedFirst==UniqueActivationPlan101(objects,names,{1,2},{},{1,2},1) tiedSecond==UniqueActivationPlan101(objects,names,{1,2},{},{1,2},2) firstOrdered==UniqueActivationPlan101(objects,names,{1,2},{},{1},1) secondOrdered==UniqueActivationPlan101(objects,names,{1,2},{1},{1,2},2) olderNonunique==UniqueActivationPlan101(objects,names,{2},{1},{1,2},2) unrelatedBirth==UniqueActivationPlan101(objects,names,{1,2},{1},{1,2,3},2) IN /\ ~tiedFirst.valid /\ ~tiedSecond.valid /\ tiedFirst.disposition="UnsupportedSimultaneousActivation" /\ tiedSecond.disposition="UnsupportedSimultaneousActivation" /\ tiedFirst.targets={} /\ tiedSecond.targets={} /\ ~UniqueActivationRetire101(tiedFirst,{2},"ProcedureCodefe50c31480ea",FALSE) /\ ~UniqueActivationRetire101(tiedSecond,{1},"ProcedureCodefe50c31480ea",FALSE) /\ ~UniqueActivationRetire101(tiedFirst,{},"ProcedureCodefe50c31480ea",FALSE) /\ firstOrdered.valid /\ firstOrdered.disposition="Supported" /\ firstOrdered.targets={} /\ UniqueActivationRetire101(firstOrdered,{},"ProcedureCodefe50c31480ea",FALSE) /\ secondOrdered.valid /\ secondOrdered.disposition="Supported" /\ secondOrdered.targets={1} /\ UniqueActivationRetire101(secondOrdered,{1},"ProcedureCodefe50c31480ea",FALSE) /\ olderNonunique.valid /\ olderNonunique.targets={1} /\ UniqueActivationRetire101(olderNonunique,{1},"ProcedureCodefe50c31480ea",FALSE) /\ unrelatedBirth.valid /\ unrelatedBirth.targets={1} /\ UniqueActivationRetire101(unrelatedBirth,{1},"ProcedureCodefe50c31480ea",FALSE) InfoObj102(card,form,kind,zone,host,virtual,face,loc) == [card |-> card,form |-> form,kind |-> kind,zone |-> zone,host |-> host,virtual |-> virtual,face |-> face,loc |-> loc] InformationChecks102 == LET o==[i \in 1..7 |-> CASE i=1 -> InfoObj102("Specimen0038","Card","Objective","SideADeck",0,FALSE,"NA",1) [] i=2 -> InfoObj102("Specimen0221","Card","Facility","SideADeck",0,FALSE,"NA",2) [] i=3 -> InfoObj102("Specimen0221","Card","Facility","SideAHand",0,FALSE,"NA",3) [] i=4 -> InfoObj102("Specimen0221","Card","Facility","Play",0,FALSE,"Down","root1") [] i=5 -> InfoObj102("Specimen0221","Card","Facility","SideADiscard",0,FALSE,"Down",5) [] i=6 -> InfoObj102("Specimen0118","Card","Action","SideBDiscard",0,FALSE,"Up",6) [] OTHER -> InfoObj102("none","Counter","ResourceUnit","SideBResourceUnits",0,FALSE,"Up",7)] controllers==[i \in DOMAIN o |-> IF i \in {6,7} THEN "SideB" ELSE "SideA"] Specimen0118==[id \in {91} |-> [object |-> 1,zone |-> "SideADeck",loc |-> 1,viewers |-> {"SideB"}]] exposed==[id \in {92} |-> [object |-> 4,zone |-> "Play",loc |-> "root1",viewers |-> SetupPlayers]] deckFact==CardProfileFact102(1,o,controllers,Empty10,100) lookFact==CardProfileFact102(1,o,controllers,Specimen0118,100) handFact==CardProfileFact102(3,o,controllers,Empty10,100) deployedFact==CardProfileFact102(4,o,controllers,Empty10,100) archivedFact==CardProfileFact102(5,o,controllers,Empty10,100) bDiscardPileFact==CardProfileFact102(6,o,controllers,Empty10,100) resourceUnits==ResourceUnitPoolFact102("SideB",o,100) counts==ZoneCountFact102("SideADeck",o,100) facts==[id \in {1,2,3,4,5,6,7,8} |-> CASE id=1 -> deckFact [] id=2 -> handFact [] id=3 -> deployedFact [] id=4 -> archivedFact [] id=5 -> bDiscardPileFact [] id=6 -> resourceUnits [] id=7 -> counts [] OTHER -> lookFact] secretSwap==[facts EXCEPT ![1].value="Specimen0221"] observation==[tag |-> "AuthoritativeObservation",player |-> "SideB",fact |-> 8,value |-> "Specimen0038",snapshot |-> 100] bluff==[tag |-> "Claim",speaker |-> "SideA",recipient |-> "SideB",fact |-> 3,value |-> "Specimen0038",snapshot |-> 100,verifiedOpen |-> FALSE] honest==[bluff EXCEPT !.value="Specimen0221"] declaredChoice==[source |-> 30,key |-> "ChosenBarrier",target |-> 40] choices==[id \in {700} |-> declaredChoice] openChoices==PublicChoiceFacts102(choices,100) laterChoices==PublicChoiceFacts102(choices,200) response==[id \in {700} |-> [value |-> declaredChoice,snapshot |-> 200]] core==CoreInformationCatalog102(o,controllers,Empty10,choices,100) coreChangedHidden==CoreInformationCatalog102([o EXCEPT ![1].card="Specimen0221"],controllers,Empty10,choices,100) duringLook==CoreInformationCatalog102(o,controllers,Specimen0118,choices,100) hosted==[id \in {1,2,3} |-> CASE id=1 -> InfoObj102("Specimen0118","Card","Action","Play",3,FALSE,"Down",3) [] id=2 -> InfoObj102("Specimen0088","Card","Technique","Play",3,FALSE,"Down",3) [] OTHER -> InfoObj102("Specimen0227","Card","Support","Play",0,FALSE,"Up","root")] hostedControllers==[id \in DOMAIN hosted |-> "SideB"] oneHostedGrant==[id \in {93} |-> [object |-> 1,zone |-> "Play",loc |-> 3,viewers |-> {"SideA"}]] IN /\ InformationClass102(SetupPlayers)="Open" /\ InformationClass102({"SideA"})="Hidden" /\ InformationClass102({})="Hidden" /\ deckFact.viewers={} /\ lookFact.viewers={"SideB"} /\ handFact.viewers={"SideA"} /\ deployedFact.viewers={"SideA"} /\ archivedFact.viewers={"SideA"} /\ bDiscardPileFact.viewers=SetupPlayers /\ CardProfileFact102(4,o,controllers,exposed,100).viewers=SetupPlayers /\ resourceUnits.value=1 /\ resourceUnits.viewers=SetupPlayers /\ counts.value=2 /\ counts.viewers=SetupPlayers /\ PlayerInformationView102(facts,"SideB",100)=[id \in {5,6,7,8} |-> facts[id].value] /\ PlayerInformationView102(facts,"SideB",100)=PlayerInformationView102(secretSwap,"SideB",100) /\ ObserveCurrentInformation102(<<>>,<>,facts,8,"SideB",100) /\ ~ObserveCurrentInformation102(<<>>,<<[observation EXCEPT !.fact=1]>>,facts,1,"SideB",100) /\ ~ObserveCurrentInformation102(<<>>,<>,facts,8,"SideB",101) /\ ~ObserveCurrentInformation102(<<>>,<<[observation EXCEPT !.tag="Claim"]>>,facts,8,"SideB",100) /\ CardProfileFact102(1,o,controllers,Empty10,101).viewers={} /\ CurrentLookViewers102(1,[o EXCEPT ![1].loc=2],Specimen0118)={} /\ CardProfileFact102(2,o,controllers,Specimen0118,100).viewers={} /\ CommunicateInformation102(<<>>,<>,o,o,facts,3,"SideA","SideB","Specimen0038",100) /\ CommunicateInformation102(<<>>,<>,o,o,facts,3,"SideA","SideB","Specimen0221",100) /\ ~CommunicateInformation102(<<>>,<>,o,[o EXCEPT ![4].card="Specimen0038"],facts,3,"SideA","SideB","Specimen0038",100) /\ ~CommunicateInformation102(<<>>,<>,o,o,facts,1,"SideA","SideB","Specimen0038",100) /\ ~CommunicateInformation102(<<>>,<<[bluff EXCEPT !.fact=6,!.value=9,!.verifiedOpen=TRUE]>>,o,o,facts,6,"SideA","SideB",9,100) /\ DiscoverOpenInformation102(facts,"SideA",{5,6,7},[id \in {5,6,7} |-> [value |-> facts[id].value,snapshot |-> 100]],100) /\ ~DiscoverOpenInformation102(facts,"SideA",{5,6,7},[id \in {5,6} |-> [value |-> facts[id].value,snapshot |-> 100]],100) /\ ~DiscoverOpenInformation102(facts,"SideB",{2},[id \in {2} |-> [value |-> "Specimen0221",snapshot |-> 100]],100) /\ PlayerInformationView102(openChoices,"SideA",100)[700]=declaredChoice /\ PlayerInformationView102(openChoices,"SideB",100)[700]=declaredChoice /\ DiscoverOpenInformation102(laterChoices,"SideA",{700},response,200) /\ ~DiscoverOpenInformation102(laterChoices,"SideA",{700},[response EXCEPT ![700].value.target=41],200) /\ ~DiscoverOpenInformation102(laterChoices,"SideA",{700},[response EXCEPT ![700].snapshot=100],200) /\ ~DiscoverOpenInformation102(openChoices,"SideA",{700},response,200) /\ PublicChoiceFacts102(Empty10,201)=Empty10 /\ PlayerInformationView102(facts,"SideB",101)=Empty10 /\ PlayerInformationView102(core,"SideB",100)=PlayerInformationView102(coreChangedHidden,"SideB",100) /\ <<"CardProfile",1>> \notin DOMAIN PlayerInformationView102(core,"SideB",100) /\ PlayerInformationView102(duringLook,"SideB",100)[<<"CardProfile",1>>]="Specimen0038" /\ <<"CardProfile",2>> \notin DOMAIN PlayerInformationView102(duringLook,"SideB",100) /\ {<<"ZoneCount",z>> : z \in {"SideAHand","SideADeck","SideBHand","SideBDeck"}} \subseteq DOMAIN PlayerInformationView102(core,"SideB",100) /\ {<<"ResourceUnitPool",p>> : p \in SetupPlayers} \subseteq DOMAIN PlayerInformationView102(core,"SideA",100) /\ PlayerInformationView102(core,"SideA",100)[<<"Choice",700>>]=declaredChoice /\ ObserveCurrentInformation102(<>,Append(<>,[observation EXCEPT !.player="SideA",!.fact=3,!.value="Specimen0221"]),facts,3,"SideA",100) /\ CardProfileFact102(1,hosted,hostedControllers,oneHostedGrant,100).viewers=SetupPlayers /\ CardProfileFact102(2,hosted,hostedControllers,oneHostedGrant,100).viewers={"SideB"} /\ CardFacts10["Specimen0088"].kind="Technique" /\ CardFacts10["Specimen0118"].kind="Action" CheckpointPrinted103 == [card \in DOMAIN CardFacts10 |-> [kind |-> CardFacts10[card].kind]] CheckpointOwners103 == [card \in DOMAIN CardFacts10 |-> CardFacts10[card].side] CheckpointObject103(card,zone,deployed,host) == [card |-> card,form |-> "Card",kind |-> CardFacts10[card].kind,zone |-> zone,loc |-> zone, host |-> host,virtual |-> FALSE,deployed |-> deployed,activated |-> deployed,face |-> "Up", properties |-> CheckpointPrinted103[card],side |-> CardFacts10[card].side,area |-> "Root",targetSite |-> "SchemaAtom082",marks |-> {}] CheckpointCounter103(kind,zone,host) == [card |-> "none",form |-> "Counter",kind |-> kind,zone |-> zone,loc |-> host,host |-> host, virtual |-> FALSE,deployed |-> FALSE,activated |-> FALSE,face |-> "Up",properties |-> Empty10,side |-> "SideB",area |-> "NoValue",targetSite |-> "NoValue",marks |-> {}] CheckpointFrameAt103(index) == [NewCheckpoint103(1,[kind |-> "RuleStep",step |-> "Synthetic"],100,{TimingRef9("Turn",1)}) EXCEPT !.point=CheckpointStages103[index],!.owed=SubSeq(CheckpointStages103,index,12),!.done=SetupRange(SubSeq(CheckpointStages103,1,index-1))] CheckpointNextFrame103(frame,snapshot) == LET rest==SubSeq(frame.owed,2,Len(frame.owed)) IN [frame EXCEPT !.owed=rest,!.done=@ \cup {frame.point},!.snapshotId=snapshot, !.point=IF rest = <<>> THEN "ProcedureCodeb74d673a0fc6" ELSE rest[1],!.phase=IF rest = <<>> THEN "Completed" ELSE "Steps"] CapacityUsage103 == [id \in {1,2,3,4} |-> CASE id=1 -> 1 [] id=2 -> 1 [] id=3 -> 3 [] OTHER -> 0] CapacityLegal103(selected) == SumMap([id \in DOMAIN CapacityUsage103 \ selected |-> CapacityUsage103[id]])<=3 NonMonotoneLegal103(selected) == selected={} \/ selected={1,2} ImpossibleLegal103(selected) == FALSE CheckpointCleanupChecks103 == LET o==[id \in {1,2,3} |-> CheckpointObject103("NeutralValue00006","Play",TRUE,0)] names==[id \in DOMAIN o |-> "Specimen0036"] controllers==[id \in DOMAIN o |-> "SideB"] order==[id \in DOMAIN o |-> id] full==CheckpointUniquePlan103(o,names,{1,2,3},{1,2,3},{},controllers,order) latestGone==CheckpointUniquePlan103(o,names,{1,2,3},{1,2},{},controllers,order) tie==CheckpointUniquePlan103(o,names,{1,2},{1,2},{},controllers,[order EXCEPT ![2]=1]) uniqueSuccessors==[id \in {1,2} |-> id+10] trashed==CheckpointRetireMap103(o,{1,2},uniqueSuccessors,CheckpointPrinted103,CheckpointOwners103,{1,2,3}) choices==AppropriateRetireSets103(DOMAIN CapacityUsage103,CapacityLegal103) mObjects==[id \in DOMAIN CapacityUsage103 |-> CheckpointObject103("NeutralValue00007","Play",TRUE,0)] mSuccessors==[id \in {1,2} |-> id+10] mRetire==CheckpointRetireMap103(mObjects,{1,2},mSuccessors,CheckpointPrinted103,CheckpointOwners103,DOMAIN mObjects) hostObjects==[id \in {1,2,3,4} |-> CASE id=1 -> CheckpointObject103("NeutralValue00007","Play",TRUE,9) [] id=2 -> CheckpointObject103("Specimen0174","Play",TRUE,1) [] id=3 -> CheckpointCounter103("SchemaAtom180","Play",2) [] OTHER -> CheckpointObject103("Specimen0046","SetAside",FALSE,0)] departures==[id \in {<<"Movement",90>>} |-> [source |-> 9,objectiveCompletionLeft |-> FALSE,uninstalled |-> TRUE,hostRemoved |-> TRUE,children |-> {1}]] paid==[id |-> 900,costPaid |-> TRUE,ability |-> [lastFinished |-> FALSE],heldIds |-> {4},transaction |-> 99,sourceForfeited |-> TRUE] paidMap==[id \in {900} |-> paid] transit==[id \in {4} |-> [protected |-> TRUE,ability |-> 900,effect |-> 99,object |-> 4,cleanupStage |-> "ProcedureCode76ca53ad9dd0"]] fHistory==[id \in {<<"Movement",91>>} |-> [source |-> 10,objectiveCompletionLeft |-> TRUE,uninstalled |-> FALSE,hostRemoved |-> TRUE,children |-> {4}]] firstRetire==CheckpointRetireMap103(hostObjects,{1},[id \in {1} |-> 11],CheckpointPrinted103,CheckpointOwners103,DOMAIN hostObjects) firstHistory==MergeCheckpointDepartures103(departures,CheckpointNewUninstallDepartures103(hostObjects,{1})) atG==CheckpointFrameAt103(7) afterPass==[atG EXCEPT !.snapshotId=101,!.hostPasses=1] discard==[id \in {1,2} |-> IF id=1 THEN [CheckpointCounter103("SchemaAtom043","SideADiscard",0) EXCEPT !.card="Specimen0046"] ELSE CheckpointCounter103("SchemaAtom180","SideBDiscard",0)] conversions==[id \in {1} |-> [mode |-> "Counter",card |-> "Specimen0046",owner |-> "SideA",createdBy |-> 44,gained |-> [kind |-> "SchemaAtom043"]]] restored==[discard EXCEPT ![1].form="Card",![1].kind="Plan",![1].properties=CheckpointPrinted103["Specimen0046"]] scores==[id \in {1,2} |-> CheckpointObject103("Specimen0038",IF id=1 THEN "SideAObjectiveCompletion" ELSE "SideBObjectiveCompletion",FALSE,0)] qC==CheckpointFrameAt103(3) IN /\ full.disposition="Supported" /\ full.targets={1,2} /\ latestGone.targets={1} /\ tie.disposition="UnsupportedActivationTie" /\ tie.targets={} /\ CheckpointUniquePlan103(o,names,{1},{1,2},{},controllers,order).disposition="UnsupportedMixedUniqueness" /\ CheckpointUniquePlan103(o,[names EXCEPT ![3]="Other"],{},{1,2,3},{1,2,3},controllers,order).targets={1,2} /\ CheckpointUniqueRetire103(CheckpointFrameAt103(4),CheckpointNextFrame103(CheckpointFrameAt103(4),101),o,trashed,names,{1,2,3},{1,2,3},{},controllers,order, uniqueSuccessors,{1,2,3},CheckpointPrinted103,CheckpointOwners103,{1,2,3},101) /\ ~CheckpointRetirePost103(o,trashed,{1,2},uniqueSuccessors,{1,2,3,11},CheckpointPrinted103,CheckpointOwners103,{1,2,3}) /\ ~CheckpointUniqueRetire103(CheckpointFrameAt103(3),CheckpointNextFrame103(CheckpointFrameAt103(3),101),o,trashed,names,{1,2,3},{1,2,3},{},controllers,order, uniqueSuccessors,{1,2,3},CheckpointPrinted103,CheckpointOwners103,{1,2,3},101) /\ choices={{1,2},{3}} /\ {1,2} \in choices /\ {3} \in choices /\ {1,2,4} \notin choices /\ {1,3} \notin choices /\ AppropriateRetireSets103({1,2},NonMonotoneLegal103)={{}} /\ AppropriateRetireSets103({1,2},ImpossibleLegal103)={} /\ CheckpointIllegalDisposition103({1,2},ImpossibleLegal103)="UnsupportedNoLegalizingSet" /\ IllegalRetireChooser103({{1},{2}},[id \in {1,2} |-> IF id=1 THEN "SideA" ELSE "SideB"],"SideB")="SideB" /\ IllegalRetireChooser103(choices,[id \in DOMAIN CapacityUsage103 |-> "SideB"],"SideA")="SideB" /\ IllegalRetireChooser103({{1}},[id \in {1} |-> "SideB"],"SideA")="NoValue" /\ IllegalRetireChooser103({{1},{2}},[id \in {1,2} |-> IF id=1 THEN "SideA" ELSE "SideB"],"SideA")="SideA" /\ CheckpointIllegalRetire103(CheckpointFrameAt103(5),CheckpointNextFrame103(CheckpointFrameAt103(5),101),mObjects,mRetire,DOMAIN CapacityUsage103, CapacityLegal103,[id \in DOMAIN CapacityUsage103 |-> "SideB"],"SideA",Empty10,[applies |-> FALSE],"SideB",{1,2},mSuccessors,DOMAIN mObjects, CheckpointPrinted103,CheckpointOwners103,DOMAIN mObjects,101) /\ CheckpointHostedTargets103(hostObjects,departures,"ProcedureCode96bfa1b6a970",transit,paidMap)={1} /\ CheckpointHostedCleanup103(atG,afterPass,hostObjects,firstRetire,departures,firstHistory,transit,paidMap,[id \in {1} |-> 11],DOMAIN hostObjects, CheckpointPrinted103,CheckpointOwners103,DOMAIN hostObjects,101) /\ CheckpointHostedTargets103(firstRetire,firstHistory,"ProcedureCode96bfa1b6a970",transit,paidMap)={2} /\ ~CheckpointHostedCleanup103(atG,CheckpointNextFrame103(atG,101),hostObjects,firstRetire,departures,firstHistory,transit,paidMap,[id \in {1} |-> 11],DOMAIN hostObjects, CheckpointPrinted103,CheckpointOwners103,DOMAIN hostObjects,101) /\ CheckpointHostedTargets103(hostObjects,fHistory,"ProcedureCode76ca53ad9dd0",transit,paidMap)={} /\ CheckpointHostedTargets103(hostObjects,fHistory,"ProcedureCode76ca53ad9dd0",transit,[paidMap EXCEPT ![900].ability.lastFinished=TRUE])={4} /\ RestoreDiscardConversions103(discard,restored,conversions,Empty10,CheckpointPrinted103) /\ ~CheckpointReturnDiscardCounters103(CheckpointFrameAt103(12),CheckpointNextFrame103(CheckpointFrameAt103(12),101),discard,Without101(discard,{1,2}),101) /\ CheckpointReturnDiscardCounters103(CheckpointFrameAt103(12),CheckpointNextFrame103(CheckpointFrameAt103(12),101),restored,Without101(restored,{2}),101) /\ CheckpointObjectiveOutcome103(scores,[id \in {1,2} |-> 7])="Draw" /\ CheckpointObjectiveOutcome103(scores,[id \in {1,2} |-> IF id=1 THEN 7 ELSE 6])="SideA" /\ CheckpointVictory103(qC,[qC EXCEPT !.outcome="Draw",!.phase="SchemaAtom160",!.point="GameEnded"],scores,[id \in {1,2} |-> 7],100) /\ ~CheckpointVictory103(qC,CheckpointNextFrame103(qC,100),scores,[id \in {1,2} |-> 7],100) /\ CheckpointVictory103(qC,CheckpointNextFrame103(qC,100),scores,[id \in {1,2} |-> 6],100) SourceLostMuLegal103(selected) == SumMap([id \in {1,3} \ selected |-> 2]) <= 1+(IF 2 \in selected THEN 0 ELSE 2) Specimen0049HostLegal103(selected) == 1 \in selected CheckpointEnvironmentChecks103 == LET targetSites==[s \in CentralTargetSites4 \cup {"r1","r2"} |-> [kind |-> IF s \in CentralTargetSites4 THEN "SchemaAtom033" ELSE "SchemaAtom132"]] deploy==[id \in {20} |-> [form |-> "Card",kind |-> "Barrier",destination |-> [zone |-> "Play",targetSite |-> "r1",area |-> "Protecting"]]] afterTargetSites==Without101(targetSites,{"r2"}) atH==CheckpointFrameAt103(8) layout==[slots |-> [p \in {"p1","p2","p3","p4"} |-> [targetSite |-> IF p="p3" THEN "r2" ELSE "r1",barrierCard |-> IF p="p4" THEN 50 ELSE 0,reservation |-> 0,retained |-> FALSE]], orders |-> [s \in {"r1","r2"} |-> IF s="r1" THEN <<"p1","p2","p4">> ELSE <<"p3">>]] kept==[layout EXCEPT !.slots=Without101(@,{"p3"}),!.orders["r2"]= <<>>] noDeploy==[layout EXCEPT !.slots=[p \in {"p2","p4"} |-> [layout.slots[p] EXCEPT !.retained=(p="p2")]], !.orders["r1"]= <<"p2","p4">>,!.orders["r2"]= <<>>] rootObjects==[id \in {1,2} |-> [CheckpointObject103("Specimen0098","Play",TRUE,0) EXCEPT !.targetSite="r1"]] siteInspection==[id |-> 8,active |-> TRUE,complete |-> FALSE,targetSite |-> "r1"] capacity==[siteInspectionId |-> 8,admittedRoots |-> {1},pendingRoots |-> {},deniedRoots |-> {}] entries==[id \in {1,2} |-> [tag |-> "RootEntry",siteInspectionId |-> 8,object |-> id,serial |-> IF id=1 THEN 8 ELSE 12,targetSite |-> "r1"]] admitted==[capacity EXCEPT !.admittedRoots={1,2}] denied==[capacity EXCEPT !.deniedRoots={2}] atE==CheckpointFrameAt103(5) auxiliarySiteObjects==[id \in {1,2} |-> [CheckpointObject103("Specimen0098","Play",TRUE,0) EXCEPT !.targetSite=IF id=1 THEN "r1" ELSE "r2"]] auxiliarySiteSuccessors==[id \in {2} |-> 12] retiredObjects==CheckpointRetireMap103(auxiliarySiteObjects,{2},auxiliarySiteSuccessors,CheckpointPrinted103,CheckpointOwners103,{1,2}) retiredFrame==[atE EXCEPT !.retiredRemotes={"r2"},!.snapshotId=101] caller==[kind |-> "TraversalStep",structure |-> TimingRef9("SchemaAtom138",2),step |-> "ProcedureCodecd2caa81fb72"] endEvent==[id |-> 90,complete |-> TRUE,caller |-> caller,tag |-> "TimingStructureEnded",structure |-> TimingRef9("TraversalPhase",21)] inside=={TimingRef9("Turn",1),TimingRef9("SchemaAtom138",2),TimingRef9("TraversalPhase",21)} endSite==[kind |-> "StructureEnd",caller |-> caller,eventId |-> 90,snapshotId |-> 100,inside |-> inside \ {TimingRef9("TraversalPhase",21)}] siteFrame==NewCheckpoint103(7,caller,100,inside \ {TimingRef9("TraversalPhase",21)}) genericSite==[endSite EXCEPT !.kind="Instruction",!.inside=inside] instructionEvent==[id |-> 90,complete |-> TRUE,caller |-> caller,tag |-> "InstructionFinished",origin |-> "TimingStep",instruction |-> "ProcedureCodecd2caa81fb72"] overrideBefore==CheckpointFrameAt103(2) overrideOwed== <<"ProcedureCodeb681cc249a04","ProcedureCode88eda145024f">> \o SubSeq(CheckpointStages103,4,12) auth==[id |-> 1,checkpointId |-> 1,snapshotId |-> 100,rule |-> "CheckpointOrder",directContradiction |-> TRUE,prohibited |-> FALSE, source |-> ObjectAbilitySource9(999),executionId |-> 500,instruction |-> 700,beforeOwed |-> overrideBefore.owed,afterOwed |-> overrideOwed, discharged |-> {},explicitlyReplacedObligations |-> {}] execution==[tag |-> "ActualCheckpointCardOverride",id |-> 500,source |-> ObjectAbilitySource9(999),instruction |-> 700, checkpointId |-> 1,snapshotId |-> 100,resolved |-> TRUE] allowed==[id \in {1} |-> auth] overrideAfter==[overrideBefore EXCEPT !.owed=overrideOwed,!.overrideLog= <>,!.point="ProcedureCodeb681cc249a04"] discharge==[auth EXCEPT !.afterOwed=SubSeq(CheckpointStages103,3,12),!.discharged={"ProcedureCode88eda145024f"},!.explicitlyReplacedObligations={"ProcedureCode88eda145024f"}] discharged==[overrideBefore EXCEPT !.owed=SubSeq(CheckpointStages103,3,12),!.overrideLog= <>,!.point="ProcedureCodeb681cc249a04",!.discharged={"ProcedureCode88eda145024f"}] IN /\ AppropriateRetireSets103({1,2,3},SourceLostMuLegal103)={{1},{3}} /\ AppropriateRetireSets103({1,2},Specimen0049HostLegal103)={{1}} /\ CheckpointAuxiliarySiteCleanup103(atH,CheckpointNextFrame103(atH,100),targetSites,afterTargetSites,Empty10,deploy,100) /\ ~CheckpointAuxiliarySiteCleanup103(atH,CheckpointNextFrame103(atH,100),targetSites,Without101(targetSites,{"r1","r2"}),Empty10,deploy,100) /\ CheckpointAuxiliarySiteCleanup103(atH,CheckpointNextFrame103(atH,100),targetSites,Without101(targetSites,{"r1","r2"}),Empty10,Empty10,100) /\ CheckpointPositionCleanup103(CheckpointFrameAt103(9),CheckpointNextFrame103(CheckpointFrameAt103(9),100),layout,kept,"NoValue",deploy,100) /\ ~CheckpointPositionCleanup103(CheckpointFrameAt103(9),CheckpointNextFrame103(CheckpointFrameAt103(9),100),layout,layout,"NoValue",deploy,100) /\ CheckpointPositionCleanup103(CheckpointFrameAt103(9),CheckpointNextFrame103(CheckpointFrameAt103(9),100),layout,noDeploy,"p2",Empty10,100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,admitted,siteInspection,rootObjects,entries,10,15,{2},"SideB",100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,denied,siteInspection,rootObjects,entries,10,15,{},"SideB",100) /\ ~CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,admitted,siteInspection,rootObjects,entries,10,15,{2},"SideA",100) /\ ~CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,admitted,siteInspection,rootObjects,entries,10,11,{2},"SideB",100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,capacity,siteInspection,rootObjects, [entries EXCEPT ![2].siteInspectionId=7],10,15,{},"SideB",100) /\ ~CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,admitted,siteInspection,rootObjects, [entries EXCEPT ![2].siteInspectionId=7],10,15,{2},"SideB",100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity, [capacity EXCEPT !.admittedRoots={},!.deniedRoots={1}],siteInspection,rootObjects,[id \in {1} |-> [entries[1] EXCEPT !.serial=14]],10,15,{},"SideB",100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100), [capacity EXCEPT !.deniedRoots={2}],[capacity EXCEPT !.admittedRoots={1,3},!.deniedRoots={2}],siteInspection, [id \in {1,3} |-> rootObjects[1]],[id \in {3} |-> [entries[2] EXCEPT !.object=3]],10,15,{3},"SideB",100) /\ CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,capacity, [siteInspection EXCEPT !.active=FALSE],rootObjects,entries,10,15,{},"NoValue",100) /\ ~CheckpointRootAdmissions103(CheckpointFrameAt103(10),CheckpointNextFrame103(CheckpointFrameAt103(10),100),capacity,admitted, [siteInspection EXCEPT !.active=FALSE],rootObjects,entries,10,15,{2},"SideB",100) /\ CheckpointAuxiliarySiteLimit103(atE,retiredFrame,targetSites,auxiliarySiteObjects,retiredObjects,{"r1"},1,auxiliarySiteSuccessors,{1,2},CheckpointPrinted103,CheckpointOwners103,{1,2},101) /\ ~CheckpointIllegalRetire103(atE,CheckpointNextFrame103(atE,101),auxiliarySiteObjects,retiredObjects,{1,2},Specimen0049HostLegal103,[id \in {1,2} |-> "SideB"], "SideB",targetSites,[applies |-> TRUE,value |-> 1],"SideB",{2},auxiliarySiteSuccessors,{1,2},CheckpointPrinted103,CheckpointOwners103,{1,2},101) /\ ~CheckpointIllegalRetire103(atE,CheckpointNextFrame103(atE,100),auxiliarySiteObjects,auxiliarySiteObjects,{},NonMonotoneLegal103,Empty10, "SideB",targetSites,[applies |-> TRUE,value |-> 1],"NoValue",{},Empty10,{1,2},CheckpointPrinted103,CheckpointOwners103,{1,2},100) /\ CheckpointIllegalRetire103(retiredFrame,CheckpointNextFrame103(retiredFrame,101),retiredObjects,retiredObjects,{},NonMonotoneLegal103,Empty10, "SideB",targetSites,[applies |-> TRUE,value |-> 1],"NoValue",{},Empty10,{1,12},CheckpointPrinted103,CheckpointOwners103,{1,12},101) /\ OpenCheckpointAtSite103(siteFrame,7,endSite,endEvent,inside,{}) /\ BeginCheckpointSite103({}, {CheckpointSiteKey103(endSite)}, Empty10,[id \in {7} |-> siteFrame],siteFrame,7,endSite,endEvent,inside) /\ ~BeginCheckpointSite103({CheckpointSiteKey103(endSite)}, {CheckpointSiteKey103(endSite)}, Empty10,[id \in {7} |-> siteFrame],siteFrame,7,endSite,endEvent,inside) /\ ~BeginCheckpointSite103({}, {CheckpointSiteKey103(endSite)}, [id \in {1} |-> CheckpointFrameAt103(4)], [id \in {1,7} |-> IF id=7 THEN siteFrame ELSE CheckpointFrameAt103(4)],siteFrame,7,endSite,endEvent,inside) /\ TimingRef9("SchemaAtom138",2) \in siteFrame.inside /\ TimingRef9("TraversalPhase",21) \notin siteFrame.inside /\ ~OpenCheckpointAtSite103([siteFrame EXCEPT !.inside=inside],7,endSite,endEvent,inside,{}) /\ CheckpointSite103(genericSite,instructionEvent,inside) /\ ~CheckpointSite103(genericSite,[instructionEvent EXCEPT !.instruction="ProcedureCodea488e1ba6ca3"],inside) /\ ~CheckpointSite103(genericSite,[instructionEvent EXCEPT !.origin="Checkpoint"],inside) /\ ~CheckpointStageAdvance103([CheckpointFrameAt103(3) EXCEPT !.owed=SubSeq(CheckpointStages103,2,12)], CheckpointNextFrame103([CheckpointFrameAt103(3) EXCEPT !.owed=SubSeq(CheckpointStages103,2,12)],100),"ProcedureCodeb681cc249a04",100) /\ CheckpointSite103([endSite EXCEPT !.kind="Cost",!.inside=inside],[id |-> 90,complete |-> TRUE,caller |-> caller,tag |-> "CostPaid",transactionId |-> 3],inside) /\ CheckpointSite103([endSite EXCEPT !.kind="SchemaAtom126",!.inside=inside],[id |-> 90,complete |-> TRUE,caller |-> caller,tag |-> "PriorityAboutToBeReceived",player |-> "SideB"],inside) /\ RewriteCheckpointOrder103(overrideBefore,overrideAfter,auth,execution,allowed) /\ ~RewriteCheckpointOrder103(overrideBefore,overrideAfter,auth,execution,Empty10) /\ ~RewriteCheckpointOrder103(overrideBefore,overrideAfter,auth,[execution EXCEPT !.snapshotId=101],allowed) /\ ~RewriteCheckpointOrder103(overrideBefore,overrideAfter,[auth EXCEPT !.discharged={"ProcedureCode88eda145024f"}],execution,allowed) /\ RewriteCheckpointOrder103(overrideBefore,discharged,discharge,execution,[id \in {1} |-> discharge]) /\ ~RewriteCheckpointOrder103(overrideBefore,discharged,[discharge EXCEPT !.explicitlyReplacedObligations={}],execution,[id \in {1} |-> [discharge EXCEPT !.explicitlyReplacedObligations={}]]) CheckpointHistoryChecks103 == LET hosted==[id \in {1,9} |-> IF id=9 THEN CheckpointObject103("Specimen0038","SideAObjectiveCompletion",FALSE,0) ELSE CheckpointCounter103("Objective","SideAObjectiveCompletion",9)] departed==[id \in {1,19} |-> IF id=19 THEN [hosted[9] EXCEPT !.zone="Removed"] ELSE hosted[id]] transfer==[departed EXCEPT ![19].zone="SideBObjectiveCompletion"] history==[id \in {<<"Movement",91>>} |-> [source |-> 9,objectiveCompletionLeft |-> TRUE,uninstalled |-> FALSE,hostRemoved |-> TRUE,children |-> {1}]] cardHost==[hosted EXCEPT ![9]=CheckpointObject103("Specimen0227","Play",TRUE,0)] uninstalled==[departed EXCEPT ![19]=CheckpointObject103("Specimen0227","SideBDiscard",FALSE,0)] cardHistory==[history EXCEPT ![<<"Movement",91>>].objectiveCompletionLeft=FALSE,![<<"Movement",91>>].uninstalled=TRUE] successorOnly==[id \in {21} |-> CheckpointObject103("NeutralValue00007","Play",TRUE,0)] aside==[id \in {4} |-> CheckpointObject103("Specimen0090","SetAside",FALSE,0)] paid==[id |-> 900,costPaid |-> TRUE,ability |-> [lastFinished |-> FALSE],heldIds |-> {4},transaction |-> 99,sourceForfeited |-> FALSE] paidMap==[id \in {900} |-> paid] transit==[id \in {4} |-> [protected |-> TRUE,ability |-> 900,effect |-> 99,object |-> 4,cleanupStage |-> "ProcedureCode96bfa1b6a970"]] gHistory==[id \in {<<"Movement",92>>} |-> [source |-> 9,objectiveCompletionLeft |-> FALSE,uninstalled |-> TRUE,hostRemoved |-> TRUE,children |-> {4}]] retained==[id \in {1} |-> CheckpointObject103("Specimen0235","Play",FALSE,0)] retentions==[id \in {7} |-> [source |-> 1]] retainRetire==CheckpointRetireMap103(retained,{1},[id \in {1} |-> 11],CheckpointPrinted103,CheckpointOwners103,{}) IN /\ RecordHostDeparture103(Empty10,history,91,hosted,departed,9,19,Empty10) /\ ~RecordHostDeparture103(Empty10,history,91,hosted,transfer,9,19,Empty10) /\ ~RecordHostDeparture103(history,history,91,hosted,departed,9,19,Empty10) /\ RecordHostDeparture103(Empty10,cardHistory,91,cardHost,uninstalled,9,19,Empty10) /\ CheckpointHostedTargets103(departed,history,"ProcedureCode76ca53ad9dd0",Empty10,Empty10)={1} /\ CheckpointHostedTargets103(successorOnly,history,"ProcedureCode76ca53ad9dd0",Empty10,Empty10)={} /\ CheckpointHostedTargets103(aside,gHistory,"ProcedureCode96bfa1b6a970",transit,paidMap)={} /\ CheckpointHostedTargets103(aside,gHistory,"ProcedureCode96bfa1b6a970",transit,[paidMap EXCEPT ![900].ability.lastFinished=TRUE])={4} /\ CheckpointHostedTargets103([aside EXCEPT ![4].zone="Play"],Empty10,"ProcedureCode96bfa1b6a970",transit,[paidMap EXCEPT ![900].ability.lastFinished=TRUE])={} /\ CheckpointRetentionRetire103(CheckpointFrameAt103(2),retentions,Empty10,retained,retainRetire,{},[id \in {1} |-> 11],{1},CheckpointPrinted103,CheckpointOwners103,{}) /\ CheckpointRetentionRetire103(CheckpointFrameAt103(2),retentions,retentions,retained,retained,{7},Empty10,{1},CheckpointPrinted103,CheckpointOwners103,{}) /\ ~CheckpointRetentionRetire103(CheckpointFrameAt103(2),retentions,Empty10,retained,retained,{},[id \in {1} |-> 11],{1},CheckpointPrinted103,CheckpointOwners103,{}) /\ ~CheckpointRetentionRetire103(CheckpointFrameAt103(3),retentions,Empty10,retained,retainRetire,{},[id \in {1} |-> 11],{1},CheckpointPrinted103,CheckpointOwners103,{}) /\ CardFacts10["Specimen0090"].kind="Technique" /\ CardFacts10["Specimen0227"].kind="Support" MarkedCounterLegal103(selected) == 4 \in selected CheckpointMarksChecks103 == LET physical=={"Specimen0036-physical-1","Specimen0036-physical-2","Specimen0049-unrelated"} printed==[card \in physical |-> IF card="Specimen0049-unrelated" THEN CheckpointPrinted103["NeutralValue00007"] ELSE CheckpointPrinted103["NeutralValue00006"]] owners==[card \in physical |-> "SideB"] objects==[id \in {1,2,3} |-> IF id=3 THEN [CheckpointObject103("NeutralValue00007","Play",TRUE,0) EXCEPT !.card="Specimen0049-unrelated",!.marks={"UnrelatedRestriction"}] ELSE [CheckpointObject103("NeutralValue00006","Play",TRUE,0) EXCEPT !.card=IF id=1 THEN "Specimen0036-physical-1" ELSE "Specimen0036-physical-2",!.marks={"OldObjectRestriction"}]] names==[id \in DOMAIN objects |-> IF id=3 THEN "Specimen0049" ELSE "Specimen0036"] controllers==[id \in DOMAIN objects |-> "SideB"] order==[id \in DOMAIN objects |-> id] successor==[id \in {1} |-> 11] output==[id \in {2,3,11} |-> IF id=11 THEN [objects[1] EXCEPT !.zone="SideBDiscard",!.loc="discard", !.host=0,!.deployed=FALSE,!.activated=FALSE,!.face="Up",!.marks={}] ELSE objects[id]] inherited==[output EXCEPT ![11].marks=objects[1].marks] counterObjects==[id \in {4,5} |-> IF id=4 THEN [CheckpointCounter103("SchemaAtom043","Play",9) EXCEPT !.card="Specimen0046",!.side="SideA",!.marks={"ConvertedObjectRestriction"}] ELSE [CheckpointObject103("NeutralValue00007","Play",TRUE,0) EXCEPT !.marks={"UnrelatedCounterCaseRestriction"}]] counterSuccessor==[id \in {4} |-> 14] counterOutput==[id \in {5,14} |-> IF id=14 THEN [counterObjects[4] EXCEPT !.form="Card",!.kind="Plan", !.properties=CheckpointPrinted103["Specimen0046"],!.zone="SideADiscard",!.loc="discard",!.host=0, !.deployed=FALSE,!.activated=FALSE,!.face="Up",!.marks={}] ELSE counterObjects[id]] discard==[id \in {7,8,9} |-> CASE id=7 -> [CheckpointCounter103("SchemaAtom043","SideADiscard",0) EXCEPT !.card="Specimen0046",!.marks={"CurrentDiscardRestriction"}] [] id=8 -> [CheckpointObject103("Specimen0158","SideBDiscard",FALSE,0) EXCEPT !.kind="Objective",!.properties=[kind |-> "Objective",objectivePoints |-> -1],!.marks={"CurrentObjectiveRestriction"}] [] OTHER -> [CheckpointObject103("NeutralValue00007","SideBDiscard",FALSE,0) EXCEPT !.marks={"UnrelatedDiscardRestriction"}]] conversions==[id \in {7,8} |-> IF id=7 THEN [mode |-> "Counter",card |-> "Specimen0046",owner |-> "SideA",createdBy |-> 44,gained |-> [kind |-> "SchemaAtom043"]] ELSE [mode |-> "Objective",card |-> "Specimen0158",owner |-> "SideA",createdBy |-> 45,gained |-> [kind |-> "Objective",objectivePoints |-> -1]]] restored==[id \in DOMAIN discard |-> IF id \in {7,8} THEN [discard[id] EXCEPT !.form="Card", !.kind=CheckpointPrinted103[discard[id].card].kind,!.properties=CheckpointPrinted103[discard[id].card],!.host=0,!.deployed=FALSE] ELSE discard[id]] IN /\ CheckpointUniqueRetire103(CheckpointFrameAt103(4),CheckpointNextFrame103(CheckpointFrameAt103(4),101), objects,output,names,{1,2},{1,2,3},{},controllers,order,successor,{1,2,3},printed,owners,{1,2,3},101) /\ output[11].marks={} /\ output[11].card=objects[1].card /\ 1 \notin DOMAIN output /\ output[2]=objects[2] /\ output[3]=objects[3] /\ ~CheckpointUniqueRetire103(CheckpointFrameAt103(4),CheckpointNextFrame103(CheckpointFrameAt103(4),101), objects,inherited,names,{1,2},{1,2,3},{},controllers,order,successor,{1,2,3},printed,owners,{1,2,3},101) /\ ~CheckpointUniqueRetire103(CheckpointFrameAt103(4),CheckpointNextFrame103(CheckpointFrameAt103(4),101), objects,[output EXCEPT ![3].marks={}],names,{1,2},{1,2,3},{},controllers,order,successor,{1,2,3},printed,owners,{1,2,3},101) /\ CheckpointIllegalRetire103(CheckpointFrameAt103(5),CheckpointNextFrame103(CheckpointFrameAt103(5),101),counterObjects,counterOutput,{4}, MarkedCounterLegal103,[id \in {4,5} |-> IF id=4 THEN "SideA" ELSE "SideB"],"SideB",Empty10,[applies |-> FALSE],"NoValue",{4},counterSuccessor,{4,5}, CheckpointPrinted103,CheckpointOwners103,{4},101) /\ counterOutput[14].marks={} /\ counterOutput[14].form="Card" /\ counterOutput[14].card="Specimen0046" /\ counterOutput[5]=counterObjects[5] /\ ~CheckpointRetirePost103(counterObjects,[counterOutput EXCEPT ![14].marks=counterObjects[4].marks],{4},counterSuccessor,{4,5},CheckpointPrinted103,CheckpointOwners103,{4}) /\ RestoreDiscardConversions103(discard,restored,conversions,Empty10,CheckpointPrinted103) /\ restored[7].marks=discard[7].marks /\ restored[8].marks=discard[8].marks /\ restored[9]=discard[9] /\ ~RestoreDiscardConversions103(discard,[restored EXCEPT ![7].marks={}],conversions,Empty10,CheckpointPrinted103) DamageReference104(revision) == [InstructionWindowRef93(OpenInstruction93(1000,"Ability",2000,ObjectAbilitySource9(900),"Play",1,"NoValue",<<"Damage">>,FALSE)) EXCEPT !.revision=revision] DamageAtomFixture104(card,verb,kind,value) == [id |-> 1,kind |-> "Damage",value |-> value,damageType |-> NormalizeDamageType104(kind),actor |-> DamageResponsible104(verb), damageVerb |-> verb,baseOrigin |-> ObjectAbilitySource9(900),sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA, preventable |-> TRUE,lineage |-> 1,baseController |-> "SideA",targeted |-> FALSE,targetCard |-> 0,targetSite |-> "NoValue"] DamageObjectsFixture104 == [id \in {1,2,3,4,50} |-> IF id=50 THEN CheckpointObject103("Specimen0051","Play",FALSE,0) ELSE [CheckpointObject103(IF id=1 THEN "Specimen0122" ELSE "NeutralValue00007","SideBHand",FALSE,0) EXCEPT !.card=CASE id=1 -> "PhysicalItem0006" [] id=2 -> "PhysicalItem0013" [] id=3 -> "PhysicalItem0014" [] OTHER -> "PhysicalItem0015",!.face="NA",!.marks={"OldHandObjectMark"}]] DamageOwnersFixture104 == [card \in {"PhysicalItem0006","PhysicalItem0013","PhysicalItem0014","PhysicalItem0015"} |-> "SideB"] DamageContextFixture104(effect,revision) == [id |-> 1040,imminenceId |-> 1041,currentRef |-> DamageReference104(revision),currentWorld |-> 100,phase |-> "Resolving", state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> ActualExpectedEffects99([id \in {1} |-> effect]),templates |-> [id \in {1} |-> effect]] DamagePacketFixture104(effect,revision) == [key |-> <<1040,1041,1,revision>>,contextId |-> 1040,imminenceId |-> 1041,effectId |-> 1,reference |-> DamageReference104(revision), snapshotId |-> 100,turnId |-> 1,source |-> effect.baseOrigin,sourceCard |-> effect.sourceCard,sourceSHA |-> effect.sourceSHA, verb |-> effect.damageVerb,responsible |-> effect.actor,damageType |-> effect.damageType,amount |-> effect.value] DamageWorldFixture104(objects) == [id |-> 100,turn |-> [id |-> 1],objects |-> objects,outcome |-> "Playing"] DamageFrameFixture104(packet,objects) == [packet |-> packet,beforeObjects |-> objects,bHand |-> DamageBHand104(objects),selected |-> {},selectionOrder |-> <<>>,selections |-> <<>>, policy |-> [id |-> 0],phase |-> IF packet.amount>Cardinality(DamageBHand104(objects)) THEN "EliminatedByHarm" ELSE "Selecting", outcome |-> IF packet.amount>Cardinality(DamageBHand104(objects)) THEN "SideA" ELSE "Playing",completion |-> [batchId |-> 0],finalObjects |-> Empty10] DamageSampleFixture104(packet,population,amount,selected) == [tag |-> "ActualRandomDamageSelection",packet |-> packet.key,reference |-> packet.reference,population |-> population, amount |-> amount,selected |-> selected,actor |-> packet.responsible] DamageReadyFixture104(frame,selected) == [frame EXCEPT !.selected=selected,!.selections= <>,!.phase="ReadyToRetire"] DamageCompleteFixture104(frame,objects,successors,batchId) == [frame EXCEPT !.phase="Complete",!.finalObjects=objects,!.completion=[batchId |-> batchId, damageEvent |-> DamageSufferedEvent104(frame,batchId,successors),movementEvent |-> MovementEvent8(batchId,"Retire",frame.selected)]] DamageCoreOverlay104(objects,added) == ReplacementOverlay99(objects,added) DamagePacketChecks104 == LET objects==DamageObjectsFixture104 exampleFamily004==DamageAtomFixture104("Specimen0017","Suffer","HarmClassB",2) exampleFamily044==DamageAtomFixture104("Specimen0190","Do","HarmClassB",1) exampleFamily004Context==DamageContextFixture104(exampleFamily004,0) exampleFamily044Context==DamageContextFixture104(exampleFamily044,0) exampleFamily004Packet==DamagePacketFixture104(exampleFamily004,0) exampleFamily044Packet==DamagePacketFixture104(exampleFamily044,0) world==DamageWorldFixture104(objects) Specimen0035==DamageAtomFixture104("Specimen0035","Do","HarmClassB",7) initial==[id \in {1} |-> Specimen0035] prevented==[initial EXCEPT ![1].value=4] fatalRemaining==[initial EXCEPT ![1].value=5] survivingContext==[DamageContextFixture104(prevented[1],1) EXCEPT !.templates=initial] survivingPacket==DamagePacketFixture104(prevented[1],1) zero==[initial EXCEPT ![1].value=0] negative==[initial EXCEPT ![1].value=-1] raised==[initial EXCEPT ![1].value=1] removed==[survivingContext EXCEPT !.state.effects=Empty10,!.actualEffects=Empty10] zeroContext==DamageContextFixture104(zero[1],1) negativeContext==DamageContextFixture104(negative[1],1) noPacketReceipt==[tag |-> "NoActualDamagePacket",contextId |-> 1040,reference |-> DamageReference104(1),effectId |-> 1,snapshotId |-> 100] IN /\ DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(0),world,1,CardFacts10,exampleFamily004Packet) /\ exampleFamily004Packet.responsible="SideB" /\ CardFacts10[exampleFamily004Packet.sourceCard].side="SideA" /\ ~SideAMeatDamage104(exampleFamily004Packet) /\ DamagePacketFromExpected104(exampleFamily044Context,DamageReference104(0),world,1,CardFacts10,exampleFamily044Packet) /\ SideAMeatDamage104(exampleFamily044Packet) /\ ~DamagePacketFromExpected104([exampleFamily004Context EXCEPT !.state.effects[1].actor="SideA",!.actualEffects[1].actor="SideA"],DamageReference104(0),world,1,CardFacts10,[exampleFamily004Packet EXCEPT !.responsible="SideA"]) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(0),world,1,CardFacts10,[exampleFamily004Packet EXCEPT !.amount=3]) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(1),world,1,CardFacts10,exampleFamily004Packet) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(1),world,1,CardFacts10,[exampleFamily004Packet EXCEPT !.reference=DamageReference104(1)]) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(0),[world EXCEPT !.id=101],1,CardFacts10,exampleFamily004Packet) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(0),[world EXCEPT !.id=101],1,CardFacts10,[exampleFamily004Packet EXCEPT !.snapshotId=101]) /\ ~DamagePacketFromExpected104(exampleFamily004Context,DamageReference104(0),world,2,CardFacts10,exampleFamily004Packet) /\ ~DamagePacketFromExpected104([exampleFamily004Context EXCEPT !.state.effects[1].sourceSHA="forged",!.actualEffects[1].sourceSHA="forged"],DamageReference104(0),world,1,CardFacts10,[exampleFamily004Packet EXCEPT !.sourceSHA="forged"]) /\ BeginDamage104(exampleFamily004Context,DamageReference104(0),world,1,CardFacts10,exampleFamily004Packet,DamageFrameFixture104(exampleFamily004Packet,objects),{},"Playing",{}) /\ ~BeginDamage104(exampleFamily004Context,DamageReference104(0),world,1,CardFacts10,exampleFamily004Packet,DamageFrameFixture104(exampleFamily004Packet,objects),{exampleFamily004Packet.key},"Playing",{}) /\ PreventExpectedAmount99(initial,prevented,1,3) /\ PreventExpectedAmount99(initial,fatalRemaining,1,2) /\ DamagePacketFromExpected104(survivingContext,DamageReference104(1),world,1,CardFacts10,survivingPacket) /\ survivingPacket.amount=4 /\ ~DamagePacketFromExpected104(survivingContext,DamageReference104(1),world,1,CardFacts10,DamagePacketFixture104(Specimen0035,1)) /\ BeginDamage104(survivingContext,DamageReference104(1),world,1,CardFacts10,survivingPacket,DamageFrameFixture104(survivingPacket,objects),{},"Playing",{}) /\ ModifyExpectedEffectValue99([id \in {1} |-> exampleFamily044],[id \in {1} |-> [exampleFamily044 EXCEPT !.value=2]],1,1) /\ PreventExpectedAmount99(initial,zero,1,7) /\ PreventExpectedAmount99(initial,negative,1,8) /\ ModifyExpectedEffectValue99(zero,raised,1,1) /\ ModifyExpectedEffectValue99(negative,raised,1,2) /\ ~ModifyExpectedEffectValue99(Empty10,raised,1,1) /\ PreventExpectedWhole99(initial,Empty10,1) /\ DamageOmitted104(zeroContext,DamageReference104(1),world,1,noPacketReceipt) /\ DamageOmitted104(negativeContext,DamageReference104(1),world,1,noPacketReceipt) /\ DamageOmitted104(removed,DamageReference104(1),world,1,noPacketReceipt) /\ ~DamagePacketFromExpected104(zeroContext,DamageReference104(1),world,1,CardFacts10,DamagePacketFixture104(zero[1],1)) /\ ~DamageOmitted104([zeroContext EXCEPT !.phase="WindowOpen"],DamageReference104(1),world,1,noPacketReceipt) /\ DamagePacketFromExpected104(DamageContextFixture104(raised[1],2),DamageReference104(2),world,1,CardFacts10,DamagePacketFixture104(raised[1],2)) /\ ~PreventExpectedAmount99([initial EXCEPT ![1].preventable=FALSE],prevented,1,3) /\ ModifyExpectedEffectValue99([initial EXCEPT ![1].preventable=FALSE],[initial EXCEPT ![1].preventable=FALSE,![1].value=8],1,1) /\ NormalizeDamageType104("CapacityHarmAlias")="PersistentCapacityHarm" /\ NormalizeDamageType104("HarmClassA")="HarmClassA" /\ CardFacts10["Specimen0111"].kind="Objective" /\ CardFacts10["Specimen0238"].kind="Objective" DamageBatchChecks104 == LET objects==DamageObjectsFixture104 atom==DamageAtomFixture104("Specimen0221","Do","HarmClassA",3) packet==DamagePacketFixture104(atom,0) frame==DamageFrameFixture104(packet,objects) selected=={1,2,3} sample==DamageSampleFixture104(packet,frame.bHand,3,selected) ready==DamageReadyFixture104(frame,selected) successors==[id \in selected |-> id+10] afterObjects==DamageOwnerMoveMap104(objects,selected,successors,"SideB") complete==DamageCompleteFixture104(ready,afterObjects,successors,210) event==DamageSufferedEvent104(ready,210,successors) movement==MovementEvent8(210,"Retire",selected) history==[id \in {210} |-> movement] fatalAtom==DamageAtomFixture104("Specimen0035","Do","HarmClassB",5) fatalPacket==DamagePacketFixture104(fatalAtom,1) fatal==DamageFrameFixture104(fatalPacket,objects) emptyObjects==[id \in {50} |-> objects[id]] one==DamageAtomFixture104("Specimen0035","Do","HarmClassB",1) onePacket==DamagePacketFixture104(one,0) IN /\ Cardinality(RandomDamageChoices104(frame.bHand,3))=4 /\ SelectDamageRandomBatch104(frame,ready,objects,selected,"SideA",sample) /\ ~SelectDamageRandomBatch104(frame,ready,objects,selected,"SideB",sample) /\ ~SelectDamageRandomBatch104(frame,[ready EXCEPT !.selections= <<[sample EXCEPT !.actor="SideB"]>>],objects,selected,"SideB",[sample EXCEPT !.actor="SideB"]) /\ ~SelectDamageRandomBatch104(frame,ready,objects,{1,2},"SideA",sample) /\ ~SelectDamageRandomBatch104(frame,DamageReadyFixture104(frame,{1,2}),objects,{1,2},"SideA",DamageSampleFixture104(packet,frame.bHand,3,{1,2})) /\ ~SelectDamageRandomBatch104(frame,ready,objects,selected,"SideA",[sample EXCEPT !.population={1,2,3}]) /\ ResolveDamageBatch104(ready,complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,210,{movement,event}) /\ ~ResolveDamageBatch104(frame,complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,210,{movement,event}) /\ ~ResolveDamageBatch104([ready EXCEPT !.phase="Selecting"],complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,210,{movement,event}) /\ ~ResolveDamageBatch104([ready EXCEPT !.selected={1,2}],complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,210,{movement,event}) /\ ~ResolveDamageBatch104(ready,complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,history,history,210,{movement,event}) /\ afterObjects[50]=objects[50] /\ afterObjects[4]=objects[4] /\ {1,2,3} \cap DOMAIN afterObjects={} /\ \A id \in selected : afterObjects[successors[id]].marks={} /\ afterObjects[successors[id]].zone="SideBDiscard" /\ DamageBatchReadyForConditionals104(complete,afterObjects,event) /\ DamageNetMeatRetireObservation104(complete,afterObjects,event,1) /\ ~DamageBatchReadyForConditionals104(ready,objects,event) /\ BeginDamage104(DamageContextFixture104(fatalAtom,1),DamageReference104(1),DamageWorldFixture104(objects),1,CardFacts10,fatalPacket,fatal,{},"SideA",{}) /\ ~BeginDamage104(DamageContextFixture104(fatalAtom,1),DamageReference104(1),DamageWorldFixture104(objects),1,CardFacts10,fatalPacket,[fatal EXCEPT !.phase="Selecting",!.outcome="Playing"],{},"Playing",{}) /\ ~SelectDamageRandomBatch104(fatal,DamageReadyFixture104(fatal,selected),objects,selected,"SideA",DamageSampleFixture104(fatalPacket,fatal.bHand,5,selected)) /\ ~DamageNetMeatRetireObservation104(fatal,objects,event,1) /\ BeginDamage104(DamageContextFixture104(fatalAtom,1),DamageReference104(1),DamageWorldFixture104(objects),1,CardFacts10,fatalPacket, [fatal EXCEPT !.outcome="Draw"],{},"Draw",{"SideB"}) /\ BeginDamage104(DamageContextFixture104(one,0),DamageReference104(0),DamageWorldFixture104(emptyObjects),1,CardFacts10,onePacket,DamageFrameFixture104(onePacket,emptyObjects),{},"SideA",{}) ExampleFamily009AuthorityFixture104(packet,objects) == [id |-> 71,tag |-> "SourceBoundDamageSelectionOverride",packet |-> packet.key,reference |-> packet.reference,snapshotId |-> packet.snapshotId, source |-> ObjectAbilitySource9(50),card |-> "Specimen0051",sourceSHA |-> CardFacts10["Specimen0051"].sourceSHA, sourceObject |-> objects[50],slots |-> [i \in 1..packet.amount |-> IF i=1 THEN [mode |-> "Choose",actor |-> "SideA"] ELSE [mode |-> "Random",actor |-> packet.responsible]]] SequentialNextFixture104(frame,card) == LET index==Len(frame.selectionOrder)+1 slot==frame.policy.slots[index] receipt==IF slot.mode="Random" THEN DamageSampleFixture104(frame.packet,frame.bHand \ frame.selected,1,{card}) ELSE [tag |-> "ActualAuthorizedDamageChoice",packet |-> frame.packet.key,reference |-> frame.packet.reference, authorityId |-> frame.policy.id,index |-> index,card |-> card,actor |-> slot.actor] IN [frame EXCEPT !.selected=@ \cup {card},!.selectionOrder=Append(@,card),!.selections=Append(@,receipt), !.phase=IF Cardinality(frame.selected \cup {card})=frame.packet.amount THEN "ReadyToRetire" ELSE "SelectingSequentially"] DamageSequentialChecks104 == LET objects==DamageObjectsFixture104 atom==DamageAtomFixture104("Specimen0221","Do","HarmClassA",3) packet==DamagePacketFixture104(atom,0) frame==DamageFrameFixture104(packet,objects) authority==ExampleFamily009AuthorityFixture104(packet,objects) compiled==[id \in {71} |-> authority] sequential==[frame EXCEPT !.policy=authority,!.phase="SelectingSequentially"] one==SequentialNextFixture104(sequential,1) two==SequentialNextFixture104(one,2) three==SequentialNextFixture104(two,3) successors==[id \in {1,2,3} |-> id+10] afterObjects==DamageOwnerMoveMap104(objects,{1,2,3},successors,"SideB") complete==DamageCompleteFixture104(three,afterObjects,successors,220) event==DamageSufferedEvent104(three,220,successors) movement==MovementEvent8(220,"Retire",{1,2,3}) history==[id \in {220} |-> movement] priorNet==[id \in {210} |-> [event EXCEPT !.batchId=210]] exampleFamily036==DamageAtomFixture104("Specimen0167","Suffer","HarmClassA",4) sideBPacket==DamagePacketFixture104(exampleFamily036,0) sideBFrame==DamageFrameFixture104(sideBPacket,objects) sideBAuthority==ExampleFamily009AuthorityFixture104(sideBPacket,objects) sideBSequential==[sideBFrame EXCEPT !.policy=sideBAuthority,!.phase="SelectingSequentially"] sideBOne==SequentialNextFixture104(sideBSequential,1) sideBTwo==SequentialNextFixture104(sideBOne,2) IN /\ BeginExampleFamily009Damage104(frame,sequential,objects,authority,compiled,CardFacts10,Empty10) /\ ~BeginExampleFamily009Damage104(frame,sequential,objects,authority,compiled,CardFacts10,priorNet) /\ ~BeginExampleFamily009Damage104(frame,sequential,objects,authority,Empty10,CardFacts10,Empty10) /\ ~BeginExampleFamily009Damage104(frame,sequential,objects,[authority EXCEPT !.snapshotId=99],[compiled EXCEPT ![71].snapshotId=99],CardFacts10,Empty10) /\ ~BeginExampleFamily009Damage104(frame,[sequential EXCEPT !.policy.snapshotId=99],objects,[authority EXCEPT !.snapshotId=99],[compiled EXCEPT ![71].snapshotId=99],CardFacts10,Empty10) /\ DamageFirstNetThisTurn104([packet EXCEPT !.turnId=2],priorNet) /\ ~DamageFirstNetThisTurn104([packet EXCEPT !.damageType="HarmClassB"],Empty10) /\ ~BeginSequentialDamage104(frame,sequential,objects,[authority EXCEPT !.sourceSHA="forged"],[compiled EXCEPT ![71].sourceSHA="forged"],CardFacts10) /\ ~BeginSequentialDamage104(frame,[sequential EXCEPT !.policy.sourceSHA="forged"],objects,[authority EXCEPT !.sourceSHA="forged"],[compiled EXCEPT ![71].sourceSHA="forged"],CardFacts10) /\ ~BeginSequentialDamage104(frame,sequential,objects,[authority EXCEPT !.card="Specimen0221",!.sourceSHA=CardFacts10["Specimen0221"].sourceSHA], [compiled EXCEPT ![71].card="Specimen0221",![71].sourceSHA=CardFacts10["Specimen0221"].sourceSHA],CardFacts10) /\ ~BeginSequentialDamage104(frame,[sequential EXCEPT !.policy.card="Specimen0221",!.policy.sourceSHA=CardFacts10["Specimen0221"].sourceSHA],objects,[authority EXCEPT !.card="Specimen0221",!.sourceSHA=CardFacts10["Specimen0221"].sourceSHA], [compiled EXCEPT ![71].card="Specimen0221",![71].sourceSHA=CardFacts10["Specimen0221"].sourceSHA],CardFacts10) /\ SelectDamageNext104(sequential,one,objects,1,"SideA",one.selections[1]) /\ SelectDamageNext104(one,two,objects,2,"SideA",two.selections[2]) /\ SelectDamageNext104(two,three,objects,3,"SideA",three.selections[3]) /\ one.beforeObjects=objects /\ two.beforeObjects=objects /\ three.beforeObjects=objects /\ three.selectionOrder= <<1,2,3>> /\ ~SelectDamageNext104(one,two,objects,1,"SideA",two.selections[2]) /\ ~SelectDamageNext104(one,two,afterObjects,2,"SideA",two.selections[2]) /\ ~DamageBatchReadyForConditionals104(one,objects,event) /\ ResolveDamageBatch104(three,complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,220,{movement,event}) /\ ~ResolveDamageBatch104([one EXCEPT !.phase="ReadyToRetire"],complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,220,{movement,event}) /\ DamageBatchReadyForConditionals104(complete,afterObjects,event) /\ DamagePacketFromExpected104(DamageContextFixture104(exampleFamily036,0),DamageReference104(0),DamageWorldFixture104(objects),1,CardFacts10,sideBPacket) /\ BeginExampleFamily009Damage104(sideBFrame,sideBSequential,objects,sideBAuthority,[id \in {71} |-> sideBAuthority],CardFacts10,Empty10) /\ sideBPacket.responsible="SideB" /\ sideBAuthority.slots[1].actor="SideA" /\ SelectDamageNext104(sideBSequential,sideBOne,objects,1,"SideA",sideBOne.selections[1]) /\ ~SelectDamageNext104(sideBSequential,sideBOne,objects,1,"SideB",sideBOne.selections[1]) /\ SelectDamageNext104(sideBOne,sideBTwo,objects,2,"SideB",sideBTwo.selections[2]) /\ ~SelectDamageNext104(sideBOne,sideBTwo,objects,2,"SideA",sideBTwo.selections[2]) DamageCoreChecks104 == LET oldCore==[id \in 100..104 |-> DamageCoreCounterRow104] objects==ReplacementOverlay99(DamageObjectsFixture104,oldCore) core==DamageAtomFixture104("Specimen0037","Do","PersistentCapacityHarm",1) capacityHarmAlias==DamageAtomFixture104("Specimen0037","Do","CapacityHarmAlias",1) packet==DamagePacketFixture104(core,0) frame==DamageFrameFixture104(packet,objects) ready==DamageReadyFixture104(frame,{1}) successors==[id \in {1} |-> 11] cardsAfter==DamageOwnerMoveMap104(objects,{1},successors,"SideB") added==[id \in {30000} |-> DamageCoreCounterRow104] afterObjects==ReplacementOverlay99(cardsAfter,added) complete==DamageCompleteFixture104(ready,afterObjects,successors,230) event==DamageSufferedEvent104(ready,230,successors) movement==MovementEvent8(230,"Retire",{1}) history==[id \in {230} |-> movement] largerBHand==ReplacementOverlay99(afterObjects,[id \in {1000} |-> [CheckpointObject103("NeutralValue00007","SideBHand",FALSE,0) EXCEPT !.face="NA"]]) mixed==[DamageObjectsFixture104 EXCEPT ![4]=[CheckpointObject103("Specimen0221","SideBHand",FALSE,0) EXCEPT !.card="PhysicalItem0002",!.face="NA",!.marks={"OldSideAHandObjectMark"}]] mixedOwners==ReplacementOverlay99(DamageOwnersFixture104,[card \in {"PhysicalItem0002"} |-> "SideA"]) mixedSuccessors==[id \in {1,4} |-> id+10] mixedFirst==DamageOwnerMoveMap104(mixed,{1},[id \in {1} |-> 11],"SideB") mixedAfter==DamageOwnerMoveMap104(mixedFirst,{4},[id \in {4} |-> 14],"SideA") IN /\ core=capacityHarmAlias /\ packet.damageType="PersistentCapacityHarm" /\ DamagePacketFromExpected104(DamageContextFixture104(core,0),DamageReference104(0),DamageWorldFixture104(objects),1,CardFacts10,packet) /\ BeginDamage104(DamageContextFixture104(core,0),DamageReference104(0),DamageWorldFixture104(objects),1,CardFacts10,packet,frame,{},"Playing",{}) /\ SelectDamageRandomBatch104(frame,ready,objects,{1},"SideA",ready.selections[1]) /\ ResolveDamageBatch104(ready,complete,objects,afterObjects,successors,DOMAIN objects,DamageOwnersFixture104,added,Empty10,history,230,{movement,event}) /\ ~ResolveDamageBatch104(ready,DamageCompleteFixture104(ready,cardsAfter,successors,230),objects,cardsAfter,successors,DOMAIN objects,DamageOwnersFixture104,Empty10,Empty10,history,230,{movement,event}) /\ PersistentCapacityLossQuantity104(objects)=5 /\ PersistentCapacityLossQuantity104(afterObjects)=6 /\ DamageMaximumHandSize104(objects,0)=0 /\ DamageMaximumHandSize104(afterObjects,0)=-1 /\ DamageMaximumHandSize104(largerBHand,0)=-1 /\ DamageMaximumHandSize104(afterObjects,2)=1 /\ complete.outcome="Playing" /\ ~SideBHandHarmElimination4("SideB",-1,FALSE) /\ SideBHandHarmElimination4("SideB",-1,TRUE) /\ SetupCounterController(DamageCoreCounterRow104,"SideA","SideB")="none" /\ \A id \in DOMAIN oldCore : afterObjects[id]=oldCore[id] /\ DamageBatchReadyForConditionals104(complete,afterObjects,event) /\ ~DamageNetMeatRetireObservation104(complete,afterObjects,event,1) /\ ~DamageCoreCounters104(packet,cardsAfter,afterObjects,[id \in {100} |-> DamageCoreCounterRow104],DOMAIN objects \cup {11}) /\ DamageCardBatchTransfer104(mixed,mixedAfter,{1,4},mixedSuccessors,DOMAIN mixed,mixedOwners) /\ mixedAfter[11].zone="SideBDiscard" /\ mixedAfter[14].zone="SideADiscard" /\ mixedAfter[11].marks={} /\ mixedAfter[14].marks={} /\ mixedAfter[50]=mixed[50] ExposureMarkerCardFixture105(card,zone,deployed) == ReplacementOverlay99(CheckpointObject103(card,zone,deployed,0),[front |-> TRUE]) ExposureMarkerTokenFixture105(kind,zone,host,virtual) == [ExposureMarkerCounterRow105 EXCEPT !.kind=kind,!.zone=zone,!.host=host,!.loc=host,!.virtual=virtual] ExposureMarkerObjectsFixture105(count,Specimen0173) == [id \in (1..count) \cup {10,11,20,21,22,30,31,32,40,41,50,51} |-> CASE id \in 1..count -> ExposureMarkerCounterRow105 [] id=10 -> [ExposureMarkerCardFixture105("Specimen0173",IF Specimen0173 THEN "Play" ELSE "SideBDiscard",Specimen0173) EXCEPT !.marks={"OldResourceMark"}] [] id=11 -> ExposureMarkerCardFixture105("Specimen0058","Play",TRUE) [] id=50 -> ExposureMarkerCardFixture105("Specimen0233","Outside",FALSE) [] id=51 -> ExposureMarkerCardFixture105("Specimen0212","Outside",FALSE) [] id \in {20,21,22} -> ExposureMarkerTokenFixture105("ResourceUnit","SideAResourceUnits",0,FALSE) [] id \in {30,31,32} -> ExposureMarkerTokenFixture105("ResourceUnit","SideBResourceUnits",0,FALSE) [] OTHER -> ExposureMarkerTokenFixture105("ResourceUnit","Play",11,FALSE)] ExposureMarkerWorldFixture105(player,count,Specimen0173) == LET objects==ExposureMarkerObjectsFixture105(count,Specimen0173) IN [id |-> 100,started |-> TRUE,outcome |-> "Playing",objects |-> objects, turn |-> [OpenTurn5(player,1,[p \in SetupPlayers |-> 0]) EXCEPT !.phase="NeutralValue00001"],step |-> IF player="SideA" THEN "ProcedureCode0e20572a4bab" ELSE "ProcedureCode989abc27e0c6",phaseId |-> 10, actionPoints |-> [p \in SetupPlayers |-> 3],spent |-> [p \in SetupPlayers |-> 0],owners |-> CheckpointOwners103, controllers |-> [id \in DOMAIN objects |-> IF id \in {20,21,22,50} THEN "SideA" ELSE "SideB"], activeSources |-> IF Specimen0173 THEN {10,11} ELSE {11},activeAbilities |-> IF Specimen0173 THEN {1050} ELSE {}, exposureMarkerCostModifiers |-> [kind \in {"RetireResource","RemoveExposureMarker"} |-> Empty10],exposureMarkerSpendPermissions |-> Empty10,additionalResourceCosts |-> Empty10, points |-> [p \in SetupPlayers |-> 0],subtypes |-> [id \in DOMAIN objects |-> {}],currentRetireProhibitions |-> {},currentExposureMarkerRemovalProhibitions |-> {}] ExposureMarkerStaticSyntax105 == [id |-> 1050,kind |-> "Static",source |-> ObjectAbilitySource9(10),units |-> <<[id |-> 1,category |-> "Declaration",subtype |-> "Plain"]>>] ExposureMarkerStaticPart105 == [id |-> 1,ability |-> 1050,conditions |-> {},target |-> "SideB",property |-> "HasExposureMarkers"] ExposureMarkerDeclarationsFixture105(world) == IF 10 \in DOMAIN world.objects /\ 1050 \in world.activeAbilities /\ DefaultActive(world.objects[10],world.started,CardFacts10) THEN [id \in {1} |-> [snapshotId |-> world.id,projection |-> StaticProjection94(ExposureMarkerStaticSyntax105,ExposureMarkerStaticPart105,TRUE), sourceObject |-> world.objects[10],sourceSHA |-> CardFacts10["Specimen0173"].sourceSHA]] ELSE Empty10 ExposureMarkerReadyWindow105(world) == LET site==TurnPrioritySite9(world.turn,world.step,world.phaseId,world.actionPoints[world.turn.owner],[turn |-> world.turn,step |-> world.step]) IN [NewPriorityWindow9(10501,"NeutralValue00001",site,Empty10,0,NoTimingRef9,[id |-> 0,abilityInstance |-> 0,index |-> 0],0) EXCEPT !.stage="Ready",!.checkpoint=400] ExposureMarkerOptionFixture105(kind) == PriorityOption9(700,"NeutralValue00001",ExposureMarkerActionActor105(kind),9001,0,RuleAbilitySource9(ExposureMarkerActionRule105(kind)),0,{}) ExposureMarkerLegalityFixture105(world,kind) == [tag |-> "PriorityOptionLegality",windowId |-> 10501,reception |-> 1,option |-> ExposureMarkerOptionFixture105(kind), legal |-> TRUE,active |-> TRUE,transactionId |-> 600,costsPayable |-> TRUE] ExposureMarkerReservedFixture105(kind) == [id |-> 7000,kind |-> kind,player |-> ExposureMarkerActionActor105(kind),windowId |-> 10501,option |-> ExposureMarkerOptionFixture105(kind),transaction |-> 600, activationSnapshot |-> 0,phase |-> "Reserved",action |-> [id |-> 0],target |-> 0,instruction |-> 0,effective |-> [mode |-> "NoValue"], nestedTransaction |-> 0,effectCosts |-> Empty10,payment |-> [complete |-> FALSE]] ExposureMarkerBusyFixture105(world,kind) == StartPriorityOptionFrame9(ExposureMarkerReadyWindow105(world),ExposureMarkerOptionFixture105(kind),600) ExposureMarkerAfterPaymentWorld105(world,player,selected) == [world EXCEPT !.id=@+1,!.objects=Without101(@,selected),!.controllers=Without101(@,selected),!.actionPoints[player]=@-1,!.spent[player]=@+1] ExposureMarkerPaymentFixture105(frame,world,afterWorld,selected,amount) == [tag |-> "BasicExposureMarkerTriggerPayment",id |-> frame.transaction,actionId |-> frame.id,player |-> frame.player, beforeSnapshot |-> world.id,afterSnapshot |-> afterWorld.id,actionPoints |-> 1,resourceUnits |-> amount,paidCounterIds |-> selected,complete |-> TRUE] ExposureMarkerPaidFixture105(frame,world,payment) == [frame EXCEPT !.phase="BaseCostCheckpoint",!.activationSnapshot=world.id,!.action=NewAction5(frame.id,frame.player,ExposureMarkerActionKey105(frame.kind)),!.payment=payment] ExposureMarkerCheckpointFixture105(frame,world,scope,cpId) == [NewCheckpoint103(cpId,ExposureMarkerCheckpointCaller105(frame,scope),world.id,{}) EXCEPT !.phase="Returned",!.point="ProcedureCodeb74d673a0fc6",!.owed= <<>>, !.done=CheckpointStageSet103,!.returned=TRUE,!.recognition=[id |-> cpId,caller |-> ExposureMarkerCheckpointCaller105(frame,scope)],!.recognized=Empty10] ExposureMarkerCheckpointLedger105(cp) == [checkpoints |-> [id \in {cp.id} |-> [caller |-> cp.caller]],instances |-> Empty10] ExposureMarkerTargetsFrame105(frame) == [frame EXCEPT !.phase="Targets",!.action.status="Effects"] ExposureMarkerTargetedFixture105(frame,target) == [frame EXCEPT !.phase="Targeted",!.target=target,!.instruction=8000] ExposureMarkerEffectRef105(frame) == [DamageReference104(0) EXCEPT !.id=8000,!.abilityInstance=frame.id,!.source=RuleAbilitySource9(ExposureMarkerActionRule105(frame.kind))] ExposureMarkerEffectAtom105(frame) == [id |-> 1,kind |-> IF frame.kind="RetireResource" THEN "RetireCards" ELSE "RemoveExposureMarkers",targetCard |-> frame.target,actor |-> frame.player,value |-> 1,preventable |-> TRUE] ExposureMarkerEffectContext105(frame,world,removed) == [id |-> 9000,currentRef |-> ExposureMarkerEffectRef105(frame),currentWorld |-> world.id,phase |-> "Resolving",templates |-> [id \in {1} |-> ExposureMarkerEffectAtom105(frame)], state |-> [effects |-> IF removed THEN Empty10 ELSE [id \in {1} |-> ExposureMarkerEffectAtom105(frame)]],actualEffects |-> IF removed THEN Empty10 ELSE [id \in {1} |-> ExposureMarkerEffectAtom105(frame)]] ExposureMarkerEffectReadyFixture105(frame,removed,costs) == [frame EXCEPT !.effective=[mode |-> IF removed THEN "Removed" ELSE "Kept",reference |-> ExposureMarkerEffectRef105(frame),effectId |-> 1], !.effectCosts=costs,!.phase=IF DOMAIN costs={} THEN "EffectReady" ELSE "AdditionalCosts"] ExposureMarkerQuantityAndStatusChecks105 == LET world==ExposureMarkerWorldFixture105("SideB",0,TRUE) declarations==ExposureMarkerDeclarationsFixture105(world) noPap==ExposureMarkerWorldFixture105("SideB",0,FALSE) countWorld==ExposureMarkerWorldFixture105("SideB",1,FALSE) considered==[world EXCEPT !.objects=ReplacementOverlay99(@,[id \in {1,2,3} |-> CASE id=1 -> [ExposureMarkerCounterRow105 EXCEPT !.virtual=TRUE] [] id=2 -> [ExposureMarkerCounterRow105 EXCEPT !.host=11,!.zone="Play"] [] OTHER -> [ExposureMarkerCounterRow105 EXCEPT !.kind="Power"]])] expected==[id \in {1} |-> StaticProjection94(ExposureMarkerStaticSyntax105,ExposureMarkerStaticPart105,TRUE)] conditions==[tag |-> "StaticConditionSnapshot",ability |-> 1050,source |-> ObjectAbilitySource9(10),receipts |-> Empty10] atom==[DamageAtomFixture104("Specimen0106","Do","HarmClassA",4) EXCEPT !.kind="ExposureMarkers"] ctx==DamageContextFixture104(atom,0) added==[id \in 100..103 |-> ExposureMarkerCounterRow105] afterObjects==ReplacementOverlay99(noPap.objects,added) event==[tag |-> "ExposureMarkersTaken",contextId |-> ctx.id,reference |-> ctx.currentRef,effectId |-> 1,source |-> atom.baseOrigin, actor |-> "SideA",player |-> "SideB",amount |-> 4,counters |-> DOMAIN added] IN /\ ObserveStaticDeclarations94(ExposureMarkerStaticSyntax105,[id \in {1} |-> ExposureMarkerStaticPart105],TRUE,conditions,[id \in {1} |-> TRUE],expected) /\ ObserveStaticDeclarations94(ExposureMarkerStaticSyntax105,[id \in {1} |-> ExposureMarkerStaticPart105],FALSE,conditions,[id \in {1} |-> TRUE],Empty10) /\ CurrentExposureMarkerState105(world,declarations,CardFacts10,ExposureMarkerStateView105(world.objects,declarations)) /\ ExposureMarkerStateView105(world.objects,declarations).quantity=0 /\ ExposureMarkerStateView105(world.objects,declarations).hasExposureMarkers /\ CurrentExposureMarkerState105(noPap,Empty10,CardFacts10,ExposureMarkerStateView105(noPap.objects,Empty10)) /\ ~ExposureMarkerStateView105(noPap.objects,Empty10).hasExposureMarkers /\ CurrentExposureMarkerState105(countWorld,Empty10,CardFacts10,ExposureMarkerStateView105(countWorld.objects,Empty10)) /\ ExposureMarkerStateView105(countWorld.objects,Empty10).hasExposureMarkers /\ ExposureMarkerQuantity105(considered.objects)=1 /\ MovableExposureMarkerIds105(considered.objects)={} /\ ~CurrentExposureMarkerState105(world,[declarations EXCEPT ![1].snapshotId=99],CardFacts10,ExposureMarkerStateView105(world.objects,declarations)) /\ ~CurrentExposureMarkerState105(noPap,[declarations EXCEPT ![1].sourceObject=noPap.objects[10]],CardFacts10,ExposureMarkerStateView105(noPap.objects,declarations)) /\ TakeExposureMarkers105(ctx,ctx.currentRef,noPap,1,afterObjects,added,DOMAIN noPap.objects,event) /\ ExposureMarkerQuantity105(afterObjects)=4 /\ ~TakeExposureMarkers105(ctx,ctx.currentRef,noPap,1,noPap.objects,Empty10,DOMAIN noPap.objects,event) /\ ~TakeExposureMarkers105([ctx EXCEPT !.state.effects[1].value=0,!.actualEffects=Empty10],ctx.currentRef,noPap,1,noPap.objects,Empty10,DOMAIN noPap.objects,event) ExposureMarkerActionFixture105(kind,count,Specimen0173) == LET world==ExposureMarkerWorldFixture105(ExposureMarkerActionActor105(kind),count,Specimen0173) selected==IF kind="RetireResource" THEN {20,21} ELSE {30,31} reserved==ExposureMarkerReservedFixture105(kind) afterWorld==ExposureMarkerAfterPaymentWorld105(world,reserved.player,selected) payment==ExposureMarkerPaymentFixture105(reserved,world,afterWorld,selected,2) paid==ExposureMarkerPaidFixture105(reserved,world,payment) IN [world |-> world,selected |-> selected,reserved |-> reserved,afterWorld |-> afterWorld,payment |-> payment,paid |-> paid, busy |-> ExposureMarkerBusyFixture105(world,kind),targets |-> ExposureMarkerTargetsFrame105(paid)] ExposureMarkerReserveValid105(f) == ReserveExposureMarkerAction105(<>,<>,f.world,ExposureMarkerDeclarationsFixture105(f.world),CardFacts10, ExposureMarkerStateView105(f.world.objects,ExposureMarkerDeclarationsFixture105(f.world)),f.reserved.kind,ExposureMarkerOptionFixture105(f.reserved.kind),ExposureMarkerLegalityFixture105(f.world,f.reserved.kind),7000,{},f.reserved) ExposureMarkerPayValid105(f) == PayExposureMarkerAction105(f.reserved,f.paid,<>,f.world,f.afterWorld,ExposureMarkerDeclarationsFixture105(f.world),ExposureMarkerDeclarationsFixture105(f.afterWorld), CardFacts10,Empty10,Empty10,f.selected,f.payment) ExposureMarkerActionAdmissionChecks105 == /\ \A kind \in {"RetireResource","RemoveExposureMarker"}, count \in 0..1, pap \in BOOLEAN : LET f==ExposureMarkerActionFixture105(kind,count,pap) allowed==kind="RemoveExposureMarker" \/ count>0 \/ pap IN IF allowed THEN ExposureMarkerReserveValid105(f) /\ ExposureMarkerPayValid105(f) ELSE ~ExposureMarkerReserveValid105(f) /\ ~ExposureMarkerPayValid105(f) /\ LET f==ExposureMarkerActionFixture105("RemoveExposureMarker",0,FALSE) cp==ExposureMarkerCheckpointFixture105(f.paid,f.afterWorld,"BaseCost",501) targeted==ExposureMarkerTargetedFixture105(f.targets,0) ready==ExposureMarkerEffectReadyFixture105(targeted,FALSE,Empty10) returned==[ready EXCEPT !.phase="EffectCheckpoint"] after==[returned EXCEPT !.phase="Complete",!.action.status="Complete"] finalCp==ExposureMarkerCheckpointFixture105(returned,f.afterWorld,"Effect",502) receipt==[tag |-> "PriorityOptionReturn",windowId |-> 10501,option |-> f.reserved.option,transactionId |-> 600, triggerPayment |-> [tag |-> "PriorityOptionPayment",windowId |-> 10501,option |-> f.reserved.option,transactionId |-> 600, allTriggerCostsPaid |-> TRUE,costCheckpointAndReactionsDrained |-> TRUE], allCostsPaid |-> TRUE,optionComplete |-> TRUE,childrenReturned |-> TRUE,reactionsDrained |-> TRUE] IN /\ ~BasicActionLocalGate5("SideB","RemoveExposureMarker",FALSE) /\ ExposureMarkerReserveValid105(f) /\ ExposureMarkerPayValid105(f) /\ DrainExposureMarkerAction105(f.paid,f.targets,f.afterWorld,cp,ExposureMarkerCheckpointLedger105(cp),<>) /\ ~DrainExposureMarkerAction105(f.paid,f.targets,f.afterWorld,[cp EXCEPT !.returned=FALSE],ExposureMarkerCheckpointLedger105(cp),<>) /\ ~AnnounceExposureMarkerTarget105(f.paid,targeted,f.afterWorld,0,8000) /\ AnnounceExposureMarkerTarget105(f.targets,targeted,f.afterWorld,0,8000) /\ PrepareExposureMarkerEffect105(targeted,ready,f.afterWorld,ExposureMarkerEffectContext105(targeted,f.afterWorld,FALSE),ExposureMarkerEffectRef105(targeted),1,CardFacts10) /\ ResolveExposureMarkerAction105(ready,returned,f.afterWorld,f.afterWorld.objects,Empty10,DOMAIN f.afterWorld.objects,CheckpointPrinted103,CheckpointOwners103,{},800, Empty10,Empty10,Empty10,Empty10,{}) /\ f.afterWorld.actionPoints["SideB"]=2 /\ {30,31} \cap DOMAIN f.afterWorld.objects={} /\ DrainExposureMarkerAction105(returned,after,f.afterWorld,finalCp,ExposureMarkerCheckpointLedger105(finalCp),<>) /\ ReturnExposureMarkerAction105(after,<>,<>,receipt) /\ ~ReturnExposureMarkerAction105(returned,<>,<>,receipt) /\ LET f==ExposureMarkerActionFixture105("RetireResource",1,FALSE) noTargetWorld==[f.world EXCEPT !.objects[11].deployed=FALSE,!.objects[11].zone="SideBDiscard",!.activeSources={}] noTargetAfter==ExposureMarkerAfterPaymentWorld105(noTargetWorld,"SideA",{20,21}) payment==ExposureMarkerPaymentFixture105(f.reserved,noTargetWorld,noTargetAfter,{20,21},2) paid==ExposureMarkerPaidFixture105(f.reserved,noTargetWorld,payment) targets==ExposureMarkerTargetsFrame105(paid) target==ExposureMarkerTargetedFixture105(targets,0) ready==ExposureMarkerEffectReadyFixture105(target,FALSE,Empty10) after==[ready EXCEPT !.phase="EffectCheckpoint"] IN /\ ResourceTargetIds105(noTargetWorld)={} /\ PayExposureMarkerAction105(f.reserved,paid,<>,noTargetWorld,noTargetAfter,Empty10,Empty10,CardFacts10,Empty10,Empty10,{20,21},payment) /\ AnnounceExposureMarkerTarget105(targets,target,noTargetAfter,0,8000) /\ PrepareExposureMarkerEffect105(target,ready,noTargetAfter,ExposureMarkerEffectContext105(target,noTargetAfter,FALSE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ ResolveExposureMarkerAction105(ready,after,noTargetAfter,noTargetAfter.objects,Empty10,DOMAIN noTargetAfter.objects,CheckpointPrinted103,CheckpointOwners103,{},800,Empty10,Empty10,Empty10,Empty10,{}) /\ LET f==ExposureMarkerActionFixture105("RetireResource",1,FALSE) lostBeforePay==[f.world EXCEPT !.id=101,!.objects=Without101(@,{1}),!.controllers=Without101(@,{1})] afterLostPay==ExposureMarkerAfterPaymentWorld105(lostBeforePay,"SideA",{20,21}) lostPayment==ExposureMarkerPaymentFixture105(f.reserved,lostBeforePay,afterLostPay,{20,21},2) lostPaid==ExposureMarkerPaidFixture105(f.reserved,lostBeforePay,lostPayment) shortAfter==ExposureMarkerAfterPaymentWorld105(f.world,"SideA",{20}) shortPayment==ExposureMarkerPaymentFixture105(f.reserved,f.world,shortAfter,{20},2) otherAfter==ExposureMarkerAfterPaymentWorld105(f.world,"SideA",{30,31}) otherPayment==ExposureMarkerPaymentFixture105(f.reserved,f.world,otherAfter,{30,31},2) IN /\ ~PayExposureMarkerAction105(f.reserved,lostPaid,<>,lostBeforePay,afterLostPay,Empty10,Empty10,CardFacts10,Empty10,Empty10,{20,21},lostPayment) /\ ~PayExposureMarkerAction105(f.reserved,ExposureMarkerPaidFixture105(f.reserved,f.world,shortPayment),<>,f.world,shortAfter,Empty10,Empty10,CardFacts10,Empty10,Empty10,{20},shortPayment) /\ ~PayExposureMarkerAction105(f.reserved,ExposureMarkerPaidFixture105(f.reserved,f.world,otherPayment),<>,f.world,otherAfter,Empty10,Empty10,CardFacts10,Empty10,Empty10,{30,31},otherPayment) /\ ~ExposureMarkerReserveValid105([f EXCEPT !.world.turn.phase="Discard"]) /\ ~ExposureMarkerReserveValid105([f EXCEPT !.world.actionPoints["SideA"]=0]) ExposureMarkerActionPostCostChecks105 == LET f==ExposureMarkerActionFixture105("RetireResource",1,FALSE) lostAfterCost==[f.afterWorld EXCEPT !.id=102,!.objects=Without101(@,{1}),!.controllers=Without101(@,{1})] cp==ExposureMarkerCheckpointFixture105(f.paid,lostAfterCost,"BaseCost",501) target==ExposureMarkerTargetedFixture105(f.targets,11) ready==ExposureMarkerEffectReadyFixture105(target,FALSE,Empty10) successors==[id \in {11} |-> 111] trashed==CheckpointRetireMap103(lostAfterCost.objects,{11},successors,CheckpointPrinted103,CheckpointOwners103,{11}) move==MovementEvent8(810,"Retire",{11}) history==[id \in {810} |-> move] departures==[id \in {<<"Movement",810>>} |-> [source |-> 11,objectiveCompletionLeft |-> FALSE,uninstalled |-> TRUE,hostRemoved |-> TRUE,children |-> {40,41}]] done==[ready EXCEPT !.phase="EffectCheckpoint"] pap==ExposureMarkerActionFixture105("RetireResource",0,TRUE) papTarget==ExposureMarkerTargetedFixture105(pap.targets,10) papReady==ExposureMarkerEffectReadyFixture105(papTarget,FALSE,Empty10) papNext==[id \in {10} |-> 110] papRetire==CheckpointRetireMap103(pap.afterWorld.objects,{10},papNext,CheckpointPrinted103,CheckpointOwners103,{10}) papMove==MovementEvent8(811,"Retire",{10}) papDepart==[id \in {<<"Movement",811>>} |-> [source |-> 10,objectiveCompletionLeft |-> FALSE,uninstalled |-> TRUE,hostRemoved |-> TRUE,children |-> {}]] papAfterWorld==[pap.afterWorld EXCEPT !.id=103,!.objects=papRetire] zero==ExposureMarkerActionFixture105("RemoveExposureMarker",0,FALSE) addedAfterCost==[zero.afterWorld EXCEPT !.id=102,!.objects=ReplacementOverlay99(@,[id \in {2} |-> ExposureMarkerCounterRow105]),!.controllers=ReplacementOverlay99(@,[id \in {2} |-> "SideB"])] zeroCP==ExposureMarkerCheckpointFixture105(zero.paid,addedAfterCost,"BaseCost",512) zeroTarget==ExposureMarkerTargetedFixture105(zero.targets,2) zeroReady==ExposureMarkerEffectReadyFixture105(zeroTarget,FALSE,Empty10) IN /\ ~ExposureMarkerStateView105(lostAfterCost.objects,Empty10).hasExposureMarkers /\ DrainExposureMarkerAction105(f.paid,f.targets,lostAfterCost,cp,ExposureMarkerCheckpointLedger105(cp),<>) /\ AnnounceExposureMarkerTarget105(f.targets,target,lostAfterCost,11,8000) /\ PrepareExposureMarkerEffect105(target,ready,lostAfterCost,ExposureMarkerEffectContext105(target,lostAfterCost,FALSE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ ResolveExposureMarkerAction105(ready,done,lostAfterCost,trashed,successors,DOMAIN lostAfterCost.objects,CheckpointPrinted103,CheckpointOwners103,{11},810, Empty10,history,Empty10,departures,{move}) /\ trashed[111].marks={} /\ departures[<<"Movement",810>>].children={40,41} /\ AnnounceExposureMarkerTarget105(pap.targets,papTarget,pap.afterWorld,10,8000) /\ PrepareExposureMarkerEffect105(papTarget,papReady,pap.afterWorld,ExposureMarkerEffectContext105(papTarget,pap.afterWorld,FALSE),ExposureMarkerEffectRef105(papTarget),1,CardFacts10) /\ ResolveExposureMarkerAction105(papReady,[papReady EXCEPT !.phase="EffectCheckpoint"],pap.afterWorld,papRetire,papNext,DOMAIN pap.afterWorld.objects, CheckpointPrinted103,CheckpointOwners103,{10},811,Empty10,[id \in {811} |-> papMove],Empty10,papDepart,{papMove}) /\ ExposureMarkerDeclarationsFixture105(papAfterWorld)=Empty10 /\ CurrentExposureMarkerState105(papAfterWorld,Empty10,CardFacts10,ExposureMarkerStateView105(papRetire,Empty10)) /\ ~ExposureMarkerStateView105(papRetire,Empty10).hasExposureMarkers /\ ExposureMarkerQuantity105(papRetire)=0 /\ DrainExposureMarkerAction105(zero.paid,zero.targets,addedAfterCost,zeroCP,ExposureMarkerCheckpointLedger105(zeroCP),<>) /\ AnnounceExposureMarkerTarget105(zero.targets,zeroTarget,addedAfterCost,2,8000) /\ PrepareExposureMarkerEffect105(zeroTarget,zeroReady,addedAfterCost,ExposureMarkerEffectContext105(zeroTarget,addedAfterCost,FALSE),ExposureMarkerEffectRef105(zeroTarget),1,CardFacts10) /\ ResolveExposureMarkerAction105(zeroReady,[zeroReady EXCEPT !.phase="EffectCheckpoint"],addedAfterCost,Without101(addedAfterCost.objects,{2}),Empty10, DOMAIN addedAfterCost.objects,CheckpointPrinted103,CheckpointOwners103,{},812,Empty10,Empty10,Empty10,Empty10,{[tag |-> "ExposureMarkerRemoved",actionId |-> 7000,player |-> "SideB",counter |-> 2]}) /\ LET removeCase==ExposureMarkerActionFixture105("RemoveExposureMarker",1,FALSE) removeTarget==ExposureMarkerTargetedFixture105(removeCase.targets,1) removeReady==ExposureMarkerEffectReadyFixture105(removeTarget,FALSE,Empty10) kept==ExposureMarkerEffectReadyFixture105(removeTarget,TRUE,Empty10) event==[tag |-> "ExposureMarkerRemoved",actionId |-> 7000,player |-> "SideB",counter |-> 1] IN /\ AnnounceExposureMarkerTarget105(removeCase.targets,removeTarget,removeCase.afterWorld,1,8000) /\ PrepareExposureMarkerEffect105(removeTarget,removeReady,removeCase.afterWorld,ExposureMarkerEffectContext105(removeTarget,removeCase.afterWorld,FALSE),ExposureMarkerEffectRef105(removeTarget),1,CardFacts10) /\ ResolveExposureMarkerAction105(removeReady,[removeReady EXCEPT !.phase="EffectCheckpoint"],removeCase.afterWorld,Without101(removeCase.afterWorld.objects,{1}),Empty10,DOMAIN removeCase.afterWorld.objects, CheckpointPrinted103,CheckpointOwners103,{},820,Empty10,Empty10,Empty10,Empty10,{event}) /\ ~ResolveExposureMarkerAction105(removeReady,[removeReady EXCEPT !.phase="EffectCheckpoint"],removeCase.afterWorld,removeCase.afterWorld.objects,Empty10,DOMAIN removeCase.afterWorld.objects, CheckpointPrinted103,CheckpointOwners103,{},820,Empty10,Empty10,Empty10,Empty10,{}) /\ PrepareExposureMarkerEffect105(removeTarget,kept,removeCase.afterWorld,ExposureMarkerEffectContext105(removeTarget,removeCase.afterWorld,TRUE),ExposureMarkerEffectRef105(removeTarget),1,CardFacts10) /\ ResolveExposureMarkerAction105(kept,[kept EXCEPT !.phase="EffectCheckpoint"],removeCase.afterWorld,removeCase.afterWorld.objects,Empty10,DOMAIN removeCase.afterWorld.objects, CheckpointPrinted103,CheckpointOwners103,{},820,Empty10,Empty10,Empty10,Empty10,{}) ExampleFamily094WorldFixture105(kind,front,chosen) == LET base==ExposureMarkerWorldFixture105(ExposureMarkerActionActor105(kind),1,FALSE) live==[base EXCEPT !.objects[50].zone="Play",!.objects[50].front=front,!.activeSources=@ \cup {50}] delta==IF front THEN IF kind="RemoveExposureMarker" THEN 1 ELSE 0 ELSE IF kind="RetireResource" /\ chosen THEN -2 ELSE 0 modifier==[snapshotId |-> 100,action |-> kind,source |-> ObjectAbilitySource9(50),sourceObject |-> live.objects[50],sourceSHA |-> CardFacts10["Specimen0233"].sourceSHA, chosenReduction |-> chosen,delta |-> delta] IN [live EXCEPT !.exposureMarkerCostModifiers[kind]=[id \in {77} |-> modifier]] ExampleFamily011PermissionFixture105(world) == [action |-> "RemoveExposureMarker",player |-> "SideB",paymentId |-> 600,snapshotId |-> world.id,allowsPayment |-> TRUE, source |-> ObjectAbilitySource9(11),sourceObject |-> world.objects[11],sourceSHA |-> CardFacts10["Specimen0058"].sourceSHA,paidCounters |-> {40,41}] ExposureMarkerModifierAndSourceChecks105 == /\ \A kind \in {"RetireResource","RemoveExposureMarker"}, front \in BOOLEAN, chosen \in BOOLEAN : LET world==ExampleFamily094WorldFixture105(kind,front,chosen) mods==world.exposureMarkerCostModifiers[kind] amount==IF front /\ kind="RemoveExposureMarker" THEN 3 ELSE IF ~front /\ kind="RetireResource" /\ chosen THEN 0 ELSE 2 selected==IF amount=0 THEN {} ELSE IF kind="RetireResource" THEN {20,21} ELSE IF amount=3 THEN {30,31,32} ELSE {30,31} reserved==ExposureMarkerReservedFixture105(kind) afterWorld==ExposureMarkerAfterPaymentWorld105(world,reserved.player,selected) payment==ExposureMarkerPaymentFixture105(reserved,world,afterWorld,selected,amount) paid==ExposureMarkerPaidFixture105(reserved,world,payment) IN /\ ExposureMarkerResourceUnitCost105(mods)=amount /\ ExposureMarkerCostModifiers105(world,kind,mods,CardFacts10) /\ ExampleFamily094ExposureMarkerCostShape105(kind,world.objects[50],chosen,mods[77].delta) /\ PayExposureMarkerAction105(reserved,paid,<>,world,afterWorld,Empty10,Empty10,CardFacts10,mods,Empty10,selected,payment) /\ afterWorld.objects[50].front=world.objects[50].front /\ afterWorld.actionPoints[reserved.player]=2 /\ LET world==ExampleFamily094WorldFixture105("RemoveExposureMarker",TRUE,FALSE) p==ExampleFamily011PermissionFixture105(world) withPermission==[world EXCEPT !.exposureMarkerSpendPermissions=[id \in {71} |-> p]] selected=={40,41,30} reserved==ExposureMarkerReservedFixture105("RemoveExposureMarker") afterWorld==ExposureMarkerAfterPaymentWorld105(withPermission,"SideB",selected) payment==ExposureMarkerPaymentFixture105(reserved,withPermission,afterWorld,selected,3) paid==ExposureMarkerPaidFixture105(reserved,withPermission,payment) shortAfter==ExposureMarkerAfterPaymentWorld105(withPermission,"SideB",{40,41}) shortPayment==ExposureMarkerPaymentFixture105(reserved,withPermission,shortAfter,{40,41},3) frontWrong==[world EXCEPT !.exposureMarkerCostModifiers["RemoveExposureMarker"][77].sourceObject.front=FALSE] omitted==[world EXCEPT !.exposureMarkerCostModifiers["RemoveExposureMarker"]=Empty10] wrongPurpose==[withPermission EXCEPT !.exposureMarkerSpendPermissions[71].action="RetireResource"] IN /\ ExampleFamily011ExposureMarkerPermission105(withPermission,"RemoveExposureMarker",600,p,CardFacts10) /\ ~ExampleFamily011ExposureMarkerPermission105(withPermission,"RetireResource",600,p,CardFacts10) /\ PayExposureMarkerAction105(reserved,paid,<>,withPermission,afterWorld,Empty10,Empty10,CardFacts10,world.exposureMarkerCostModifiers["RemoveExposureMarker"],withPermission.exposureMarkerSpendPermissions,selected,payment) /\ ExposureMarkerPaymentPermissionSources105(payment,withPermission.exposureMarkerSpendPermissions)={ObjectAbilitySource9(11)} /\ ExposureMarkerPaymentPermissionSources105([payment EXCEPT !.paidCounterIds={30,31,32}],withPermission.exposureMarkerSpendPermissions)={} /\ ExposureMarkerPaymentPermissionSources105([payment EXCEPT !.paidCounterIds={40,30,31}],withPermission.exposureMarkerSpendPermissions)={ObjectAbilitySource9(11)} /\ ~PayExposureMarkerAction105(reserved,ExposureMarkerPaidFixture105(reserved,withPermission,shortPayment),<>,withPermission,shortAfter,Empty10,Empty10,CardFacts10,world.exposureMarkerCostModifiers["RemoveExposureMarker"],withPermission.exposureMarkerSpendPermissions,{40,41},shortPayment) /\ ~ExposureMarkerCostModifiers105(frontWrong,"RemoveExposureMarker",frontWrong.exposureMarkerCostModifiers["RemoveExposureMarker"],CardFacts10) /\ ~ExposureMarkerCostModifiers105(omitted,"RemoveExposureMarker",Empty10,CardFacts10) /\ ~ExampleFamily011ExposureMarkerPermission105(wrongPurpose,"RemoveExposureMarker",600,wrongPurpose.exposureMarkerSpendPermissions[71],CardFacts10) /\ LET world==ExampleFamily094WorldFixture105("RetireResource",TRUE,TRUE) wrong==[world EXCEPT !.exposureMarkerCostModifiers["RetireResource"][77].delta=-2] IN ~ExposureMarkerCostModifiers105(wrong,"RetireResource",wrong.exposureMarkerCostModifiers["RetireResource"],CardFacts10) ExtraWorldFixture105 == LET base==ExposureMarkerWorldFixture105("SideA",1,FALSE) objects==ReplacementOverlay99(base.objects,[id \in {12,60,61} |-> IF id=12 THEN [ExposureMarkerCardFixture105("Specimen0136","Play",TRUE) EXCEPT !.marks={"OldExampleFamily028Mark"}] ELSE [ExposureMarkerCardFixture105(IF id=60 THEN "Specimen0106" ELSE "Specimen0221","SideAHand",FALSE) EXCEPT !.face="NA",!.marks={"OldCentralARestriction"}]]) IN [base EXCEPT !.objects=[objects EXCEPT ![51].zone="Play"],!.controllers=ReplacementOverlay99(@,[id \in {12,60,61} |-> IF id=12 THEN "SideB" ELSE "SideA"]), !.activeSources={11,12,51},!.subtypes=ReplacementOverlay99(@,[id \in {12,60,61} |-> IF id=12 THEN {"SchemaAtom044"} ELSE {}]),!.points["SideA"]=3] ResourceCostsFixture105(world) == [id \in {1,2} |-> LET source==IF id=1 THEN 51 ELSE 12 IN [snapshotId |-> world.id,actionId |-> 7000,target |-> 12,kind |-> "RetireCentralA",amount |-> 1, source |-> ObjectAbilitySource9(source),sourceObject |-> world.objects[source],sourceSHA |-> CardFacts10[world.objects[source].card].sourceSHA,eligible |-> {60,61}]] CentralACostAfterWorld105(world,selected,successors) == LET move==DamageOwnerMoveMap104(world.objects,selected,successors,"SideA") objects==[id \in DOMAIN move |-> IF id \in {successors[old] : old \in selected} THEN [move[id] EXCEPT !.face="Down"] ELSE move[id]] IN [world EXCEPT !.id=@+1,!.objects=objects,!.controllers=[id \in (DOMAIN @ \ selected) \cup {successors[old] : old \in selected} |-> IF id \in DOMAIN @ \ selected THEN @[id] ELSE "SideA"]] CentralACostHistory105(assignments,eventIds) == [id \in {eventIds[cost] : cost \in DOMAIN eventIds} |-> MovementEvent8(id,"Retire",assignments[CHOOSE cost \in DOMAIN eventIds : eventIds[cost]=id])] ExposureMarkerAdditionalCostChecks105 == LET world==ExtraWorldFixture105 reserved==ExposureMarkerReservedFixture105("RetireResource") afterBase==ExposureMarkerAfterPaymentWorld105(world,"SideA",{20,21}) payment==ExposureMarkerPaymentFixture105(reserved,world,afterBase,{20,21},2) paid==ExposureMarkerPaidFixture105(reserved,world,payment) targets==ExposureMarkerTargetsFrame105(paid) target==ExposureMarkerTargetedFixture105(targets,12) current==[afterBase EXCEPT !.additionalResourceCosts=ResourceCostsFixture105(afterBase)] costs==current.additionalResourceCosts prepared==ExposureMarkerEffectReadyFixture105(target,FALSE,costs) removedBeforeCosts==ExposureMarkerEffectReadyFixture105(target,TRUE,Empty10) assignments==[cost \in {1,2} |-> IF cost=1 THEN {60} ELSE {61}] successors==[id \in {60,61} |-> id+100] eventIds==[cost \in {1,2} |-> cost+899] history==CentralACostHistory105(assignments,eventIds) events=={history[id] : id \in DOMAIN history} afterCentralA==CentralACostAfterWorld105(current,{60,61},successors) nested==[prepared EXCEPT !.phase="AdditionalCostCheckpoint",!.nestedTransaction=601] ready==[nested EXCEPT !.phase="EffectReady"] declined==[prepared EXCEPT !.phase="EffectReady",!.effective.mode="Removed"] lost==[afterCentralA EXCEPT !.id=103,!.objects=ReplacementOverlay99(Without101(@,{12}),[id \in {212} |-> ExposureMarkerCardFixture105("Specimen0136","SideBHand",FALSE)]), !.controllers=ReplacementOverlay99(Without101(@,{12}),[id \in {212} |-> "SideB"]),!.activeSources=@ \ {12}] cp==ExposureMarkerCheckpointFixture105(nested,lost,"AdditionalCost",531) singleSuccessor==[id \in {60} |-> 160] singleAfter==CentralACostAfterWorld105(current,{60},singleSuccessor) doubleUse==[cost \in {1,2} |-> {60}] doubleHistory==CentralACostHistory105(doubleUse,eventIds) partialAssign==[cost \in {1} |-> {60}] partialEvents==[cost \in {1} |-> 900] partialHistory==CentralACostHistory105(partialAssign,partialEvents) missingKnownCosts==[id \in {1} |-> costs[id]] missingKnownWorld==[current EXCEPT !.additionalResourceCosts=missingKnownCosts] blocked==[afterCentralA EXCEPT !.id=103,!.currentRetireProhibitions={12}] protectedCP==ExposureMarkerCheckpointFixture105(nested,blocked,"AdditionalCost",532) resourceSuccessor==[id \in {12} |-> 112] actualRetire==CheckpointRetireMap103(afterCentralA.objects,{12},resourceSuccessor,CheckpointPrinted103,CheckpointOwners103,{12}) resourceMove==MovementEvent8(902,"Retire",{12}) trashHistory==ReplacementOverlay99(history,[id \in {902} |-> resourceMove]) departure==[id \in {<<"Movement",902>>} |-> [source |-> 12,objectiveCompletionLeft |-> FALSE,uninstalled |-> TRUE,hostRemoved |-> TRUE,children |-> {}]] IN /\ PayExposureMarkerAction105(reserved,paid,<>,world,afterBase,Empty10,Empty10,CardFacts10,Empty10,Empty10,{20,21},payment) /\ afterBase.objects[60]=world.objects[60] /\ afterBase.objects[61]=world.objects[61] /\ AnnounceExposureMarkerTarget105(targets,target,current,12,8000) /\ PrepareExposureMarkerEffect105(target,prepared,current,ExposureMarkerEffectContext105(target,current,FALSE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ PreventExpectedWhole99([id \in {1} |-> ExposureMarkerEffectAtom105(target)],Empty10,1) /\ PrepareExposureMarkerEffect105(target,removedBeforeCosts,current,ExposureMarkerEffectContext105(target,current,TRUE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ ResolveExposureMarkerAction105(removedBeforeCosts,[removedBeforeCosts EXCEPT !.phase="EffectCheckpoint"],current,current.objects,Empty10, DOMAIN current.objects,CheckpointPrinted103,CheckpointOwners103,{},899,Empty10,Empty10,Empty10,Empty10,{}) /\ ~PrepareExposureMarkerEffect105(target,ExposureMarkerEffectReadyFixture105(target,FALSE,missingKnownCosts),missingKnownWorld, ExposureMarkerEffectContext105(target,missingKnownWorld,FALSE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ ResourceAdditionalCosts105(prepared,current,CardFacts10) /\ ~ResourceAdditionalCosts105(prepared,[current EXCEPT !.points["SideA"]=2],CardFacts10) /\ ~ResourceAdditionalCosts105(prepared,[current EXCEPT !.subtypes[12]={}],CardFacts10) /\ PayResourceAdditional105(prepared,nested,current,afterCentralA,CardFacts10,assignments,successors,DOMAIN current.objects,601,eventIds,Empty10,history,events) /\ Cardinality(events)=2 /\ history[900].originalObjects={60} /\ history[901].originalObjects={61} /\ afterCentralA.objects[160].marks={} /\ afterCentralA.objects[161].marks={} /\ afterCentralA.actionPoints["SideA"]=2 /\ ~PayResourceAdditional105(prepared,nested,current,singleAfter,CardFacts10,doubleUse,singleSuccessor,DOMAIN current.objects,601,eventIds,Empty10,doubleHistory,{doubleHistory[id] : id \in DOMAIN doubleHistory}) /\ ~PayResourceAdditional105(prepared,nested,current,singleAfter,CardFacts10,partialAssign,singleSuccessor,DOMAIN current.objects,601,partialEvents,Empty10,partialHistory,{partialHistory[900]}) /\ SkipResourceAdditional105(prepared,declined,current,"Declined") /\ ResolveExposureMarkerAction105(declined,[declined EXCEPT !.phase="EffectCheckpoint"],current,current.objects,Empty10,DOMAIN current.objects,CheckpointPrinted103,CheckpointOwners103,{},902,Empty10,Empty10,Empty10,Empty10,{}) /\ DrainExposureMarkerAction105(nested,ready,lost,cp,ExposureMarkerCheckpointLedger105(cp),<>) /\ ResolveExposureMarkerAction105(ready,[ready EXCEPT !.phase="EffectCheckpoint"],lost,lost.objects,Empty10,DOMAIN lost.objects,CheckpointPrinted103,CheckpointOwners103,{},902,history,history,Empty10,Empty10,{}) /\ lost.actionPoints["SideA"]=2 /\ {20,21,60,61,12} \cap DOMAIN lost.objects={} /\ ~AnnounceExposureMarkerTarget105(ready,ExposureMarkerTargetedFixture105(ready,212),lost,212,8000) /\ DrainExposureMarkerAction105(nested,ready,blocked,protectedCP,ExposureMarkerCheckpointLedger105(protectedCP),<>) /\ ResolveExposureMarkerAction105(ready,[ready EXCEPT !.phase="EffectCheckpoint"],blocked,blocked.objects,Empty10,DOMAIN blocked.objects,CheckpointPrinted103,CheckpointOwners103,{},902,history,history,Empty10,Empty10,{}) /\ ResolveExposureMarkerAction105(ready,[ready EXCEPT !.phase="EffectCheckpoint"],afterCentralA,actualRetire,resourceSuccessor,DOMAIN afterCentralA.objects,CheckpointPrinted103,CheckpointOwners103,{12},902,history,trashHistory,Empty10,departure,{resourceMove}) ExposureMarkerConvertedCounterChecks105 == LET f==ExposureMarkerActionFixture105("RemoveExposureMarker",1,FALSE) converted==ReplacementOverlay99(ExposureMarkerCounterRow105,[card |-> "Specimen0046",owner |-> "SideA",properties |-> [kind |-> "ExposureMarker"]]) world==[f.afterWorld EXCEPT !.objects[1]=converted] target==ExposureMarkerTargetedFixture105(f.targets,1) ready==ExposureMarkerEffectReadyFixture105(target,FALSE,Empty10) successors==[id \in {1} |-> 1001] afterObjects==CheckpointRetireMap103(world.objects,{1},successors,CheckpointPrinted103,CheckpointOwners103,{1}) event==MovementEvent8(840,"Retire",{1}) removed==[tag |-> "ExposureMarkerRemoved",actionId |-> 7000,player |-> "SideB",counter |-> 1] conversion==[mode |-> "Counter",card |-> "Specimen0046",createdBy |-> 444,owner |-> "SideA",gained |-> [kind |-> "ExposureMarker"]] receipt==[original |-> 1,successor |-> 1001,physical |-> "Specimen0046",owner |-> "SideA",complete |-> TRUE] IN /\ AnnounceExposureMarkerTarget105(f.targets,target,world,1,8000) /\ PrepareExposureMarkerEffect105(target,ready,world,ExposureMarkerEffectContext105(target,world,FALSE),ExposureMarkerEffectRef105(target),1,CardFacts10) /\ ResolveExposureMarkerAction105(ready,[ready EXCEPT !.phase="EffectCheckpoint"],world,afterObjects,successors,DOMAIN world.objects,CheckpointPrinted103,CheckpointOwners103,{1},840, Empty10,[id \in {840} |-> event],Empty10,Empty10,{event,removed}) /\ ConversionExitPost101(conversion,CheckpointPrinted103["Specimen0046"],1,1001,world.objects,afterObjects,DOMAIN world.objects,"SideADiscard","RemoveExposureMarker",receipt) /\ afterObjects[1001].form="Card" /\ afterObjects[1001].zone="SideADiscard" /\ ExposureMarkerQuantity105(afterObjects)=0 LiabilityMarkerObjects106(count,exampleFamily053,fund) == [id \in (1..count) \cup (IF exampleFamily053 THEN {90} ELSE {}) \cup (100..(99+fund)) \cup {54,200,201,210,500} |-> CASE id \in 1..count -> LiabilityMarkerCounterRow106 [] id=90 -> [LiabilityMarkerCounterRow106 EXCEPT !.virtual=TRUE] [] id=54 -> ExposureMarkerCardFixture105("Specimen0057",IF exampleFamily053 THEN "Play" ELSE "SideBDiscard",FALSE) [] id \in 100..(99+fund) -> LiabilityMarkerFundRow106 [] id=210 -> ExposureMarkerTokenFixture105("ResourceUnit","SideAResourceUnits",0,FALSE) [] id=500 -> ExposureMarkerTokenFixture105("ResourceUnit","Play",54,FALSE) [] OTHER -> ExposureMarkerTokenFixture105("ResourceUnit","SideBResourceUnits",0,FALSE)] LiabilityMarkerInit106(id) == [OpenInitiation6(OpenTraversal6(id,10*id,"LiabilityMarkerTraversalCaller")) EXCEPT !.traversal.step="ProcedureCodeacc82dbcc545",!.traversal.attacked="SchemaAtom082",!.announced=TRUE,!.costsPaid=TRUE] LiabilityMarkerWorld106(count,exampleFamily053,fund) == [id |-> 100,objects |-> LiabilityMarkerObjects106(count,exampleFamily053,fund),traversal |-> LiabilityMarkerInit106(1).traversal, inside |-> {},started |-> TRUE,outcome |-> "Playing",activeAbilities |-> IF exampleFamily053 THEN {1060} ELSE {}, resourceUnitCost |-> [id |-> 0]] LiabilityMarkerSyntax106 == [id |-> 1060,kind |-> "Static",source |-> ObjectAbilitySource9(54),units |-> <<[id |-> 1,category |-> "Declaration",subtype |-> "Plain"]>>] LiabilityMarkerPart106 == [id |-> 1,ability |-> 1060,conditions |-> {},target |-> "SideA",property |-> "AdditionalLiabilityMarker"] LiabilityMarkerDeclarations106(world) == IF 90 \in DOMAIN world.objects THEN [id \in {1} |-> [snapshotId |-> world.id,counters |-> {90},sourceObject |-> world.objects[54],sourceSHA |-> CardFacts10["Specimen0057"].sourceSHA, projection |-> StaticProjection94(LiabilityMarkerSyntax106,LiabilityMarkerPart106,1)]] ELSE Empty10 LiabilityMarkerAtom106(card,operation,value) == [id |-> 1,kind |-> "LiabilityMarker",operation |-> operation,value |-> value,target |-> "SideA",actor |-> IF operation="Give" THEN "SideB" ELSE "SideA", baseOrigin |-> ObjectAbilitySource9(900),sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA,preventable |-> TRUE] LiabilityMarkerContext106(atom,world,removed) == [id |-> 10601,phase |-> "Resolving",currentRef |-> DamageReference104(0),currentWorld |-> world.id, templates |-> [id \in {1} |-> atom],state |-> [effects |-> IF removed THEN Empty10 ELSE [id \in {1} |-> atom]], actualEffects |-> IF removed THEN Empty10 ELSE [id \in {1} |-> atom]] LiabilityMarkerPacketFixture106(atom,world,removed) == [contextId |-> 10601,reference |-> DamageReference104(0),effectId |-> 1,snapshotId |-> world.id,source |-> atom.baseOrigin, sourceCard |-> atom.sourceCard,sourceSHA |-> atom.sourceSHA,operation |-> atom.operation,actor |-> atom.actor,amount |-> IF removed \/ atom.value<=0 THEN 0 ELSE atom.value] LiabilityMarkerCost106(world,amount) == [tag |-> "ResourceUnitCostContext",id |-> 700,status |-> "Paying",source |-> RuleAbilitySource9("ActualOwnerCost"),player |-> "SideB",traversalId |-> world.traversal.id,snapshotId |-> world.id,amount |-> amount] LiabilityMarkerPayWorld106(amount) == LET w==LiabilityMarkerWorld106(1,FALSE,2) r==[w.traversal EXCEPT !.formalBegun=TRUE,!.phase="Movement",!.step="ProcedureCode4f60245a1dde"] live==[w EXCEPT !.traversal=r,!.inside={TimingRef9("SchemaAtom138",1)}] IN [live EXCEPT !.resourceUnitCost=LiabilityMarkerCost106(live,amount)] LiabilityMarkerPayment106(world,selected) == [tag |-> "CompletedResourceUnitMethod",id |-> world.resourceUnitCost.id,source |-> world.resourceUnitCost.source,player |-> "SideB",traversalId |-> world.traversal.id, snapshotId |-> world.id,amount |-> world.resourceUnitCost.amount,paidCounterIds |-> selected,fundCounters |-> selected \cap LiabilityMarkerFundIds106(world.objects),complete |-> TRUE] LiabilityMarkerSpendValid106(world,selected) == SpendLiabilityMarkerFund106(world,Without101(world.objects,selected),world.resourceUnitCost,selected,LiabilityMarkerPayment106(world,selected),{},Empty10, DOMAIN world.objects,CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,Empty10,{}) LiabilityMarkerEnd106(traversal) == [traversal |-> [traversal EXCEPT !.phase="TraversalEnds",!.step="ProcedureCode84dea7dc8ecc",!.ending=TRUE],phaseEndedIds |-> {},windows |-> <<>>, windowsDone |-> TRUE,fundReturned |-> FALSE,resultDeclared |-> FALSE,returned |-> FALSE] LiabilityMarkerViewsChecks106 == LET world==LiabilityMarkerWorld106(2,TRUE,1) declarations==LiabilityMarkerDeclarations106(world) expected==[id \in {1} |-> StaticProjection94(LiabilityMarkerSyntax106,LiabilityMarkerPart106,1)] conditions==[tag |-> "StaticConditionSnapshot",ability |-> 1060,source |-> ObjectAbilitySource9(54),receipts |-> Empty10] noPool==[world EXCEPT !.objects=Without101(@,{200,201})] noPhysical==LiabilityMarkerWorld106(0,TRUE,0) IN /\ ObserveStaticDeclarations94(LiabilityMarkerSyntax106,[id \in {1} |-> LiabilityMarkerPart106],TRUE,conditions,[id \in {1} |-> 1],expected) /\ CurrentLiabilityMarker106(world,declarations,CardFacts10,3) /\ LiabilityMarkerQuantity106(noPhysical.objects)=1 /\ MovableLiabilityMarkerIds106(noPhysical.objects)={} /\ CurrentLiabilityMarker106(noPhysical,LiabilityMarkerDeclarations106(noPhysical),CardFacts10,1) /\ MovableLiabilityMarkerIds106(world.objects)={1,2} /\ LiabilityMarkerFundIds106(world.objects)={100} /\ BaseSideBPoolIds106(world.objects)={200,201} /\ BaseSideBPoolIds106(noPool.objects)={} /\ LiabilityMarkerFundIds106(noPool.objects)={100} /\ ModifiedCost(4,<>,<<>>)=7 /\ PlayLocation4(world.objects[100],0)=[kind |-> "ResourceUnitLocation",location |-> "LiabilityMarkerFund"] /\ PlayResourceUnitLocationValid4(world.objects[100]) /\ LiabilityMarkerFundController106(world.objects[100],"none")="SideB" /\ LiabilityMarkerFundController106(world.objects[1],"SideA")="SideA" /\ SetupCounterController(world.objects[1],"none","none")="SideA" /\ ~CurrentLiabilityMarker106(world,Empty10,CardFacts10,3) /\ ~CurrentLiabilityMarker106(world,[declarations EXCEPT ![1].snapshotId=99],CardFacts10,3) /\ ~CurrentLiabilityMarker106(world,[declarations EXCEPT ![1].sourceSHA="wrong-sha"],CardFacts10,3) /\ ~CurrentLiabilityMarker106([world EXCEPT !.activeAbilities={}],declarations,CardFacts10,3) /\ ~CurrentLiabilityMarker106([world EXCEPT !.objects[54].zone="SideBDiscard"],[declarations EXCEPT ![1].sourceObject= [world.objects[54] EXCEPT !.zone="SideBDiscard"]],CardFacts10,3) LiabilityMarkerPacketChecks106 == /\ \A card \in {"Specimen0111","Specimen0121"} : LET world==LiabilityMarkerWorld106(0,FALSE,1) operation==IF card="Specimen0111" THEN "Take" ELSE "Give" atom==LiabilityMarkerAtom106(card,operation,1) context==LiabilityMarkerContext106(atom,world,FALSE) packet==LiabilityMarkerPacketFixture106(atom,world,FALSE) added==[id \in {10} |-> LiabilityMarkerCounterRow106] after==ReplacementOverlay99(world.objects,added) event==[tag |-> "LiabilityMarkerTaken",player |-> "SideA",actor |-> atom.actor,packet |-> packet,counters |-> {10},amount |-> 1] omitted==LiabilityMarkerPacketFixture106(atom,world,TRUE) IN /\ TakeLiabilityMarker106(context,context.currentRef,world,1,CardFacts10,packet,after,added,DOMAIN world.objects,{event}) /\ LiabilityMarkerFundIds106(after)={100} /\ after[100]=world.objects[100] /\ PreventExpectedWhole99(context.state.effects,Empty10,1) /\ TakeLiabilityMarker106(LiabilityMarkerContext106(atom,world,TRUE),context.currentRef,world,1,CardFacts10,omitted,world.objects,Empty10,DOMAIN world.objects,{}) /\ ~TakeLiabilityMarker106(context,context.currentRef,world,1,CardFacts10,[packet EXCEPT !.amount=2],after,added,DOMAIN world.objects,{event}) /\ ~TakeLiabilityMarker106([context EXCEPT !.currentWorld=99],context.currentRef,world,1,CardFacts10,packet,after,added,DOMAIN world.objects,{event}) /\ ~LiabilityMarkerPacket106([context EXCEPT !.templates[1].sourceSHA="wrong-sha",!.state.effects[1].sourceSHA="wrong-sha",!.actualEffects[1].sourceSHA="wrong-sha"],context.currentRef,world,1,CardFacts10,[packet EXCEPT !.sourceSHA="wrong-sha"]) /\ \A value \in {-2,0} : LET world==LiabilityMarkerWorld106(0,FALSE,1) atom==LiabilityMarkerAtom106("Specimen0111","Take",value) context==LiabilityMarkerContext106(atom,world,FALSE) packet==LiabilityMarkerPacketFixture106(atom,world,FALSE) IN TakeLiabilityMarker106(context,context.currentRef,world,1,CardFacts10,packet,world.objects,Empty10,DOMAIN world.objects,{}) LiabilityMarkerLifecycleChecks106 == LET initial==LiabilityMarkerWorld106(2,TRUE,1) initiation==LiabilityMarkerInit106(1) funded==[initiation EXCEPT !.badPubAdded=TRUE] added==[id \in 110..112 |-> LiabilityMarkerFundRow106] loaded==ReplacementOverlay99(initial.objects,added) grantEvent==[tag |-> "LiabilityMarkerFundLoaded",traversalId |-> 1,source |-> RuleAbilitySource9("ProcedureCode5da712559aad"),snapshotId |-> 100,added |-> 110..112,amount |-> 3] beginning==[funded EXCEPT !.traversal.step="ProcedureCode4d6bd06d2c9f"] begun==[beginning EXCEPT !.traversal.formalBegun=TRUE] live==[initial EXCEPT !.id=101,!.objects=loaded,!.traversal=begun.traversal,!.inside={TimingRef9("SchemaAtom138",1)}] paying==[live EXCEPT !.resourceUnitCost=LiabilityMarkerCost106(live,3)] selected=={100,110,200} afterSpend==[paying EXCEPT !.id=102,!.objects=Without101(@,selected)] take==LiabilityMarkerAtom106("Specimen0111","Take",1) takeContext==LiabilityMarkerContext106(take,afterSpend,FALSE) extraBP==[id \in {120} |-> LiabilityMarkerCounterRow106] afterTake==[afterSpend EXCEPT !.id=103,!.objects=ReplacementOverlay99(@,extraBP)] remove==LiabilityMarkerAtom106("Specimen0081","Remove",2) removeContext==LiabilityMarkerContext106(remove,afterTake,FALSE) afterRemove==[afterTake EXCEPT !.id=104,!.objects=Without101(@,{1,2})] otherFund==[id \in {190} |-> LiabilityMarkerFundRow106] extraFundWorld==[afterRemove EXCEPT !.id=105,!.objects=ReplacementOverlay99(@,otherFund)] ending==LiabilityMarkerEnd106(extraFundWorld.traversal) endWorld==[extraFundWorld EXCEPT !.traversal=ending.traversal] returned==[ending EXCEPT !.fundReturned=TRUE] allFund==LiabilityMarkerFundIds106(endWorld.objects) empty==Without101(endWorld.objects,allFund) nextInit==LiabilityMarkerInit106(2) nextWorld==[extraFundWorld EXCEPT !.id=106,!.objects=empty,!.traversal=nextInit.traversal,!.inside={}] nextAdded==[id \in {310,311} |-> LiabilityMarkerFundRow106] nextObjects==ReplacementOverlay99(empty,nextAdded) nextEvent==[tag |-> "LiabilityMarkerFundLoaded",traversalId |-> 2,source |-> RuleAbilitySource9("ProcedureCode5da712559aad"),snapshotId |-> 106,added |-> {310,311},amount |-> 2] IN /\ GrantLiabilityMarkerFund106(initiation,funded,initial,loaded,LiabilityMarkerDeclarations106(initial),CardFacts10,added,DOMAIN initial.objects,{grantEvent}) /\ Cardinality(LiabilityMarkerFundIds106(loaded))=4 /\ BaseSideBPoolIds106(loaded)={200,201} /\ ~GrantLiabilityMarkerFund106(initiation,funded,initial,loaded,LiabilityMarkerDeclarations106(initial),CardFacts10,added,DOMAIN initial.objects \cup {110},{grantEvent}) /\ ~GrantLiabilityMarkerFund106([initiation EXCEPT !.costsPaid=FALSE],[funded EXCEPT !.costsPaid=FALSE],initial,loaded,LiabilityMarkerDeclarations106(initial),CardFacts10,added,DOMAIN initial.objects,{grantEvent}) /\ ~GrantLiabilityMarkerFund106(funded,funded,initial,loaded,LiabilityMarkerDeclarations106(initial),CardFacts10,added,DOMAIN initial.objects,{grantEvent}) /\ ~GrantLiabilityMarkerFund106([initiation EXCEPT !.traversal.step="ProcedureCode4d6bd06d2c9f"],[funded EXCEPT !.traversal.step="ProcedureCode4d6bd06d2c9f"],[initial EXCEPT !.traversal.step="ProcedureCode4d6bd06d2c9f"],loaded,LiabilityMarkerDeclarations106(initial),CardFacts10,added,DOMAIN initial.objects,{grantEvent}) /\ FormalTraversalBegin6(beginning,begun,{TraversalBeginEvent6(beginning.traversal)}) /\ SpendLiabilityMarkerFund106(paying,afterSpend.objects,paying.resourceUnitCost,selected,LiabilityMarkerPayment106(paying,selected),{},Empty10,DOMAIN paying.objects, CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,Empty10,{}) /\ TakeLiabilityMarker106(takeContext,takeContext.currentRef,afterSpend,1,CardFacts10,LiabilityMarkerPacketFixture106(take,afterSpend,FALSE),afterTake.objects,extraBP,DOMAIN afterSpend.objects, {[tag |-> "LiabilityMarkerTaken",player |-> "SideA",actor |-> "SideA",packet |-> LiabilityMarkerPacketFixture106(take,afterSpend,FALSE),counters |-> {120},amount |-> 1]}) /\ LiabilityMarkerQuantity106(afterTake.objects)=4 /\ LiabilityMarkerFundIds106(afterTake.objects)={111,112} /\ RemoveLiabilityMarker106(removeContext,removeContext.currentRef,afterTake,1,CardFacts10,LiabilityMarkerPacketFixture106(remove,afterTake,FALSE),afterRemove.objects,{1,2},Empty10,DOMAIN afterTake.objects, CheckpointPrinted103,CheckpointOwners103,{},9001,Empty10,Empty10,{}) /\ LiabilityMarkerQuantity106(afterRemove.objects)=2 /\ LiabilityMarkerFundIds106(afterRemove.objects)={111,112} /\ BankMintProjection4(afterRemove.objects,extraFundWorld.objects,otherFund,1,"ResourceUnit",DOMAIN afterRemove.objects,[kind |-> "Zone",zone |-> "Bank"],TRUE,TRUE) /\ allFund={111,112,190} /\ ReturnLiabilityMarkerFund106(ending,returned,endWorld,empty,Empty10,DOMAIN endWorld.objects,CheckpointPrinted103,CheckpointOwners103,{},9002,Empty10,Empty10,{}) /\ ~ReturnLiabilityMarkerFund106(ending,returned,endWorld,Without101(endWorld.objects,{111,112}),Empty10,DOMAIN endWorld.objects,CheckpointPrinted103,CheckpointOwners103,{},9002,Empty10,Empty10,{}) /\ ~ReturnLiabilityMarkerFund106([ending EXCEPT !.windowsDone=FALSE],[returned EXCEPT !.windowsDone=FALSE],endWorld,empty,Empty10,DOMAIN endWorld.objects,CheckpointPrinted103,CheckpointOwners103,{},9002,Empty10,Empty10,{}) /\ LiabilityMarkerQuantity106(empty)=2 /\ BaseSideBPoolIds106(empty)={201} /\ GrantLiabilityMarkerFund106(nextInit,[nextInit EXCEPT !.badPubAdded=TRUE],nextWorld,nextObjects,LiabilityMarkerDeclarations106(nextWorld),CardFacts10,nextAdded,DOMAIN nextWorld.objects,{nextEvent}) LiabilityMarkerZeroGrantChecks106 == LET zeroWorld==LiabilityMarkerWorld106(0,FALSE,1) zeroInit==LiabilityMarkerInit106(1) IN /\ GrantLiabilityMarkerFund106(zeroInit,[zeroInit EXCEPT !.badPubAdded=TRUE],zeroWorld,zeroWorld.objects,Empty10,CardFacts10,Empty10,DOMAIN zeroWorld.objects,{}) /\ LiabilityMarkerFundIds106(zeroWorld.objects)={100} LiabilityMarkerPaymentChecks106 == LET world==LiabilityMarkerPayWorld106(2) selected=={100,200} stale==[world EXCEPT !.inside={}] outside==[world EXCEPT !.traversal=NoTraversal6,!.inside={}] sideA==[world EXCEPT !.resourceUnitCost.player="SideA"] wrongTraversal==[world EXCEPT !.resourceUnitCost.traversalId=2] oldCost==[world EXCEPT !.resourceUnitCost.snapshotId=99] virtual==[world EXCEPT !.objects[100].virtual=TRUE] beforeTraversal==[world EXCEPT !.traversal=LiabilityMarkerInit106(1).traversal,!.inside={}] IN /\ LiabilityMarkerSpendValid106(world,selected) /\ LiabilityMarkerSpendSources106(LiabilityMarkerPayment106(world,selected))={RuleAbilitySource9("ProcedureCode51c5eb4c9e6c")} /\ LiabilityMarkerSpendSources106(LiabilityMarkerPayment106(world,{200,201}))={} /\ LiabilityMarkerSpendValid106(world,{100,101}) /\ LiabilityMarkerSpendValid106(world,{200,201}) /\ ~LiabilityMarkerSpendValid106(stale,selected) /\ DuringTraversal6(stale.traversal) /\ ~LiabilityMarkerSpendValid106(outside,selected) /\ ~LiabilityMarkerSpendValid106([world EXCEPT !.traversal.complete=TRUE],selected) /\ ~LiabilityMarkerSpendValid106(beforeTraversal,selected) /\ ~LiabilityMarkerSpendValid106(sideA,selected) /\ ~LiabilityMarkerSpendValid106(wrongTraversal,selected) /\ ~LiabilityMarkerSpendValid106(oldCost,selected) /\ ~LiabilityMarkerSpendValid106(world,{100}) /\ ~LiabilityMarkerSpendValid106(world,{100,210}) /\ ~LiabilityMarkerSpendValid106(world,{100,500}) /\ ~LiabilityMarkerSpendValid106(virtual,selected) /\ ~SpendLiabilityMarkerFund106(world,Without101(world.objects,selected),world.resourceUnitCost,selected,LiabilityMarkerPayment106(world,selected),{700},Empty10, DOMAIN world.objects,CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,Empty10,{}) /\ LET exampleFamily053World==LiabilityMarkerWorld106(0,TRUE,1) atom==LiabilityMarkerAtom106("Specimen0081","Remove",2) context==LiabilityMarkerContext106(atom,exampleFamily053World,FALSE) packet==LiabilityMarkerPacketFixture106(atom,exampleFamily053World,FALSE) IN /\ RemoveLiabilityMarker106(context,context.currentRef,exampleFamily053World,1,CardFacts10,packet,exampleFamily053World.objects,{},Empty10,DOMAIN exampleFamily053World.objects,CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,Empty10,{}) /\ ~RemoveLiabilityMarker106(context,context.currentRef,exampleFamily053World,1,CardFacts10,packet,Without101(exampleFamily053World.objects,{90}),{90},Empty10,DOMAIN exampleFamily053World.objects,CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,Empty10,{}) LiabilityMarkerConvertedChecks106 == LET initial==LiabilityMarkerPayWorld106(2) converted==ReplacementOverlay99(initial.objects[100],[card |-> "Specimen0046",owner |-> "SideA",properties |-> [kind |-> "ResourceUnit"],marks |-> {"ConvertedResourceUnitMark"}]) world==[initial EXCEPT !.objects[100]=converted] selected=={100,101} successors==[id \in {100} |-> 1000] objects==CheckpointRetireMap103(world.objects,selected,successors,CheckpointPrinted103,CheckpointOwners103,{100}) event==MovementEvent8(9000,"Retire",{100}) history==[id \in {9000} |-> event] ending==LiabilityMarkerEnd106(world.traversal) endWorld==[world EXCEPT !.traversal=ending.traversal] conversion==[mode |-> "Counter",card |-> "Specimen0046",createdBy |-> 444,owner |-> "SideA",gained |-> [kind |-> "ResourceUnit"]] receipt==[original |-> 100,successor |-> 1000,physical |-> "Specimen0046",owner |-> "SideA",complete |-> TRUE] IN /\ SpendLiabilityMarkerFund106(world,objects,world.resourceUnitCost,selected,LiabilityMarkerPayment106(world,selected),{},successors,DOMAIN world.objects, CheckpointPrinted103,CheckpointOwners103,{100},9000,Empty10,history,{event}) /\ ReturnLiabilityMarkerFund106(ending,[ending EXCEPT !.fundReturned=TRUE],endWorld,objects,successors,DOMAIN world.objects, CheckpointPrinted103,CheckpointOwners103,{100},9000,Empty10,history,{event}) /\ ConversionExitPost101(conversion,CheckpointPrinted103["Specimen0046"],100,1000,Without101(world.objects,{101}),objects,DOMAIN world.objects,"SideADiscard","LiabilityMarkerResourceUnitLeaves",receipt) /\ objects[1000].form="Card" /\ objects[1000].zone="SideADiscard" /\ objects[1000].marks={} /\ ~BankSpendReturn4(world.objects,Without101(world.objects,selected),selected,TRUE) LinkObject107(definition,physical,deployed) == ReplacementOverlay99(CheckpointObject103(definition,"Play",deployed,0),[card |-> physical,side |-> CardFacts10[definition].side]) LinkWorld107(profile,deployed,blanked) == LET physical==profile \o "PhysicalItem0001" objects==[id \in {1,21,22,23,24,25,26,70} |-> CASE id=1 -> LinkObject107(profile,physical,FALSE) [] id=21 -> LinkObject107("Specimen0193","PhysicalItem0010",21 \in deployed) [] id=22 -> LinkObject107("Specimen0193","PhysicalItem0011",22 \in deployed) [] id=23 -> LinkObject107("Specimen0003","PhysicalItem0005",23 \in deployed) [] id=24 -> LinkObject107("Specimen0079","PhysicalItem0003",24 \in deployed) [] id=25 -> LinkObject107("Specimen0213","PhysicalItem0008",25 \in deployed) [] id=26 -> LinkObject107("Specimen0093","Specimen0093-physical",26 \in deployed) [] OTHER -> [LinkObject107("Specimen0154","PhysicalItem0007",FALSE) EXCEPT !.zone="SideAObjectiveCompletion"]] definitions==[card \in {physical,"PhysicalItem0010","PhysicalItem0011","PhysicalItem0005","PhysicalItem0003","PhysicalItem0008","Specimen0093-physical","PhysicalItem0007"} |-> CASE card=physical -> profile [] card \in {"PhysicalItem0010","PhysicalItem0011"} -> "Specimen0193" [] card="PhysicalItem0005" -> "Specimen0003" [] card="PhysicalItem0003" -> "Specimen0079" [] card="PhysicalItem0008" -> "Specimen0213" [] card="Specimen0093-physical" -> "Specimen0093" [] OTHER -> "Specimen0154"] IN [id |-> 100,profileLinkFacts |-> LinkProfileFacts107,linkSymbolFacts |-> LinkSymbolFacts107,sideBProfile |-> 1,objects |-> objects,definitions |-> definitions,properties |-> [id \in {1} |-> [baseLink |-> LinkProfileFacts107[profile].baseLink]], controllers |-> [id \in DOMAIN objects |-> IF id=70 THEN "SideA" ELSE "SideB"],printedLinkAbilities |-> [id \in 21..26 |-> id*100], activeAbilities |-> {id*100 : id \in deployed} \cup (IF blanked \/ profile="Specimen0229" THEN {} ELSE {10}),linkDeclarations |-> Empty10] LinkSyntax107(source,ability) == [id |-> ability,kind |-> "Static",source |-> ObjectAbilitySource9(source),units |-> <<[id |-> 1,category |-> "Declaration",subtype |-> "Plain"]>>] LinkPart107(ability) == [id |-> 1,ability |-> ability,conditions |-> {},target |-> "SideB",property |-> "Connection"] LinkDeclaration107(world,source,ability,origin,value) == [origin |-> origin,snapshotId |-> world.id,sourceObject |-> world.objects[source],definition |-> LinkDefinition107(world,world.objects[source]), sourceSHA |-> CardFacts10[LinkDefinition107(world,world.objects[source])].sourceSHA,projection |-> StaticProjection94(LinkSyntax107(source,ability),LinkPart107(ability),value)] LinkDeclaredWorld107(world) == [world EXCEPT !.linkDeclarations=[id \in EligiblePrintedLinkSources107(world) |-> LinkDeclaration107(world,id,world.printedLinkAbilities[id],"PrintedLink",1)]] LinkBaseFixture107(world) == LET object==world.objects[world.sideBProfile] definition==LinkDefinition107(world,object) IN [tag |-> "CurrentBaseLink",snapshotId |-> world.id,object |-> world.sideBProfile,physical |-> object.card,definition |-> definition, sourceSHA |-> CardFacts10[definition].sourceSHA,printedBase |-> LinkProfileFacts107[definition].baseLink,value |-> world.properties[world.sideBProfile].baseLink] LinkReadFixture107(world) == [tag |-> "CurrentSideBLink",snapshotId |-> world.id,profile |-> world.sideBProfile,base |-> world.properties[world.sideBProfile].baseLink, contributions |-> [id \in DOMAIN world.linkDeclarations |-> world.linkDeclarations[id].projection.value], value |-> world.properties[world.sideBProfile].baseLink+SumMap([id \in DOMAIN world.linkDeclarations |-> world.linkDeclarations[id].projection.value])] LinkValid107(world) == ReadSideBLink107(world,CardFacts10,LinkBaseFixture107(world),world.linkDeclarations,LinkReadFixture107(world)) LinkValueChecks107 == /\ \A profile \in DOMAIN LinkProfileFacts107, count \in 0..2 : LET w==LinkDeclaredWorld107(LinkWorld107(profile,IF count=0 THEN {} ELSE IF count=1 THEN {21} ELSE {21,22},FALSE)) IN /\ LinkValid107(w) /\ LinkReadFixture107(w).value=LinkProfileFacts107[profile].baseLink+count /\ w.objects[21].card#w.objects[22].card /\ LinkDefinition107(w,w.objects[21])=LinkDefinition107(w,w.objects[22]) /\ LET w==LinkDeclaredWorld107(LinkWorld107("Specimen0229",{21,22,23,24,25,26},FALSE)) base==LinkBaseFixture107(w) declarations==w.linkDeclarations syntax==LinkSyntax107(21,2100) conditions==[tag |-> "StaticConditionSnapshot",ability |-> 2100,source |-> ObjectAbilitySource9(21),receipts |-> Empty10] IN /\ LinkValid107(w) /\ base.printedBase=2 /\ LinkReadFixture107(w).value=8 /\ ObserveStaticDeclarations94(syntax,[id \in {1} |-> LinkPart107(2100)],TRUE,conditions,[id \in {1} |-> 1],[id \in {1} |-> declarations[21].projection]) /\ ~ReadSideBLink107(w,CardFacts10,base,Empty10,LinkReadFixture107(w)) /\ ~ReadSideBLink107([w EXCEPT !.linkDeclarations=Without101(@,{21})],CardFacts10,base,Without101(declarations,{21}),LinkReadFixture107([w EXCEPT !.linkDeclarations=Without101(@,{21})])) /\ ~ReadSideBLink107(w,CardFacts10,base,declarations,[LinkReadFixture107(w) EXCEPT !.value=7]) LinkFreshnessChecks107 == LET w==LinkDeclaredWorld107(LinkWorld107("Specimen0127",{21},FALSE)) base==LinkBaseFixture107(w) declarations==w.linkDeclarations wrongSHA==[w EXCEPT !.linkDeclarations[21].sourceSHA="wrong-sha"] wrongObject==[w EXCEPT !.linkDeclarations[21].sourceObject.card="PhysicalItem0004"] wrongSnapshot==[w EXCEPT !.linkDeclarations[21].snapshotId=99] wrongValue==[w EXCEPT !.linkDeclarations[21].projection.value=2] inactive==[w EXCEPT !.activeAbilities=@ \ {2100}] uninstalled==[w EXCEPT !.objects[21].deployed=FALSE,!.objects[21].zone="SideBHand",!.linkDeclarations[21].sourceObject=[@ EXCEPT !.deployed=FALSE,!.zone="SideBHand"]] facedown==[w EXCEPT !.objects[21].face="Down",!.linkDeclarations[21].sourceObject.face="Down"] foreign==[w EXCEPT !.controllers[21]="SideA"] duplicated==[w EXCEPT !.linkDeclarations=ReplacementOverlay99(@,[id \in {99} |-> declarations[21]])] IN /\ LinkValid107(w) /\ ~LinkValid107(wrongSHA) /\ ~LinkValid107(wrongObject) /\ ~LinkValid107(wrongSnapshot) /\ ~LinkValid107(wrongValue) /\ ~LinkValid107(inactive) /\ ~LinkValid107(uninstalled) /\ ~LinkValid107(facedown) /\ ~LinkValid107(foreign) /\ ~LinkValid107(duplicated) /\ ~ReadSideBLink107(w,CardFacts10,[base EXCEPT !.snapshotId=99],declarations,LinkReadFixture107(w)) /\ ~ReadSideBLink107(w,CardFacts10,[base EXCEPT !.sourceSHA="wrong-sha"],declarations,LinkReadFixture107(w)) /\ ~ReadSideBLink107(w,CardFacts10,[base EXCEPT !.printedBase=99],declarations,LinkReadFixture107(w)) /\ ~LinkValid107([w EXCEPT !.printedLinkAbilities=Without101(@,{22})]) /\ ~LinkValid107([w EXCEPT !.printedLinkAbilities[22]=2100]) LinkProfileAndUseChecks107 == LET blanked==LinkDeclaredWorld107(LinkWorld107("Specimen0127",{},TRUE)) baselineProfileFixture==LinkDeclaredWorld107(LinkWorld107("Specimen0229",{},TRUE)) replacement==[baselineProfileFixture EXCEPT !.id=101,!.sideBProfile=2, !.objects=ReplacementOverlay99([@ EXCEPT ![1].zone="Outside"],[id \in {2} |-> LinkObject107("Specimen0163","PhysicalItem0012",FALSE)]), !.definitions=ReplacementOverlay99(@,[physical \in {"PhysicalItem0012"} |-> "Specimen0163"]), !.properties=ReplacementOverlay99(@,[id \in {2} |-> [baseLink |-> 0]])] above==LinkDeclaredWorld107(LinkWorld107("Specimen0163",{21,22},FALSE)) below==LinkDeclaredWorld107(LinkWorld107("Specimen0163",{21},FALSE)) aboveSnapshot==[tag |-> "CurrentLinkInstructionSnapshot",id |-> 100,link |-> [player \in {"SideB"} |-> 2]] belowSnapshot==[tag |-> "CurrentLinkInstructionSnapshot",id |-> 100,link |-> [player \in {"SideB"} |-> 1]] signed==[baselineProfileFixture EXCEPT !.properties[1].baseLink= -3] otherLive==[baselineProfileFixture EXCEPT !.objects[21].deployed=TRUE,!.activeAbilities={2100,2101}] otherPrinted==LinkDeclaredWorld107(otherLive) other==[otherPrinted EXCEPT !.linkDeclarations=ReplacementOverlay99(@,[id \in {900} |-> LinkDeclaration107(otherPrinted,21,2101,"OtherCompiled",-9)])] IN /\ LinkValid107(blanked) /\ LinkReadFixture107(blanked).value=1 /\ blanked.activeAbilities={} /\ LinkValid107(baselineProfileFixture) /\ LinkReadFixture107(baselineProfileFixture).value=2 /\ LinkValid107(replacement) /\ LinkReadFixture107(replacement).value=0 /\ ~ReadSideBLink107(replacement,CardFacts10,LinkBaseFixture107(baselineProfileFixture),Empty10,LinkReadFixture107(replacement)) /\ LinkInstructionSnapshot107(above,CardFacts10,LinkBaseFixture107(above),above.linkDeclarations,LinkReadFixture107(above),aboveSnapshot) /\ InstructionLinkGate96(aboveSnapshot,"SideB") /\ LinkInstructionSnapshot107(below,CardFacts10,LinkBaseFixture107(below),below.linkDeclarations,LinkReadFixture107(below),belowSnapshot) /\ ~InstructionLinkGate96(belowSnapshot,"SideB") /\ LinkValid107(signed) /\ LinkReadFixture107(signed).value= -3 /\ LinkValid107(other) /\ LinkReadFixture107(other).value= -6 /\ ~LinkValid107([other EXCEPT !.controllers[21]="SideA",!.linkDeclarations=Without101(@,{21})]) /\ ~LinkValid107([other EXCEPT !.linkDeclarations=ReplacementOverlay99(@,[id \in {901} |-> other.linkDeclarations[900]])]) /\ LinkValid107([baselineProfileFixture EXCEPT !.objects[70].zone="SideADiscard"]) /\ LinkReadFixture107(baselineProfileFixture).value=2 EscalatingResourceContestConditional108(id,card,trigger) == LET syntax==[id |-> id,kind |-> "Conditional",side |-> CardFacts10[card].side,controller |-> CardFacts10[card].side,cardKind |-> CardFacts10[card].kind, source |-> ObjectAbilitySource9(900),units |-> <>, arrowAfterFlags |-> TRUE,barrierInstructionPrefix |-> FALSE,paidPrefix |-> [present |-> FALSE,bold |-> TRUE,colon |-> TRUE]] IN [syntax |-> syntax,activity |-> AbilityDefinition9(id,"Conditional",syntax.source,"Printed"),primaryKind |-> "Trigger",primaryCondition |-> 1, instructions |-> <<700>>,instructionHasWould |-> FALSE,trigger |-> [kinds |-> {"EscalatingResourceContestAssociatedResult"},subject |-> "SchemaAtom016",actor |-> "SchemaAtom016",side |-> "SchemaAtom016"], triggerRequirements |-> IF trigger="AnyResult" THEN {} ELSE {1},effectChoices |-> {{1}},optionalParts |-> {},partsByInstruction |-> [i \in {700} |-> {1}],delayedEffect |-> 0,thisTraversal |-> FALSE] EscalatingResourceContestSpecimen0101Associations108 == [id \in {1,2} |-> [id |-> id,trigger |-> IF id=1 THEN "Successful" ELSE "AnyResult",source |-> ObjectAbilitySource9(900),sourceSHA |-> CardFacts10["Specimen0101"].sourceSHA, definition |-> EscalatingResourceContestConditional108(9100+id,"Specimen0101",IF id=1 THEN "Successful" ELSE "AnyResult"), bodyCondition |-> IF id=1 THEN [kind |-> "NoValue"] ELSE [kind |-> "EscalatingResourceContestStrengthAtLeast",amount |-> 5]]] EscalatingResourceContestCard108(card,deployed,activated) == ReplacementOverlay99(ExposureMarkerCardFixture105(card,"Play",deployed),[side |-> CardFacts10[card].side,activated |-> activated]) EscalatingResourceContestWorld108(profile,deployed,during,exampleFamily065,exampleFamily045) == LET b==LinkDeclaredWorld107(LinkWorld107(profile,deployed,FALSE)) objects==ReplacementOverlay99([b.objects EXCEPT ![70].zone=IF exampleFamily045 THEN "SideAObjectiveCompletion" ELSE "SideADiscard"],[id \in {600,610,620,630,900} \cup (2000..2004) \cup (2100..2104) \cup {2200,2201,2300,2301,2302,2400} |-> CASE id=600 -> EscalatingResourceContestCard108("Specimen0231",FALSE,FALSE) [] id=610 -> EscalatingResourceContestCard108("Specimen0184",TRUE,TRUE) [] id=620 -> EscalatingResourceContestCard108("Specimen0056",TRUE,FALSE) [] id=630 -> [EscalatingResourceContestCard108("Specimen0182",FALSE,FALSE) EXCEPT !.zone="Outside"] [] id=900 -> EscalatingResourceContestCard108("Specimen0101",TRUE,TRUE) [] id \in 2000..2004 -> ExposureMarkerTokenFixture105("ResourceUnit","SideAResourceUnits",0,FALSE) [] id \in 2100..2104 -> ExposureMarkerTokenFixture105("ResourceUnit","SideBResourceUnits",0,FALSE) [] id \in {2200,2201} -> LiabilityMarkerFundRow106 [] id \in {2300,2301,2302} -> ExposureMarkerTokenFixture105("ResourceUnit","Play",610,FALSE) [] OTHER -> ExposureMarkerTokenFixture105("ResourceUnit","Play",620,FALSE)]) defs==ReplacementOverlay99(b.definitions,[card \in {"Specimen0231","Specimen0184","Specimen0056","Specimen0182","Specimen0101"} |-> card]) r==IF during THEN [OpenTraversal6(1,10,"EscalatingResourceContestTraversalCaller") EXCEPT !.formalBegun=TRUE,!.phase="Encounter",!.step="ProcedureCode8b3260c0010f",!.attacked="SchemaAtom082"] ELSE NoTraversal6 IN ReplacementOverlay99([b EXCEPT !.objects=objects,!.definitions=defs,!.controllers=[id \in DOMAIN objects |-> IF id \in DOMAIN b.controllers THEN b.controllers[id] ELSE IF id \in {600,610,900,2300,2301,2302} \cup (2000..2004) THEN "SideA" ELSE "SideB"], !.activeAbilities=@ \cup {6100,6200} \cup (IF exampleFamily065 THEN {6000} ELSE {}) \cup (IF exampleFamily045 THEN {7000} ELSE {})] ,[started |-> TRUE,outcome |-> "Playing",turn |-> [OpenTurn5("SideB",1,[p \in SetupPlayers |-> 0]) EXCEPT !.phase="NeutralValue00001"], traversal |-> r,inside |-> IF during THEN {TimingRef9("SchemaAtom138",1)} ELSE {}, escalatingResourceContestFrames |-> Empty10,escalatingResourceContestHistory |-> Empty10,checkpointFrames |-> Empty10,checkpointLedger |-> [checkpoints |-> Empty10,instances |-> Empty10],eventIds |-> {},usedPayments |-> {},usedObjects |-> DOMAIN objects, abilitySources |-> [id \in {6000,6100,6200,7000} |-> ObjectAbilitySource9(IF id=6000 THEN 600 ELSE IF id=6100 THEN 610 ELSE IF id=6200 THEN 620 ELSE 70)], abilityRoles |-> [id \in {6000,6100,6200,7000} |-> IF id=6000 THEN "EscalatingResourceContestOrder" ELSE IF id=7000 THEN "EscalatingResourceContestLinkZero" ELSE "EscalatingResourceContestPermission"], escalatingResourceContestOrderPolicies |-> Empty10,escalatingResourceContestLinkPolicies |-> Empty10,escalatingResourceContestSpendPermissions |-> [p \in SetupPlayers |-> Empty10],resourceUnitCost |-> [id |-> 0]]) EscalatingResourceContestPolicy108(world,frame,id,kind) == LET source==world.abilitySources[id] object==world.objects[source.object] common==[snapshotId |-> world.id,escalatingResourceContestId |-> frame.id,ability |-> id,source |-> source,sourceObject |-> object,sourceSHA |-> CardFacts10[LinkDefinition107(world,object)].sourceSHA] IN ReplacementOverlay99(common,IF kind="Order" THEN [order |-> <<"SideB","SideA">>] ELSE [value |-> 0]) EscalatingResourceContestAt108(world,frame,id) == LET w==[world EXCEPT !.id=id,!.escalatingResourceContestFrames=ReplacementOverlay99(@,[i \in {frame.id} |-> frame]), !.usedPayments=@ \cup {frame.boosts[p].transaction : p \in {p \in SetupPlayers : frame.boosts[p].mode="Pay"}}, !.usedObjects=@ \cup DOMAIN world.objects,!.eventIds=IF frame.resultEvent.id=0 THEN @ ELSE @ \cup {frame.resultEvent.id}] live==LinkDeclaredWorld107(w) IN [live EXCEPT !.escalatingResourceContestOrderPolicies=[i \in IF EscalatingResourceContestDuringTraversal108(live) THEN EscalatingResourceContestRoleIds108(live,"EscalatingResourceContestOrder","Specimen0231") ELSE {} |-> EscalatingResourceContestPolicy108(live,frame,i,"Order")], !.escalatingResourceContestLinkPolicies=[i \in IF frame.ordinal=1 THEN EscalatingResourceContestRoleIds108(live,"EscalatingResourceContestLinkZero","Specimen0154") ELSE {} |-> EscalatingResourceContestPolicy108(live,frame,i,"Connection")]] EscalatingResourceContestAtom108(value,associations) == [id |-> 1,kind |-> "EscalatingResourceContest",value |-> value,actor |-> "SideA",baseOrigin |-> ObjectAbilitySource9(900),sourceCard |-> "Specimen0101",sourceSHA |-> CardFacts10["Specimen0101"].sourceSHA,associations |-> associations,preventable |-> TRUE] EscalatingResourceContestContext108(world,value,associations) == [id |-> 10800,phase |-> "Resolving",currentRef |-> DamageReference104(0),currentWorld |-> world.id,templates |-> [id \in {1} |-> EscalatingResourceContestAtom108(2,associations)], state |-> [effects |-> [id \in {1} |-> EscalatingResourceContestAtom108(value,associations)]],actualEffects |-> [id \in {1} |-> EscalatingResourceContestAtom108(value,associations)]] EscalatingResourceContestPacketFixture108(context) == LET e==context.actualEffects[1] IN [key |-> <>,contextId |-> context.id,reference |-> context.currentRef,effectId |-> 1,source |-> e.baseOrigin, sourceCard |-> e.sourceCard,sourceSHA |-> e.sourceSHA,base |-> e.value,associations |-> e.associations] EscalatingResourceContestStart108(world,context,id,eventId) == LET packet==EscalatingResourceContestPacketFixture108(context) ordinal==1+Cardinality({old \in DOMAIN world.escalatingResourceContestHistory : world.escalatingResourceContestHistory[old].turnId=world.turn.id}) f==EscalatingResourceContestInitialFrame108(id,packet,world.turn.id,ordinal) history==ReplacementOverlay99(world.escalatingResourceContestHistory,[i \in {id} |-> [key |-> packet.key,turnId |-> world.turn.id,ordinal |-> ordinal]]) event==[id |-> eventId,kind |-> "EscalatingResourceContestInitiated",escalatingResourceContestId |-> id,actor |-> "SideA",source |-> packet.source,reference |-> context.currentRef,snapshotId |-> world.id] IN [frame |-> f,history |-> history,event |-> event,world |-> EscalatingResourceContestAt108([world EXCEPT !.escalatingResourceContestHistory=history,!.eventIds=@ \cup {eventId}],f,world.id)] EscalatingResourceContestCheckpoint108(frame,world,id) == [NewCheckpoint103(id,EscalatingResourceContestCheckpointCaller108(frame),world.id,world.inside) EXCEPT !.phase="Returned",!.point="ProcedureCodeb74d673a0fc6",!.owed= <<>>,!.done=CheckpointStageSet103, !.returned=TRUE,!.recognition=[id |-> id,caller |-> EscalatingResourceContestCheckpointCaller108(frame)],!.recognized=Empty10] EscalatingResourceContestLedger108(cp) == [checkpoints |-> [id \in {cp.id} |-> [caller |-> cp.caller]],instances |-> Empty10] EscalatingResourceContestCheckpointWorld108(world,cp,ledger) == [world EXCEPT !.checkpointFrames=ReplacementOverlay99(@,[id \in {cp.id} |-> cp]),!.checkpointLedger=ledger] EscalatingResourceContestChoose108(frame,order,cpId) == [frame EXCEPT !.phase="ChooseBoost",!.point=IF order[1]="SideA" THEN "ProcedureCode083016920358" ELSE "ProcedureCode785a8b2e5de4",!.order=order,!.nextPlayer=order[1],!.checkpoints=@ \cup {cpId}] EscalatingResourceContestDeclined108(frame,player) == [frame EXCEPT !.phase="SetStrength",!.pendingPlayer=player,!.acted=@ \cup {player},!.boosts[player]=[mode |-> "Decline",amount |-> 0,transaction |-> 0]] EscalatingResourceContestAnnouncement108(frame,player,mode,amount) == [tag |-> "EscalatingResourceContestBoostChoice",escalatingResourceContestId |-> frame.id,player |-> player,mode |-> mode,amount |-> amount,viewers |-> SetupPlayers] EscalatingResourceContestReadyWorld108(world,frame,amount,transaction) == [world EXCEPT !.resourceUnitCost=[tag |-> "EscalatingResourceContestBoostCostContext",id |-> transaction,escalatingResourceContestId |-> frame.id,player |-> frame.nextPlayer,amount |-> amount, snapshotId |-> world.id,source |-> EscalatingResourceContestBoostRule108(frame.nextPlayer),parent |-> frame.caller,status |-> "Paying"]] EscalatingResourceContestPaid108(frame,player,amount,transaction) == [frame EXCEPT !.phase="BoostCheckpoint",!.pendingPlayer=player,!.acted=@ \cup {player},!.boosts[player]=[mode |-> "Pay",amount |-> amount,transaction |-> transaction]] EscalatingResourceContestPayment108(frame,world,player,amount,transaction,selected) == [tag |-> "CompletedEscalatingResourceContestBoostCost",id |-> transaction,escalatingResourceContestId |-> frame.id,player |-> player,amount |-> amount,snapshotId |-> world.id, source |-> EscalatingResourceContestBoostRule108(player),parent |-> frame.caller,paidCounterIds |-> selected,complete |-> TRUE] EscalatingResourceContestSpendEvents108(frame,world,player,amount,transaction) == IF amount=0 THEN {} ELSE {[kind |-> "EscalatingResourceContestResourceUnitsSpent",escalatingResourceContestId |-> frame.id,player |-> player,amount |-> amount,transactionId |-> transaction,escalatingResourceContestSource |-> frame.packet.source,beforeSnapshotId |-> world.id]} EscalatingResourceContestPayValid108(frame,world,amount,selected,transaction) == PayEscalatingResourceContestBoost108(frame,EscalatingResourceContestPaid108(frame,frame.nextPlayer,amount,transaction),world,Without101(world.objects,selected),frame.nextPlayer,amount,selected,transaction, EscalatingResourceContestPayment108(frame,world,frame.nextPlayer,amount,transaction,selected),EscalatingResourceContestAnnouncement108(frame,frame.nextPlayer,"Pay",amount),CardFacts10,world.escalatingResourceContestSpendPermissions[frame.nextPlayer],world.usedPayments, Empty10,world.usedObjects,CheckpointPrinted103,CheckpointOwners103,{},9900,Empty10,Empty10,{},EscalatingResourceContestSpendEvents108(frame,world,frame.nextPlayer,amount,transaction)) EscalatingResourceContestEstablished108(frame,contextualLink) == LET player==frame.pendingPlayer value==IF player="SideA" THEN frame.packet.base+frame.boosts[player].amount ELSE contextualLink+frame.boosts[player].amount IN [frame EXCEPT !.strengths[player]=[set |-> TRUE,value |-> value],!.pendingPlayer="NoValue", !.phase=IF frame.acted=SetupPlayers THEN "Determine" ELSE "ChooseBoost",!.nextPlayer=IF frame.acted=SetupPlayers THEN "NoValue" ELSE frame.order[2], !.point=IF frame.acted=SetupPlayers THEN "ProcedureCode42d1fb0bb9d2" ELSE IF frame.order[2]="SideA" THEN "ProcedureCode083016920358" ELSE "ProcedureCode785a8b2e5de4"] EscalatingResourceContestSetValid108(frame,world,link) == EstablishEscalatingResourceContestStrength108(frame,EscalatingResourceContestEstablished108(frame,link),world,CardFacts10,LinkBaseFixture107(world),world.linkDeclarations,LinkReadFixture107(world),link) EscalatingResourceContestResultEvent108(frame,world,id) == [id |-> id,kind |-> "EscalatingResourceContestResult",escalatingResourceContestId |-> frame.id,actor |-> "SideA",source |-> frame.packet.source,reference |-> frame.caller,snapshotId |-> world.id, result |-> IF frame.strengths["SideA"].value>frame.strengths["SideB"].value THEN "Successful" ELSE "Unsuccessful",escalatingResourceContestStrength |-> frame.strengths["SideA"].value,linkStrength |-> frame.strengths["SideB"].value] EscalatingResourceContestDetermined108(frame,event) == [frame EXCEPT !.phase="Determined",!.point="ProcedureCode0cb35cf3f8e6",!.result=event.result,!.resultEvent=event] EscalatingResourceContestOneChoice108(world,frame,mode,amount,selected,transaction) == LET player==frame.nextPlayer paying==IF mode="Pay" THEN EscalatingResourceContestReadyWorld108(world,frame,amount,transaction) ELSE world chosen==IF mode="Pay" THEN EscalatingResourceContestPaid108(frame,player,amount,transaction) ELSE EscalatingResourceContestDeclined108(frame,player) afterObjects==IF mode="Pay" THEN Without101(world.objects,selected) ELSE world.objects afterPayment==EscalatingResourceContestAt108([paying EXCEPT !.objects=afterObjects,!.controllers=IF mode="Pay" THEN Without101(@,selected) ELSE @],chosen,world.id+1) cpId==IF player="SideA" THEN 5101 ELSE 5102 cp==EscalatingResourceContestCheckpoint108(chosen,afterPayment,cpId) ready==IF mode="Pay" THEN [chosen EXCEPT !.phase="SetStrength",!.checkpoints=@ \cup {cpId}] ELSE chosen readyWorld==EscalatingResourceContestAt108(IF mode="Pay" THEN EscalatingResourceContestCheckpointWorld108(afterPayment,cp,EscalatingResourceContestLedger108(cp)) ELSE afterPayment,ready,world.id+2) link==IF player="SideA" THEN 0 ELSE IF frame.ordinal=1 /\ 7000 \in readyWorld.activeAbilities THEN 0 ELSE LinkReadFixture107(readyWorld).value after==EscalatingResourceContestEstablished108(ready,link) IN [player |-> player,mode |-> mode,amount |-> amount,selected |-> selected,transaction |-> transaction, before |-> frame,paying |-> paying,chosen |-> chosen,afterPayment |-> afterPayment,cp |-> cp,ready |-> ready,readyWorld |-> readyWorld, link |-> link,after |-> after,world |-> EscalatingResourceContestAt108(readyWorld,after,world.id+3)] EscalatingResourceContestOneChoiceValid108(x) == /\ IF x.mode="Pay" THEN /\ EscalatingResourceContestPayValid108(x.before,x.paying,x.amount,x.selected,x.transaction) /\ DrainEscalatingResourceContestCheckpoint108(x.chosen,x.ready,EscalatingResourceContestCheckpointWorld108(x.afterPayment,x.cp,EscalatingResourceContestLedger108(x.cp)),CardFacts10,x.cp,EscalatingResourceContestLedger108(x.cp),<<>>,x.before.order) /\ ~EscalatingResourceContestSetValid108(x.chosen,x.afterPayment,x.link) ELSE DeclineEscalatingResourceContestBoost108(x.before,x.chosen,x.paying,x.player,EscalatingResourceContestAnnouncement108(x.before,x.player,"Decline",0)) /\ EscalatingResourceContestSetValid108(x.ready,x.readyWorld,x.link) EscalatingResourceContestResourceUnitSelection108(player,amount) == IF player="SideA" THEN 2000..(1999+amount) ELSE 2100..(2099+amount) EscalatingResourceContestScenario108(profile,cMode,cAmount,rMode,rAmount,exampleFamily065,exampleFamily045) == LET w==EscalatingResourceContestWorld108(profile,{},TRUE,exampleFamily065,exampleFamily045) ctx==EscalatingResourceContestContext108(w,2,EscalatingResourceContestSpecimen0101Associations108) start==EscalatingResourceContestStart108(w,ctx,51,9001) initialCP==EscalatingResourceContestCheckpoint108(start.frame,start.world,5100) order==IF exampleFamily065 THEN <<"SideB","SideA">> ELSE <<"SideA","SideB">> choose==EscalatingResourceContestChoose108(start.frame,order,5100) firstWorld==EscalatingResourceContestAt108(EscalatingResourceContestCheckpointWorld108(start.world,initialCP,EscalatingResourceContestLedger108(initialCP)),choose,101) firstPlayer==order[1] firstMode==IF firstPlayer="SideA" THEN cMode ELSE rMode firstAmount==IF firstPlayer="SideA" THEN cAmount ELSE rAmount first==EscalatingResourceContestOneChoice108(firstWorld,choose,firstMode,firstAmount,EscalatingResourceContestResourceUnitSelection108(firstPlayer,firstAmount),IF firstPlayer="SideA" THEN 7001 ELSE 8001) secondPlayer==order[2] secondMode==IF secondPlayer="SideA" THEN cMode ELSE rMode secondAmount==IF secondPlayer="SideA" THEN cAmount ELSE rAmount SchemaAtom187==EscalatingResourceContestOneChoice108(first.world,first.after,secondMode,secondAmount,EscalatingResourceContestResourceUnitSelection108(secondPlayer,secondAmount),IF secondPlayer="SideA" THEN 7001 ELSE 8001) event==EscalatingResourceContestResultEvent108(SchemaAtom187.after,SchemaAtom187.world,9002) determined==EscalatingResourceContestDetermined108(SchemaAtom187.after,event) determinedWorld==EscalatingResourceContestAt108(SchemaAtom187.world,determined,108) completed==[determined EXCEPT !.phase="Complete",!.complete=TRUE] completedWorld==EscalatingResourceContestAt108(determinedWorld,completed,109) completion==[tag |-> "OwnedEscalatingResourceContestProcedureReturn",escalatingResourceContestId |-> 51,instance |-> start.frame.instance,caller |-> start.frame.caller, operation |-> 1,resultEvent |-> event,complete |-> TRUE,unprocessedCheckpointRequests |-> {}] IN [initial |-> w,context |-> ctx,start |-> start,initialCP |-> initialCP,order |-> order,choose |-> choose,firstWorld |-> firstWorld, first |-> first,SchemaAtom187 |-> SchemaAtom187,event |-> event,determined |-> determined,determinedWorld |-> determinedWorld,completed |-> completed,completedWorld |-> completedWorld,completion |-> completion] EscalatingResourceContestScenarioValid108(s) == /\ BeginEscalatingResourceContest108(s.context,s.context.currentRef,s.initial,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(s.context),s.start.frame,s.start.world.escalatingResourceContestFrames,s.start.history,s.start.event) /\ DrainEscalatingResourceContestCheckpoint108(s.start.frame,s.choose,EscalatingResourceContestCheckpointWorld108(s.start.world,s.initialCP,EscalatingResourceContestLedger108(s.initialCP)),CardFacts10,s.initialCP,EscalatingResourceContestLedger108(s.initialCP),<<>>,s.order) /\ EscalatingResourceContestOneChoiceValid108(s.first) /\ EscalatingResourceContestOneChoiceValid108(s.SchemaAtom187) /\ DetermineEscalatingResourceContest108(s.SchemaAtom187.after,s.determined,s.SchemaAtom187.world,s.SchemaAtom187.world.objects,9002,s.event) /\ CompleteEscalatingResourceContest108(s.determined,s.completed,s.determinedWorld) /\ ReturnEscalatingResourceContest108(s.completed,[s.completed EXCEPT !.phase="Returned",!.returned=TRUE],s.completedWorld,s.completion) EscalatingResourceContestPhaseChecks108 == /\ \A profile \in {"Specimen0229","Specimen0163"}, exampleFamily065 \in BOOLEAN, cm \in {"Pay","Decline"}, rm \in {"Pay","Decline"}, ca \in 0..2, ra \in 0..2 : (cm="Decline" => ca=0) /\ (rm="Decline" => ra=0) => LET s==EscalatingResourceContestScenario108(profile,cm,ca,rm,ra,exampleFamily065,FALSE) IN /\ EscalatingResourceContestScenarioValid108(s) /\ s.SchemaAtom187.after.strengths["SideA"].value=2+ca /\ s.SchemaAtom187.after.strengths["SideB"].value=LinkProfileFacts107[profile].baseLink+ra /\ s.determined.result=IF 2+ca>LinkProfileFacts107[profile].baseLink+ra THEN "Successful" ELSE "Unsuccessful" /\ Cardinality(s.SchemaAtom187.after.checkpoints)=1+(IF cm="Pay" THEN 1 ELSE 0)+(IF rm="Pay" THEN 1 ELSE 0) /\ LET paid==EscalatingResourceContestScenario108("Specimen0229","Pay",0,"Pay",0,FALSE,FALSE) declined==EscalatingResourceContestScenario108("Specimen0229","Decline",0,"Decline",0,FALSE,FALSE) cp==paid.first.cp first==paid.first badCP==[cp EXCEPT !.caller.transactionId=999] IN /\ paid.determined.result="Unsuccessful" /\ declined.determined.result="Unsuccessful" /\ Cardinality(paid.SchemaAtom187.after.checkpoints)=3 /\ Cardinality(declined.SchemaAtom187.after.checkpoints)=1 /\ first.chosen.boosts["SideA"].mode="Pay" /\ first.chosen.boosts["SideA"].amount=0 /\ EscalatingResourceContestSpendEvents108(first.before,first.paying,"SideA",0,7001)={} /\ ~DrainEscalatingResourceContestCheckpoint108(first.chosen,first.ready,EscalatingResourceContestCheckpointWorld108(first.afterPayment,badCP,EscalatingResourceContestLedger108(badCP)),CardFacts10,badCP,EscalatingResourceContestLedger108(badCP),<<>>,paid.order) /\ ~DrainEscalatingResourceContestCheckpoint108(first.chosen,first.ready,EscalatingResourceContestCheckpointWorld108(first.afterPayment,[cp EXCEPT !.returned=FALSE],EscalatingResourceContestLedger108(cp)),CardFacts10,[cp EXCEPT !.returned=FALSE],EscalatingResourceContestLedger108(cp),<<>>,paid.order) /\ ~DeclineEscalatingResourceContestBoost108(first.chosen,EscalatingResourceContestDeclined108(first.chosen,"SideA"),first.afterPayment,"SideA",EscalatingResourceContestAnnouncement108(first.chosen,"SideA","Decline",0)) /\ ~DetermineEscalatingResourceContest108(first.before,paid.determined,first.paying,first.paying.objects,9002,paid.event) /\ ~CompleteEscalatingResourceContest108(first.before,paid.completed,first.paying) /\ ~ReturnEscalatingResourceContest108(paid.determined,[paid.determined EXCEPT !.phase="Returned",!.returned=TRUE],paid.determinedWorld,paid.completion) /\ ~ReturnEscalatingResourceContest108(paid.completed,[paid.completed EXCEPT !.phase="Returned",!.returned=TRUE],paid.completedWorld,[paid.completion EXCEPT !.caller.id=999]) EscalatingResourceContestPacketChecks108 == /\ \A value \in {-1,0,2,3} : LET w==EscalatingResourceContestWorld108("Specimen0163",{},FALSE,FALSE,FALSE) ctx==EscalatingResourceContestContext108(w,value,Empty10) start==EscalatingResourceContestStart108(w,ctx,51,9001) IN /\ BeginEscalatingResourceContest108(ctx,ctx.currentRef,w,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(ctx),start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ ModifyExpectedEffectValue99(ctx.templates,ctx.state.effects,1,value-2) /\ start.frame.packet.base=value /\ ~EscalatingResourceContestPacket108([ctx EXCEPT !.currentWorld=99],ctx.currentRef,w,1,CardFacts10,EscalatingResourceContestPacketFixture108(ctx)) /\ ~BeginEscalatingResourceContest108(ctx,ctx.currentRef,w,1,CardFacts10,51,9001,[EscalatingResourceContestPacketFixture108(ctx) EXCEPT !.base=value+1],start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ EscalatingResourceContestOmitted108([ctx EXCEPT !.state.effects=Empty10,!.actualEffects=Empty10],ctx.currentRef,w,1) /\ LET w==EscalatingResourceContestWorld108("Specimen0229",{},TRUE,FALSE,TRUE) ctx==EscalatingResourceContestContext108(w,2,EscalatingResourceContestSpecimen0101Associations108) start==EscalatingResourceContestStart108(w,ctx,51,9001) secondContext==[EscalatingResourceContestContext108(start.world,2,EscalatingResourceContestSpecimen0101Associations108) EXCEPT !.id=10801] nested==EscalatingResourceContestStart108(start.world,secondContext,52,9003) replayed==EscalatingResourceContestStart108(start.world,ctx,52,9003) parentWorld==EscalatingResourceContestAt108(nested.world,start.frame,100) secondWorld==EscalatingResourceContestAt108(nested.world,nested.frame,100) IN /\ BeginEscalatingResourceContest108(secondContext,secondContext.currentRef,start.world,1,CardFacts10,52,9003,EscalatingResourceContestPacketFixture108(secondContext),nested.frame,nested.world.escalatingResourceContestFrames,nested.history,nested.event) /\ nested.frame.ordinal=2 /\ start.frame.ordinal=1 /\ DOMAIN parentWorld.escalatingResourceContestLinkPolicies={7000} /\ DOMAIN secondWorld.escalatingResourceContestLinkPolicies={} /\ EscalatingResourceContestContextualLink108(start.frame,parentWorld,CardFacts10,LinkBaseFixture107(parentWorld),parentWorld.linkDeclarations,LinkReadFixture107(parentWorld),0) /\ EscalatingResourceContestContextualLink108(nested.frame,secondWorld,CardFacts10,LinkBaseFixture107(secondWorld),secondWorld.linkDeclarations,LinkReadFixture107(secondWorld),2) /\ ~BeginEscalatingResourceContest108(ctx,ctx.currentRef,start.world,1,CardFacts10,52,9003,EscalatingResourceContestPacketFixture108(ctx),replayed.frame,replayed.world.escalatingResourceContestFrames,replayed.history,replayed.event) EscalatingResourceContestContextAndOrderChecks108 == LET nq==EscalatingResourceContestScenario108("Specimen0229","Decline",0,"Decline",0,FALSE,TRUE) reverse==EscalatingResourceContestScenario108("Specimen0229","Pay",1,"Pay",2,TRUE,TRUE) outsideBase==EscalatingResourceContestWorld108("Specimen0229",{},FALSE,TRUE,FALSE) outsideStart==EscalatingResourceContestStart108(outsideBase,EscalatingResourceContestContext108(outsideBase,2,Empty10),51,9001) outsideCP==EscalatingResourceContestCheckpoint108(outsideStart.frame,outsideStart.world,5100) outsideChoose==EscalatingResourceContestChoose108(outsideStart.frame,<<"SideA","SideB">>,5100) r==nq.SchemaAtom187.ready w==nq.SchemaAtom187.readyWorld IN /\ EscalatingResourceContestScenarioValid108(nq) /\ nq.determined.result="Successful" /\ nq.SchemaAtom187.after.strengths["SideB"].value=0 /\ LinkReadFixture107(w).value=2 /\ EscalatingResourceContestScenarioValid108(reverse) /\ reverse.first.player="SideB" /\ reverse.SchemaAtom187.player="SideA" /\ reverse.determined.result="Successful" /\ DrainEscalatingResourceContestCheckpoint108(outsideStart.frame,outsideChoose,EscalatingResourceContestCheckpointWorld108(outsideStart.world,outsideCP,EscalatingResourceContestLedger108(outsideCP)),CardFacts10,outsideCP,EscalatingResourceContestLedger108(outsideCP),<<>>,<<"SideA","SideB">>) /\ ~DrainEscalatingResourceContestCheckpoint108(reverse.start.frame,EscalatingResourceContestChoose108(reverse.start.frame,<<"SideA","SideB">>,5100),EscalatingResourceContestCheckpointWorld108(reverse.start.world,reverse.initialCP,EscalatingResourceContestLedger108(reverse.initialCP)),CardFacts10,reverse.initialCP,EscalatingResourceContestLedger108(reverse.initialCP),<<>>,<<"SideA","SideB">>) /\ ~EscalatingResourceContestSetValid108(r,[w EXCEPT !.escalatingResourceContestLinkPolicies=Empty10],0) /\ ~EscalatingResourceContestSetValid108(r,[w EXCEPT !.escalatingResourceContestLinkPolicies[7000].snapshotId=99],0) /\ ~EscalatingResourceContestSetValid108(r,[w EXCEPT !.escalatingResourceContestLinkPolicies[7000].sourceSHA="wrong-sha"],0) /\ ~EscalatingResourceContestSetValid108(r,[w EXCEPT !.escalatingResourceContestLinkPolicies[7000].sourceObject.card="PhysicalItem0004"],0) EscalatingResourceContestPermission108(world,frame,player,transaction) == LET source==IF player="SideA" THEN 610 ELSE 620 ability==IF player="SideA" THEN 6100 ELSE 6200 object==world.objects[source] IN [escalatingResourceContestId |-> frame.id,snapshotId |-> world.id,player |-> player,paymentId |-> transaction,purpose |-> "EscalatingResourceContest",ability |-> ability, source |-> ObjectAbilitySource9(source),sourceObject |-> object,sourceSHA |-> CardFacts10[LinkDefinition107(world,object)].sourceSHA, counters |-> IF player="SideA" THEN {2300,2301,2302} ELSE {2400}] EscalatingResourceContestWalletChecks108 == LET s==EscalatingResourceContestScenario108("Specimen0229","Decline",0,"Decline",0,FALSE,FALSE) f==s.choose w==EscalatingResourceContestReadyWorld108(s.firstWorld,f,2,7001) permission==EscalatingResourceContestPermission108(w,f,"SideA",7001) hosted==[w EXCEPT !.escalatingResourceContestSpendPermissions["SideA"]=[id \in {1} |-> permission]] payment==EscalatingResourceContestPayment108(f,hosted,"SideA",2,7001,{2300,2301}) wrongPurpose==[hosted EXCEPT !.escalatingResourceContestSpendPermissions["SideA"][1].purpose="Retire"] wrongTrace==[hosted EXCEPT !.escalatingResourceContestSpendPermissions["SideA"][1].escalatingResourceContestId=52] inactive==[hosted EXCEPT !.activeAbilities=@ \ {6100}] foreign==[hosted EXCEPT !.controllers[610]="SideB"] wrongHost==[hosted EXCEPT !.objects[2300].host=620] oldFrame==[hosted EXCEPT !.escalatingResourceContestFrames[51].complete=TRUE] denied==[w EXCEPT !.resourceUnitCost.status="Forbidden"] IN /\ EscalatingResourceContestPayValid108(f,hosted,2,{2300,2301},7001) /\ EscalatingResourceContestPermissionUseSources108(payment,hosted.escalatingResourceContestSpendPermissions["SideA"])={ObjectAbilitySource9(610)} /\ EscalatingResourceContestPermissionUseSources108(EscalatingResourceContestPayment108(f,hosted,"SideA",2,7001,{2000,2001}),hosted.escalatingResourceContestSpendPermissions["SideA"])={} /\ ~EscalatingResourceContestPayValid108(f,wrongPurpose,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,wrongTrace,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,inactive,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,foreign,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,wrongHost,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,oldFrame,2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,[hosted EXCEPT !.escalatingResourceContestSpendPermissions["SideA"][1].snapshotId=99],2,{2300,2301},7001) /\ ~EscalatingResourceContestPayValid108(f,denied,2,{2000,2001},7001) /\ ~EscalatingResourceContestPayValid108(f,w,2,{2000},7001) /\ ~EscalatingResourceContestPayValid108(f,w,2,{2100,2101},7001) /\ ~EscalatingResourceContestPayValid108(f,[w EXCEPT !.resourceUnitCost.snapshotId=99],2,{2000,2001},7001) /\ ~EscalatingResourceContestPayValid108(f,[w EXCEPT !.usedPayments={7001}],2,{2000,2001},7001) /\ ~PayEscalatingResourceContestBoost108(f,EscalatingResourceContestPaid108(f,"SideA",2,7001),w,Without101(w.objects,{2000,2001}),"SideA",2,{2000,2001},7001,EscalatingResourceContestPayment108(f,w,"SideA",2,7001,{2000,2001}), [EscalatingResourceContestAnnouncement108(f,"SideA","Pay",2) EXCEPT !.viewers={"SideA"}],CardFacts10,Empty10,w.usedPayments,Empty10,w.usedObjects, CheckpointPrinted103,CheckpointOwners103,{},9900,Empty10,Empty10,{},EscalatingResourceContestSpendEvents108(f,w,"SideA",2,7001)) /\ LET rev==EscalatingResourceContestScenario108("Specimen0163","Decline",0,"Decline",0,TRUE,FALSE) rf==rev.choose rw==EscalatingResourceContestReadyWorld108(rev.firstWorld,rf,2,8001) rp==EscalatingResourceContestPermission108(rw,rf,"SideB",8001) hostedSideB==[rw EXCEPT !.escalatingResourceContestSpendPermissions["SideB"]=[id \in {1} |-> rp]] outside==[hostedSideB EXCEPT !.traversal=NoTraversal6,!.inside={}] ended==[hostedSideB EXCEPT !.inside={}] zero==EscalatingResourceContestReadyWorld108(rev.firstWorld,rf,0,8001) IN /\ EscalatingResourceContestPayValid108(rf,hostedSideB,2,{2400,2100},8001) /\ EscalatingResourceContestPayValid108(rf,rw,2,{2200,2100},8001) /\ ~EscalatingResourceContestPayValid108(rf,outside,2,{2200,2100},8001) /\ ~EscalatingResourceContestPayValid108(rf,ended,2,{2200,2100},8001) /\ DuringTraversal6(ended.traversal) /\ EscalatingResourceContestPayValid108(rf,zero,0,{},8001) /\ ~EscalatingResourceContestPayValid108(rf,[zero EXCEPT !.resourceUnitCost=[id |-> 0]],0,{},8001) EscalatingResourceContestReactionAndCurrentReadChecks108 == LET s==EscalatingResourceContestScenario108("Specimen0163","Pay",0,"Pay",0,FALSE,FALSE) x==s.SchemaAtom187 paid==x.chosen afterPayment==x.afterPayment changedBase==[afterPayment EXCEPT !.objects[21].deployed=TRUE,!.activeAbilities=@ \cup {2100}] changed==EscalatingResourceContestAt108(changedBase,paid,150) cp==EscalatingResourceContestCheckpoint108(paid,changed,5202) ready==[paid EXCEPT !.phase="SetStrength",!.checkpoints=@ \cup {5202}] current==EscalatingResourceContestAt108(EscalatingResourceContestCheckpointWorld108(changed,cp,EscalatingResourceContestLedger108(cp)),ready,151) raised==EscalatingResourceContestEstablished108(ready,1) next==EscalatingResourceContestAt108(current,raised,152) event==EscalatingResourceContestResultEvent108(raised,next,9010) IN /\ DrainEscalatingResourceContestCheckpoint108(paid,ready,EscalatingResourceContestCheckpointWorld108(changed,cp,EscalatingResourceContestLedger108(cp)),CardFacts10,cp,EscalatingResourceContestLedger108(cp),<<>>,paid.order) /\ EstablishEscalatingResourceContestStrength108(ready,raised,current,CardFacts10,LinkBaseFixture107(current),current.linkDeclarations,LinkReadFixture107(current),1) /\ raised.strengths["SideB"].value=1 /\ ~EstablishEscalatingResourceContestStrength108(ready,EscalatingResourceContestEstablished108(ready,0),current,CardFacts10,LinkBaseFixture107(x.readyWorld),x.readyWorld.linkDeclarations,LinkReadFixture107(x.readyWorld),0) /\ DetermineEscalatingResourceContest108(raised,EscalatingResourceContestDetermined108(raised,event),next,next.objects,9010,event) /\ ~DetermineEscalatingResourceContest108(raised,EscalatingResourceContestDetermined108(raised,event),next,Without101(next.objects,{1}),9010,event) EscalatingResourceContestSnapshot108(id,checkpoint,point,definitions,world) == [id |-> id,checkpointId |-> checkpoint,point |-> point,definitions |-> definitions,objects |-> world.objects, present |-> {definitions[key].syntax.id : key \in DOMAIN definitions}, ordinaryActivity |-> [key \in DOMAIN definitions |-> IF definitions[key].syntax.source.object \in DOMAIN world.objects THEN DefaultActive([world.objects[definitions[key].syntax.source.object] EXCEPT !.card=LinkDefinition107(world,world.objects[definitions[key].syntax.source.object])],world.started,CardFacts10) ELSE FALSE], cardActivity |-> [object \in DOMAIN world.objects |-> IF world.objects[object].form="Counter" THEN world.objects[object].kind="SchemaAtom043" ELSE DefaultActive([world.objects[object] EXCEPT !.card=LinkDefinition107(world,world.objects[object])],world.started,CardFacts10)], activationEpoch |-> [key \in DOMAIN definitions |-> 0],activationSerial |-> 0,activity |-> ActivityContext9,points |-> [p \in SetupPlayers |-> 0], progress |-> [object \in DOMAIN world.objects |-> 0],link |-> [p \in SetupPlayers |-> IF p="SideB" THEN LinkReadFixture107(world).value ELSE 0], exposureMarkers |-> [p \in SetupPlayers |-> 0],objectiveCompletionEvents |-> {},usedObjects |-> world.usedObjects,holds |-> Empty10,effects |-> Empty10] EscalatingResourceContestOccurrenceBase108(id,kind,object,actor,side,snapshot,effect) == [id |-> id,kind |-> kind,object |-> object,actor |-> actor,side |-> side,snapshot |-> snapshot,effectId |-> effect, movement |-> [tag |-> "NoValue",oldObject |-> 0,newObject |-> 0,beforeSnapshot |-> snapshot],scopeKind |-> "Global", scopeDefinition |-> [ability |-> 0,source |-> RuleAbilitySource9("NoValue")],structure |-> NoTimingRef9,step |-> "NoValue",traversal |-> NoTraversal6,siteInspection |-> [traversalId |-> 0,origin |-> "NoValue"]] EscalatingResourceContestAssociatedEvent108(frame,a,snapshot) == ReplacementOverlay99(EscalatingResourceContestOccurrenceBase108(frame.resultEvent.id*10+a.id,"EscalatingResourceContestAssociatedResult",frame.packet.source.object,"SideA","SideA",snapshot,frame.resultEvent.id), [scopeKind |-> "Ability",scopeDefinition |-> ConditionalKey96(a.definition),escalatingResourceContestId |-> frame.id,rawResultId |-> frame.resultEvent.id, escalatingResourceContestStrength |-> frame.resultEvent.escalatingResourceContestStrength,linkStrength |-> frame.resultEvent.linkStrength,result |-> frame.result]) EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) == LET stable==ConditionalActivityLedger96(before,definitions,cp.processingSnapshot) ids=={allocation[key] : key \in DOMAIN allocation} IN [stable EXCEPT !.activationEpoch=cp.processingSnapshot.activationEpoch,!.lastCheckpoint=cp.id,!.checkpointIds=@ \cup {cp.id}, !.checkpoints=ReplacementOverlay99(@,[id \in {cp.id} |-> [caller |-> cp.caller]]),!.serial=cp.serial,!.lastSnapshot=cp.processingSnapshot, !.processed=@ \cup DOMAIN cp.occurrences,!.instances=ReplacementOverlay99(@,[id \in ids |-> LET key==CHOOSE key \in DOMAIN allocation : allocation[key]=id IN NewConditionalInstance96(id,definitions[key.definition],cp,key.occurrence,bindings[key].windowId,bindings[key].group)])] EscalatingResourceContestRecognition108(definitions,world,events,conditions,id,caller) == LET previous==EscalatingResourceContestSnapshot108(world.id,0,"PreviousCheckpoint",definitions,world) before==NewConditionalLedger96(previous) begin==EscalatingResourceContestSnapshot108(world.id,id,"CheckpointBeginning",definitions,world) current==[begin EXCEPT !.point="ProcedureCodee605a78f5d5e"] cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> id,previousCheckpoint |-> 0,serial |-> 1, previousSnapshot |-> previous,beginSnapshot |-> begin,processingSnapshot |-> current,stepSerial |-> 0,occurrences |-> events,caller |-> caller] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> 100000+key.definition.ability*100000+key.occurrence] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 7200,group |-> 7300,checkpointId |-> id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) IN [before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings] EscalatingResourceContestRecognitionValid108(q) == ProcessConditionalCheckpoint96(q.before,q.after,<<>>,<<>>,q.definitions,q.cp,q.conditions,q.allocation,q.bindings,Empty10,Empty10,{}) EscalatingResourceContestResultRecognition108(frame,world) == LET associations==frame.packet.associations definitions==[key \in {ConditionalKey96(associations[id].definition) : id \in DOMAIN associations} |-> associations[CHOOSE id \in DOMAIN associations : ConditionalKey96(associations[id].definition)=key].definition] snapshot==EscalatingResourceContestSnapshot108(frame.resultEvent.snapshotId,0,"EscalatingResourceContestDetermination",definitions,world) events==[id \in {frame.resultEvent.id*10+a : a \in DOMAIN associations} |-> EscalatingResourceContestAssociatedEvent108(frame,associations[CHOOSE a \in DOMAIN associations : frame.resultEvent.id*10+a=id],snapshot)] conditions==[key \in DOMAIN definitions |-> LET a==associations[CHOOSE a \in DOMAIN associations : ConditionalKey96(associations[a].definition)=key] IN [id \in DOMAIN events |-> EscalatingResourceContestAssociatedStipulation108(frame,a,events[id])]] IN EscalatingResourceContestRecognition108(definitions,world,events,conditions,6100,[kind |-> "EscalatingResourceContestInstructionEndObservation",escalatingResourceContestId |-> frame.id,caller |-> frame.caller]) EscalatingResourceContestResultRecognitionChecks108 == /\ \A ca \in {0,3}, ra \in {0,3} : LET s==EscalatingResourceContestScenario108("Specimen0229","Pay",ca,"Pay",ra,FALSE,FALSE) frame==s.determined q==EscalatingResourceContestResultRecognition108(frame,s.SchemaAtom187.world) a==frame.packet.associations[2] event==q.cp.occurrences[90022] key==[definition |-> ConditionalKey96(a.definition),occurrence |-> event.id] instance==q.after.instances[q.allocation[key]] condition==[tag |-> "EscalatingResourceContestAssociatedInstructionCondition",escalatingResourceContestId |-> 51,occurrence |-> event.id, definition |-> instance.definition,instance |-> instance.member.id,holds |-> ca>=3] IN /\ EscalatingResourceContestScenarioValid108(s) /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(q.candidates)=IF s.determined.result="Successful" THEN 2 ELSE 1 /\ \A id \in DOMAIN q.after.instances : q.after.instances[id].status="Pending" /\ EscalatingResourceContestAssociatedCandidate108(frame,a,event,EscalatingResourceContestAssociatedStipulation108(frame,a,event)) /\ EscalatingResourceContestAssociatedInstructionCondition108(frame,a,event,instance,condition) /\ condition.holds=(frame.resultEvent.escalatingResourceContestStrength>=5) /\ EscalatingResourceContestAssociatedMatches108(frame,a) /\ ~EscalatingResourceContestAssociatedMatches108(s.start.frame,a) /\ ~EscalatingResourceContestAssociatedCandidate108(frame,a,[event EXCEPT !.escalatingResourceContestId=52],EscalatingResourceContestAssociatedStipulation108(frame,a,event)) /\ ~EscalatingResourceContestAssociatedCandidate108(frame,a,[event EXCEPT !.scopeDefinition=ConditionalKey96(frame.packet.associations[1].definition)],EscalatingResourceContestAssociatedStipulation108(frame,a,event)) /\ ~EscalatingResourceContestAssociatedInstructionCondition108(frame,a,[event EXCEPT !.rawResultId=999],instance,condition) /\ s.SchemaAtom187.world.objects=s.determinedWorld.objects /\ LET s==EscalatingResourceContestScenario108("Specimen0229","Pay",3,"Pay",3,FALSE,FALSE) frame==s.determined lost==[s.SchemaAtom187.world EXCEPT !.objects=Without101(@,{900})] q==EscalatingResourceContestResultRecognition108(frame,lost) IN /\ frame.result="Unsuccessful" /\ frame.resultEvent.escalatingResourceContestStrength=5 /\ EscalatingResourceContestAssociatedBodyGate108(frame,frame.packet.associations[2]) /\ EscalatingResourceContestRecognitionValid108(q) /\ q.candidates={} /\ q.after.instances=Empty10 EscalatingResourceContestGlobalRecognition108(world,definition,raw,kind,object,actor,side,occurrenceId,caller,positiveRequired) == LET definitions==[key \in {ConditionalKey96(definition)} |-> definition] snapshot==EscalatingResourceContestSnapshot108(world.id,0,"EscalatingResourceContestEventOccurrence",definitions,world) event==ReplacementOverlay99(EscalatingResourceContestOccurrenceBase108(occurrenceId,kind,object,actor,side,snapshot,occurrenceId), [escalatingResourceContestId |-> raw.escalatingResourceContestId,amount |-> IF "amount" \in DOMAIN raw THEN raw.amount ELSE 0]) events==[id \in {event.id} |-> event] conditions==[key \in DOMAIN definitions |-> [id \in DOMAIN events |-> [tag |-> "ConditionalTriggerStipulations",ability |-> definition.syntax.id,source |-> definition.syntax.source,occurrence |-> id,snapshotId |-> snapshot.id, results |-> [r \in definition.triggerRequirements |-> ~positiveRequired \/ event.amount>0]]]] IN EscalatingResourceContestRecognition108(definitions,world,events,conditions,6200,caller) EscalatingResourceContestReactionProjectionChecks108 == LET initial==EscalatingResourceContestWorld108("Specimen0163",{},TRUE,TRUE,TRUE) emptySideA==[initial EXCEPT !.objects=Without101(@,2000..2004),!.controllers=Without101(@,2000..2004)] ctx==EscalatingResourceContestContext108(emptySideA,2,EscalatingResourceContestSpecimen0101Associations108) start==EscalatingResourceContestStart108(emptySideA,ctx,51,9001) initialCP==EscalatingResourceContestCheckpoint108(start.frame,start.world,5100) choose==EscalatingResourceContestChoose108(start.frame,<<"SideB","SideA">>,5100) current==EscalatingResourceContestAt108(EscalatingResourceContestCheckpointWorld108(start.world,initialCP,EscalatingResourceContestLedger108(initialCP)),choose,101) paying==EscalatingResourceContestReadyWorld108(current,choose,2,8001) paid==EscalatingResourceContestPaid108(choose,"SideB",2,8001) afterPay==EscalatingResourceContestAt108([paying EXCEPT !.objects=Without101(@,{2100,2101}),!.controllers=Without101(@,{2100,2101})],paid,102) raw==CHOOSE e \in EscalatingResourceContestSpendEvents108(choose,paying,"SideB",2,8001) : TRUE baseDef==ReboundConditionalDefinition96(EscalatingResourceContestConditional108(9701,"Specimen0154","Successful"),70) definition==[baseDef EXCEPT !.trigger.kinds={"EscalatingResourceContestResourceUnitsSpent"},!.trigger.actor="SideB"] q==EscalatingResourceContestGlobalRecognition108(afterPay,definition,raw,"EscalatingResourceContestResourceUnitsSpent",0,"SideB","SideB",9050,EscalatingResourceContestCheckpointCaller108(paid),TRUE) gained==[id \in {2999} |-> ExposureMarkerTokenFixture105("ResourceUnit","SideAResourceUnits",0,FALSE)] afterGain==EscalatingResourceContestAt108([afterPay EXCEPT !.objects=ReplacementOverlay99(@,gained),!.controllers=ReplacementOverlay99(@,[id \in {2999} |-> "SideA"])],paid,103) completeLedger==[q.after EXCEPT !.instances=[id \in DOMAIN @ |-> [@[id] EXCEPT !.status="Complete"]]] cp==[EscalatingResourceContestCheckpoint108(paid,afterPay,6200) EXCEPT !.recognition=q.cp,!.recognized=CheckpointMemberMap103(completeLedger,6200)] returnWorld==EscalatingResourceContestCheckpointWorld108(afterGain,cp,completeLedger) ready==[paid EXCEPT !.phase="SetStrength",!.checkpoints=@ \cup {6200}] readyWorld==EscalatingResourceContestAt108(returnWorld,ready,104) sideBStrength==EscalatingResourceContestEstablished108(ready,0) sideAWorld==EscalatingResourceContestAt108(readyWorld,sideBStrength,105) sideAPaying==EscalatingResourceContestReadyWorld108(sideAWorld,sideBStrength,1,7001) noGain==[sideAPaying EXCEPT !.objects=Without101(@,{2999}),!.controllers=Without101(@,{2999})] IN /\ BeginEscalatingResourceContest108(ctx,ctx.currentRef,emptySideA,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(ctx),start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ DrainEscalatingResourceContestCheckpoint108(start.frame,choose,EscalatingResourceContestCheckpointWorld108(start.world,initialCP,EscalatingResourceContestLedger108(initialCP)),CardFacts10,initialCP,EscalatingResourceContestLedger108(initialCP),<<>>,<<"SideB","SideA">>) /\ EscalatingResourceContestPayValid108(choose,paying,2,{2100,2101},8001) /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(q.candidates)=1 /\ BankMintProjection4(afterPay.objects,afterGain.objects,gained,raw.amount \div 2,"ResourceUnit",afterPay.usedObjects,[kind |-> "Zone",zone |-> "Bank"],TRUE,TRUE) /\ cp.snapshotId=102 /\ afterGain.id=103 /\ cp.beginSnapshotId=q.cp.beginSnapshot.id /\ cp.snapshotId=q.cp.processingSnapshot.id /\ ~DrainEscalatingResourceContestCheckpoint108(paid,ready,[returnWorld EXCEPT !.checkpointFrames[6200].caller.transactionId=999],CardFacts10,cp,completeLedger,<<>>,paid.order) /\ ~DrainEscalatingResourceContestCheckpoint108(paid,ready,[returnWorld EXCEPT !.checkpointLedger=q.after],CardFacts10,cp,completeLedger,<<>>,paid.order) /\ ~DrainEscalatingResourceContestCheckpoint108(paid,ready,EscalatingResourceContestCheckpointWorld108(afterGain,cp,q.after),CardFacts10,cp,q.after,<<>>,paid.order) /\ DrainEscalatingResourceContestCheckpoint108(paid,ready,returnWorld,CardFacts10,cp,completeLedger,<<>>,paid.order) /\ EscalatingResourceContestSetValid108(ready,readyWorld,0) /\ sideBStrength.strengths["SideB"].value=2 /\ sideBStrength.nextPlayer="SideA" /\ EscalatingResourceContestPayValid108(sideBStrength,sideAPaying,1,{2999},7001) /\ ~EscalatingResourceContestPayValid108(sideBStrength,noGain,1,{2999},7001) EscalatingResourceContestInitiationReactionChecks108 == LET initial==EscalatingResourceContestWorld108("Specimen0163",{},TRUE,FALSE,FALSE) trimmed==[initial EXCEPT !.objects=Without101(@,2100..2104),!.controllers=Without101(@,2100..2104)] active==[trimmed EXCEPT !.objects[630].zone="Play",!.objects[630].deployed=TRUE,!.activeAbilities=@ \cup {9801}, !.abilitySources=ReplacementOverlay99(@,[id \in {9801} |-> ObjectAbilitySource9(630)])] ctx==EscalatingResourceContestContext108(active,2,Empty10) start==EscalatingResourceContestStart108(active,ctx,51,9001) d==[ReboundConditionalDefinition96(EscalatingResourceContestConditional108(9801,"Specimen0182","AnyResult"),630) EXCEPT !.trigger.kinds={"EscalatingResourceContestInitiated"}] q==EscalatingResourceContestGlobalRecognition108(start.world,d,start.event,"EscalatingResourceContestInitiated",900,"SideA","SideA",9001,EscalatingResourceContestCheckpointCaller108(start.frame),FALSE) added==[id \in {2199} |-> ExposureMarkerTokenFixture105("ResourceUnit","SideBResourceUnits",0,FALSE)] afterGain==EscalatingResourceContestAt108([start.world EXCEPT !.objects=ReplacementOverlay99(@,added),!.controllers=ReplacementOverlay99(@,[id \in {2199} |-> "SideB"])],start.frame,101) completeLedger==[q.after EXCEPT !.instances=[id \in DOMAIN @ |-> [@[id] EXCEPT !.status="Complete"]]] cp==[EscalatingResourceContestCheckpoint108(start.frame,start.world,6200) EXCEPT !.recognition=q.cp,!.recognized=CheckpointMemberMap103(completeLedger,6200)] returnedWorld==EscalatingResourceContestCheckpointWorld108(afterGain,cp,completeLedger) choose==EscalatingResourceContestChoose108(start.frame,<<"SideA","SideB">>,6200) firstWorld==EscalatingResourceContestAt108(returnedWorld,choose,102) sideA==EscalatingResourceContestOneChoice108(firstWorld,choose,"Decline",0,{},0) sideBWorld==EscalatingResourceContestReadyWorld108(sideA.world,sideA.after,1,8001) IN /\ BeginEscalatingResourceContest108(ctx,ctx.currentRef,active,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(ctx),start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(q.candidates)=1 /\ BankMintProjection4(start.world.objects,afterGain.objects,added,1,"ResourceUnit",start.world.usedObjects,[kind |-> "Zone",zone |-> "Bank"],TRUE,TRUE) /\ cp.beginSnapshotId=q.cp.beginSnapshot.id /\ cp.snapshotId=q.cp.processingSnapshot.id /\ cp.snapshotId=100 /\ afterGain.id=101 /\ ~DrainEscalatingResourceContestCheckpoint108(start.frame,choose,EscalatingResourceContestCheckpointWorld108(afterGain,cp,q.after),CardFacts10,cp,q.after,<<>>,<<"SideA","SideB">>) /\ DrainEscalatingResourceContestCheckpoint108(start.frame,choose,returnedWorld,CardFacts10,cp,completeLedger,<<>>,<<"SideA","SideB">>) /\ EscalatingResourceContestOneChoiceValid108(sideA) /\ EscalatingResourceContestPayValid108(sideA.after,sideBWorld,1,{2199},8001) EscalatingResourceContestSideBSourceChecks108 == /\ \A card \in {"Specimen0213","Specimen0052"} : LET base==IF card="Specimen0213" THEN 5 ELSE 1 initial==EscalatingResourceContestWorld108("Specimen0229",{},FALSE,FALSE,FALSE) w==[initial EXCEPT !.objects[900]=EscalatingResourceContestCard108(card,TRUE,FALSE),!.controllers[900]="SideB",!.definitions=ReplacementOverlay99(@,[id \in {card} |-> card]), !.printedLinkAbilities=IF card="Specimen0213" THEN ReplacementOverlay99(@,[id \in {900} |-> 9900]) ELSE @, !.activeAbilities=IF card="Specimen0213" THEN @ \cup {9900} ELSE @] effect==[EscalatingResourceContestAtom108(base,Empty10) EXCEPT !.sourceCard=card,!.sourceSHA=CardFacts10[card].sourceSHA] ctx==[EscalatingResourceContestContext108(w,base,Empty10) EXCEPT !.templates=[id \in {1} |-> effect],!.state.effects=[id \in {1} |-> effect],!.actualEffects=[id \in {1} |-> effect]] start==EscalatingResourceContestStart108(w,ctx,51,9001) cp==EscalatingResourceContestCheckpoint108(start.frame,start.world,5100) choose==EscalatingResourceContestChoose108(start.frame,<<"SideA","SideB">>,5100) IN /\ BeginEscalatingResourceContest108(ctx,ctx.currentRef,w,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(ctx),start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ DrainEscalatingResourceContestCheckpoint108(start.frame,choose,EscalatingResourceContestCheckpointWorld108(start.world,cp,EscalatingResourceContestLedger108(cp)),CardFacts10,cp,EscalatingResourceContestLedger108(cp),<<>>,<<"SideA","SideB">>) /\ choose.nextPlayer="SideA" /\ w.controllers[900]="SideB" /\ choose.packet.base=base EscalatingResourceContestBirthChecks108 == LET w==EscalatingResourceContestWorld108("Specimen0229",{},TRUE,FALSE,FALSE) context==EscalatingResourceContestContext108(w,2,EscalatingResourceContestSpecimen0101Associations108) start==EscalatingResourceContestStart108(w,context,51,9001) IN /\ BeginEscalatingResourceContest108(context,context.currentRef,w,1,CardFacts10,51,9001,EscalatingResourceContestPacketFixture108(context),start.frame,start.world.escalatingResourceContestFrames,start.history,start.event) /\ start.frame.ordinal=1 /\ start.frame.phase="InitialCheckpoint" EmptyDefinitionFixture109(card,host) == LET d==EscalatingResourceContestConditional108(19001,card,"AnyResult") IN [d EXCEPT !.syntax.source=ObjectAbilitySource9(host),!.activity.source=ObjectAbilitySource9(host), !.syntax.units= <>, !.primaryKind="Static",!.trigger.kinds={}] LoadLinkFixture109(world,card,host,kind,id) == [id |-> id,host |-> host,physical |-> world.objects[host].card,card |-> card,sourceSHA |-> CardFacts10[card].sourceSHA, kind |-> kind,loadDefinition |-> 19000,emptyDefinition |-> EmptyDefinitionFixture109(card,host)] LoadWorld109(card,kind) == LET b==LinkDeclaredWorld107(LinkWorld107("Specimen0163",{},FALSE)) objects==ReplacementOverlay99(b.objects,[id \in {900} |-> EscalatingResourceContestCard108(card,TRUE,CardFacts10[card].side="SideA")]) w==ReplacementOverlay99([b EXCEPT !.objects=objects,!.definitions=ReplacementOverlay99(@,[id \in {card} |-> card]), !.controllers=ReplacementOverlay99(@,[id \in {900} |-> CardFacts10[card].side])], [started |-> TRUE,outcome |-> "Playing",usedObjects |-> DOMAIN objects,nextCounterObject |-> 1000,loadHistory |-> Empty10, completedCounterInstructions |-> {},counterEventIds |-> {},loadLinks |-> Empty10]) IN [w EXCEPT !.loadLinks=[id \in {1} |-> LoadLinkFixture109(w,card,900,kind,1)]] CounterContextFixture109(world,operation,kind,amount,stamp) == LET card==LinkDefinition107(world,world.objects[900]) effect==[id |-> 1,kind |-> operation,value |-> amount,actor |-> CardFacts10[card].side,baseOrigin |-> ObjectAbilitySource9(900), target |-> 900,counterKind |-> kind,counterKinds |-> {kind},loadDefinition |-> IF operation="LoadCounters" THEN 19000 ELSE 0,sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA] IN [id |-> 109000+stamp,phase |-> "Resolving",currentRef |-> DamageReference104(0),currentWorld |-> world.id, templates |-> [id \in {1} |-> effect],state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> [id \in {1} |-> effect]] CounterTraversalDefinition109(world,operation,kind,amount,stamp,selected,loadDefinition) == LET context==[CounterContextFixture109(world,operation,kind,amount,stamp) EXCEPT !.templates[1].loadDefinition=loadDefinition,!.state.effects[1].loadDefinition=loadDefinition,!.actualEffects[1].loadDefinition=loadDefinition] e==context.actualEffects[1] created==IF operation="RemoveCounters" THEN {} ELSE world.nextCounterObject..(world.nextCounterObject+amount-1) added==[id \in created |-> LoadedCounterToken109(kind,world.objects[900].zone,900,e.actor)] objects==IF operation="RemoveCounters" THEN Without101(world.objects,selected) ELSE ReplacementOverlay99(world.objects,added) next==world.nextCounterObject+Cardinality(created) eventId==1090000+stamp h==[tag |-> "CompletedLoad",host |-> 900,kind |-> kind,loadDefinition |-> loadDefinition,reference |-> context.currentRef,sourceCard |-> e.sourceCard, sourceSHA |-> e.sourceSHA,amount |-> amount,createdCounterIds |-> created,snapshotId |-> world.id] history==IF operation="LoadCounters" THEN ReplacementOverlay99(world.loadHistory,[id \in {eventId} |-> h]) ELSE world.loadHistory completed==world.completedCounterInstructions \cup {CounterInstructionKey109(context,context.currentRef,1)} event==[tag |-> "HostedCounterInstructionComplete",id |-> eventId,operation |-> operation,reference |-> context.currentRef,host |-> 900, kind |-> kind,amount |-> amount,selected |-> selected,created |-> created,snapshotId |-> world.id,complete |-> TRUE] after==[world EXCEPT !.id=@+1,!.objects=objects,!.controllers=ReplacementOverlay99(Without101(@,selected),[id \in created |-> world.controllers[900]]), !.usedObjects=@ \cup DOMAIN objects,!.nextCounterObject=next,!.loadHistory=history,!.completedCounterInstructions=completed,!.counterEventIds=@ \cup {eventId}] IN [before |-> world,after |-> after,context |-> context,added |-> added,selected |-> selected,eventId |-> eventId,event |-> event] CounterTraversalFixture109(world,operation,kind,amount,stamp,selected) == CounterTraversalDefinition109(world,operation,kind,amount,stamp,selected,IF operation="LoadCounters" THEN 19000 ELSE 0) CounterTraversalValid109(x) == ExecuteBankHostedCounterInstruction109(x.context,x.context.currentRef,x.before,1,CardFacts10,x.after.objects,x.after.loadHistory,x.after.completedCounterInstructions, x.selected,x.added,x.after.nextCounterObject,x.eventId,x.event) EmptyReadFixture109(world,link) == [tag |-> "CurrentLinkedEmpty",snapshotId |-> world.id,linkId |-> link.id,host |-> link.host,physical |-> link.physical,kind |-> link.kind,loadDefinition |-> link.loadDefinition, linkedLoads |-> LinkedLoadIds109(world,link),effectiveCounterIds |-> HostedCounterIds109(world.objects,link.host,link.kind), empty |-> LinkedLoadIds109(world,link)#{} /\ HostedCounterIds109(world.objects,link.host,link.kind)={}] EmptyFixtureValid109(world) == ReadEmpty109(world,CardFacts10,world.loadLinks[1],EmptyReadFixture109(world,world.loadLinks[1])) EmptyWorldsValid109(worlds) == \A world \in worlds : \A id \in DOMAIN world.loadLinks : ReadEmpty109(world,CardFacts10,world.loadLinks[id],EmptyReadFixture109(world,world.loadLinks[id])) LoadAndEmptyChecks109 == /\ \A card \in {"Specimen0060","Specimen0067","Specimen0181","Specimen0199","Specimen0230"} : LET kind==IF card \in {"Specimen0060","Specimen0067"} THEN "ResourceUnit" ELSE IF card="Specimen0230" THEN "LiabilityMarker" ELSE "Power" amount==CASE card="Specimen0060" -> 3 [] card="Specimen0067" -> 8 [] card="Specimen0181" -> 4 [] card="Specimen0199" -> 3 [] OTHER -> 6 w==LoadWorld109(card,kind) loaded==CounterTraversalFixture109(w,"LoadCounters",kind,amount,1,{}) gone==CounterTraversalFixture109(loaded.after,"RemoveCounters",kind,amount+2,2,DOMAIN loaded.added) IN /\ EmptyFixtureValid109(w) /\ ~EmptyReadFixture109(w,w.loadLinks[1]).empty /\ CounterTraversalValid109(loaded) /\ Cardinality(DOMAIN loaded.added)=amount /\ EmptyFixtureValid109(loaded.after) /\ ~EmptyReadFixture109(loaded.after,loaded.after.loadLinks[1]).empty /\ CounterTraversalValid109(gone) /\ gone.after.loadHistory=loaded.after.loadHistory /\ EmptyFixtureValid109(gone.after) /\ EmptyReadFixture109(gone.after,gone.after.loadLinks[1]).empty /\ LET w==LoadWorld109("Specimen0060","ResourceUnit") loaded==CounterTraversalFixture109(w,"LoadCounters","ResourceUnit",3,1,{}) extra==CounterTraversalFixture109(loaded.after,"PlaceCounters","ResourceUnit",2,2,{}) originalsGone==CounterTraversalFixture109(extra.after,"RemoveCounters","ResourceUnit",3,3,DOMAIN loaded.added) allGone==CounterTraversalFixture109(originalsGone.after,"RemoveCounters","ResourceUnit",2,4,DOMAIN extra.added) refilled==CounterTraversalFixture109(allGone.after,"PlaceCounters","ResourceUnit",1,5,{}) emptyAgain==CounterTraversalFixture109(refilled.after,"RemoveCounters","ResourceUnit",1,6,DOMAIN refilled.added) reloaded==CounterTraversalFixture109(emptyAgain.after,"LoadCounters","ResourceUnit",3,7,{}) IN /\ EmptyWorldsValid109({w,loaded.after,extra.after,originalsGone.after,allGone.after,refilled.after,emptyAgain.after,reloaded.after}) /\ CounterTraversalValid109(extra) /\ CounterTraversalValid109(originalsGone) /\ CounterTraversalValid109(allGone) /\ CounterTraversalValid109(refilled) /\ CounterTraversalValid109(emptyAgain) /\ CounterTraversalValid109(reloaded) /\ ~EmptyReadFixture109(originalsGone.after,w.loadLinks[1]).empty /\ EmptyReadFixture109(allGone.after,w.loadLinks[1]).empty /\ ~EmptyReadFixture109(refilled.after,w.loadLinks[1]).empty /\ EmptyReadFixture109(emptyAgain.after,w.loadLinks[1]).empty /\ ~EmptyReadFixture109(reloaded.after,w.loadLinks[1]).empty /\ Cardinality(DOMAIN reloaded.after.loadHistory)=2 /\ DOMAIN loaded.after.loadHistory \subseteq DOMAIN reloaded.after.loadHistory /\ extra.after.loadHistory=loaded.after.loadHistory /\ emptyAgain.after.loadHistory=loaded.after.loadHistory UnloadedTypeChecks109 == LET w==LoadWorld109("Specimen0060","ResourceUnit") placedOnly==CounterTraversalFixture109(w,"PlaceCounters","ResourceUnit",3,1,{}) placedGone==CounterTraversalFixture109(placedOnly.after,"RemoveCounters","ResourceUnit",3,2,DOMAIN placedOnly.added) otherOnly==CounterTraversalFixture109(w,"PlaceCounters","Power",1,3,{}) otherGone==CounterTraversalFixture109(otherOnly.after,"RemoveCounters","Power",1,4,DOMAIN otherOnly.added) loaded==CounterTraversalFixture109(w,"LoadCounters","ResourceUnit",3,5,{}) other==CounterTraversalFixture109(loaded.after,"PlaceCounters","Power",1,6,{}) noResourceUnits==CounterTraversalFixture109(other.after,"RemoveCounters","ResourceUnit",3,7,DOMAIN loaded.added) foreignLoad==CounterTraversalDefinition109(loaded.after,"LoadCounters","Power",1,8,{},19002) emptied==CounterTraversalFixture109(foreignLoad.after,"RemoveCounters","ResourceUnit",3,9,DOMAIN loaded.added) IN /\ EmptyWorldsValid109({w,placedOnly.after,placedGone.after,otherOnly.after,otherGone.after,loaded.after,other.after,noResourceUnits.after,foreignLoad.after,emptied.after}) /\ CounterTraversalValid109(placedOnly) /\ CounterTraversalValid109(placedGone) /\ CounterTraversalValid109(otherOnly) /\ CounterTraversalValid109(otherGone) /\ ~EmptyReadFixture109(placedGone.after,w.loadLinks[1]).empty /\ ~EmptyReadFixture109(otherGone.after,w.loadLinks[1]).empty /\ CounterTraversalValid109(other) /\ CounterTraversalValid109(noResourceUnits) /\ CounterTraversalValid109(foreignLoad) /\ CounterTraversalValid109(emptied) /\ EmptyReadFixture109(noResourceUnits.after,w.loadLinks[1]).empty /\ Cardinality(HostedCounterIds109(noResourceUnits.after.objects,900,"Power"))=1 /\ EmptyReadFixture109(emptied.after,w.loadLinks[1]).empty /\ Cardinality(DOMAIN emptied.after.loadHistory)=2 /\ CounterInstructionDisposition109(CounterContextFixture109(w,"LoadCounters","ResourceUnit",0,10).actualEffects[1])="UnsupportedZeroLoad" /\ CounterInstructionDisposition109([CounterContextFixture109(w,"LoadCounters","ResourceUnit",3,10).actualEffects[1] EXCEPT !.counterKinds={"ResourceUnit","Power"}])="UnsupportedCounterTypeOrMultiType" LoadFreshnessChecks109 == LET w==LoadWorld109("Specimen0060","ResourceUnit") x==CounterTraversalFixture109(w,"LoadCounters","ResourceUnit",3,1,{}) gone==CounterTraversalFixture109(x.after,"RemoveCounters","ResourceUnit",3,2,DOMAIN x.added) link==w.loadLinks[1] h==CHOOSE id \in DOMAIN gone.after.loadHistory : TRUE ordinary==CounterTraversalFixture109(w,"PlaceCounters","ResourceUnit",0,3,{}) IN /\ CounterTraversalValid109(ordinary) /\ ordinary.after.loadHistory=Empty10 /\ ~CounterInstruction109([x.context EXCEPT !.currentWorld=99],x.context.currentRef,w,1,CardFacts10) /\ ~CounterInstruction109([x.context EXCEPT !.actualEffects[1].sourceSHA="wrong",!.state.effects[1].sourceSHA="wrong"],x.context.currentRef,w,1,CardFacts10) /\ ~ExecuteBankHostedCounterInstruction109(x.context,x.context.currentRef,[w EXCEPT !.completedCounterInstructions=x.after.completedCounterInstructions],1,CardFacts10, x.after.objects,x.after.loadHistory,x.after.completedCounterInstructions,x.selected,x.added,x.after.nextCounterObject,x.eventId,x.event) /\ ~ReadEmpty109(gone.after,CardFacts10,[link EXCEPT !.sourceSHA="wrong"],EmptyReadFixture109(gone.after,link)) /\ ~ReadEmpty109(gone.after,CardFacts10,link,[EmptyReadFixture109(gone.after,link) EXCEPT !.snapshotId=99]) /\ \A field \in {"host","loadDefinition"} : LET altered==[gone.after EXCEPT !.loadHistory[h]=[key \in DOMAIN @ |-> IF key=field THEN 777 ELSE @[key]]] IN ~EmptyReadFixture109(altered,link).empty /\ ~EmptyReadFixture109([gone.after EXCEPT !.loadHistory[h].reference.source=ObjectAbilitySource9(901)],link).empty /\ ~EmptyReadFixture109([gone.after EXCEPT !.loadHistory[h].sourceSHA="wrong"],link).empty /\ ~ExecuteBankHostedCounterInstruction109(x.context,x.context.currentRef,[w EXCEPT !.usedObjects=@ \cup DOMAIN x.added],1,CardFacts10, x.after.objects,x.after.loadHistory,x.after.completedCounterInstructions,x.selected,x.added,x.after.nextCounterObject,x.eventId,x.event) LoadIncarnationChecks109 == LET w==LoadWorld109("Specimen0060","ResourceUnit") loaded==CounterTraversalFixture109(w,"LoadCounters","ResourceUnit",3,1,{}) gone==CounterTraversalFixture109(loaded.after,"RemoveCounters","ResourceUnit",3,2,DOMAIN loaded.added) old==gone.after bDiscardPileRow==[old.objects[900] EXCEPT !.zone="SideBDiscard",!.loc=0,!.deployed=FALSE,!.activated=FALSE,!.marks={}] bDiscardPileObjects==ReplacementOverlay99(Without101(old.objects,{900}),[id \in {901} |-> bDiscardPileRow]) bDiscardPileWorld==[old EXCEPT !.objects=bDiscardPileObjects,!.controllers=ReplacementOverlay99(Without101(@,{900}),[id \in {901} |-> "SideB"]),!.usedObjects=@ \cup {901}] incoming==[bDiscardPileRow EXCEPT !.zone="Play"] incomingObjects==ReplacementOverlay99(Without101(bDiscardPileObjects,{901}),[id \in {902} |-> incoming]) deployed==[bDiscardPileWorld EXCEPT !.objects=ReplacementOverlay99(incomingObjects,[id \in {902} |-> [incoming EXCEPT !.deployed=TRUE]]), !.controllers=ReplacementOverlay99(Without101(@,{901}),[id \in {902} |-> "SideB"]),!.usedObjects=@ \cup {902},!.loadLinks=Empty10] new==[deployed EXCEPT !.loadLinks=[id \in {1} |-> LoadLinkFixture109(deployed,"Specimen0060",902,"ResourceUnit",1)]] secondPhysical=="Specimen0060-copy-2" copyRow==[old.objects[900] EXCEPT !.card=secondPhysical] copied==[old EXCEPT !.objects=ReplacementOverlay99(@,[id \in {903} |-> copyRow]),!.definitions=ReplacementOverlay99(@,[card \in {secondPhysical} |-> "Specimen0060"]), !.controllers=ReplacementOverlay99(@,[id \in {903} |-> "SideB"]),!.loadLinks=Empty10] copies==[copied EXCEPT !.loadLinks=[id \in {1,2} |-> LoadLinkFixture109(copied,"Specimen0060",IF id=1 THEN 900 ELSE 903,"ResourceUnit",id)]] IN /\ EmptyWorldsValid109({new,copies}) /\ CardBatchTransfer8(old.objects,bDiscardPileObjects,{900},[id \in {900} |-> 901],old.usedObjects,"SideBDiscard","Up",[id \in {900} |-> 0]) /\ CardBatchTransfer8(bDiscardPileObjects,incomingObjects,{901},[id \in {901} |-> 902],bDiscardPileWorld.usedObjects,"Play","Up",[id \in {901} |-> 0]) /\ old.loadHistory=new.loadHistory /\ ReadEmpty109(new,CardFacts10,new.loadLinks[1],EmptyReadFixture109(new,new.loadLinks[1])) /\ ~EmptyReadFixture109(new,new.loadLinks[1]).empty /\ new.objects[902].card=old.objects[900].card /\ EmptyReadFixture109(copies,copies.loadLinks[1]).empty /\ ~EmptyReadFixture109(copies,copies.loadLinks[2]).empty /\ LET rexWorld==LoadWorld109("Specimen0199","Power") rexLoaded==CounterTraversalFixture109(rexWorld,"LoadCounters","Power",3,1,{}) rexGone==CounterTraversalFixture109(rexLoaded.after,"RemoveCounters","Power",3,2,DOMAIN rexLoaded.added) deactivationzed==[rexGone.after EXCEPT !.objects[900].activated=FALSE] reactivationzed==[deactivationzed EXCEPT !.objects[900].activated=TRUE] again==CounterTraversalFixture109(reactivationzed,"LoadCounters","Power",3,3,{}) IN /\ EmptyWorldsValid109({deactivationzed,reactivationzed,again.after}) /\ EmptyReadFixture109(deactivationzed,deactivationzed.loadLinks[1]).empty /\ EmptyReadFixture109(reactivationzed,reactivationzed.loadLinks[1]).empty /\ CounterTraversalValid109(again) /\ Cardinality(DOMAIN again.after.loadHistory)=2 LoadEffectiveCountChecks109 == LET w==LoadWorld109("Specimen0181","Power") loaded==CounterTraversalFixture109(w,"LoadCounters","Power",4,1,{}) gone==CounterTraversalFixture109(loaded.after,"RemoveCounters","Power",4,2,DOMAIN loaded.added) virtual==[gone.after EXCEPT !.objects=ReplacementOverlay99(@,[id \in {2000} |-> [LoadedCounterToken109("Power","Play",900,"SideB") EXCEPT !.virtual=TRUE]])] attempt==CounterTraversalFixture109(virtual,"RemoveCounters","Power",1,3,{2000}) nested==[gone.after EXCEPT !.objects=ReplacementOverlay99(@,[id \in {2000,2001} |-> IF id=2000 THEN LoadedCounterToken109("SchemaAtom043","Play",900,"SideB") ELSE LoadedCounterToken109("Power","Play",2000,"SideB")])] converted==[gone.after EXCEPT !.objects=ReplacementOverlay99(@,[id \in {2000} |-> ReplacementOverlay99(LoadedCounterToken109("Power","Play",900,"SideB"), [card |-> "Specimen0046",owner |-> "SideA",properties |-> [kind |-> "Power"],marks |-> {"ConvertedPower"}])])] context==CounterContextFixture109(converted,"RemoveCounters","Power",1,4) successors==[id \in {2000} |-> 2100] objects==CheckpointRetireMap103(converted.objects,{2000},successors,CheckpointPrinted103,CheckpointOwners103,{}) event==MovementEvent8(9000,"Retire",{2000}) history==[id \in {9000} |-> event] normalized==[converted EXCEPT !.objects=objects] IN /\ EmptyWorldsValid109({virtual,nested,converted,normalized}) /\ ~EmptyReadFixture109(virtual,virtual.loadLinks[1]).empty /\ ~CounterTraversalValid109(attempt) /\ MovableHostedTokens109(virtual.objects,900,"Power")={} /\ EmptyReadFixture109(nested,nested.loadLinks[1]).empty /\ ~EmptyReadFixture109(converted,converted.loadLinks[1]).empty /\ HostedCounterExecutionDisposition109(converted,context.actualEffects[1])="RequiresConvertedCounterDeparture" /\ LiabilityMarkerCounterDeparture106(converted.objects,objects,{2000},successors,DOMAIN converted.objects,CheckpointPrinted103,CheckpointOwners103,{},9000,Empty10,history,{event}) /\ EmptyReadFixture109(normalized,normalized.loadLinks[1]).empty /\ normalized.loadHistory=converted.loadHistory /\ objects[2100].form="Card" /\ objects[2100].zone="SideADiscard" /\ objects[2100].marks={} EmptySnapshot109(world,checkpoint,point,definitions,ledger) == LET raw==ReplacementOverlay99(EscalatingResourceContestSnapshot108(world.id,checkpoint,point,definitions,world),[loadState |-> LoadState109(world)]) IN SnapshotWithConditionalRegistry96([raw EXCEPT !.activationEpoch=ConditionalEpochMap96(ledger,definitions),!.activationSerial=ledger.activationSerial, !.usedObjects=@ \cup ledger.lastSnapshot.usedObjects],ledger) EmptySeed109(world) == LET d==world.loadLinks[1].emptyDefinition definitions==[key \in {ConditionalKey96(d)} |-> d] initial==ReplacementOverlay99(EscalatingResourceContestSnapshot108(world.id,0,"PreviousCheckpoint",definitions,world),[loadState |-> LoadState109(world)]) IN NewConditionalLedger96(initial) EmptyRecognition109(before,beginWorld,currentWorld,id) == LET link==beginWorld.loadLinks[1] d==link.emptyDefinition definitions==[key \in {ConditionalKey96(d)} |-> d] begin==EmptySnapshot109(beginWorld,id,"CheckpointBeginning",definitions,before) current==EmptySnapshot109(currentWorld,id,"ProcedureCodee605a78f5d5e",definitions,before) cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> id,previousCheckpoint |-> before.lastCheckpoint,serial |-> before.serial+1, previousSnapshot |-> before.lastSnapshot,beginSnapshot |-> begin,processingSnapshot |-> current,stepSerial |-> before.stepSerial, occurrences |-> Empty10,caller |-> [kind |-> "EmptyConditionCheckpoint",source |-> ObjectAbilitySource9(link.host)]] read==EmptyReadFixture109(beginWorld,link) truth==[tag |-> "ConditionalStaticTruth",ability |-> d.syntax.id,source |-> d.syntax.source,checkpointId |-> id,snapshotId |-> begin.id, condition |-> d.primaryCondition,holds |-> read.empty] conditions==[key \in DOMAIN definitions |-> [occurrence \in {0} |-> truth]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> id*100000+key.definition.ability] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 7200,group |-> 7300,checkpointId |-> id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) IN [before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings, beginWorld |-> beginWorld,link |-> link,read |-> read,truth |-> truth] EmptyRecognitionValid109(q) == /\ EmptyStaticTruth109(q.beginWorld,CardFacts10,q.link,q.cp,q.read,q.truth) /\ EscalatingResourceContestRecognitionValid108(q) EmptyStaticRecognitionChecks109 == LET w==LoadWorld109("Specimen0060","ResourceUnit") loaded==CounterTraversalFixture109(w,"LoadCounters","ResourceUnit",3,1,{}) gone==CounterTraversalFixture109(loaded.after,"RemoveCounters","ResourceUnit",3,2,DOMAIN loaded.added) empty==gone.after refilled==CounterTraversalFixture109(empty,"PlaceCounters","ResourceUnit",1,3,{}) initial==EmptyRecognition109(EmptySeed109(w),w,w,1) q==EmptyRecognition109(EmptySeed109(empty),empty,empty,1) filled==EmptyRecognition109(q.after,refilled.after,refilled.after,2) startNonempty==EmptyRecognition109(EmptySeed109(refilled.after),refilled.after,empty,3) startEmpty==EmptyRecognition109(EmptySeed109(empty),empty,refilled.after,4) inactive==[empty EXCEPT !.objects[900].face="Down"] notActive==EmptyRecognition109(EmptySeed109(empty),empty,inactive,5) instance==CHOOSE id \in DOMAIN q.after.instances : TRUE IN /\ EmptyRecognitionValid109(initial) /\ initial.candidates={} /\ EmptyRecognitionValid109(q) /\ Cardinality(q.candidates)=1 /\ q.after.instances[instance].primaryKind="Static" /\ EmptyRecognitionValid109(filled) /\ filled.candidates={} /\ filled.after.instances[instance].status="Pending" /\ EmptyRecognitionValid109(startNonempty) /\ startNonempty.candidates={} /\ EmptyRecognitionValid109(startEmpty) /\ Cardinality(startEmpty.candidates)=1 /\ EmptyRecognitionValid109(notActive) /\ notActive.candidates={} /\ ~EmptyStaticTruth109(refilled.after,CardFacts10,q.link,q.cp,EmptyReadFixture109(refilled.after,q.link),q.truth) /\ ~EmptyStaticTruth109(empty,CardFacts10,q.link,[q.cp EXCEPT !.beginSnapshot.loadState.history=Empty10],q.read,q.truth) /\ \A status \in {"Pending","Imminent","Resolving"} : LET sibling==[q.after EXCEPT !.instances[instance].status=status] again==EmptyRecognition109(sibling,empty,empty,6) IN EmptyRecognitionValid109(again) /\ again.candidates={} /\ LET completed==[q.after EXCEPT !.instances[instance].status="Complete"] repeated==EmptyRecognition109(completed,empty,empty,7) key==ConditionalKey96(q.link.emptyDefinition) throttled==[completed EXCEPT !.throttle=[k \in {key} |-> completed.stepSerial]] blocked==EmptyRecognition109(throttled,empty,empty,8) afterStep==[throttled EXCEPT !.stepSerial=@+1] step==[tag |-> "TimingStructureStepCompleted",structure |-> TimingRef9("Turn",1),procedureId |-> 1,step |-> "DiscardEnd",previousSerial |-> throttled.stepSerial,serial |-> afterStep.stepSerial] retry==EmptyRecognition109(afterStep,empty,empty,9) IN /\ EmptyRecognitionValid109(repeated) /\ Cardinality(repeated.candidates)=1 /\ EmptyRecognitionValid109(blocked) /\ blocked.candidates={} /\ ObserveConditionalTimingStep96(throttled,afterStep,step) /\ EmptyRecognitionValid109(retry) /\ Cardinality(retry.candidates)=1 EmptyBeforeLoadPendingChecks109 == LET w==LoadWorld109("Specimen0060","ResourceUnit") emptyD==w.loadLinks[1].emptyDefinition loadD==[EscalatingResourceContestConditional108(19000,"Specimen0060","AnyResult") EXCEPT !.trigger.kinds={"Deployed"},!.trigger.subject="SchemaAtom149"] definitions==[key \in {ConditionalKey96(emptyD),ConditionalKey96(loadD)} |-> IF key=ConditionalKey96(emptyD) THEN emptyD ELSE loadD] snapshot==EscalatingResourceContestSnapshot108(w.id,0,"DeploymentOccurrence",definitions,w) event==EscalatingResourceContestOccurrenceBase108(6600,"Deployed",900,"SideB","SideB",snapshot,6600) truth==[tag |-> "ConditionalStaticTruth",ability |-> emptyD.syntax.id,source |-> emptyD.syntax.source,checkpointId |-> 6200,snapshotId |-> w.id, condition |-> emptyD.primaryCondition,holds |-> FALSE] conditions==[key \in DOMAIN definitions |-> IF key=ConditionalKey96(emptyD) THEN [id \in {0} |-> truth] ELSE [id \in {6600} |-> [tag |-> "ConditionalTriggerStipulations",ability |-> loadD.syntax.id,source |-> loadD.syntax.source,occurrence |-> 6600, snapshotId |-> w.id,results |-> Empty10]]] raw==EscalatingResourceContestRecognition108(definitions,w,[id \in {6600} |-> event],conditions,6200,[kind |-> "DeploymentInstructionEnd",source |-> ObjectAbilitySource9(900)]) q==[raw EXCEPT !.cp.beginSnapshot=ReplacementOverlay99(@,[loadState |-> LoadState109(w)])] IN /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(q.candidates)=1 /\ \A key \in q.candidates : key.definition=ConditionalKey96(loadD) /\ \A id \in DOMAIN q.after.instances : q.after.instances[id].member.ability=19000 /\ q.after.instances[id].status="Pending" /\ EmptyStaticTruth109(w,CardFacts10,w.loadLinks[1],q.cp,EmptyReadFixture109(w,w.loadLinks[1]),truth) /\ w.loadHistory=Empty10 /\ ~EmptyReadFixture109(w,w.loadLinks[1]).empty ChargeWorld1010(card) == LET b==LoadWorld109("Specimen0181","Power") cards==[id \in {800,901,902,903,904} |-> CASE id=800 -> EscalatingResourceContestCard108(card,CardFacts10[card].kind \in {"Technique","Equipment","Support"},FALSE) [] id=901 -> EscalatingResourceContestCard108("Specimen0199",TRUE,TRUE) [] id=902 -> EscalatingResourceContestCard108("Specimen0060",TRUE,FALSE) [] OTHER -> LinkObject107("Specimen0181",IF id=903 THEN "charge-copy-2" ELSE "charge-copy-3",id=904)] counters==[id \in 1000..1005 |-> LoadedCounterToken109(IF id=1005 THEN "ResourceUnit" ELSE "Power","Play",CASE id=1000 -> 900 [] id \in {1001,1002} -> 904 [] id=1003 -> 903 [] id=1004 -> 901 [] OTHER -> 902,"SideB")] objects==ReplacementOverlay99(ReplacementOverlay99(IF CardFacts10[card].kind="Profile" THEN Without101(b.objects,{1}) ELSE b.objects,cards),counters) w==ReplacementOverlay99([b EXCEPT !.objects=objects,!.controllers=ReplacementOverlay99(IF CardFacts10[card].kind="Profile" THEN Without101(@,{1}) ELSE @,[id \in (DOMAIN cards \cup DOMAIN counters) |-> IF id \in {901,1004} THEN "SideA" ELSE "SideB"]), !.definitions=ReplacementOverlay99(@,[key \in {card,"Specimen0199","Specimen0060","charge-copy-2","charge-copy-3"} |-> IF key \in {"charge-copy-2","charge-copy-3"} THEN "Specimen0181" ELSE key]), !.usedObjects=DOMAIN objects,!.nextCounterObject=2000,!.sideBProfile=IF CardFacts10[card].kind="Profile" THEN 800 ELSE @, !.properties=IF CardFacts10[card].kind="Profile" THEN [id \in {800} |-> [baseLink |-> 0]] ELSE @], [chargeSpecs |-> Empty10,chargeAdmissions |-> Empty10,completedCharges |-> {},chargeEventIds |-> {}]) IN w ChargePlan1010(mode) == OpenInstruction93(500,"Ability",8000,ObjectAbilitySource9(800),"Play",1,"NoValue",<<"Charge">>,mode="Chosen") ChargeAbility1010(card) == [OpenAbilityResolution9(8000,IF card="Specimen0225" THEN "Paid" ELSE IF card \in {"Specimen0201","Specimen0120"} THEN "Play" ELSE "Conditional",ObjectAbilitySource9(800),"Play",<<500>>,100) EXCEPT !.detached=card="Specimen0225"] ChargeSpecFixture1010(world,plan,card,mode,amount,particular) == [tag |-> "CurrentChargeSpec",reference |-> InstructionWindowRef93(plan),snapshotId |-> world.id,source |-> plan.source,sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA, actor |-> "SideB",mode |-> mode,requested |-> amount,ifAble |-> FALSE,setRule |-> "YourDeployedCards",targetZone |-> "DefaultDeployed",targetView |-> "OrdinaryHosting",compiledSet |-> {},particular |-> particular] ChargeEntry1010(plan) == [tag |-> "AbilityInstructionEntry",abilityInstance |-> plan.abilityInstance,instruction |-> plan.id,index |-> plan.index,source |-> plan.source,sourceZone |-> plan.sourceZone, schedulerAllows |-> TRUE,sourceEligible |-> TRUE,checkpointAndAllNewerChainsComplete |-> TRUE] ChargeCapture1010(card,mode,amount,particular,targets) == LET raw==ChargeWorld1010(card) plan==ChargePlan1010(mode) spec==ChargeSpecFixture1010(raw,plan,card,mode,amount,particular) world==[raw EXCEPT !.chargeSpecs=[key \in {ChargeSpecKey1010(spec.reference)} |-> spec]] ability==ChargeAbility1010(card) announced==IF mode="Chosen" THEN [plan EXCEPT !.targets=targets,!.announced=TRUE] ELSE plan imminent==[announced EXCEPT !.phase="Imminent"] imminentAbility==[ability EXCEPT !.phase="Imminent",!.firstImminent=TRUE,!.detached=@ \/ ability.kind \in {"Conditional","BarrierInstruction"}] refs==IF mode="Chosen" THEN targets ELSE {particular} admission==[tag |-> "ChargeAtImminence",reference |-> InstructionWindowRef93(imminent),snapshotId |-> world.id,spec |-> spec,announced |-> announced.targets, initialPower |-> [id \in refs |-> ChargePower1010(world.objects,id)],physical |-> [id \in refs \cap DOMAIN world.objects |-> world.objects[id].card]] IN [world |-> world,plan |-> plan,spec |-> spec,ability |-> ability,announced |-> announced,imminent |-> imminent,imminentAbility |-> imminentAbility,admission |-> admission] ChargeCaptureValid1010(x) == /\ IF x.spec.mode="Chosen" THEN AnnounceChargeTargets1010(x.plan,x.announced,x.ability,x.world,CardFacts10,x.spec,x.announced.targets,ChargeTargetReceipt1010(x.plan,x.announced.targets)) ELSE x.announced=x.plan /\ EnterFirstAbilityInstruction93(x.ability,x.imminentAbility,x.announced,x.imminent,ChargeEntry1010(x.plan)) /\ CaptureChargeImminence1010(x.imminent,x.imminentAbility,x.world,CardFacts10,x.spec,x.admission) ChargeContext1010(x,world) == LET reference==InstructionWindowRef93(x.imminent) key== <<101000,reference,1>> e==[id |-> 1,kind |-> "Charge",value |-> 1,counterKind |-> "Power",actor |-> "SideB",baseOrigin |-> reference.source, sourceCard |-> x.spec.sourceCard,sourceSHA |-> x.spec.sourceSHA,admissionKey |-> key] IN [id |-> 101000,phase |-> "Resolving",initialRef |-> reference,currentRef |-> reference,currentWorld |-> world.id,templates |-> [id \in {1} |-> e], state |-> [effects |-> [id \in {1} |-> e]],actualEffects |-> [id \in {1} |-> e]] ChargeCurrentWorld1010(x,changed,id) == LET context==ChargeContext1010(x,changed) current==[x.spec EXCEPT !.snapshotId=id] IN [changed EXCEPT !.id=id,!.chargeSpecs=[key \in {ChargeSpecKey1010(current.reference)} |-> current],!.chargeAdmissions=ReplacementOverlay99(@,[key \in {ChargeAdmissionKey1010(context,1)} |-> x.admission])] ChargeTraversal1010(x,changed,targets) == LET world==ChargeCurrentWorld1010(x,changed,changed.id+1) context==ChargeContext1010(x,world) ids==world.nextCounterObject..(world.nextCounterObject+Cardinality(targets)-1) targetFor==[id \in ids |-> CHOOSE t \in targets : Cardinality({other \in targets : other LoadedCounterToken109("Power",world.objects[targetFor[id]].zone,targetFor[id],"SideB")] after==ReplacementOverlay99(world.objects,added) completed==world.completedCharges \cup {ChargeAdmissionKey1010(context,1)} completion==[tag |-> "ChargeInstructionComplete",id |-> 10001,reference |-> context.currentRef,admission |-> ChargeAdmissionKey1010(context,1),charged |-> targets,complete |-> TRUE] events=={[tag |-> "PowerCounterPlacedByCharge",instruction |-> context.currentRef,host |-> target,counter |-> CHOOSE id \in DOMAIN added : added[id].host=target, source |-> context.currentRef.source,snapshotId |-> world.id] : target \in targets} IN [world |-> world,context |-> context,admission |-> x.admission,spec |-> world.chargeSpecs[ChargeSpecKey1010(context.currentRef)],afterObjects |-> after,added |-> added,afterCompleted |-> completed,completion |-> completion,events |-> events] ChargeTraversalValid1010(x) == ResolveCharge1010(x.context,x.world,1,CardFacts10,x.admission,x.spec,x.afterObjects,x.world.loadHistory,x.afterCompleted,x.added,10001,x.completion,x.events) ChargeRevisedTraversal1010(r) == LET reference==[r.context.currentRef EXCEPT !.revision=@+1] spec==[r.spec EXCEPT !.reference=reference] IN [r EXCEPT !.context.currentRef=reference,!.spec=spec,!.world.chargeSpecs[ChargeSpecKey1010(spec.reference)]=spec,!.completion.reference=reference, !.events={[event EXCEPT !.instruction=reference] : event \in @}] ChargeChosenChecks1010 == /\ \A source \in {"Specimen0092","Specimen0120","Specimen0225","Specimen0170","Specimen0044","Specimen0064"}, target \in {900,904} : LET c==ChargeCapture1010(source,"Chosen",1,0,{target}) result==ChargeTraversal1010(c,c.world,{target}) IN /\ ChargeCaptureValid1010(c) /\ ChargeTraversalValid1010(result) /\ Cardinality(DOMAIN result.added)=1 /\ Cardinality(HostedCounterIds109(result.afterObjects,target,"Power"))=Cardinality(HostedCounterIds109(c.world.objects,target,"Power"))+1 /\ result.world.loadHistory=Empty10 /\ LET two==ChargeCapture1010("Specimen0225","Chosen",2,0,{900,904}) partial==ChargeCapture1010("Specimen0225","Chosen",3,0,{900,904}) result==ChargeTraversal1010(two,two.world,{900,904}) wrongResourceUnit==ChargeCapture1010("Specimen0225","Chosen",1,0,{902}) wrongOwner==ChargeCapture1010("Specimen0225","Chosen",1,0,{901}) uninstalled==ChargeCapture1010("Specimen0225","Chosen",1,0,{903}) omitted==ChargeCapture1010("Specimen0225","Chosen",2,0,{900}) IN /\ ChargeCaptureValid1010(two) /\ ChargeCaptureValid1010(partial) /\ ChargeTraversalValid1010(result) /\ ~ChargeCaptureValid1010(wrongResourceUnit) /\ ~ChargeCaptureValid1010(wrongOwner) /\ ~ChargeCaptureValid1010(uninstalled) /\ ~ChargeCaptureValid1010(omitted) ChargeCurrentLegalityChecks1010 == LET c==ChargeCapture1010("Specimen0225","Chosen",1,0,{900}) lost==[c.world EXCEPT !.objects=Without101(@,{1000})] firstAdded==[lost EXCEPT !.objects=ReplacementOverlay99(@,[id \in {1500} |-> LoadedCounterToken109("Power","Play",902,"SideB")])] regained==[lost EXCEPT !.objects=ReplacementOverlay99(@,[id \in {1501} |-> LoadedCounterToken109("Power","Play",900,"SideB")])] changedControl==[c.world EXCEPT !.controllers[900]="SideA"] noLongerDeployed==[c.world EXCEPT !.objects[900].deployed=FALSE] blanked==[c.world EXCEPT !.objects[900].face="Down"] sourceGone==[c.world EXCEPT !.objects=Without101(@,{800}),!.controllers=Without101(@,{800})] IN /\ ChargeTraversalValid1010(ChargeTraversal1010(c,lost,{})) /\ ~ChargeTraversalValid1010(ChargeTraversal1010(c,lost,{900})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,firstAdded,{})) /\ ~ChargeTraversalValid1010(ChargeTraversal1010(c,firstAdded,{902})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,regained,{900})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,changedControl,{})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,noLongerDeployed,{})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,blanked,{900})) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,sourceGone,{900})) ChargeParticularChecks1010 == /\ \A target \in {900,902,904} : LET c==ChargeCapture1010("Specimen0201","Particular",1,target,{}) targets==IF target=902 THEN {} ELSE {target} IN ChargeCaptureValid1010(c) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,c.world,targets)) /\ LET zero==ChargeCapture1010("Specimen0201","Particular",1,902,{}) later==[zero.world EXCEPT !.objects=ReplacementOverlay99(@,[id \in {1500} |-> LoadedCounterToken109("Power","Play",902,"SideB")])] positive==ChargeCapture1010("Specimen0201","Particular",1,900,{}) lost==[positive.world EXCEPT !.objects=Without101(@,{1000})] IN /\ ChargeTraversalValid1010(ChargeTraversal1010(zero,later,{})) /\ ~ChargeTraversalValid1010(ChargeTraversal1010(zero,later,{902})) /\ ChargeTraversalValid1010(ChargeTraversal1010(positive,lost,{})) /\ ~ChargeTraversalValid1010(ChargeTraversal1010(positive,lost,{900})) ChargeChangeSpec1010(c,spec) == [c EXCEPT !.spec=spec,!.world.chargeSpecs[ChargeSpecKey1010(spec.reference)]=spec,!.admission.spec=spec] ChargeScopeAndCountChecks1010 == LET c==ChargeCapture1010("Specimen0225","Chosen",1,0,{900}) virtual==[c EXCEPT !.world.objects[1000].virtual=TRUE] converted==[c EXCEPT !.world.objects[1000]=ReplacementOverlay99(@,[card |-> "Specimen0046",owner |-> "SideA",properties |-> [kind |-> "Power"]])] nested==ReplacementOverlay99([c.world.objects EXCEPT ![1000].host=1500],[id \in {1500} |-> LoadedCounterToken109("SchemaAtom043","Play",900,"SideB")]) vResult==ChargeTraversal1010(virtual,virtual.world,{900}) convertedResult==ChargeTraversal1010(converted,converted.world,{900}) short==ChargeCapture1010("Specimen0225","Chosen",3,0,{900,904}) ifAble==ChargeChangeSpec1010(short,[short.spec EXCEPT !.ifAble=TRUE]) compiled0==ChargeCapture1010("Specimen0225","Chosen",2,0,{900,901}) compiled==ChargeChangeSpec1010(compiled0,[compiled0.spec EXCEPT !.setRule="CompiledSet",!.compiledSet={900,901,903}]) explicit0==ChargeCapture1010("Specimen0225","Chosen",3,0,{900,901,903}) explicit==ChargeChangeSpec1010(explicit0,[explicit0.spec EXCEPT !.setRule="CompiledSet",!.compiledSet={900,901,903},!.targetZone="Play"]) IN /\ ChargeCaptureValid1010(virtual) /\ ChargeTraversalValid1010(vResult) /\ vResult.afterObjects[1000].virtual /\ ~vResult.added[2000].virtual /\ ChargeCaptureValid1010(converted) /\ ChargeTraversalValid1010(convertedResult) /\ convertedResult.afterObjects[1000]=converted.world.objects[1000] /\ ~ChargePower1010(nested,900) /\ ChargeCaptureValid1010(ifAble) /\ ChargeTraversalValid1010(ChargeTraversal1010(ifAble,ifAble.world,{})) /\ ChargeCaptureValid1010(compiled) /\ ChargeTraversalValid1010(ChargeTraversal1010(compiled,compiled.world,{900,901})) /\ ChargeCaptureValid1010(explicit) /\ ChargeTraversalValid1010(ChargeTraversal1010(explicit,explicit.world,{900,901,903})) ChargeBindingChecks1010 == LET c==ChargeCapture1010("Specimen0225","Chosen",1,0,{900}) r==ChargeTraversal1010(c,c.world,{900}) key==ChargeAdmissionKey1010(r.context,1) zero==ChargeCapture1010("Specimen0201","Particular",1,902,{}) later==[zero.world EXCEPT !.objects=ReplacementOverlay99(@,[id \in {1500} |-> LoadedCounterToken109("Power","Play",902,"SideB")])] would==ChargeTraversal1010(zero,later,{902}) forged==[would.admission EXCEPT !.initialPower[902]=TRUE] otherRef==[InstructionWindowRef93(c.plan) EXCEPT !.abilityInstance=8001] otherSpec==[c.spec EXCEPT !.reference=otherRef] both==[c.world EXCEPT !.chargeSpecs=ReplacementOverlay99(@,[specKey \in {ChargeSpecKey1010(otherRef)} |-> otherSpec])] wrongSpec==[c.spec EXCEPT !.sourceSHA="wrong"] wrongWorld==[c.world EXCEPT !.chargeSpecs[ChargeSpecKey1010(wrongSpec.reference)]=wrongSpec] IN /\ ChargeSpecKey1010(otherRef)#ChargeSpecKey1010(c.spec.reference) /\ ChargeSpec1010(both,c.spec.reference,CardFacts10,c.spec) /\ ChargeSpec1010(both,otherRef,CardFacts10,otherSpec) /\ ChargeTraversalValid1010(ChargeRevisedTraversal1010(r)) /\ ChargeOmitted1010([r.context EXCEPT !.state.effects=Empty10,!.actualEffects=Empty10],r.world,1,r.world.objects,r.world.loadHistory) /\ ~ChargeTraversalValid1010([r EXCEPT !.context.state.effects=Empty10,!.context.actualEffects=Empty10]) /\ ~ChargeSpec1010(wrongWorld,InstructionWindowRef93(c.plan),CardFacts10,wrongSpec) /\ ~ChargePacket1010([r.context EXCEPT !.currentWorld=99],r.world,1,CardFacts10,r.admission,r.spec) /\ ~ChargePacket1010(r.context,[r.world EXCEPT !.chargeAdmissions=Empty10],1,CardFacts10,r.admission,r.spec) /\ ~ChargePacket1010([r.context EXCEPT !.initialRef.id=999],r.world,1,CardFacts10,r.admission,r.spec) /\ ~ChargePacket1010([r.context EXCEPT !.actualEffects[1].value=2,!.state.effects[1].value=2],r.world,1,CardFacts10,r.admission,r.spec) /\ ~ChargePacket1010([r.context EXCEPT !.actualEffects[1].counterKind="ResourceUnit",!.state.effects[1].counterKind="ResourceUnit"],r.world,1,CardFacts10,r.admission,r.spec) /\ ~ResolveCharge1010(would.context,would.world,1,CardFacts10,forged,would.spec,would.afterObjects,would.world.loadHistory,would.afterCompleted,would.added,10001,would.completion,would.events) /\ ~ChargeTraversalValid1010([r EXCEPT !.world.completedCharges={key}]) /\ ~ChargeTraversalValid1010([r EXCEPT !.world.usedObjects=@ \cup DOMAIN r.added]) /\ ~ChargeTraversalValid1010([r EXCEPT !.afterObjects[900].marks={"ChangedHost"}]) /\ ~ResolveCharge1010(r.context,r.world,1,CardFacts10,r.admission,r.spec,r.afterObjects,[id \in {1} |-> [tag |-> "InventedLoad"]],r.afterCompleted,r.added,10001,r.completion,r.events) /\ \A id \in DOMAIN r.added : r.added[id].marks={} /\ r.added[id].kind="Power" ExampleFamily049ChargeFixture1010 == LET base==ChargeWorld1010("Specimen0201") bHand==[EscalatingResourceContestCard108("Specimen0114",FALSE,FALSE) EXCEPT !.zone="SideBHand",!.face="NA"] before==[base EXCEPT !.objects=ReplacementOverlay99(@,[id \in {810} |-> bHand]),!.controllers=ReplacementOverlay99(@,[id \in {810} |-> "SideB"]), !.definitions=ReplacementOverlay99(@,[id \in {"Specimen0114"} |-> "Specimen0114"]),!.usedObjects=@ \cup {810}] playSource==ObjectAbilitySource9(800) deployPlan==OpenInstruction93(499,"Ability",8000,playSource,"Play",1,"NoValue",<<"Deploy">>,TRUE) deployRef==InstructionWindowRef93(deployPlan) deployedRow==[bHand EXCEPT !.zone="Play",!.loc=0,!.face="Up",!.marks={}] moved==ReplacementOverlay99(Without101(before.objects,{810}),[id \in {811} |-> deployedRow]) deployed==[before EXCEPT !.id=101,!.objects=ReplacementOverlay99(moved,[id \in {811} |-> [deployedRow EXCEPT !.deployed=TRUE]]), !.controllers=ReplacementOverlay99(Without101(@,{810}),[id \in {811} |-> "SideB"]),!.usedObjects=@ \cup {811}] reference==[tag |-> "InstructionDeployedObject",source |-> playSource,fromInstruction |-> deployRef,oldObject |-> 810,object |-> 811,physical |-> "Specimen0114"] ability==[OpenAbilityResolution9(8000,"Play",playSource,"Play",<<499,500>>,7000) EXCEPT !.phase="Between",!.firstImminent=TRUE] cohort==[playId |-> 7700,id |-> 8000,source |-> playSource,transaction |-> 7000,owner |-> [windowId |-> 7000],ability |-> ability] caller==PlayInstructionCaller97(cohort) d==ReboundConditionalDefinition96([EscalatingResourceContestConditional108(19900,"Specimen0114","AnyResult") EXCEPT !.trigger.kinds={"Deployed"},!.trigger.subject="SchemaAtom149"],811) definitions==[key \in {ConditionalKey96(d)} |-> d] snapshot==EscalatingResourceContestSnapshot108(deployed.id,0,"Deployed",definitions,deployed) occurrence==EscalatingResourceContestOccurrenceBase108(6600,"Deployed",811,"SideB","SideB",snapshot,6600) stipulation==[tag |-> "ConditionalTriggerStipulations",ability |-> 19900,source |-> ObjectAbilitySource9(811),occurrence |-> 6600,snapshotId |-> deployed.id,results |-> Empty10] conditions==[key \in DOMAIN definitions |-> [id \in {6600} |-> stipulation]] q==EscalatingResourceContestRecognition108(definitions,deployed,[id \in {6600} |-> occurrence],conditions,6200,caller) instance==CHOOSE id \in DOMAIN q.after.instances : TRUE powerRef==InstructionWindowRef93(OpenInstruction93(700,"Ability",instance,ObjectAbilitySource9(811),"Play",1,"NoValue",<<"PlacePower">>,FALSE)) effect==[id |-> 1,kind |-> "PlaceCounters",value |-> 1,actor |-> "SideB",baseOrigin |-> ObjectAbilitySource9(811),sourceCard |-> "Specimen0114",sourceSHA |-> CardFacts10["Specimen0114"].sourceSHA, target |-> 811,counterKind |-> "Power",counterKinds |-> {"Power"},loadDefinition |-> 0] context==[id |-> 101030,phase |-> "Resolving",currentRef |-> powerRef,currentWorld |-> deployed.id,templates |-> [id \in {1} |-> effect],state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> [id \in {1} |-> effect]] added==[id \in {2000} |-> LoadedCounterToken109("Power","Play",811,"SideB")] afterPower==[deployed EXCEPT !.id=102,!.objects=ReplacementOverlay99(@,added),!.controllers=ReplacementOverlay99(@,[id \in {2000} |-> "SideB"]),!.usedObjects=@ \cup {2000},!.nextCounterObject=2001, !.completedCounterInstructions=@ \cup {CounterInstructionKey109(context,powerRef,1)},!.counterEventIds=@ \cup {109999}] counterEvent==[tag |-> "HostedCounterInstructionComplete",id |-> 109999,operation |-> "PlaceCounters",reference |-> powerRef,host |-> 811,kind |-> "Power",amount |-> 1, selected |-> {},created |-> {2000},snapshotId |-> deployed.id,complete |-> TRUE] ledger==[q.after EXCEPT !.instances=[id \in DOMAIN @ |-> [@[id] EXCEPT !.status="Complete"]]] cp==[NewCheckpoint103(6200,caller,deployed.id,{}) EXCEPT !.phase="Returned",!.point="ProcedureCodeb74d673a0fc6",!.owed= <<>>,!.done=CheckpointStageSet103,!.returned=TRUE, !.recognition=q.cp,!.recognized=CheckpointMemberMap103(ledger,6200)] ready==ReplacementOverlay99(afterPower,[instructionCheckpoints |-> [id \in {6200} |-> cp],conditionalLedger |-> ledger]) plan==OpenInstruction93(500,"Ability",8000,playSource,"Play",2,"NoValue",<<"Charge">>,FALSE) spec==ChargeSpecFixture1010(ready,plan,"Specimen0201","Particular",1,reference.object) world==[ready EXCEPT !.chargeSpecs=[key \in {ChargeSpecKey1010(spec.reference)} |-> spec]] imminent==[plan EXCEPT !.phase="Imminent"] imminentAbility==[ability EXCEPT !.cursor=2,!.phase="Imminent"] admission==[tag |-> "ChargeAtImminence",reference |-> InstructionWindowRef93(imminent),snapshotId |-> world.id,spec |-> spec,announced |-> {}, initialPower |-> [id \in {811} |-> TRUE],physical |-> [id \in {811} |-> "Specimen0114"]] charge==[world |-> world,plan |-> plan,spec |-> spec,ability |-> ability,announced |-> plan,imminent |-> imminent,imminentAbility |-> imminentAbility,admission |-> admission] IN [before |-> before,moved |-> moved,deployed |-> deployed,deployRef |-> deployRef,reference |-> reference,context |-> context,afterPower |-> afterPower,added |-> added,counterEvent |-> counterEvent, q |-> q,cp |-> cp,ledger |-> ledger,cohort |-> cohort,charge |-> charge] ChargeExampleFamily049Checks1010 == LET r==ExampleFamily049ChargeFixture1010 c==r.charge result==ChargeTraversal1010(c,c.world,{811}) otherWorld==[c.world EXCEPT !.objects=ReplacementOverlay99(Without101(@,{811}),[id \in {812,2000} |-> IF id=812 THEN [@[811] EXCEPT !.card="Specimen0114",!.marks={}] ELSE [@[2000] EXCEPT !.host=812,!.loc=812]]), !.controllers=ReplacementOverlay99(Without101(@,{811}),[id \in {812} |-> "SideB"])] IN /\ ExampleFamily049DeployedReference1010(r.before.objects,r.moved,810,811,[id \in {810} |-> 811],r.before.usedObjects,ObjectAbilitySource9(800),r.deployRef,r.reference) /\ ~ExampleFamily049DeployedReference1010(r.before.objects,r.moved,810,811,[id \in {810} |-> 811],r.before.usedObjects,ObjectAbilitySource9(800),r.deployRef,[r.reference EXCEPT !.object=900]) /\ SideBPaidDeployPost(r.deployed.objects[811],"SideB","Technique",TRUE,TRUE) /\ EscalatingResourceContestRecognitionValid108(r.q) /\ Cardinality(r.q.candidates)=1 /\ ExecuteBankHostedCounterInstruction109(r.context,r.context.currentRef,r.deployed,1,CardFacts10,r.afterPower.objects,r.afterPower.loadHistory,r.afterPower.completedCounterInstructions, {},r.added,2001,109999,r.counterEvent) /\ r.afterPower.loadHistory=Empty10 /\ ~ChargePower1010(r.deployed.objects,811) /\ ChargePower1010(c.world.objects,811) /\ r.cp.snapshotId=101 /\ c.world.id=102 /\ NextChargeAfterCheckpoint1010(c.ability,c.imminentAbility,c.plan,c.imminent,c.world,r.cp,r.ledger,<<>>,r.cohort,ChargeEntry1010(c.plan)) /\ ~NextChargeAfterCheckpoint1010(c.ability,c.imminentAbility,c.plan,c.imminent,[c.world EXCEPT !.conditionalLedger=r.q.after],r.cp,r.ledger,<<>>,r.cohort,ChargeEntry1010(c.plan)) /\ CaptureChargeImminence1010(c.imminent,c.imminentAbility,c.world,CardFacts10,c.spec,c.admission) /\ ChargeTraversalValid1010(result) /\ Cardinality(HostedCounterIds109(result.afterObjects,811,"Power"))=2 /\ ChargePower1010(otherWorld.objects,812) /\ ChargeTraversalValid1010(ChargeTraversal1010(c,otherWorld,{})) /\ ~ChargeTraversalValid1010(ChargeTraversal1010(c,otherWorld,{812})) MarkBase1011(owner) == LET objects0==[id \in 1..7 |-> EscalatingResourceContestCard108(CASE id=1 -> "Specimen0165" [] id=2 -> "Specimen0259" [] id=3 -> "Specimen0119" [] id=4 -> "Specimen0026" [] id=5 -> "Specimen0253" [] id=6 -> "Specimen0045" [] OTHER -> "Specimen0101",id \in {2,3,4,5,7},id=7)] objects==ReplacementOverlay99(objects0,[id \in {8} |-> [EscalatingResourceContestCard108("Specimen0259",FALSE,FALSE) EXCEPT !.card="Specimen0259-copy-2",!.zone="SideBHand",!.face="NA"]]) facts==ReplacementOverlay99(CardFacts10,[id \in {"Specimen0259-copy-2"} |-> CardFacts10["Specimen0259"]]) base==[id |-> 1,objects |-> objects,gameStarted |-> TRUE,cardFacts |-> facts,playActivated |-> {6}, turn |-> [OpenTurn5(owner,10,[p \in SetupPlayers |-> 1]) EXCEPT !.formalBegun=TRUE],turnPhase |-> [id |-> 11,ended |-> FALSE], control |-> [traversal |-> NoTraversal6,phaseEndedIds |-> {}],encounters |-> Empty10,currentEncounter |-> 0,siteInspections |-> Empty10,itemInspections |-> Empty10, finishedInstances |-> {},finishedDelayedEffects |-> {},statedDurations |-> Empty10,durationComparisons |-> Empty10,extenders |-> Empty10, present |-> {},activity |-> ActivityContext9,points |-> [p \in SetupPlayers |-> 0],barrierResponseCards |-> {5},inside |-> {},barrierProtection |-> [id \in {7} |-> "SchemaAtom129"], usedObjects |-> DOMAIN objects,eventSerial |-> 0,history |-> Empty10,draws |-> Empty10,pendingRandomDraws |-> Empty10,sourceOccurrences |-> Empty10,markRules |-> Empty10, sourceDefinitions |-> [physical \in DOMAIN facts |-> IF physical="Specimen0259-copy-2" THEN "Specimen0259" ELSE physical]] a==NewLifetimeAuthority910(base) registry==ReplacementOverlay99(NewLingeringRegistry910,[frontier |-> LifetimeFrontier910(a,1)]) IN [world |-> ReplacementOverlay99(base,[lingering |-> registry]),authority |-> a] MarkSampler1011 == [tag |-> "UniformFiniteAtoms",space |-> 1..3,mapping |-> [atom \in 1..3 |-> CASE atom=1 -> "SchemaAtom082" [] atom=2 -> "SchemaAtom129" [] OTHER -> "SchemaAtom018"], weights |-> [atom \in 1..3 |-> 1],totalWeight |-> 3] MarkReadFixture1011(world,a) == LET ids==LiveMarkIds1011(world.lingering,a.current) IN IF ids={} THEN [tag |-> "CurrentGlobalMark",worldId |-> world.id,present |-> FALSE,effectId |-> 0,targetSite |-> "NoValue",cutoff |-> 0,turn |-> world.turn.id] ELSE LET id==CHOOSE id \in ids : TRUE value==world.lingering.effects[id].value IN [tag |-> "CurrentGlobalMark",worldId |-> world.id,present |-> TRUE,effectId |-> id,targetSite |-> value.targetSite,cutoff |-> value.cutoff,turn |-> value.turn] MarkCreator1011(world,source,blueprints) == LET card==world.sourceDefinitions[world.objects[source].card] kind==IF card="Specimen0045" THEN "Play" ELSE "Conditional" parent==[OpenAbilityResolution9(1100,kind,ObjectAbilitySource9(source),"Play",<<1101>>,100) EXCEPT !.phase="Resolving",!.firstImminent=TRUE,!.detached=kind="Conditional"] plan==[OpenInstruction93(1101,"Ability",1100,ObjectAbilitySource9(source),"Play",1,"NoValue",<<"IdentifyMark">>,FALSE) EXCEPT !.phase="Resolving"] effect==[id |-> 1,kind |-> "CreateLingering",semantic |-> "IdentifyMark",actor |-> "SideB",sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA,baseOrigin |-> plan.source,blueprints |-> blueprints] context==[id |-> 1102,imminenceId |-> 1103,phase |-> "Resolving",currentRef |-> InstructionWindowRef93(plan),currentWorld |-> world.id, templates |-> [id \in {1} |-> effect],state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> [id \in {1} |-> effect]] execution==[tag |-> "LingeringEffectExecution",contextId |-> context.id,instruction |-> context.currentRef,operation |-> 1,snapshotId |-> world.id,source |-> plan.source,blueprints |-> blueprints,carriedOut |-> TRUE] IN [context |-> context,origin |-> [kind |-> "Instruction",plan |-> plan,parent |-> parent,ruleStep |-> "NoValue"],execution |-> execution] MarkCreateDetails1011(base,atom,source,effectId,eventId,drawId) == LET w==base.world a==base.authority targetSite==MarkSampler1011.mapping[atom] blueprints==[id \in {effectId} |-> MarkBlueprint1011(ObjectAbilitySource9(source),IF w.sourceDefinitions[w.objects[source].card]="Specimen0045" THEN "Play" ELSE "Conditional",targetSite,w.eventSerial+1,w.turn.id)] creator==MarkCreator1011(w,source,blueprints) draw==[id |-> drawId,tag |-> "UniformMarkDraw",phase |-> "InstructionResolution",snapshotId |-> w.id,reference |-> creator.context.currentRef,operation |-> 1,sampler |-> MarkSampler1011,atom |-> atom,targetSite |-> targetSite] world==[w EXCEPT !.pendingRandomDraws=[id \in {drawId} |-> draw]] row==NewLingeringEffect910(effectId,blueprints[effectId],creator.context,1,a.current) registry==[world.lingering EXCEPT !.effects=ReplacementOverlay99(@,[id \in {effectId} |-> row]),!.usedEffects=@ \cup {effectId},!.creations=@ \cup {LingeringCreationKey910(creator.context,1)}] event==[id |-> eventId,kind |-> "MarkDesignated",serial |-> world.eventSerial+1,turn |-> world.turn.id,targetSite |-> targetSite,effectId |-> effectId,reference |-> creator.context.currentRef,source |-> creator.context.currentRef.source] after==[world EXCEPT !.lingering=registry,!.eventSerial=@+1,!.history=ReplacementOverlay99(@,[id \in {eventId} |-> event]),!.draws=ReplacementOverlay99(@,[id \in {drawId} |-> draw]),!.pendingRandomDraws=Empty10] completion==[tag |-> "IdentifyMarkComplete",reference |-> creator.context.currentRef,operation |-> 1,created |-> TRUE,effectId |-> effectId,targetSite |-> targetSite] IN [before |-> world,after |-> after,authority |-> a,creator |-> creator,draw |-> draw,event |-> event,completion |-> completion] MarkCreate1011(base,atom) == MarkCreateDetails1011(base,atom,6,3000,7000,500) MarkCreateValid1011(x) == IdentifyMark1011(x.before,x.after,x.authority,x.creator.context,x.creator.origin,1,x.before.cardFacts,MarkReadFixture1011(x.before,x.authority),x.draw,MarkSampler1011,3000,7000,x.creator.execution,x.completion,{x.event}) MarkNoop1011(world,a,source) == LET creator==MarkCreator1011(world,source,Empty10) read==MarkReadFixture1011(world,a) completion==[tag |-> "IdentifyMarkComplete",reference |-> creator.context.currentRef,operation |-> 1,created |-> FALSE,effectId |-> read.effectId,targetSite |-> read.targetSite] IN IdentifyMark1011(world,world,a,creator.context,creator.origin,1,world.cardFacts,read,[tag |-> "NoDraw"],[tag |-> "Unused"],9999,9999,creator.execution,completion,{}) MarkCreationChecks1011 == /\ MarkBalancedSampler1011(MarkSampler1011) /\ \A atom \in 1..3 : LET b==MarkBase1011("SideB") x==MarkCreate1011(b,atom) read==MarkReadFixture1011(x.after,b.authority) IN /\ MarkCreateValid1011(x) /\ read.targetSite=MarkSampler1011.mapping[atom] /\ \A player \in SetupPlayers : MarkRead1011(x.after,b.authority,player,read) /\ x.after.objects=x.before.objects /\ x.after.turn=x.before.turn /\ x.after.lingering.effects[3000].kind="Ordinary" /\ x.after.lingering.effects[3000].choicePolicy="NoValue" /\ MarkNoop1011(x.after,b.authority,1) /\ MarkNoop1011(x.after,b.authority,2) /\ LET dice==[tag |-> "UniformFiniteAtoms",space |-> 1..6,mapping |-> [atom \in 1..6 |-> MarkSampler1011.mapping[1+((atom-1) % 3)]],weights |-> [atom \in 1..6 |-> 1],totalWeight |-> 6] IN /\ MarkBalancedSampler1011(dice) /\ ~MarkBalancedSampler1011([dice EXCEPT !.mapping[6]="SchemaAtom082"]) /\ ~MarkBalancedSampler1011([dice EXCEPT !.mapping[6]="auxiliarySite-X"]) /\ ~MarkBalancedSampler1011([dice EXCEPT !.weights[6]=2]) MarkAdvance1011(world,a,changed,tag) == LET execution==[tag |-> tag,id |-> 9000+changed.id,snapshotId |-> changed.id,source |-> RuleAbilitySource9("10.11.LifetimeObservation")] nextA==LifetimeAuthorityAfter910(a,LifetimeKernelTransition910(world,changed,execution)) observed==[world.lingering EXCEPT !.effects=ObserveLingeringEffects910(@,changed),!.frontier=LifetimeFrontier910(nextA,Len(nextA.order))] IN [before |-> world,beforeAuthority |-> a,after |-> [changed EXCEPT !.lingering=observed],authority |-> nextA,execution |-> execution] MarkAdvanceValid1011(x) == /\ CommitLifetimeKernelCore910(x.beforeAuthority,x.authority,x.after,x.execution) /\ PublishNextLifetime910(x.before.lingering,x.after.lingering,x.authority) MarkDiscarded1011(world,old,new) == ReplacementOverlay99(Without101(world.objects,{old}),[id \in {new} |-> [world.objects[old] EXCEPT !.zone="SideBDiscard",!.deployed=FALSE,!.face="Up",!.loc=0,!.host=0,!.marks={}]]) MarkLifetimeFixture1011 == LET x==MarkCreate1011(MarkBase1011("SideB"),1) lostWorld==[x.after EXCEPT !.id=2,!.objects=MarkDiscarded1011(x.after,6,60),!.usedObjects=@ \cup {60}] lost==MarkAdvance1011(x.after,x.authority,lostWorld,"ActualObjectTransition") discardWorld==[lost.after EXCEPT !.id=3,!.turn.phase="Discard",!.turnPhase=[id |-> 12,ended |-> FALSE]] discard==MarkAdvance1011(lost.after,lost.authority,discardWorld,"ActualTimingTransition") endedWorld==[discard.after EXCEPT !.id=4,!.turn.formalEnded=TRUE,!.turnPhase.ended=TRUE] ended==MarkAdvance1011(discard.after,discard.authority,endedWorld,"ActualTimingTransition") nextWorld==[ended.after EXCEPT !.id=5,!.turn=OpenTurn5("SideA",11,[p \in SetupPlayers |-> 1]),!.turnPhase=[id |-> 13,ended |-> FALSE]] next==MarkAdvance1011(ended.after,ended.authority,nextWorld,"ActualTimingTransition") IN [create |-> x,lost |-> lost,discard |-> discard,ended |-> ended,next |-> next] MarkLifetimeChecks1011 == LET x==MarkLifetimeFixture1011 lost==x.lost discard==x.discard ended==x.ended next==x.next stale==[ended.after EXCEPT !.lingering=discard.after.lingering] IN /\ MarkCreateValid1011(x.create) /\ CardBatchTransfer8(lost.before.objects,lost.after.objects,{6},[id \in {6} |-> 60],DOMAIN lost.before.objects,"SideBDiscard","Up",[id \in {6} |-> 0]) /\ MarkAdvanceValid1011(lost) /\ MarkRead1011(lost.after,lost.authority,"SideB",MarkReadFixture1011(lost.after,lost.authority)) /\ MarkReadFixture1011(lost.after,lost.authority).targetSite="SchemaAtom082" /\ 6 \notin DOMAIN lost.after.objects /\ MarkNoop1011(lost.after,lost.authority,1) /\ TurnPhaseAdvance5(discard.before.turn,discard.after.turn,TRUE) /\ MarkAdvanceValid1011(discard) /\ MarkReadFixture1011(discard.after,discard.authority).present /\ TurnFormalEnd5(ended.before.turn,ended.after.turn,TRUE,TurnEndEvents5(ended.before.turn)) /\ MarkAdvanceValid1011(ended) /\ MarkRead1011(ended.after,ended.authority,"SideB",MarkReadFixture1011(ended.after,ended.authority)) /\ ~MarkReadFixture1011(ended.after,ended.authority).present /\ 3000 \in DOMAIN ended.after.lingering.effects /\ ended.after.lingering.effects[3000].status="Expired" /\ ~MarkRead1011(stale,ended.authority,"SideB",MarkReadFixture1011(ended.after,ended.authority)) /\ TurnHandoff5(ended.after.turn,next.after.turn,TRUE,{}) /\ MarkAdvanceValid1011(next) /\ MarkRead1011(next.after,next.authority,"SideA",MarkReadFixture1011(next.after,next.authority)) /\ ~MarkReadFixture1011(next.after,next.authority).present /\ MarkCreateValid1011(MarkCreate1011(MarkBase1011("SideA"),3)) MarkSnapshot1011(id,checkpoint,point,definitions,world) == [id |-> id,checkpointId |-> checkpoint,point |-> point,definitions |-> definitions,objects |-> world.objects, present |-> {definitions[key].syntax.id : key \in DOMAIN definitions}, ordinaryActivity |-> [key \in DOMAIN definitions |-> IF definitions[key].syntax.source.object \in DOMAIN world.objects THEN DefaultActive(world.objects[definitions[key].syntax.source.object],world.gameStarted,world.cardFacts) ELSE FALSE], cardActivity |-> [object \in DOMAIN world.objects |-> DefaultActive(world.objects[object],world.gameStarted,world.cardFacts)], activationEpoch |-> [key \in DOMAIN definitions |-> 0],activationSerial |-> 0,activity |-> world.activity,points |-> world.points, progress |-> [object \in DOMAIN world.objects |-> 0],link |-> [p \in SetupPlayers |-> 0],exposureMarkers |-> [p \in SetupPlayers |-> 0], objectiveCompletionEvents |-> {},usedObjects |-> world.usedObjects,holds |-> Empty10,effects |-> Empty10] MarkDefinition1011(id,object,card,kind) == LET d==EscalatingResourceContestConditional108(id,card,"Successful") source==ObjectAbilitySource9(object) IN [d EXCEPT !.syntax.source=source,!.activity.source=source,!.trigger.kinds={kind},!.trigger.actor="SideB"] MarkSuccessDefinitions1011(object,id) == LET exampleFamily051==MarkDefinition1011(11101,1,"Specimen0165","TraversalSuccessful") Specimen0259==MarkDefinition1011(id,object,"Specimen0259","TraversalSuccessful") IN [key \in {ConditionalKey96(exampleFamily051),ConditionalKey96(Specimen0259)} |-> IF key=ConditionalKey96(exampleFamily051) THEN exampleFamily051 ELSE Specimen0259] MarkSingleDefinition1011(id,object,card,kind) == LET d==MarkDefinition1011(id,object,card,kind) IN [key \in {ConditionalKey96(d)} |-> d] MarkRulesFixture1011(world,definitions) == [key \in DOMAIN definitions |-> LET d==definitions[key] physical==world.objects[d.syntax.source.object].card card==world.sourceDefinitions[physical] IN [definition |-> d,card |-> card,physical |-> physical,sourceSHA |-> world.cardFacts[card].sourceSHA,role |-> MarkRole1011(card)]] MarkOccurrence1011(world,definitions,id,kind,targetSite,traversalId) == LET snapshot==MarkSnapshot1011(world.id,0,"ActualOccurrence",definitions,world) traversal==[OpenTraversal6(traversalId,traversalId+100,"NormalizedTraversalCaller") EXCEPT !.attacked=targetSite,!.formalBegun=TRUE,!.phase=IF kind="EncounterBarrier" THEN "Encounter" ELSE IF kind="TraversalEnded" THEN "TraversalEnds" ELSE "Success", !.step=IF kind="EncounterBarrier" THEN "ProcedureCodeda7bff1d9270" ELSE IF kind="TraversalEnded" THEN "ProcedureCode9606a4cd52b4" ELSE "ProcedureCodebbb14496b09b",!.reachedSuccess=kind#"EncounterBarrier",!.successful=kind#"EncounterBarrier",!.complete=kind="TraversalEnded"] IN ReplacementOverlay99(EscalatingResourceContestOccurrenceBase108(id,kind,IF kind="EncounterBarrier" THEN 7 ELSE 0,"SideB","SideB",snapshot,id), [journalSerial |-> world.eventSerial+1,turnId |-> world.turn.id,targetSite |-> targetSite,traversal |-> traversal]) MarkCaptureFixture1011(world,a,event) == LET before==[world EXCEPT !.sourceOccurrences=ReplacementOverlay99(@,[id \in {event.id} |-> event])] mark==MarkReadFixture1011(before,a) after==[before EXCEPT !.eventSerial=@+1,!.history=ReplacementOverlay99(@,[id \in {event.id} |-> [id |-> event.id,kind |-> event.kind,serial |-> event.journalSerial,turn |-> event.turnId, targetSite |-> event.targetSite,traversalId |-> event.traversal.id,actor |-> event.actor,mark |-> mark,occurrence |-> event]])] IN [before |-> before,after |-> after,authority |-> a,event |-> event,mark |-> mark] MarkCaptureValid1011(x) == CaptureMarkEvent1011(x.before,x.after,x.authority,x.event,x.mark) MarkSuccessfulSourceValid1011(event) == LET before==OpenSuccess6([event.traversal EXCEPT !.successful=FALSE]) after==[before EXCEPT !.declarationProcessed=TRUE,!.traversal.successful=TRUE] IN /\ after.traversal=event.traversal /\ DeclareSuccessfulTraversal6(before,after,TRUE,{[tag |-> "SuccessfulTraversal",traversalId |-> event.traversal.id,targetSite |-> event.targetSite]}) MarkRecognition1011(world,a,definitions,events,truths,id) == LET w==[world EXCEPT !.markRules=MarkRulesFixture1011(world,definitions)] previous==MarkSnapshot1011(w.id,0,"PreviousCheckpoint",definitions,w) before==NewConditionalLedger96(previous) begin==MarkSnapshot1011(w.id,id,"CheckpointBeginning",definitions,w) current==[begin EXCEPT !.point="ProcedureCodee605a78f5d5e"] cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> id,previousCheckpoint |-> 0,serial |-> 1, previousSnapshot |-> previous,beginSnapshot |-> begin,processingSnapshot |-> current,stepSerial |-> 0,occurrences |-> events,caller |-> [kind |-> "MarkEventObservation",worldId |-> w.id]] conditions==[key \in DOMAIN definitions |-> [eventId \in DOMAIN events |-> [tag |-> "ConditionalTriggerStipulations",ability |-> definitions[key].syntax.id,source |-> definitions[key].syntax.source, occurrence |-> eventId,snapshotId |-> events[eventId].snapshot.id,results |-> [part \in {1} |-> truths[key][eventId]]]]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> 100000+key.definition.ability*100000+key.occurrence] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 7200,group |-> 7300,checkpointId |-> id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) IN [world |-> w,authority |-> a,before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings] MarkRecognitionValid1011(q) == /\ \A key \in DOMAIN q.definitions : \A id \in DOMAIN q.cp.occurrences : MarkConditionalStipulation1011(q.world,q.authority,q.definitions[key],q.cp.occurrences[id],q.world.markRules[key],q.conditions[key][id]) /\ EscalatingResourceContestRecognitionValid108(q) MarkRecognitionOne1011(c,definitions,truth,id) == MarkRecognition1011(c.after,c.authority,definitions,[eventId \in {c.event.id} |-> c.event],[key \in DOMAIN definitions |-> [eventId \in {c.event.id} |-> truth]],id) MarkOverinstall1011(world,a) == LET discarded==MarkDiscarded1011(world,2,12) objects==ReplacementOverlay99(Without101(discarded,{8}),[id \in {22} |-> [world.objects[8] EXCEPT !.zone="Play",!.deployed=TRUE,!.face="Up",!.loc=0,!.host=0,!.marks={}]]) changed==[world EXCEPT !.id=@+1,!.objects=objects,!.usedObjects=@ \cup {12,22}] IN MarkAdvance1011(world,a,changed,"ActualObjectTransition") MarkSuccessHistoryFixture1011 == LET base==MarkBase1011("SideB") defs==MarkSuccessDefinitions1011(2,11102) old==MarkCaptureFixture1011(base.world,base.authority,MarkOccurrence1011(base.world,defs,8001,"TraversalSuccessful","SchemaAtom082",20)) x==MarkCreate1011([world |-> old.after,authority |-> base.authority],1) first==MarkCaptureFixture1011(x.after,x.authority,MarkOccurrence1011(x.after,defs,8002,"TraversalSuccessful","SchemaAtom082",21)) q1==MarkRecognitionOne1011(first,defs,TRUE,8100) replaced==MarkOverinstall1011(first.after,first.authority) laterDefs==MarkSuccessDefinitions1011(22,11112) SchemaAtom187==MarkCaptureFixture1011(replaced.after,replaced.authority,MarkOccurrence1011(replaced.after,laterDefs,8003,"TraversalSuccessful","SchemaAtom082",22)) q2==MarkRecognitionOne1011(SchemaAtom187,laterDefs,FALSE,8101) IN [old |-> old,create |-> x,first |-> first,q1 |-> q1,replaced |-> replaced,SchemaAtom187 |-> SchemaAtom187,q2 |-> q2] MarkSuccessHistoryChecks1011 == LET x==MarkSuccessHistoryFixture1011 m==x.first.mark r==x.replaced read==[tag |-> "CurrentMarkHistory",worldId |-> x.SchemaAtom187.after.id,effectId |-> m.effectId,kind |-> "TraversalSuccessful",events |-> {8002,8003},first |-> {8002}] IN /\ MarkCaptureValid1011(x.old) /\ ~x.old.mark.present /\ MarkSuccessfulSourceValid1011(x.old.event) /\ MarkCreateValid1011(x.create) /\ x.create.event.serial=2 /\ MarkCaptureValid1011(x.first) /\ MarkSuccessfulSourceValid1011(x.first.event) /\ MarkRecognitionValid1011(x.q1) /\ Cardinality(DOMAIN x.q1.after.instances)=2 /\ \A id \in DOMAIN x.q1.after.instances : x.q1.after.instances[id].status="Pending" /\ r.before.objects[2].card#r.before.objects[8].card /\ r.before.cardFacts[r.before.objects[2].card].sourceSHA=r.before.cardFacts[r.before.objects[8].card].sourceSHA /\ MarkAdvanceValid1011(r) /\ CardBatchTransfer8(r.before.objects,MarkDiscarded1011(r.before,2,12),{2},[id \in {2} |-> 12],r.before.usedObjects,"SideBDiscard","Up",[id \in {2} |-> 0]) /\ SideBPaidDeployPost(r.after.objects[22],"SideB","Equipment",TRUE,TRUE) /\ CardBatchTransfer8(MarkDiscarded1011(r.before,2,12),[r.after.objects EXCEPT ![22].deployed=FALSE],{8},[id \in {8} |-> 22],r.before.usedObjects \cup {12},"Play","Up",[id \in {8} |-> 0]) /\ MarkCaptureValid1011(x.SchemaAtom187) /\ MarkSuccessfulSourceValid1011(x.SchemaAtom187.event) /\ MarkRecognitionValid1011(x.q2) /\ DOMAIN x.q2.after.instances={} /\ MarkHistoryRead1011(x.SchemaAtom187.after,x.SchemaAtom187.authority,"SideB","TraversalSuccessful",MarkReadFixture1011(x.SchemaAtom187.after,x.SchemaAtom187.authority),read) /\ MarkSpecimen0259Branch1011(x.first.after,x.first.event,[tag |-> "Specimen0259InstructionBranch",occurrence |-> 8002,branch |-> "AdditionalCentralAItemInspection"]) /\ ~FirstMarkEvent1011(x.SchemaAtom187.after,m,"TraversalSuccessful",8001) /\ ~FirstMarkEvent1011(x.SchemaAtom187.after,m,"TraversalSuccessful",8003) MarkSpecimen0119Checks1011 == LET x==MarkCreate1011(MarkBase1011("SideB"),1) defs==MarkSingleDefinition1011(11103,3,"Specimen0119","TraversalEnded") first==MarkCaptureFixture1011(x.after,x.authority,MarkOccurrence1011(x.after,defs,8201,"TraversalEnded","SchemaAtom082",30)) q1==MarkRecognitionOne1011(first,defs,TRUE,8300) siteInspection==MarkCaptureFixture1011(first.after,first.authority,MarkOccurrence1011(first.after,defs,8202,"Inspection","SchemaAtom082",31)) later==MarkCaptureFixture1011(siteInspection.after,siteInspection.authority,MarkOccurrence1011(siteInspection.after,defs,8203,"TraversalEnded","SchemaAtom082",31)) q2==MarkRecognitionOne1011(later,defs,FALSE,8301) IN /\ MarkCaptureValid1011(first) /\ MarkRecognitionValid1011(q1) /\ Cardinality(DOMAIN q1.after.instances)=1 /\ MarkSpecimen0119Body1011(first.after,first.event,[tag |-> "Specimen0119InstructionCondition",occurrence |-> 8201,traversalId |-> 30,holds |-> FALSE]) /\ MarkCaptureValid1011(siteInspection) /\ MarkCaptureValid1011(later) /\ MarkRecognitionValid1011(q2) /\ DOMAIN q2.after.instances={} /\ MarkSpecimen0119Body1011(later.after,later.event,[tag |-> "Specimen0119InstructionCondition",occurrence |-> 8203,traversalId |-> 31,holds |-> TRUE]) MarkCleanupChecks1011 == LET x==MarkLifetimeFixture1011.ended q==MarkRecognition1011(x.after,x.authority,Empty10,Empty10,Empty10,8400) frame==LingeringCheckpointFrame910(q.after,q.cp,x.authority.current) cleanup==[tag |-> "LingeringCheckpointCleanup",frame |-> frame,expired |-> {3000},complete |-> TRUE] after==[x.after.lingering EXCEPT !.effects=Empty10,!.cleanupIds=@ \cup {8400}] IN /\ MarkRecognitionValid1011(q) /\ CleanupObservedLingering910(x.after.lingering,after,q.after,x.authority,frame,[frame EXCEPT !.returned=TRUE,!.point="ProcedureCodeb681cc249a04"],cleanup) /\ after.usedEffects=x.after.lingering.usedEffects /\ after.creations=x.after.lingering.creations /\ ~CleanupObservedLingering910(x.after.lingering,after,q.after,x.authority,[frame EXCEPT !.caller=[kind |-> "Wrong"]],[frame EXCEPT !.returned=TRUE,!.point="ProcedureCodeb681cc249a04"],cleanup) MarkRelationFixture1011(attacked,protecting) == LET x==MarkCreate1011(MarkBase1011("SideB"),1) traversal==[OpenTraversal6(40,140,"NormalizedTraversalCaller") EXCEPT !.formalBegun=TRUE,!.phase="Encounter",!.step="ProcedureCodeda7bff1d9270",!.attacked=attacked] changed==[x.after EXCEPT !.id=2,!.control.traversal=traversal,!.inside={TimingRef9("SchemaAtom138",40)},!.barrierProtection=[id \in {7} |-> protecting]] IN MarkAdvance1011(x.after,x.authority,changed,"ActualTimingTransition") MarkRelationChecks1011 == LET forced==MarkRelationFixture1011("SchemaAtom082","SchemaAtom129") outside==MarkRelationFixture1011("SchemaAtom129","SchemaAtom082") defs==MarkSingleDefinition1011(11104,4,"Specimen0026","EncounterBarrier") capture==MarkCaptureFixture1011(forced.after,forced.authority,MarkOccurrence1011(forced.after,defs,8501,"EncounterBarrier","SchemaAtom082",40)) q==MarkRecognitionOne1011(capture,defs,TRUE,8500) ended==MarkAdvance1011(outside.after,outside.authority,[outside.after EXCEPT !.id=3,!.control.traversal.complete=TRUE,!.control.traversal.phase="TraversalEnds",!.control.traversal.step="ProcedureCode9606a4cd52b4",!.inside={}],"ActualTimingTransition") IN /\ MarkAdvanceValid1011(forced) /\ MarkAdvanceValid1011(outside) /\ IndependentEncounterTraversalView6(forced.after.control.traversal,forced.after.control.traversal,TRUE) /\ MarkTraversalRelation1011(forced.after,forced.authority,MarkReadFixture1011(forced.after,forced.authority),[tag |-> "OngoingTraversalOnMark",worldId |-> 2,traversalId |-> 40,holds |-> TRUE]) /\ MarkProtectionRelation1011(forced.after,forced.authority,MarkReadFixture1011(forced.after,forced.authority),7,forced.after.barrierProtection,[tag |-> "BarrierProtectingMark",worldId |-> 2,barrierCard |-> 7,holds |-> FALSE]) /\ capture.event.traversal=forced.after.control.traversal /\ MarkCaptureValid1011(capture) /\ MarkRecognitionValid1011(q) /\ Cardinality(DOMAIN q.after.instances)=1 /\ MarkTraversalRelation1011(outside.after,outside.authority,MarkReadFixture1011(outside.after,outside.authority),[tag |-> "OngoingTraversalOnMark",worldId |-> 2,traversalId |-> 40,holds |-> FALSE]) /\ MarkProtectionRelation1011(outside.after,outside.authority,MarkReadFixture1011(outside.after,outside.authority),7,outside.after.barrierProtection,[tag |-> "BarrierProtectingMark",worldId |-> 2,barrierCard |-> 7,holds |-> TRUE]) /\ MarkAdvanceValid1011(ended) /\ MarkTraversalRelation1011(ended.after,ended.authority,MarkReadFixture1011(ended.after,ended.authority),[tag |-> "OngoingTraversalOnMark",worldId |-> 3,traversalId |-> 40,holds |-> FALSE]) /\ MarkProtectionRelation1011(ended.after,ended.authority,MarkReadFixture1011(ended.after,ended.authority),7,ended.after.barrierProtection,[tag |-> "BarrierProtectingMark",worldId |-> 3,barrierCard |-> 7,holds |-> TRUE]) MarkProvenanceChecks1011 == LET x==MarkCreate1011(MarkBase1011("SideB"),1) w==x.after a==x.authority read==MarkReadFixture1011(w,a) creator==MarkCreator1011(w,1,Empty10) completion==[tag |-> "IdentifyMarkComplete",reference |-> creator.context.currentRef,operation |-> 1,created |-> FALSE,effectId |-> 3000,targetSite |-> "SchemaAtom082"] rerolled==[w EXCEPT !.lingering.effects[3000].value.targetSite="SchemaAtom018"] choice==[w EXCEPT !.lingering.effects[3000].kind="Choice",!.lingering.effects[3000].choicePolicy="SchemaAtom149"] duplicate==[w.lingering.effects[3000] EXCEPT !.id=3001,!.value.cutoff=2] otherBirth==[x.event EXCEPT !.id=7001,!.serial=2,!.effectId=3001] double==[w EXCEPT !.eventSerial=2,!.history=ReplacementOverlay99(@,[id \in {7001} |-> otherBirth]),!.lingering.effects=ReplacementOverlay99(@,[id \in {3001} |-> duplicate])] IN /\ ~IdentifyMark1011(w,rerolled,a,creator.context,creator.origin,1,w.cardFacts,read,[tag |-> "NoDraw"],[tag |-> "Unused"],9999,9999,creator.execution,completion,{}) /\ ~MarkRead1011(choice,a,"SideB",read) /\ ~MarkRead1011(double,a,"SideB",read) /\ ~MarkRead1011([w EXCEPT !.history[7000].targetSite="SchemaAtom129"],a,"SideB",read) /\ ~MarkRead1011([w EXCEPT !.history[7000].reference.source=ObjectAbilitySource9(1)],a,"SideB",read) /\ ~MarkRead1011(w,a,"SideA",[read EXCEPT !.targetSite="SchemaAtom129"]) /\ ~MarkCreateValid1011([x EXCEPT !.draw.targetSite="SchemaAtom129"]) /\ ~MarkCreateValid1011([x EXCEPT !.creator.context.currentWorld=999]) /\ ~MarkCreateValid1011([x EXCEPT !.creator.context.currentRef.source=ObjectAbilitySource9(1)]) /\ ~MarkCreateValid1011([x EXCEPT !.creator.execution.source=ObjectAbilitySource9(1)]) /\ ~MarkCreateValid1011([x EXCEPT !.before.draws=[id \in {500} |-> x.draw]]) /\ ~MarkCreateValid1011([x EXCEPT !.before.lingering.usedEffects={3000}]) /\ ~MarkCreateValid1011([x EXCEPT !.creator.context.actualEffects[1].sourceSHA="Unbound",!.creator.context.state.effects[1].sourceSHA="Unbound"]) /\ LET c==MarkSuccessHistoryFixture1011.first IN /\ ~CaptureMarkEvent1011(c.before,c.after,c.authority,[c.event EXCEPT !.journalSerial=@+1],c.mark) /\ ~CaptureMarkEvent1011(c.before,c.after,c.authority,[c.event EXCEPT !.snapshot.id=999],c.mark) /\ ~CaptureMarkEvent1011(c.before,c.after,c.authority,[c.event EXCEPT !.targetSite="SchemaAtom129"],c.mark) MarkRenewalChecks1011 == LET next==MarkLifetimeFixture1011.next x==MarkCreateDetails1011([world |-> next.after,authority |-> next.authority],1,1,3001,7001,501) read==MarkReadFixture1011(x.after,x.authority) IN /\ IdentifyMark1011(x.before,x.after,x.authority,x.creator.context,x.creator.origin,1,x.before.cardFacts,MarkReadFixture1011(x.before,x.authority),x.draw,MarkSampler1011,3001,7001,x.creator.execution,x.completion,{x.event}) /\ read.targetSite="SchemaAtom082" /\ read.effectId=3001 /\ read.turn=11 /\ read.cutoff=2 /\ DOMAIN x.after.lingering.effects={3000,3001} /\ x.after.lingering.effects[3000].status="Expired" /\ MarkRead1011(x.after,x.authority,"SideA",read) /\ LiveMarkIds1011(x.after.lingering,x.authority.current)={3001} /\ MarkRelatedEvents1011(x.after,read,"TraversalSuccessful")={} MarkOtherTargetSiteBranches1011 == \A atom \in {2,3} : LET x==MarkCreate1011(MarkBase1011("SideB"),atom) defs==MarkSuccessDefinitions1011(2,11102) c==MarkCaptureFixture1011(x.after,x.authority,MarkOccurrence1011(x.after,defs,8601,"TraversalSuccessful",MarkSampler1011.mapping[atom],50)) q==MarkRecognitionOne1011(c,defs,TRUE,8600) IN /\ MarkCaptureValid1011(c) /\ MarkSuccessfulSourceValid1011(c.event) /\ MarkRecognitionValid1011(q) /\ Cardinality(DOMAIN q.after.instances)=2 /\ MarkSpecimen0259Branch1011(c.after,c.event,[tag |-> "Specimen0259InstructionBranch",occurrence |-> 8601,branch |-> "InspectionCentralAAfterTraversal"]) SabotageStrings1012 == INSTANCE TLC SabotageWorld1012(source,h,d,amount) == LET aHand=={100+i : i \in 1..h} aDrawPile==[i \in 1..d |-> 200+i] aliases==aHand \cup SetupRange(aDrawPile) physical==[id \in aliases |-> "sabotage-physical-" \o SabotageStrings1012!ToString(id)] semantic==[id \in aliases |-> IF id % 2=0 THEN "Specimen0138" ELSE "Specimen0101"] cards==[id \in aliases |-> [EscalatingResourceContestCard108(semantic[id],FALSE,FALSE) EXCEPT !.card=physical[id],!.zone=IF id \in aHand THEN "SideAHand" ELSE "SideADeck",!.face="Down",!.marks={"OldObjectRestriction"}]] sources==[id \in {500,600,700,800,900,950} |-> CASE id=500 -> EscalatingResourceContestCard108(source,CardFacts10[source].kind \in {"Technique","Equipment","Support"},FALSE) [] id=600 -> EscalatingResourceContestCard108("Specimen0024",FALSE,FALSE) [] id=700 -> EscalatingResourceContestCard108("Specimen0072",source#"Specimen0141",FALSE) [] id=800 -> EscalatingResourceContestCard108("Specimen0110",TRUE,TRUE) [] id=900 -> [EscalatingResourceContestCard108("Specimen0041",TRUE,FALSE) EXCEPT !.card="Specimen0041-observer-copy"] [] OTHER -> [EscalatingResourceContestCard108("Specimen0138",FALSE,FALSE) EXCEPT !.zone="SideADiscard",!.marks={"UnrelatedRestriction"}]] objects==ReplacementOverlay99(cards,sources) facts==ReplacementOverlay99(ReplacementOverlay99(CardFacts10,[name \in {"Specimen0041-observer-copy"} |-> CardFacts10["Specimen0041"]]),[name \in {physical[id] : id \in aliases} |-> CardFacts10[semantic[CHOOSE id \in aliases : physical[id]=name]]]) ref==InstructionWindowRef93(OpenInstruction93(12001,"Ability",12002,ObjectAbilitySource9(500),"Play",1,"NoValue",<<"SchemaAtom139">>,FALSE)) effect==[id |-> 1,kind |-> "SchemaAtom139",actor |-> "SideA",abilityController |-> "SideB",value |-> amount,sourceCard |-> source,sourceSHA |-> CardFacts10[source].sourceSHA,baseOrigin |-> ref.source] ctx==[id |-> 12003,phase |-> "Resolving",currentWorld |-> 100,currentRef |-> ref,templates |-> [id \in {1} |-> effect],state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> [id \in {1} |-> effect]] packet==[tag |-> "CurrentSabotagePacket",key |-> SabotageKey1012(ctx,1),reference |-> ref,snapshotId |-> 100,sourceCard |-> source,sourceSHA |-> CardFacts10[source].sourceSHA, amount |-> amount,actor |-> "SideA",abilityController |-> "SideB",sourcePhysical |-> source,choicePolicy |-> "InternalResolutionChoice",trashProfile |-> "OrdinaryUnreplaced"] IN [id |-> 100,objects |-> objects,aHand |-> aHand,aDrawPile |-> aDrawPile,usedObjects |-> DOMAIN objects,owners |-> [id \in DOMAIN objects |-> objects[id].side], outcome |-> "Playing",cardFacts |-> facts,sourceDefinitions |-> [name \in DOMAIN facts |-> IF name \in {physical[id] : id \in aliases} THEN semantic[CHOOSE id \in aliases : physical[id]=name] ELSE IF name="Specimen0041-observer-copy" THEN "Specimen0041" ELSE name],historicalPhysical |-> Empty10, sideAKnowledge |-> Empty10,currentLookIds |-> [p \in SetupPlayers |-> {}],expectedInstructions |-> [id \in {ctx.id} |-> ctx],sabotagePackets |-> [key \in {packet.key} |-> packet], usedProcedures |-> {},usedWorlds |-> {100},completedSabotage |-> {},eventIds |-> {},usedOccurrenceIds |-> {},sabotageOccurrences |-> Empty10,sabotageEvents |-> Empty10,trashRules |-> Empty10, activity |-> ActivityContext9,points |-> [p \in SetupPlayers |-> 0],gameStarted |-> TRUE] SabotageContextFixture1012(world) == world.expectedInstructions[12003] SabotagePacketFixture1012(world) == world.sabotagePackets[SabotageKey1012(SabotageContextFixture1012(world),1)] SabotageChoiceValid1012(world,aHandChoice) == LET c==SabotageContextFixture1012(world) p==SabotagePacketFixture1012(world) f==OpenSabotageFrame1012(12500,c,1,world,p) d==[tag |-> "SideASabotageCentralAChoice",actor |-> "SideA",frameId |-> 12500,snapshotId |-> world.id,view |-> SideASabotageView1012(world,p),aHand |-> aHandChoice] IN ChooseSabotageCentralA1012(f,[f EXCEPT !.phase="ReadyRetire",!.choiceSealed=TRUE,!.aHandChosen=aHandChoice,!.aDrawPileCount=SabotageTotal1012(world,p.amount)-Cardinality(aHandChoice)],c,1,world,p,d) SabotageChoices1012(world,amount) == {q \in SUBSET world.aHand : Cardinality(q)<=SabotageTotal1012(world,amount) /\ SabotageTotal1012(world,amount)-Cardinality(q)<=Len(world.aDrawPile)} SabotageTraversal1012(world,aHandChoice) == LET ctx==SabotageContextFixture1012(world) packet==SabotagePacketFixture1012(world) frame==OpenSabotageFrame1012(12500,ctx,1,world,packet) decision==[tag |-> "SideASabotageCentralAChoice",actor |-> "SideA",frameId |-> frame.id,snapshotId |-> world.id,view |-> SideASabotageView1012(world,packet),aHand |-> aHandChoice] ready==[frame EXCEPT !.phase="ReadyRetire",!.choiceSealed=TRUE,!.aHandChosen=aHandChoice,!.aDrawPileCount=SabotageTotal1012(world,packet.amount)-Cardinality(aHandChoice)] selected==SabotageSelected1012(ready,world) successors==[id \in selected |-> 10000+id] objects==ReplacementOverlay99(Without101(world.objects,selected),[new \in {successors[old] : old \in selected} |-> [world.objects[CHOOSE old \in selected : successors[old]=new] EXCEPT !.zone="SideADiscard",!.face="Down",!.loc=0,!.host=0,!.deployed=FALSE,!.activated=FALSE,!.marks={}]]) eventMap==IF selected={} THEN Empty10 ELSE [id \in {12600} |-> SabotageRetireEvent1012(12600,ready,world,world.id+1,successors)] after==[world EXCEPT !.id=world.id+1,!.objects=objects,!.aHand=@ \ aHandChoice,!.aDrawPile=SubSeq(@,ready.aDrawPileCount+1,Len(@)), !.owners=ReplacementOverlay99(Without101(@,selected),[new \in {successors[old] : old \in selected} |-> world.owners[CHOOSE old \in selected : successors[old]=new]]), !.usedObjects=@ \cup {successors[old] : old \in selected},!.usedProcedures=@ \cup {12500},!.usedWorlds=@ \cup {world.id+1},!.completedSabotage=@ \cup {packet.key}, !.eventIds=@ \cup DOMAIN eventMap,!.sabotageEvents=ReplacementOverlay99(@,eventMap)] done==[ready EXCEPT !.phase="Complete",!.successors=successors,!.complete=TRUE,!.afterWorld=world.id+1] completion==[tag |-> "SabotageBodyComplete",reference |-> frame.reference,operation |-> 1,snapshotId |-> world.id+1,frameId |-> 12500,actor |-> "SideA",trashed |-> selected,events |-> DOMAIN eventMap,complete |-> TRUE] IN [before |-> world,context |-> ctx,packet |-> packet,frame |-> frame,decision |-> decision,ready |-> ready,successors |-> successors,after |-> after,done |-> done,events |-> eventMap,completion |-> completion] SabotageTraversalValid1012(x) == /\ OpenSabotage1012(12500,x.context,1,x.before,x.packet,x.frame) /\ ChooseSabotageCentralA1012(x.frame,x.ready,x.context,1,x.before,x.packet,x.decision) /\ ResolveSabotage1012(x.ready,x.done,x.context,1,x.before,x.after,x.packet,x.successors,x.after.id,12600,x.events,x.completion) SabotageAllocationChecks1012 == /\ \A h,d \in 0..3 : \A n \in 1..5 : LET w==SabotageWorld1012("Specimen0048",h,d,n) choices==SabotageChoices1012(w,n) IN /\ choices#{} /\ \A q \in choices : LET x==SabotageTraversal1012(w,q) IN /\ SabotageTraversalValid1012(x) /\ Cardinality(x.completion.trashed)=MinOf(n,h+d) /\ SabotageZones1012(x.after) /\ x.after.outcome="Playing" /\ x.after.objects[950]=w.objects[950] /\ x.after.aDrawPile=SubSeq(w.aDrawPile,x.ready.aDrawPileCount+1,d) /\ \A old \in DOMAIN x.successors : x.after.objects[x.successors[old]].marks={} /\ x.after.objects[x.successors[old]].card=w.objects[old].card /\ x.after.owners[x.successors[old]]="SideA" /\ LET w==SabotageWorld1012("Specimen0083",2,30,2) IN \A q \in SUBSET w.aHand : SabotageTraversalValid1012(SabotageTraversal1012(w,q)) /\ LET w==SabotageWorld1012("Specimen0048",5,2,4) IN /\ \A q \in SabotageChoices1012(w,4) : Cardinality(q)>=2 /\ SabotageTraversalValid1012(SabotageTraversal1012(w,q)) /\ ~SabotageChoiceValid1012(w,{}) /\ LET w==SabotageWorld1012("Specimen0048",2,1,4) x==SabotageTraversal1012(w,w.aHand) IN /\ SabotageTraversalValid1012(x) /\ x.after.aHand={} /\ Len(x.after.aDrawPile)=0 /\ RequiredEmptyDeckWinner4("SideA",x.after.aDrawPile,FALSE,FALSE)="NoValue" SabotageSourceChecks1012 == /\ \A source \in SabotageSources1012 : LET n==CASE source="Specimen0083" -> 2 [] source="Specimen0048" -> 4 [] source \in {"Specimen0242","Specimen0041"} -> 3 [] OTHER -> 1 w==SabotageWorld1012(source,2,3,n) IN \A q \in SabotageChoices1012(w,n) : SabotageTraversalValid1012(SabotageTraversal1012(w,q)) /\ \A n \in {-2,0} : LET w==SabotageWorld1012("Specimen0159",2,2,n) x==SabotageTraversal1012(w,{}) IN /\ SabotageTraversalValid1012(x) /\ x.events=Empty10 /\ x.after.objects=w.objects /\ x.after.aHand=w.aHand /\ x.after.aDrawPile=w.aDrawPile /\ LET w==SabotageWorld1012("Specimen0159",2,2,1) c==[SabotageContextFixture1012(w) EXCEPT !.state.effects=Empty10,!.actualEffects=Empty10] current==[w EXCEPT !.expectedInstructions=[id \in {c.id} |-> c]] IN SabotageOmitted1012(c,1,current,w.objects,w.aHand,w.aDrawPile,{}) SabotagePrivacyChecks1012 == LET w==SabotageWorld1012("Specimen0083",2,3,2) hidden==[w EXCEPT !.aDrawPile= <>] x==SabotageTraversal1012(w,{101}) y==SabotageTraversal1012(hidden,{101}) moved=={x.successors[id] : id \in DOMAIN x.successors} sideARead==[tag |-> "SabotageArchiveLook",viewer |-> "SideA",snapshotId |-> x.after.id,visible |-> moved] sideBRead==[sideARead EXCEPT !.viewer="SideB",!.visible={}] capacity==[id \in {"EarlierLegalLook"} |-> "RememberedCard"] IN /\ SideASabotageView1012(w,x.packet)=SideASabotageView1012(hidden,y.packet) /\ SabotageChoices1012(w,2)=SabotageChoices1012(hidden,2) /\ SabotageTraversalValid1012(x) /\ SabotageTraversalValid1012(y) /\ x.events[12600].fromADrawPile#y.events[12600].fromADrawPile /\ x.completion.trashed#y.completion.trashed /\ SabotagePublicSummary1012(x.events[12600])=SabotagePublicSummary1012(y.events[12600]) /\ SideASabotageView1012([w EXCEPT !.sideAKnowledge=capacity],x.packet).previousKnowledge=capacity /\ HandVisibleCards4(w.aHand,"SideA","SideA",{})=w.aHand /\ ~DeckMayLook4("SideA",FALSE) /\ ~ReadSabotageDiscardSite1012(x.frame,w,"SideA",{},sideARead) /\ ~ReadSabotageDiscardSite1012(x.ready,w,"SideA",{},sideARead) /\ ReadSabotageDiscardSite1012(x.done,x.after,"SideA",{},sideARead) /\ ReadSabotageDiscardSite1012(x.done,x.after,"SideB",{},sideBRead) /\ ~ReadSabotageDiscardSite1012(x.done,x.after,"SideB",moved,[sideBRead EXCEPT !.visible=moved]) /\ DiscardArrivalFace4("SideA","SideAHand","Retire",TRUE)="Up" /\ \A id \in moved : x.after.objects[id].face="Down" /\ \A id \in w.aHand \cup SetupRange(w.aDrawPile) : ~DefaultActive(w.objects[id],TRUE,w.cardFacts) SabotageDepartedSource1012 == LET w==SabotageWorld1012("Specimen0242",1,2,3) objects==ReplacementOverlay99(Without101(w.objects,{500}),[id \in {5000} |-> [w.objects[500] EXCEPT !.zone="SideBDiscard",!.face="Up",!.deployed=FALSE,!.activated=FALSE,!.loc=0,!.marks={}]]) c==[SabotageContextFixture1012(w) EXCEPT !.currentWorld=101] p==[SabotagePacketFixture1012(w) EXCEPT !.snapshotId=101] next==[w EXCEPT !.id=101,!.objects=objects,!.usedObjects=@ \cup {5000},!.owners=ReplacementOverlay99(Without101(@,{500}),[id \in {5000} |-> "SideB"]), !.usedWorlds=@ \cup {101},!.historicalPhysical=[id \in {500} |-> "Specimen0242"],!.expectedInstructions=[id \in {c.id} |-> c],!.sabotagePackets=[key \in {p.key} |-> p]] IN [before |-> w,after |-> next] SabotageDepartureChecks1012 == LET d==SabotageDepartedSource1012 x==SabotageTraversal1012(d.after,d.after.aHand) IN /\ CardBatchTransfer8(d.before.objects,d.after.objects,{500},[id \in {500} |-> 5000],d.before.usedObjects,"SideBDiscard","Up",[id \in {500} |-> 0]) /\ SabotageTraversalValid1012(x) /\ 500 \notin DOMAIN x.before.objects /\ x.packet.sourceCard="Specimen0242" /\ Cardinality(x.completion.trashed)=3 /\ x.after.objects[5000]=d.after.objects[5000] SabotageNegativeChecks1012 == LET w==SabotageWorld1012("Specimen0048",2,3,4) x==SabotageTraversal1012(w,w.aHand) first==CHOOSE old \in DOMAIN x.successors : TRUE next==x.after shifted==[w EXCEPT !.aDrawPile= <>] IN /\ ~ChooseSabotageCentralA1012(x.frame,x.ready,x.context,1,w,x.packet,[x.decision EXCEPT !.actor="SideB"]) /\ ~SabotageChoiceValid1012(w,{w.aDrawPile[1]}) /\ ~ChooseSabotageCentralA1012(x.ready,x.ready,x.context,1,w,x.packet,x.decision) /\ ~ChooseSabotageCentralA1012(x.frame,x.ready,x.context,1,shifted,x.packet,x.decision) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.objects[x.successors[first]].face="Up"],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.objects[x.successors[first]].marks={"InheritedRestriction"}],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.objects[950].marks={}],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.objects=ReplacementOverlay99(@,[id \in {first} |-> w.objects[first]])],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.aDrawPile=w.aDrawPile],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~ResolveSabotage1012(x.ready,x.done,x.context,1,w,[next EXCEPT !.owners[x.successors[first]]="SideB"],x.packet,x.successors,next.id,12600,x.events,x.completion) /\ ~SabotagePacket1012(x.context,w,1,[x.packet EXCEPT !.amount=2]) /\ ~SabotagePacket1012([x.context EXCEPT !.currentWorld=99],w,1,x.packet) /\ ~OpenSabotage1012(12500,x.context,1,[w EXCEPT !.completedSabotage={x.packet.key}],x.packet,x.frame) /\ SabotageSupport1012([x.packet EXCEPT !.choicePolicy="AnnouncedCentralATargets"])="RequiresTargetTimingAdapter" /\ SabotageSupport1012([x.packet EXCEPT !.trashProfile="ExternalReplacement"])="RequiresOwningRetireAdapter" /\ ~OpenSabotage1012(12500,x.context,1,w,[x.packet EXCEPT !.trashProfile="ExternalReplacement"],x.frame) SabotageObserverDefinitions1012 == LET cards==[object \in {600,700,800,900} |-> CASE object=600 -> "Specimen0024" [] object=700 -> "Specimen0072" [] object=800 -> "Specimen0110" [] OTHER -> "Specimen0041"] defs==[object \in DOMAIN cards |-> [MarkDefinition1011(12000+object,object,cards[object],"CardsRetireed") EXCEPT !.trigger.kinds={"CardsRetireed","CardRetireed"},!.trigger.actor="SchemaAtom016"]] IN [key \in {ConditionalKey96(defs[object]) : object \in DOMAIN defs} |-> defs[CHOOSE object \in DOMAIN defs : ConditionalKey96(defs[object])=key]] SabotageRecognition1012(x) == LET definitions==SabotageObserverDefinitions1012 world==[x.after EXCEPT !.trashRules=[key \in DOMAIN definitions |-> LET d==definitions[key] card==x.after.sourceDefinitions[x.after.objects[d.syntax.source.object].card] IN [definition |-> d,card |-> card,sourceSHA |-> x.after.cardFacts[card].sourceSHA,role |-> SabotageObserverRole1012(card)]]] previous==MarkSnapshot1011(world.id,0,"PreviousCheckpoint",definitions,world) snapshot==MarkSnapshot1011(world.id,0,"RetireOccurrence",definitions,world) beforeSnapshot==MarkSnapshot1011(x.before.id,0,"BeforeSabotage",definitions,x.before) batch==x.events[12600] allocation==[unit \in {0} \cup batch.objects |-> 12600000+unit] events==[id \in {allocation[unit] : unit \in DOMAIN allocation} |-> NewSabotageOccurrence1012(id,batch,CHOOSE unit \in DOMAIN allocation : allocation[unit]=id,snapshot,beforeSnapshot)] published==[world EXCEPT !.sabotageOccurrences=events] before==NewConditionalLedger96(previous) begin==MarkSnapshot1011(world.id,12700,"CheckpointBeginning",definitions,world) cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> 12700,previousCheckpoint |-> 0,serial |-> 1,previousSnapshot |-> previous,beginSnapshot |-> begin, processingSnapshot |-> [begin EXCEPT !.point="ProcedureCodee605a78f5d5e"],stepSerial |-> 0,occurrences |-> events,caller |-> [kind |-> "SabotageInstructionEnd",reference |-> x.context.currentRef,frameId |-> 12500]] conditions==[key \in DOMAIN definitions |-> [id \in DOMAIN events |-> [tag |-> "ConditionalTriggerStipulations",ability |-> definitions[key].syntax.id,source |-> definitions[key].syntax.source, occurrence |-> id,snapshotId |-> snapshot.id,results |-> [part \in {1} |-> definitions[key].syntax.source.object=600 /\ events[id].unit=0 /\ batch.fromCentralA#{}]]]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) instances==[key \in candidates |-> 2000000000+key.occurrence] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 12800,group |-> 12900,checkpointId |-> cp.id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,instances,bindings) IN [world |-> published,before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> instances,bindings |-> bindings, batch |-> batch,occurrenceAllocation |-> allocation,occurrenceSnapshot |-> snapshot,beforeSnapshot |-> beforeSnapshot] SabotageRecognitionValid1012(q) == /\ PublishSabotageOccurrences1012(q.world,q.batch,q.occurrenceAllocation,q.occurrenceSnapshot,q.beforeSnapshot,q.cp.occurrences) /\ \A key \in DOMAIN q.definitions : \A id \in DOMAIN q.cp.occurrences : SabotageTriggerStipulation1012(q.world,q.definitions[key],q.cp.occurrences[id],q.world.trashRules[key],q.conditions[key][id]) /\ EscalatingResourceContestRecognitionValid108(q) SabotageObserverChecks1012 == LET w==SabotageWorld1012("Specimen0048",2,3,4) x==SabotageTraversal1012(w,w.aHand) q==SabotageRecognition1012(x) deckOnly==SabotageTraversal1012(SabotageWorld1012("Specimen0159",2,3,1),{}) q2==SabotageRecognition1012(deckOnly) IN /\ SabotageTraversalValid1012(x) /\ SabotageRecognitionValid1012(q) /\ Cardinality(DOMAIN q.after.instances)=1 /\ \A id \in DOMAIN q.after.instances : q.after.instances[id].definition.source=ObjectAbilitySource9(600) /\ q.after.instances[id].status="Pending" /\ Cardinality(DOMAIN q.cp.occurrences)=Cardinality(q.batch.objects)+1 /\ q.occurrenceSnapshot.cardActivity[700] /\ q.occurrenceSnapshot.cardActivity[800] /\ q.occurrenceSnapshot.cardActivity[900] /\ SabotageTraversalValid1012(deckOnly) /\ SabotageRecognitionValid1012(q2) /\ DOMAIN q2.after.instances={} /\ \A key \in DOMAIN q.definitions : q.world.trashRules[key].card#"Specimen0024" => \A id \in DOMAIN q.cp.occurrences : ~q.conditions[key][id].results[1] DividendWorld1013(card,progress,exampleFamily052,considered) == LET objective==ReplacementOverlay99(EscalatingResourceContestCard108(card,TRUE,FALSE),[area |-> "Root",targetSite |-> "AuxiliarySiteA",face |-> "Down",marks |-> {"OldObjectRestriction"}]) exampleFamily023==ReplacementOverlay99(EscalatingResourceContestCard108("Specimen0208",TRUE,exampleFamily052),[area |-> "Root",targetSite |-> "AuxiliarySiteA",face |-> IF exampleFamily052 THEN "Up" ELSE "Down"]) cards==[id \in {50,100,900} |-> IF id=100 THEN objective ELSE IF id=900 THEN exampleFamily023 ELSE [EscalatingResourceContestCard108("Specimen0110",TRUE,TRUE) EXCEPT !.marks={"UnrelatedRestriction"}]] objects==ReplacementOverlay99(cards,[id \in 201..(200+progress) |-> LoadedCounterToken109("Progress","Play",100,"SideA")]) begin==[id |-> 13000,mode |-> "ObjectiveCompletion",actor |-> "SideA",point |-> "ObjectiveCompletionBegins",snapshotId |-> 100,object |-> 100,sourceCard |-> card,costProfile |-> "OrdinaryCostlessObjectiveCompletion"] IN [id |-> 100,objects |-> objects,outcome |-> "Playing",cardFacts |-> CardFacts10,definitions |-> [id \in DOMAIN CardFacts10 |-> id],printed |-> Empty10,owners |-> Empty10,visible |-> Empty10, usedObjects |-> DOMAIN objects,usedWorlds |-> {100},requirements |-> [id \in {100} |-> DividendFacts1013!DividendPrintedFacts1013[card].requirement-IF exampleFamily052 THEN 1 ELSE 0], consideredProgress |-> [id \in {100} |-> considered],consideredSources |-> IF considered=0 THEN Empty10 ELSE [id \in {1} |-> [tag |-> "SyntheticConsideredProgressProvider",host |-> 100,value |-> considered]], objectiveCompletionBeginnings |-> [id \in {13000} |-> begin],dividendCaptures |-> Empty10,dividendBindings |-> Empty10,objectiveCompletionEvents |-> Empty10,objectiveCompletionEventIds |-> {},historicalPhysical |-> Empty10, movementHistory |-> Empty10,loadHistory |-> Empty10,loadLinks |-> Empty10,nextCounterObject |-> 10000,completedCounterInstructions |-> {},counterEventIds |-> {},dividendPlacementEvents |-> Empty10, dividendBodyAnchors |-> Empty10,requirementProfile |-> "PrintedAndExampleFamily052Only",conditionalLedger |-> Empty10,gameStarted |-> TRUE,activity |-> ActivityContext9,points |-> [p \in SetupPlayers |-> 0]] DividendCaptureFixture1013(world) == LET begin==world.objectiveCompletionBeginnings[13000] fact==DividendFacts1013!DividendPrintedFacts1013[begin.sourceCard] physical==DividendPhysicalProgress1013(world,100) count==Cardinality(physical)+world.consideredProgress[100] IN [tag |-> "DividendObjectiveCompletionBegin",objectiveCompletionId |-> 13000,beginSnapshot |-> world.id,oldObject |-> 100,physical |-> world.objects[100].card,sourceCard |-> begin.sourceCard,sourceSHA |-> fact.sourceSHA, requirement |-> world.requirements[100],progress |-> count,physicalProgress |-> physical,considered |-> world.consideredProgress[100],multiplier |-> fact.multiplier,excess |-> MaxOf(0,count-world.requirements[100]),beforeObjects |-> world.objects] DividendObjectiveCompletionFixture1013(world) == LET capture==DividendCaptureFixture1013(world) before==[world EXCEPT !.dividendCaptures=[id \in {13000} |-> capture]] moved==DividendObjectiveCompletionMap1013(before.objects,100,1000) objects==Without101(moved,capture.physicalProgress) binding==[tag |-> "DividendObjectiveCompletionBinding",objectiveCompletionId |-> 13000,oldObject |-> 100,newObject |-> 1000,physical |-> capture.physical,beforeSnapshot |-> 100,afterSnapshot |-> 101] event==[id |-> 13100,kind |-> "ObjectivePlacementd",actor |-> "SideA",object |-> 1000,objectiveCompletionId |-> 13000,binding |-> binding] after==[before EXCEPT !.id=101,!.objects=objects,!.usedObjects=@ \cup {1000},!.usedWorlds=@ \cup {101},!.requirements=[id \in {1000} |-> DividendFacts1013!DividendPrintedFacts1013[capture.sourceCard].requirement], !.consideredProgress=[id \in {1000} |-> 0],!.historicalPhysical=[id \in {100} |-> capture.physical],!.dividendBindings=[id \in {13000} |-> binding],!.objectiveCompletionEventIds={13100},!.objectiveCompletionEvents=[id \in {13100} |-> event]] IN [before |-> before,after |-> after,begin |-> before.objectiveCompletionBeginnings[13000],capture |-> capture,moved |-> moved,binding |-> binding,event |-> event] DividendObjectiveCompletionValid1013(x) == MoveDividendObjective1013(x.before,x.after,x.begin,x.capture,1000,x.moved,x.binding,13100,x.event) DividendCaptureChecks1013 == /\ \A card \in DividendSources1013 : \A count \in 3..6 : \A exampleFamily023 \in BOOLEAN : LET w==DividendWorld1013(card,count,exampleFamily023,0) x==DividendObjectiveCompletionFixture1013(w) IN /\ CaptureDividendBegin1013(w,w.objectiveCompletionBeginnings[13000],w.cardFacts,x.capture) /\ DividendObjectiveCompletionValid1013(x) /\ x.capture.requirement=IF exampleFamily023 THEN 2 ELSE 3 /\ x.capture.progress=count /\ x.capture.excess=MaxOf(0,count-x.capture.requirement) /\ x.after.objects[1000].marks={} /\ x.after.objects[50]=w.objects[50] /\ DividendPhysicalProgress1013(x.after,1000)={} /\ x.after.requirements[1000]=3 /\ LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0082",5,FALSE,0)) IN x.capture.excess=2 /\ x.capture.multiplier=2 /\ LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0186",3,TRUE,0)) IN x.capture.requirement=2 /\ x.capture.progress=3 /\ x.capture.excess=1 /\ DividendObjectiveCompletionValid1013(x) /\ LET w==DividendWorld1013("Specimen0082",3,FALSE,2) x==DividendObjectiveCompletionFixture1013(w) IN /\ DividendObjectiveCompletionValid1013(x) /\ x.capture.progress=5 /\ Cardinality(x.capture.physicalProgress)=3 /\ x.capture.excess=2 /\ x.after.consideredSources=w.consideredSources /\ x.after.consideredProgress[1000]=0 DividendDefinition1013(card) == [MarkDefinition1011(13200,1000,card,"ObjectivePlacementd") EXCEPT !.trigger.actor="SideA",!.trigger.subject="SchemaAtom149",!.triggerRequirements={}] DividendRecognition1013(x) == LET d==DividendDefinition1013(x.capture.sourceCard) definitions==[key \in {ConditionalKey96(d)} |-> d] snapshot==MarkSnapshot1011(x.after.id,0,"ScoredOccurrence",definitions,x.after) oldSnapshot==MarkSnapshot1011(x.before.id,0,"ObjectiveCompletionBegins",definitions,x.before) event==ReplacementOverlay99(EscalatingResourceContestOccurrenceBase108(13100,"ObjectivePlacementd",1000,"SideA","SideA",snapshot,13000), [movement |-> [tag |-> "ObjectiveCompletion",oldObject |-> 100,newObject |-> 1000,beforeSnapshot |-> oldSnapshot],scored |-> x.event]) previous==MarkSnapshot1011(x.after.id,0,"PreviousCheckpoint",definitions,x.after) before==NewConditionalLedger96(previous) begin==MarkSnapshot1011(x.after.id,13300,"CheckpointBeginning",definitions,x.after) cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> 13300,previousCheckpoint |-> 0,serial |-> 1,previousSnapshot |-> previous,beginSnapshot |-> begin, processingSnapshot |-> [begin EXCEPT !.point="ProcedureCodee605a78f5d5e"],stepSerial |-> 0,occurrences |-> [id \in {event.id} |-> event],caller |-> [kind |-> "ObjectiveCompletionProcedureEnd",objectiveCompletionId |-> 13000]] conditions==[key \in DOMAIN definitions |-> [id \in {event.id} |-> [tag |-> "ConditionalTriggerStipulations",ability |-> d.syntax.id,source |-> d.syntax.source,occurrence |-> event.id,snapshotId |-> event.snapshot.id,results |-> Empty10]]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> 13400] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 13500,group |-> 13600,checkpointId |-> 13300]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) world==ReplacementOverlay99(x.after,[conditionalLedger |-> after,dividendDefinitions |-> [key \in DOMAIN definitions |-> [definition |-> d,card |-> x.capture.sourceCard,sourceSHA |-> x.capture.sourceSHA]]]) IN [world |-> world,before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings,event |-> event] DividendBodyStart1013(q) == LET pending==q.after.instances[13400] instance==[pending EXCEPT !.status="Resolving"] world0==[q.world EXCEPT !.conditionalLedger.instances[13400]=instance] cap==world0.dividendCaptures[13000] basis==[tag |-> "DividendCapturedBasis",instance |-> 13400,occurrence |-> 13100,objectiveCompletionId |-> 13000,target |-> 1000,physical |-> cap.physical,sourceCard |-> cap.sourceCard,sourceSHA |-> cap.sourceSHA, requirement |-> cap.requirement,progress |-> cap.progress,repetitions |-> cap.excess,multiplier |-> cap.multiplier] ref==InstructionWindowRef93(OpenInstruction93(700,"Ability",13400,ObjectAbilitySource9(1000),"SideAObjectiveCompletion",1,"NoValue",<<"RepeatedObjectivePlacement">>,FALSE)) plan==[tag |-> "DividendInstructionPlan",instance |-> 13400,reference |-> ref,basis |-> basis,cursor |-> 1,applied |-> {},skipped |-> {},totalPlaced |-> 0,complete |-> FALSE] world==[world0 EXCEPT !.dividendBodyAnchors=[id \in {13400} |-> [basis |-> basis,reference |-> ref]]] IN [beforeWorld |-> world0,world |-> world,instance |-> instance,event |-> q.event,basis |-> basis,plan |-> plan] DividendStartValid1013(s) == PublishDividendPlan1013(s.beforeWorld,s.world,s.instance,s.event,s.basis,s.plan) DividendStepFixture1013(start) == LET w==start.world p==start.plan effects==DividendEffects1013(p) context==[id |-> p.instance,phase |-> "Resolving",currentWorld |-> w.id,currentRef |-> p.reference,templates |-> effects,state |-> [effects |-> effects],actualEffects |-> effects] added==[id \in w.nextCounterObject..(w.nextCounterObject+p.basis.multiplier-1) |-> LoadedCounterToken109("Objective",w.objects[p.basis.target].zone,p.basis.target,"SideA")] eventId==14000+p.cursor event==[tag |-> "HostedCounterInstructionComplete",id |-> eventId,operation |-> "PlaceCounters",reference |-> p.reference,host |-> p.basis.target,kind |-> "Objective",amount |-> p.basis.multiplier, selected |-> {},created |-> DOMAIN added,snapshotId |-> w.id,complete |-> TRUE] next==[w EXCEPT !.id=@+1,!.objects=ReplacementOverlay99(@,added),!.completedCounterInstructions=@ \cup {CounterInstructionKey109(context,p.reference,p.cursor)},!.nextCounterObject=@+p.basis.multiplier, !.usedObjects=@ \cup DOMAIN added,!.usedWorlds=@ \cup {w.id+1},!.counterEventIds=@ \cup {eventId},!.dividendPlacementEvents=ReplacementOverlay99(@,[id \in {eventId} |-> event])] afterPlan==[p EXCEPT !.cursor=@+1,!.applied=@ \cup {p.cursor},!.totalPlaced=@+p.basis.multiplier] IN [world |-> next,plan |-> afterPlan,step |-> [before |-> p,after |-> afterPlan,context |-> context,world |-> w,next |-> next,added |-> added,eventId |-> eventId,event |-> event]] RECURSIVE DividendChain1013(_, _) DividendChain1013(start,n) == IF n=0 THEN start ELSE DividendStepFixture1013(DividendChain1013(start,n-1)) DividendStepValid1013(s) == ApplyDividendPlacement1013(s.before,s.after,s.context,s.world,s.next,{},s.added,s.eventId,s.event) DividendBodyChecks1013 == /\ \A card \in DividendSources1013 : \A count \in 3..6 : \A exampleFamily023 \in BOOLEAN : LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013(card,count,exampleFamily023,0)) q==DividendRecognition1013(x) s==DividendBodyStart1013(q) e==s.basis.repetitions done==DividendChain1013(s,e) receipt==[tag |-> "DividendInstructionComplete",instance |-> 13400,reference |-> s.plan.reference,objectiveCompletionId |-> 13000,applications |-> 1..e,skipped |-> {},totalPlaced |-> e*s.basis.multiplier,complete |-> TRUE] IN /\ DividendObjectiveCompletionValid1013(x) /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(DOMAIN q.after.instances)=1 /\ q.after.instances[13400].status="Pending" /\ DividendStartValid1013(s) /\ s.basis.requirement=x.capture.requirement /\ s.basis.progress=x.capture.progress /\ \A i \in 1..e : DividendStepValid1013(DividendChain1013(s,i).step) /\ CompleteDividendPlan1013(done.plan,[done.plan EXCEPT !.complete=TRUE],done.world,receipt) /\ Cardinality(HostedCounterIds109(done.world.objects,1000,"Objective"))=e*s.basis.multiplier /\ Cardinality(DOMAIN done.world.dividendPlacementEvents)=e /\ done.world.loadHistory=x.before.loadHistory /\ \A id \in DOMAIN done.world.dividendPlacementEvents : done.world.dividendPlacementEvents[id].amount=s.basis.multiplier /\ LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0082",5,FALSE,0)) s==DividendBodyStart1013(DividendRecognition1013(x)) done==DividendChain1013(s,2) IN /\ done.plan.totalPlaced=4 /\ DOMAIN done.world.dividendPlacementEvents={14001,14002} /\ done.world.dividendPlacementEvents[14001].amount=2 /\ done.world.dividendPlacementEvents[14002].amount=2 /\ LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0186",3,FALSE,0)) q==DividendRecognition1013(x) s==DividendBodyStart1013(q) IN /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(DOMAIN q.after.instances)=1 /\ s.basis.repetitions=0 /\ DividendStartValid1013(s) DividendBoundaryChecks1013 == LET w==DividendWorld1013("Specimen0186",4,TRUE,0) begin==w.objectiveCompletionBeginnings[13000] cap==DividendCaptureFixture1013(w) read==[tag |-> "CurrentExampleFamily052ObjectiveRequirement",snapshotId |-> 100,object |-> 100,sourceIds |-> {900},sourceSHA |-> CardFacts10["Specimen0208"].sourceSHA,value |-> 2] converted==[w EXCEPT !.objects[201].card="synthetic-converted-progress-copy"] convertedCap==DividendCaptureFixture1013(converted) power==[w EXCEPT !.objects=ReplacementOverlay99(@,[id \in {701} |-> LoadedCounterToken109("Power","Play",100,"SideA")]),!.usedObjects=@ \cup {701}] IN /\ ReadDividendExampleFamily052Requirement1013(w,100,read) /\ ~ReadDividendExampleFamily052Requirement1013([w EXCEPT !.objects[900].activated=FALSE,!.objects[900].face="Down"],100,read) /\ ~ReadDividendExampleFamily052Requirement1013([w EXCEPT !.objects[900].targetSite="OtherAuxiliarySite"],100,read) /\ ~CaptureDividendBegin1013(w,begin,w.cardFacts,[cap EXCEPT !.requirement=3]) /\ ~CaptureDividendBegin1013(w,[begin EXCEPT !.point="PreviousCheckpoint"],w.cardFacts,cap) /\ ~CaptureDividendBegin1013(w,[begin EXCEPT !.snapshotId=99],w.cardFacts,cap) /\ DividendBeginSupport1013([begin EXCEPT !.costProfile="AdditionalObjectiveCompletionCosts"])="RequiresAdditionalCostCapturePointAdapter" /\ DividendBeginSupport1013([begin EXCEPT !.mode="Replay"])="RequiresAsIfObjectiveCompletionCaptureAdapter" /\ DividendBeginSupport1013([begin EXCEPT !.mode="ClaimObjective"])="NotAnOrdinaryObjectiveCompletion" /\ DividendBeginSupport1013([begin EXCEPT !.mode="Add"])="NotAnOrdinaryObjectiveCompletion" /\ CaptureDividendBegin1013(converted,converted.objectiveCompletionBeginnings[13000],converted.cardFacts,convertedCap) /\ convertedCap.progress=4 /\ DividendCleanupSupport1013(converted,convertedCap)="RequiresConvertedCounterCleanupAdapter" /\ DividendCleanupSupport1013(power,DividendCaptureFixture1013(power))="RequiresOtherHostedCleanupAdapter" DividendMissingSourceChecks1013 == LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0082",5,FALSE,0)) s==DividendBodyStart1013(DividendRecognition1013(x)) moved==ReplacementOverlay99(Without101(s.world.objects,{1000}),[id \in {5000} |-> [s.world.objects[1000] EXCEPT !.zone="SideADiscard",!.deployed=FALSE,!.face="Up",!.loc=0,!.host=0,!.marks={}]]) copy==[s.world.objects[1000] EXCEPT !.card="PhysicalItem0009"] world==[s.world EXCEPT !.id=150,!.objects=ReplacementOverlay99(moved,[id \in {1500} |-> copy]),!.usedObjects=@ \cup {1500,5000},!.usedWorlds=@ \cup {150}, !.definitions=ReplacementOverlay99(@,[physical \in {copy.card} |-> "Specimen0082"]),!.cardFacts=ReplacementOverlay99(@,[physical \in {copy.card} |-> CardFacts10["Specimen0082"]])] skipped==[s.plan EXCEPT !.cursor=3,!.skipped={1,2}] receipt==[tag |-> "DividendInstructionComplete",instance |-> 13400,reference |-> s.plan.reference,objectiveCompletionId |-> 13000,applications |-> {},skipped |-> {1,2},totalPlaced |-> 0,complete |-> TRUE] forged==[s.plan EXCEPT !.basis.target=1500,!.basis.physical=copy.card] IN /\ DividendStartValid1013(s) /\ CardBatchTransfer8(s.world.objects,moved,{1000},[id \in {1000} |-> 5000],s.world.usedObjects,"SideADiscard","Up",[id \in {1000} |-> 0]) /\ DividendTargetStatus1013(world,s.plan)="ReferencedObjectGone" /\ SkipDividendRemainder1013(s.plan,skipped,world) /\ CompleteDividendPlan1013(skipped,[skipped EXCEPT !.complete=TRUE],world,receipt) /\ world.dividendPlacementEvents=Empty10 /\ ~DividendPlanBound1013(world,forged) /\ ~DividendPlanBound1013(s.world,[s.plan EXCEPT !.basis.repetitions=3]) DividendNegativeChecks1013 == LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0082",5,FALSE,0)) q==DividendRecognition1013(x) s==DividendBodyStart1013(q) first==DividendChain1013(s,1).step end==DividendChain1013(s,2) falseCap==[x.capture EXCEPT !.progress=0,!.requirement=3,!.excess=0] IN /\ ~MoveDividendObjective1013(x.before,x.after,x.begin,falseCap,1000,x.moved,x.binding,13100,x.event) /\ ~MoveDividendObjective1013(x.before,[x.after EXCEPT !.objects[1000].marks={"Inherited"}],x.begin,x.capture,1000,x.moved,x.binding,13100,x.event) /\ ~DividendBasis1013(s.world,s.instance,s.event,[s.basis EXCEPT !.requirement=3,!.progress=0,!.repetitions=0]) /\ ~DividendBasis1013(s.world,s.instance,[s.event EXCEPT !.object=50],s.basis) /\ ~DividendBasis1013(s.world,s.instance,[s.event EXCEPT !.scored.binding.newObject=50],s.basis) /\ DividendApplicationSupport1013(first.before,[first.context EXCEPT !.state.effects[1].value=4,!.actualEffects[1].value=4])="RequiresModifiedPlacementAdapter" /\ ~ApplyDividendPlacement1013(first.before,first.after,[first.context EXCEPT !.state.effects[1].value=4,!.templates[1].value=4,!.actualEffects[1].value=4],first.world,first.next,{},first.added,first.eventId,first.event) /\ ~ApplyDividendPlacement1013(first.before,first.after,first.context,[first.world EXCEPT !.outcome="SideA"],first.next,{},first.added,first.eventId,first.event) /\ ~ApplyDividendPlacement1013(first.before,first.after,first.context,[first.world EXCEPT !.completedCounterInstructions={CounterInstructionKey109(first.context,first.before.reference,1)}],first.next,{},first.added,first.eventId,first.event) /\ ~ApplyDividendPlacement1013(first.before,first.after,first.context,first.world,[first.next EXCEPT !.objects[50].marks={}],{},first.added,first.eventId,first.event) /\ \A id \in DOMAIN first.added : first.next.objects[id].kind="Objective" /\ first.next.objects[id].host=1000 /\ first.next.objects[id].marks={} /\ end.world.loadHistory=x.before.loadHistory /\ end.world.consideredSources=x.before.consideredSources DividendOccurrenceCheckpoint1013(world,d,event) == LET definitions==[key \in {ConditionalKey96(d)} |-> d] previous==MarkSnapshot1011(world.id,0,"PreviousCheckpoint",definitions,world) before==NewConditionalLedger96(previous) begin==MarkSnapshot1011(world.id,13800,"CheckpointBeginning",definitions,world) cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> 13800,previousCheckpoint |-> 0,serial |-> 1,previousSnapshot |-> previous,beginSnapshot |-> begin, processingSnapshot |-> [begin EXCEPT !.point="ProcedureCodee605a78f5d5e"],stepSerial |-> 0,occurrences |-> [id \in {event.id} |-> event],caller |-> [kind |-> "ReplayOrOtherOccurrenceCheckpoint"]] conditions==[key \in DOMAIN definitions |-> [id \in {event.id} |-> [tag |-> "ConditionalTriggerStipulations",ability |-> d.syntax.id,source |-> d.syntax.source,occurrence |-> event.id,snapshotId |-> event.snapshot.id,results |-> Empty10]]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> 13401] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 13801,group |-> 13802,checkpointId |-> cp.id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) IN [world |-> ReplacementOverlay99(world,[conditionalLedger |-> after,dividendDefinitions |-> [key \in DOMAIN definitions |-> [definition |-> d,card |-> "Specimen0186",sourceSHA |-> CardFacts10["Specimen0186"].sourceSHA]]]), before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings] DividendReplayFixture1013 == LET score==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0186",3,TRUE,0)) extra==[id \in {600,800} |-> IF id=600 THEN EscalatingResourceContestCard108("Specimen0071",FALSE,FALSE) ELSE [EscalatingResourceContestCard108("Specimen0030",FALSE,FALSE) EXCEPT !.zone="SideAObjectiveCompletion",!.deployed=FALSE,!.face="Up"]] world==[score.after EXCEPT !.objects=ReplacementOverlay99(@,extra),!.usedObjects=@ \cup {600,800}] ref==InstructionWindowRef93(OpenInstruction93(13700,"Ability",13701,ObjectAbilitySource9(600),"Play",1,"NoValue",<<"PlaceProgress">>,TRUE)) e==[id |-> 1,kind |-> "PlaceCounters",actor |-> "SideA",value |-> 3,target |-> 1000,counterKind |-> "Progress",counterKinds |-> {"Progress"},loadDefinition |-> 0, sourceCard |-> "Specimen0071",sourceSHA |-> CardFacts10["Specimen0071"].sourceSHA,baseOrigin |-> ref.source] context==[id |-> 13702,phase |-> "Resolving",currentWorld |-> world.id,currentRef |-> ref,templates |-> [id \in {1} |-> e],state |-> [effects |-> [id \in {1} |-> e]],actualEffects |-> [id \in {1} |-> e]] added==[id \in 10000..10002 |-> LoadedCounterToken109("Progress","SideAObjectiveCompletion",1000,"SideA")] placed==[world EXCEPT !.id=102,!.objects=ReplacementOverlay99(@,added),!.usedObjects=@ \cup DOMAIN added,!.usedWorlds=@ \cup {102},!.nextCounterObject=10003, !.completedCounterInstructions=@ \cup {CounterInstructionKey109(context,ref,1)},!.counterEventIds=@ \cup {13703}] placement==[tag |-> "HostedCounterInstructionComplete",id |-> 13703,operation |-> "PlaceCounters",reference |-> ref,host |-> 1000,kind |-> "Progress",amount |-> 3,selected |-> {},created |-> DOMAIN added,snapshotId |-> world.id,complete |-> TRUE] d==DividendDefinition1013("Specimen0186") parent==[OpenAbilityResolution9(13750,"Conditional",ObjectAbilitySource9(800),"SideAObjectiveCompletion",<<13751>>,13749) EXCEPT !.phase="Resolving",!.firstImminent=TRUE,!.detached=TRUE] plan==[OpenInstruction93(13751,"Ability",13750,ObjectAbilitySource9(800),"SideAObjectiveCompletion",1,"NoValue",<<"ReplayWhenScored">>,TRUE) EXCEPT !.phase="Resolving",!.announced=TRUE,!.targets={1000}] snapshot==MarkSnapshot1011(102,0,"ReplayOccurrence",[key \in {ConditionalKey96(d)} |-> d],placed) actual==[tag |-> "ConditionalExampleFamily092",class |-> "WhenScored",ability |-> d.syntax.id,source |-> d.syntax.source,snapshotId |-> 102,instruction |-> InstructionWindowRef93(plan),authorized |-> TRUE,occurrenceId |-> 13101, sourceCard |-> "Specimen0030",sourceSHA |-> CardFacts10["Specimen0030"].sourceSHA] event==[EscalatingResourceContestOccurrenceBase108(13101,"ObjectivePlacementd",1000,"SideA","SideA",snapshot,13751) EXCEPT !.scopeKind="Ability",!.scopeDefinition=ConditionalKey96(d)] q==DividendOccurrenceCheckpoint1013(placed,d,event) IN [score |-> score,world |-> world,placed |-> placed,context |-> context,added |-> added,placement |-> placement,definition |-> d,parent |-> parent,plan |-> plan,actual |-> actual,event |-> event,q |-> q] DividendReplayChecks1013 == LET r==DividendReplayFixture1013 claimedObjective==[r.event EXCEPT !.id=13102,!.kind="ObjectiveClaimedObjective",!.actor="SideB",!.scopeKind="Global"] added==[r.event EXCEPT !.id=13103,!.kind="ObjectiveAdded",!.scopeKind="Global"] IN /\ ExecuteBankHostedCounterInstruction109(r.context,r.context.currentRef,r.world,1,r.world.cardFacts,r.placed.objects,r.placed.loadHistory,r.placed.completedCounterInstructions,{},r.added,r.placed.nextCounterObject,13703,r.placement) /\ Cardinality(DividendPhysicalProgress1013(r.placed,1000))=3 /\ r.placed.requirements[1000]=3 /\ r.score.capture.requirement=2 /\ ExampleFamily092Occurrence96(r.definition,"WhenScored",r.plan,r.parent,"NoValue",r.actual,r.event.snapshot,r.event) /\ EscalatingResourceContestRecognitionValid108(r.q) /\ Cardinality(DOMAIN r.q.after.instances)=1 /\ r.q.after.instances[13401].status="Pending" /\ DividendEventSupport1013(r.event)="RequiresAsIfObjectiveCompletionCaptureAdapter" /\ EscalatingResourceContestRecognitionValid108(DividendOccurrenceCheckpoint1013(r.placed,r.definition,claimedObjective)) /\ DOMAIN DividendOccurrenceCheckpoint1013(r.placed,r.definition,claimedObjective).after.instances={} /\ EscalatingResourceContestRecognitionValid108(DividendOccurrenceCheckpoint1013(r.placed,r.definition,added)) /\ DOMAIN DividendOccurrenceCheckpoint1013(r.placed,r.definition,added).after.instances={} DividendConsideredBodyChecks1013 == LET x==DividendObjectiveCompletionFixture1013(DividendWorld1013("Specimen0082",3,FALSE,2)) q==DividendRecognition1013(x) s==DividendBodyStart1013(q) done==DividendChain1013(s,2) IN /\ DividendObjectiveCompletionValid1013(x) /\ EscalatingResourceContestRecognitionValid108(q) /\ DividendStartValid1013(s) /\ \A i \in 1..2 : DividendStepValid1013(DividendChain1013(s,i).step) /\ done.plan.totalPlaced=4 /\ Cardinality(HostedCounterIds109(done.world.objects,1000,"Objective"))=4 /\ done.world.consideredSources=x.before.consideredSources /\ done.world.consideredProgress[1000]=0 BidReference1014(index) == InstructionWindowRef93([OpenInstruction93(14000+index,"Ability",14000,ObjectAbilitySource9(500),"Play",index,"NoValue",<<"Bidding">>,FALSE) EXCEPT !.phase="Resolving"]) BidResourceUnit1014(zone,host) == ReplacementOverlay99(CheckpointCounter103("ResourceUnit",zone,host),[resourceUnitLocation |-> IF host#0 THEN "Hosted" ELSE IF zone="SideAResourceUnits" THEN "SideAPool" ELSE "SideBPool"]) BidPlainWorld1014(active,card,observer) == LET b==MarkBase1011(active).world cards==[id \in {500,600,650,700,900} |-> LET cid==CASE id=500 -> card [] id=600 -> "Specimen0089" [] id=650 -> "Specimen0205" [] id=700 -> "Specimen0102" [] OTHER -> observer IN EscalatingResourceContestCard108(cid,id \in {500,600,650,900} /\ CardFacts10[cid].kind \notin {"Profile","Action","Plan"},id \in {500,650,900} /\ CardFacts10[cid].kind \in {"Barrier","Facility","Attachment"})] objects==ReplacementOverlay99(cards,ReplacementOverlay99([id \in 1000..1002 |-> BidResourceUnit1014("SideAResourceUnits",0)], ReplacementOverlay99([id \in 1100..1102 |-> BidResourceUnit1014("SideBResourceUnits",0)], ReplacementOverlay99([id \in {1200} |-> BidResourceUnit1014("Play",600)],[id \in {1300} |-> LiabilityMarkerFundRow106])))) traversal==[OpenTraversal6(44,45,"NormalizedSuccessfulTraversal") EXCEPT !.formalBegun=TRUE,!.attacked="SchemaAtom082",!.phase="Success",!.step="ProcedureCodebbb14496b09b",!.reachedSuccess=TRUE,!.successful=TRUE] w==ReplacementOverlay99(b,[id |-> 100,objects |-> [objects EXCEPT ![700].zone="SideBDiscard"],cardFacts |-> CardFacts10,sourceDefinitions |-> [c \in DOMAIN CardFacts10 |-> c],definitions |-> [c \in DOMAIN CardFacts10 |-> c], control |-> [b.control EXCEPT !.traversal=traversal],traversal |-> traversal,inside |-> {TimingRef9("SchemaAtom138",44)},started |-> TRUE, controllers |-> [id \in DOMAIN objects |-> IF id=500 THEN CardFacts10[card].side ELSE IF id \in 1000..1002 \/ id \in {650,900} THEN "SideA" ELSE "SideB"], bidWalletProfile |-> "PoolFundAndExampleFamily019",activeAbilities |-> {},abilitySources |-> Empty10,abilityRoles |-> Empty10,bidValueRestrictions |-> Empty10,bidFrames |-> Empty10,usedBidFrames |-> {},bidOwners |-> Empty10,bidContinuations |-> Empty10, usedCostTransactions |-> {},bidCosts |-> Empty10,bidEvents |-> Empty10,bidEventSerial |-> 0,usedWorlds |-> {100},usedObjects |-> DOMAIN objects, printed |-> CheckpointPrinted103,owners |-> CheckpointOwners103,visible |-> {},movementHistory |-> Empty10,checkpoints |-> Empty10,conditionalLedger |-> [checkpoints |-> Empty10,instances |-> Empty10],outcome |-> "Playing"]) a==NewLifetimeAuthority910(w) IN ReplacementOverlay99(w,[lifetimeAuthority |-> a,lingering |-> ReplacementOverlay99(NewLingeringRegistry910,[frontier |-> LifetimeFrontier910(a,1)])]) BidGrant1014(world,lock) == LET host==IF lock THEN 650 ELSE 600 card==IF lock THEN "Specimen0205" ELSE "Specimen0089" kind==IF lock THEN "BarrierInstruction" ELSE "Conditional" eid==IF lock THEN 141402 ELSE 141401 source==ObjectAbilitySource9(host) blueprint==[kind |-> "Ordinary",source |-> source,originKind |-> kind,target |-> IF lock THEN "SideB" ELSE host, value |-> [kind |-> IF lock THEN "CannotSpendResourceUnits" ELSE "SpendHostedResourceUnits",player |-> "SideB",host |-> host,traversalId |-> world.traversal.id,sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA], baseDuration |-> [kind |-> "Timing",ref |-> TimingRef9("SchemaAtom138",world.traversal.id)],durationMode |-> "Specified",durationClass |-> "SchemaAtom138",choiceKey |-> IF lock THEN "ExampleFamily050SpendLock" ELSE "ExampleFamily019Spend",lingeringConsumers |-> {},otherConsumers |-> {},definitionId |-> eid] parent==[OpenAbilityResolution9(14100,kind,source,"Play",<<14101>>,14109) EXCEPT !.phase="Resolving",!.firstImminent=TRUE,!.detached=TRUE] plan==[OpenInstruction93(14101,"Ability",14100,source,"Play",1,"NoValue",<<"CreateLingering">>,FALSE) EXCEPT !.phase="Resolving"] blueprints==[id \in {eid} |-> blueprint] effect==[id |-> 1,kind |-> "CreateLingering",sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA,baseOrigin |-> source,blueprints |-> blueprints] context==[id |-> 14102,imminenceId |-> IF lock THEN 14104 ELSE 14103,phase |-> "Resolving",currentRef |-> InstructionWindowRef93(plan),currentWorld |-> world.id,templates |-> [id \in {1} |-> effect],state |-> [effects |-> [id \in {1} |-> effect]],actualEffects |-> [id \in {1} |-> effect]] origin==[kind |-> "Instruction",plan |-> plan,parent |-> parent,ruleStep |-> "NoValue"] execution==[tag |-> "LingeringEffectExecution",contextId |-> context.id,instruction |-> context.currentRef,operation |-> 1,snapshotId |-> world.id,source |-> source,blueprints |-> blueprints,carriedOut |-> TRUE] row==NewLingeringEffect910(eid,blueprint,context,1,world.lifetimeAuthority.current) registry==[world.lingering EXCEPT !.effects=ReplacementOverlay99(@,[id \in {eid} |-> row]),!.usedEffects=@ \cup {eid},!.creations=@ \cup {LingeringCreationKey910(context,1)}] IN [before |-> world,after |-> [world EXCEPT !.lingering=registry],context |-> context,origin |-> origin,execution |-> execution] BidGrantValid1014(x) == CreateObservedLingeringEffects910(x.before.lingering,x.after.lingering,x.context,x.origin,1,x.execution,x.before.lifetimeAuthority) BidWorld1014(active,card,observer) == BidGrant1014(BidPlainWorld1014(active,card,observer),FALSE).after BidObserverDefinitions1014(card) == LET d==[EscalatingResourceContestConditional108(14900,card,"AnyResult") EXCEPT !.trigger.kinds={"BidsRevealedAndPaid"}] IN [key \in {ConditionalKey96(d)} |-> d] BidContext1014(world,card,general) == LET e==[id |-> 1,kind |-> IF general THEN "SecretBid" ELSE "SimultaneousBidComparisonGame",baseOrigin |-> BidReference1014(1).source,sourceCard |-> card,sourceSHA |-> CardFacts10[card].sourceSHA, costProfile |-> "UnmodifiedNestedResourceUnits",participants |-> IF general THEN {"SideB"} ELSE SetupPlayers,rangeMode |-> IF ~general THEN "SchemaAtom127" ELSE IF card="Specimen0200" THEN "AtMost" ELSE "AnyAffordable",allowed |-> [p \in IF general THEN {"SideB"} ELSE SetupPlayers |-> IF general /\ card#"Specimen0200" THEN 0..5 ELSE {0,1,2}], reveal |-> IF general THEN "LaterInstruction" ELSE "Immediate",classification |-> IF general THEN "GeneralBid" ELSE IF card \in {"Specimen0043","Specimen0137","Specimen0053"} THEN "LegacyPairedSimultaneousBidComparison" ELSE "PrintedSimultaneousBidComparison"] IN [id |-> 14010,currentWorld |-> world.id,currentRef |-> BidReference1014(1),phase |-> "Resolving",templates |-> [id \in {1} |-> e],state |-> [effects |-> [id \in {1} |-> e]],actualEffects |-> [id \in {1} |-> e]] BidPacketFixture1014(context) == LET e==context.actualEffects[1] IN [key |-> <>,reference |-> context.currentRef,sourceCard |-> e.sourceCard,sourceSHA |-> e.sourceSHA, participants |-> e.participants,allowed |-> e.allowed,rangeMode |-> e.rangeMode,kind |-> e.kind,reveal |-> e.reveal,classification |-> e.classification] BidAt1014(world,frame) == [world EXCEPT !.bidFrames=ReplacementOverlay99(@,[id \in {frame.id} |-> frame]),!.bidOwners=ReplacementOverlay99(@,[id \in {frame.id} |-> frame.caller])] BidStart1014(world,card,general) == LET ctx==BidContext1014(world,card,general) packet==BidPacketFixture1014(ctx) f==BidInitial1014(140,packet,world) IN [before |-> world,context |-> ctx,packet |-> packet,frame |-> f,world |-> [BidAt1014(world,f) EXCEPT !.usedBidFrames=@ \cup {f.id}]] BidSelected1014(frame,p,n) == LET selections==ReplacementOverlay99(frame.selections,[q \in {p} |-> n]) IN [frame EXCEPT !.selections=selections,!.phase=IF DOMAIN selections=frame.packet.participants THEN IF frame.packet.reveal="Immediate" THEN "RevealDue" ELSE "WaitingReveal" ELSE "Selecting"] BidContinuation1014(world,frame,guess) == IF guess THEN [tag |-> "AuthorizedBidGuess",bidId |-> frame.id,instance |-> frame.caller.abilityInstance,player |-> "SideA",snapshotId |-> world.id] ELSE [tag |-> "AuthorizedBidReveal",bidId |-> frame.id,instance |-> frame.caller.abilityInstance,snapshotId |-> world.id,source |-> frame.caller.source,instruction |-> IF frame.packet.reveal="Immediate" THEN frame.caller ELSE BidReference1014(3)] BidRevealWorld1014(world,frame) == [BidAt1014(world,frame) EXCEPT !.bidContinuations=[id \in {frame.id} |-> BidContinuation1014(world,frame,FALSE)]] BidTransactions1014(frame) == [p \in frame.packet.participants |-> IF p="SideA" THEN 14501 ELSE 14502] BidRevealed1014(frame,world) == LET ref==BidContinuation1014(world,frame,FALSE).instruction f==[frame EXCEPT !.revealCaller=ref] IN [f EXCEPT !.phase="ChoosePayment",!.revealed=frame.packet.participants,!.paymentWorld=world.id,!.paymentScope=BidPaymentScope1014(world),!.transactions=BidTransactions1014(frame), !.costs=[p \in frame.packet.participants |-> BidNestedCost1014(f,world,p,BidTransactions1014(frame)[p])]] BidPlanSelected1014(frame,player,selected) == [frame EXCEPT !.plans=ReplacementOverlay99(@,[p \in {player} |-> selected]),!.choiceOrder=Append(@,player)] BidCase1014(world,card,general,nc,nr,pc,pr) == LET start==BidStart1014(world,card,general) first==BidSelected1014(start.frame,IF general THEN "SideB" ELSE "SideA",IF general THEN nr ELSE nc) both==IF general THEN first ELSE BidSelected1014(first,"SideB",nr) ready==IF general THEN [both EXCEPT !.generalStages={"Selection","Guess"},!.generalCheckpoints={14601,14602},!.guess="Even"] ELSE both rw==BidRevealWorld1014(start.world,ready) revealed==BidRevealed1014(ready,rw) p1==IF general THEN "SideB" ELSE world.turn.owner p2==IF p1="SideA" THEN "SideB" ELSE "SideA" chosen1==BidPlanSelected1014(revealed,p1,IF p1="SideA" THEN pc ELSE pr) chosen==IF general THEN chosen1 ELSE BidPlanSelected1014(chosen1,p2,IF p2="SideA" THEN pc ELSE pr) paying==BidAt1014(rw,chosen) paid==BidPaidFrame1014(chosen) selected==UNION {chosen.plans[p] : p \in chosen.packet.participants} converted=={id \in selected : world.objects[id].card#"none"} successors==[id \in converted |-> id+10000] afterObjects==CheckpointRetireMap103(world.objects,selected,successors,world.printed,world.owners,world.visible) events==IF converted={} THEN {} ELSE {MovementEvent8(14700,"Retire",converted)} history==IF converted={} THEN world.movementHistory ELSE ReplacementOverlay99(world.movementHistory,[id \in {14700} |-> MovementEvent8(14700,"Retire",converted)]) receipts==[p \in chosen.packet.participants |-> BidCompletedCost1014(chosen.costs[p],chosen.plans[p])] snapshot==MarkSnapshot1011(101,0,"BidsPaid",BidObserverDefinitions1014(world.objects[900].card),[world EXCEPT !.objects=afterObjects]) event==BidPaymentEvent1014(paid,paying,14800,snapshot) IN [start |-> start,first |-> first,both |-> both,ready |-> ready,revealWorld |-> rw,revealed |-> revealed,chosen1 |-> chosen1,chosen |-> chosen,paying |-> paying,paid |-> paid,selected |-> selected,converted |-> converted, successors |-> successors,afterObjects |-> afterObjects,events |-> events,history |-> history,receipts |-> receipts,snapshot |-> snapshot,event |-> event] BidCaseValid1014(x) == /\ BeginBid1014(x.start.context,x.start.context.currentRef,x.start.before,1,CardFacts10,140,x.start.packet,x.start.frame,x.start.world.bidFrames,x.start.world.usedBidFrames) /\ SelectSecretBid1014(x.start.frame,x.first,x.start.world,IF x.start.frame.packet.kind="SimultaneousBidComparisonGame" THEN "SideA" ELSE "SideB",x.first.selections[IF x.start.frame.packet.kind="SimultaneousBidComparisonGame" THEN "SideA" ELSE "SideB"],CardFacts10) /\ (x.start.frame.packet.kind="SimultaneousBidComparisonGame" => SelectSecretBid1014(x.first,x.both,BidAt1014(x.start.world,x.first),"SideB",x.both.selections["SideB"],CardFacts10)) /\ RevealBids1014(x.ready,x.revealed,x.revealWorld,CardFacts10,BidTransactions1014(x.ready),x.revealWorld.bidContinuations[140]) /\ ChooseBidPaymentSources1014(x.revealed,x.chosen1,BidAt1014(x.revealWorld,x.revealed),x.chosen1.choiceOrder[1],x.chosen1.plans[x.chosen1.choiceOrder[1]],CardFacts10) /\ (x.start.frame.packet.kind="SimultaneousBidComparisonGame" => ChooseBidPaymentSources1014(x.chosen1,x.chosen,BidAt1014(x.revealWorld,x.chosen1),x.chosen.choiceOrder[2],x.chosen.plans[x.chosen.choiceOrder[2]],CardFacts10)) /\ CommitBidPayments1014(x.chosen,x.paid,x.paying,CardFacts10,x.afterObjects,x.successors,14700,x.history,x.events,x.receipts) BidPublishedWorld1014(x) == [x.paying EXCEPT !.id=101,!.objects=x.afterObjects,!.movementHistory=x.history,!.bidFrames[140]=x.paid,!.usedWorlds=@ \cup {101},!.usedObjects=@ \cup DOMAIN x.afterObjects, !.controllers=[id \in DOMAIN x.afterObjects |-> IF id \in DOMAIN x.paying.controllers THEN x.paying.controllers[id] ELSE x.paying.owners[x.afterObjects[id].card]], !.bidEventSerial=@+1,!.usedCostTransactions=@ \cup {x.chosen.transactions[p] : p \in x.chosen.packet.participants}, !.bidCosts=[id \in {x.chosen.transactions[p] : p \in x.chosen.packet.participants} |-> x.receipts[CHOOSE p \in x.chosen.packet.participants : x.chosen.transactions[p]=id]],!.bidEvents=[id \in {x.event.id} |-> x.event]] BidPublishValid1014(x) == BidPublish1014(x.paid,x.paying,BidPublishedWorld1014(x),CardFacts10,x.afterObjects,x.successors,14700,x.history,x.events,x.receipts,x.event,x.event.id,x.snapshot) BidCheckpoint1014(world,frame,stage) == LET caller==IF stage="Payment" THEN BidCheckpointSite1014(frame) ELSE [kind |-> "GeneralBiddingInstructionEnd",bidId |-> frame.id,caller |-> frame.caller,stage |-> stage] IN ReplacementOverlay99([NewCheckpoint103(IF stage="Payment" THEN 14600 ELSE IF stage="Selection" THEN 14601 ELSE 14602,caller,world.id,world.inside) EXCEPT !.phase="Returned",!.point="ProcedureCodeb74d673a0fc6",!.owed= <<>>,!.done=CheckpointStageSet103, !.returned=TRUE,!.recognition=[id |-> IF stage="Payment" THEN 14600 ELSE IF stage="Selection" THEN 14601 ELSE 14602,caller |-> caller],!.recognized=Empty10],[site |-> caller]) BidCheckpointWorld1014(world,frame,cp) == [BidAt1014(world,frame) EXCEPT !.checkpoints=[id \in {cp.id} |-> cp],!.conditionalLedger=EscalatingResourceContestLedger108(cp)] BidMatrixChecks1014 == /\ \A active \in SetupPlayers,nc,nr \in 0..2 : LET x==BidCase1014(BidWorld1014(active,"Specimen0006","Specimen0097"),"Specimen0006",FALSE,nc,nr,1000..(999+nc),1100..(1099+nr)) IN /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ BidPublished1014(x.event,BidPublishedWorld1014(x)) /\ x.paid.result=IF nc=nr THEN "Equal" ELSE "Different" /\ x.start.world.objects=x.revealWorld.objects /\ x.revealWorld.objects=x.paying.objects /\ Cardinality(DOMAIN x.paying.objects \ DOMAIN x.afterObjects)=nc+nr /\ x.receipts["SideA"].id#x.receipts["SideB"].id /\ x.receipts["SideA"].announced /\ x.receipts["SideB"].announced /\ \A p \in SetupPlayers : x.receipts[p].payer=p /\ x.receipts[p].specification[1].amount=x.paid.selections[p] /\ x.receipts[p].source=x.paid.caller.source /\ LET w==BidWorld1014("SideB","Specimen0043","Specimen0096") x==BidCase1014(w,"Specimen0043",FALSE,0,0,{},{} ) IN /\ BidCaseValid1014(x) /\ x.paid.packet.classification="LegacyPairedSimultaneousBidComparison" /\ x.afterObjects=w.objects /\ x.receipts["SideA"].specification[1].amount=0 /\ x.receipts["SideB"].specification[1].category="Nested" BidSecretChecks1014 == LET w==BidWorld1014("SideB","Specimen0006","Specimen0097") s==BidStart1014(w,"Specimen0006",FALSE) c0==BidSelected1014(s.frame,"SideA",0) c2==BidSelected1014(s.frame,"SideA",2) both0==BidSelected1014(c0,"SideB",1) both2==BidSelected1014(c2,"SideB",1) x==BidCase1014(w,"Specimen0006",FALSE,1,1,{1000},{1100}) IN /\ SelectSecretBid1014(s.frame,c0,s.world,"SideA",0,CardFacts10) /\ SelectSecretBid1014(s.frame,c2,s.world,"SideA",2,CardFacts10) /\ BidView1014(c0,"SideB")=BidView1014(c2,"SideB") /\ BidView1014(both0,"SideB")=BidView1014(both2,"SideB") /\ BidView1014(c0,"SideA")#BidView1014(c2,"SideA") /\ BidView1014(x.revealed,"SideB").knownValues=[p \in SetupPlayers |-> 1] /\ ~ChooseBidPaymentSources1014(x.ready,x.chosen1,BidAt1014(x.revealWorld,x.ready),"SideB",{1100},CardFacts10) /\ ~SelectSecretBid1014(c0,BidSelected1014(c0,"SideA",1),BidAt1014(s.world,c0),"SideA",1,CardFacts10) /\ ~SelectSecretBid1014(s.frame,BidSelected1014(s.frame,"SideA",3),s.world,"SideA",3,CardFacts10) /\ ~ChooseBidPaymentSources1014(x.revealed,BidPlanSelected1014(x.revealed,"SideA",{1000}),BidAt1014(x.revealWorld,x.revealed),"SideA",{1000},CardFacts10) BidRebase1014(world) == LET a==NewLifetimeAuthority910(world) IN [world EXCEPT !.lifetimeAuthority=a,!.lingering.frontier=LifetimeFrontier910(a,1)] BidAdvance1014(world,changed) == LET x==MarkAdvance1011(world,world.lifetimeAuthority,changed,IF changed.objects=world.objects THEN "ActualTimingTransition" ELSE "ActualObjectTransition") IN [x EXCEPT !.after.lifetimeAuthority=x.authority] BidGeneralChecks1014 == LET w==BidWorld1014("SideB","Specimen0191","Specimen0161") s==BidStart1014(w,"Specimen0191",TRUE) selected==BidSelected1014(s.frame,"SideB",3) cp1==BidCheckpoint1014(s.world,selected,"Selection") cw1==BidCheckpointWorld1014(s.world,selected,cp1) after1==[selected EXCEPT !.generalStages={"Selection"},!.generalCheckpoints={14601}] guessWorld==[BidAt1014(cw1,after1) EXCEPT !.bidContinuations=[id \in {140} |-> BidContinuation1014(w,after1,TRUE)]] guessed==[after1 EXCEPT !.guess="Even"] cp2==BidCheckpoint1014(guessWorld,guessed,"Guess") cw2==BidCheckpointWorld1014(guessWorld,guessed,cp2) ready==[guessed EXCEPT !.generalStages=@ \cup {"Guess"},!.generalCheckpoints=@ \cup {14602}] x==BidCase1014(w,"Specimen0191",TRUE,0,3,{},1100..1102) revealWorld==BidRevealWorld1014(cw2,ready) changed==BidRebase1014([revealWorld EXCEPT !.objects=Without101(@,{1100,1101,1102,1200,1300})]) IN /\ SelectSecretBid1014(s.frame,selected,s.world,"SideB",3,CardFacts10) /\ GeneralBidInstructionCheckpoint1014(selected,after1,cw1,cp1,EscalatingResourceContestLedger108(cp1)) /\ RecordBidGuess1014(after1,guessed,guessWorld,"SideA","Even",guessWorld.bidContinuations[140]) /\ GeneralBidInstructionCheckpoint1014(guessed,ready,cw2,cp2,EscalatingResourceContestLedger108(cp2)) /\ ready=x.ready /\ RevealBids1014(ready,BidRevealed1014(ready,revealWorld),revealWorld,CardFacts10,BidTransactions1014(ready),revealWorld.bidContinuations[140]) /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ x.receipts["SideB"].instruction=BidReference1014(3) /\ ~BidGuessCorrect1014(x.paid) /\ x.paid.packet.participants={"SideB"} /\ BidRevealSupport1014(ready,changed,CardFacts10)="RequiresChangedPayabilityAdapter" /\ ~RevealBids1014(ready,BidRevealed1014(ready,changed),changed,CardFacts10,BidTransactions1014(ready),changed.bidContinuations[140]) /\ ~RecordBidGuess1014(selected,[selected EXCEPT !.guess="Even"],BidAt1014(guessWorld,selected),"SideA","Even",guessWorld.bidContinuations[140]) /\ LET w2==BidWorld1014("SideB","Specimen0200","Specimen0161") s2==BidStart1014(w2,"Specimen0200",TRUE) IN /\ SelectSecretBid1014(s2.frame,BidSelected1014(s2.frame,"SideB",2),s2.world,"SideB",2,CardFacts10) /\ ~SelectSecretBid1014(s2.frame,BidSelected1014(s2.frame,"SideB",3),s2.world,"SideB",3,CardFacts10) BidGrantChecks1014 == LET plain==BidPlainWorld1014("SideB","Specimen0006","Specimen0097") g==BidGrant1014(plain,FALSE) only==BidRebase1014([g.after EXCEPT !.objects=Without101(@,{1100,1101,1102,1300})]) noGrant==BidRebase1014([plain EXCEPT !.objects=only.objects]) lock==BidGrant1014(g.after,TRUE) blank==BidAdvance1014(g.after,[g.after EXCEPT !.id=101,!.objects[600].face="Down"]) end0==[g.after.traversal EXCEPT !.complete=TRUE,!.phase="Complete"] ended==BidAdvance1014(g.after,[g.after EXCEPT !.id=102,!.traversal=end0,!.control.traversal=end0,!.inside={}]) outside==BidRebase1014([only EXCEPT !.inside={}]) x==BidCase1014(only,"Specimen0006",FALSE,0,1,{}, {1200}) IN /\ BidGrantValid1014(g) /\ BidGrantValid1014(lock) /\ BidPaymentPlans1014(only,"SideB",1,CardFacts10)={{1200}} /\ BidPaymentPlans1014(only,"SideB",2,CardFacts10)={} /\ BidPaymentPlans1014(noGrant,"SideB",1,CardFacts10)={} /\ noGrant.traversal.successful /\ BidCaseValid1014(x) /\ x.receipts["SideB"].permissionSources={ObjectAbilitySource9(600)} /\ MarkAdvanceValid1011(blank) /\ BidWalletFresh1014(blank.after) /\ 1200 \in BidEligibleResourceUnits1014(blank.after,"SideB",CardFacts10) /\ MarkAdvanceValid1011(ended) /\ BidWalletFresh1014(ended.after) /\ 1200 \notin BidEligibleResourceUnits1014(ended.after,"SideB",CardFacts10) /\ BidPaymentPlans1014(outside,"SideB",1,CardFacts10)={} /\ DuringTraversal6(outside.traversal) /\ BidPaymentPlans1014(lock.after,"SideB",1,CardFacts10)={} /\ BidPaymentPlans1014(lock.after,"SideB",0,CardFacts10)={{}} /\ BidCaseValid1014(BidCase1014(lock.after,"Specimen0006",FALSE,0,0,{},{})) BidExampleFamily022Checks1014 == LET w0==BidWorld1014("SideB","Specimen0006","Specimen0097") current==[w0 EXCEPT !.objects[700].zone="Play",!.activeAbilities={14701},!.abilitySources=[id \in {14701} |-> ObjectAbilitySource9(700)],!.abilityRoles=[id \in {14701} |-> "BidForbidTwo"]] restriction==[tag |-> "CurrentBidValueRestriction",ability |-> 14701,snapshotId |-> current.id,forbidden |-> 2,source |-> ObjectAbilitySource9(700),sourceObject |-> current.objects[700],sourceSHA |-> CardFacts10["Specimen0102"].sourceSHA] w==BidRebase1014([current EXCEPT !.bidValueRestrictions=[id \in {700} |-> restriction]]) s==BidStart1014(w,"Specimen0006",FALSE) IN /\ BidWalletFresh1014(w) /\ BidExampleFamily022Ids1014(w,CardFacts10)={700} /\ \A p \in SetupPlayers : BidPaymentPlans1014(w,p,2,CardFacts10)={} /\ BidPaymentPlans1014(w,p,0,CardFacts10)={{}} /\ BidPaymentPlans1014(w,p,1,CardFacts10)#{} /\ SelectSecretBid1014(s.frame,BidSelected1014(s.frame,"SideA",1),s.world,"SideA",1,CardFacts10) /\ ~SelectSecretBid1014(s.frame,BidSelected1014(s.frame,"SideA",2),s.world,"SideA",2,CardFacts10) /\ ~BidWalletFresh1014([w EXCEPT !.bidValueRestrictions=Empty10]) /\ ~BidWalletFresh1014([w EXCEPT !.bidValueRestrictions[700].sourceSHA="Unbound"]) BidMixedWorld1014 == LET w==BidWorld1014("SideA","Specimen0006","Specimen0097") converted==[id \in {1400,1401} |-> ReplacementOverlay99(BidResourceUnit1014(IF id=1400 THEN "SideAResourceUnits" ELSE "SideBResourceUnits",0), [card |-> IF id=1400 THEN "Specimen0046" ELSE "NeutralValue00006",owner |-> IF id=1400 THEN "SideA" ELSE "SideB",marks |-> {"ConvertedResourceUnitOldMark"}])] IN BidRebase1014([w EXCEPT !.objects=ReplacementOverlay99(@,converted),!.usedObjects=@ \cup DOMAIN converted,!.controllers=ReplacementOverlay99(@,[id \in DOMAIN converted |-> IF id=1400 THEN "SideA" ELSE "SideB"])]) BidMovementChecks1014 == LET x==BidCase1014(BidMixedWorld1014,"Specimen0006",FALSE,2,2,{1000,1400},{1100,1401}) wrong==Without101(x.paying.objects,x.chosen.plans["SideA"]) changed==BidRebase1014([x.paying EXCEPT !.objects=Without101(@,{1102})]) IN /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ x.converted={1400,1401} /\ x.afterObjects[11400].zone="SideADiscard" /\ x.afterObjects[11401].zone="SideBDiscard" /\ x.afterObjects[11400].marks={} /\ x.afterObjects[11401].marks={} /\ x.afterObjects[1200]=x.paying.objects[1200] /\ x.history[14700].originalObjects={1400,1401} /\ Cardinality(x.events)=1 /\ Cardinality(DOMAIN x.receipts)=2 /\ ~CommitBidPayments1014(x.chosen,x.paid,x.paying,CardFacts10,wrong,Empty10,14700,x.paying.movementHistory,{},x.receipts) /\ ~CommitBidPayments1014(x.chosen,x.paid,changed,CardFacts10,x.afterObjects,x.successors,14700,x.history,x.events,x.receipts) /\ ~CommitBidPayments1014(x.chosen,[x.paid EXCEPT !.result="Different"],x.paying,CardFacts10,x.afterObjects,x.successors,14700,x.history,x.events,x.receipts) /\ ~CommitBidPayments1014([x.chosen EXCEPT !.costs["SideA"].optionalInterrupts={1}],x.paid,BidAt1014(x.paying,[x.chosen EXCEPT !.costs["SideA"].optionalInterrupts={1}]),CardFacts10,x.afterObjects,x.successors,14700,x.history,x.events,x.receipts) BidDetachedChecks1014 == LET w0==BidWorld1014("SideB","Specimen0137","Specimen0096") moved==[w0.objects[500] EXCEPT !.zone="SideADiscard",!.deployed=FALSE,!.activated=FALSE,!.marks={},!.loc=0] w==BidRebase1014([w0 EXCEPT !.objects=ReplacementOverlay99(Without101(@,{500}),[id \in {501} |-> moved]),!.usedObjects=@ \cup {501},!.controllers=ReplacementOverlay99(Without101(@,{500}),[id \in {501} |-> "SideA"])]) parent==OpenAbilityResolution9(14000,"Paid",ObjectAbilitySource9(500),"Play",<<14001>>,14009) detached==[parent EXCEPT !.detached=TRUE] imminent==[detached EXCEPT !.phase="Imminent",!.firstImminent=TRUE] x==BidCase1014(w,"Specimen0137",FALSE,1,0,{1000},{}) IN /\ CardBatchTransfer8(w0.objects,w.objects,{500},[id \in {500} |-> 501],w0.usedObjects,"SideADiscard","Up",[id \in {500} |-> 0]) /\ DetachPaidAbility9(parent,detached,[abilityInstance |-> 14000,allPaid |-> TRUE]) /\ BeginAbilityInstructions9(detached,imminent,TRUE,FALSE) /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ 500 \notin DOMAIN x.paying.objects /\ x.receipts["SideA"].source=ObjectAbilitySource9(500) BidCheckpointChecks1014 == LET x==BidCase1014(BidWorld1014("SideB","Specimen0006","Specimen0097"),"Specimen0006",FALSE,0,0,{}, {}) w==BidPublishedWorld1014(x) cp==BidCheckpoint1014(w,x.paid,"Payment") cw==BidCheckpointWorld1014(w,x.paid,cp) completion==[tag |-> "BiddingInstructionComplete",bidId |-> 140,caller |-> x.paid.revealCaller,result |-> x.paid.result,checkpoint |-> cp.id,paid |-> TRUE] done==[x.paid EXCEPT !.phase="Complete",!.complete=TRUE] IN /\ BidCheckpointReady1014(x.paid,cw,cp,EscalatingResourceContestLedger108(cp)) /\ FinishBid1014(x.paid,done,cw,cp,EscalatingResourceContestLedger108(cp),completion) /\ ReturnBid1014(done,[done EXCEPT !.phase="Returned",!.returned=TRUE],completion,x.paid.revealCaller) /\ ~BidCheckpointReady1014(x.chosen,BidAt1014(cw,x.chosen),cp,EscalatingResourceContestLedger108(cp)) /\ ~BidCheckpointReady1014(x.paid,cw,[cp EXCEPT !.caller=x.paid.caller],EscalatingResourceContestLedger108(cp)) /\ ~BidCheckpointReady1014(x.paid,[cw EXCEPT !.conditionalLedger=[checkpoints |-> Empty10,instances |-> Empty10]],cp,EscalatingResourceContestLedger108(cp)) /\ ~BidCheckpointReady1014(x.paid,[cw EXCEPT !.bidCosts=Without101(@,{14502})],cp,EscalatingResourceContestLedger108(cp)) /\ ~ReturnBid1014(done,[done EXCEPT !.phase="Returned",!.returned=TRUE],completion,BidReference1014(2)) BidOccurrence1014(x,d) == ReplacementOverlay99(EscalatingResourceContestOccurrenceBase108(14801,"BidsRevealedAndPaid",500,CardFacts10[x.paid.packet.sourceCard].side,CardFacts10[x.paid.packet.sourceCard].side,x.event.snapshot,x.event.id), [scopeKind |-> "Ability",scopeDefinition |-> ConditionalKey96(d),bidId |-> x.event.bidId,amounts |-> x.event.amounts,result |-> x.event.result]) BidRecognition1014(world,definitions,events,id) == LET previous==MarkSnapshot1011(world.id,0,"PreviousCheckpoint",definitions,world) before==NewConditionalLedger96(previous) begin==MarkSnapshot1011(world.id,id,"CheckpointBeginning",definitions,world) current==[begin EXCEPT !.point="ProcedureCodee605a78f5d5e"] cp==[tag |-> "ConditionalCheckpoint",point |-> "ProcedureCodee605a78f5d5e",id |-> id,previousCheckpoint |-> 0,serial |-> 1,previousSnapshot |-> previous,beginSnapshot |-> begin,processingSnapshot |-> current,stepSerial |-> 0,occurrences |-> events,caller |-> "BidPayment"] conditions==[key \in DOMAIN definitions |-> [eventId \in DOMAIN events |-> [tag |-> "ConditionalTriggerStipulations",ability |-> definitions[key].syntax.id,source |-> definitions[key].syntax.source,occurrence |-> eventId,snapshotId |-> events[eventId].snapshot.id,results |-> Empty10]]] candidates==CheckpointCandidates96(definitions,before,cp,conditions) allocation==[key \in candidates |-> 14901] bindings==[key \in candidates |-> [kind |-> "Reaction",windowId |-> 14902,group |-> 14903,checkpointId |-> id]] after==EscalatingResourceContestCommitted108(before,definitions,cp,conditions,allocation,bindings) IN [before |-> before,after |-> after,cp |-> cp,conditions |-> conditions,definitions |-> definitions,candidates |-> candidates,allocation |-> allocation,bindings |-> bindings] BidObserverChecks1014 == /\ \A card \in {"Specimen0161","Specimen0096","Specimen0113","Specimen0097"},nr \in {0,1} : LET x==BidCase1014(BidWorld1014("SideB","Specimen0006",card),"Specimen0006",FALSE,0,nr,{},1100..(1099+nr)) w==BidPublishedWorld1014(x) defs==BidObserverDefinitions1014(card) d==defs[CHOOSE key \in DOMAIN defs : TRUE] holds==BidObserverCondition1014(BidObserverRule1014(card),x.event,Empty10,CardFacts10) event==BidOccurrence1014(x,d) events==IF holds THEN [id \in {event.id} |-> event] ELSE Empty10 q==BidRecognition1014(w,defs,events,14910) IN /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ (holds => PublishBidOccurrence1014(w,x.event,d,card,Empty10,event,CardFacts10)) /\ EscalatingResourceContestRecognitionValid108(q) /\ Cardinality(DOMAIN q.after.instances)=IF holds THEN 1 ELSE 0 /\ (card="Specimen0096" => holds /\ ((x.event.result="Different")=(nr=1))) /\ (card="Specimen0113" => holds /\ x.event.amounts["SideA"]=0) /\ (card="Specimen0097" => holds=(nr=1)) /\ LET x==BidCase1014(BidWorld1014("SideB","Specimen0191","Specimen0161"),"Specimen0191",TRUE,0,0,{},{} ) y==BidCase1014(BidWorld1014("SideB","Specimen0008","Specimen0097"),"Specimen0008",FALSE,1,1,{1000},{1100}) IN /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ ~BidObserverCondition1014("BothReveal",x.event,Empty10,CardFacts10) /\ BidCaseValid1014(y) /\ ~BidObserverCondition1014("SideBSpentFromSideATraversalAbility",y.event,Empty10,CardFacts10) /\ ~BidObserverCondition1014("FirstReveal",y.event,[id \in {1} |-> [y.event EXCEPT !.id=1]],CardFacts10) BidBindingChecks1014 == LET w==BidWorld1014("SideB","Specimen0006","Specimen0097") x==BidCase1014(w,"Specimen0006",FALSE,1,1,{1000},{1100}) badContext==[x.start.context EXCEPT !.templates[1].sourceSHA="Unbound",!.state.effects[1].sourceSHA="Unbound",!.actualEffects[1].sourceSHA="Unbound"] removed==[x.start.context EXCEPT !.state.effects=Empty10,!.actualEffects=Empty10] modified==[x.start.context EXCEPT !.state.effects[1].costProfile="ModifiedCost",!.actualEffects[1].costProfile="ModifiedCost"] wrongOwner==[x.start.world EXCEPT !.bidOwners[140]=BidReference1014(2)] cp==BidCheckpoint1014(BidPublishedWorld1014(x),x.paid,"Payment") cw==BidCheckpointWorld1014(BidPublishedWorld1014(x),x.paid,cp) IN /\ ~BidPacket1014(badContext,badContext.currentRef,w,1,CardFacts10,BidPacketFixture1014(badContext)) /\ ~BeginBid1014(removed,removed.currentRef,w,1,CardFacts10,140,x.start.packet,x.start.frame,x.start.world.bidFrames,x.start.world.usedBidFrames) /\ BidInstructionSupport1014(modified.actualEffects[1])="RequiresModifiedNestedCostAdapter" /\ ~BidPacket1014(modified,modified.currentRef,w,1,CardFacts10,BidPacketFixture1014(modified)) /\ ~SelectSecretBid1014(x.start.frame,x.first,wrongOwner,"SideA",1,CardFacts10) /\ ~RevealBids1014(x.ready,x.revealed,x.revealWorld,CardFacts10,[p \in SetupPlayers |-> 14501],x.revealWorld.bidContinuations[140]) /\ ~BidCheckpointReady1014(x.paid,[cw EXCEPT !.outcome="SideA"],cp,EscalatingResourceContestLedger108(cp)) /\ ~BidPublished1014([x.event EXCEPT !.sourceCard="Specimen0008"],[cw EXCEPT !.bidEvents[x.event.id]=[x.event EXCEPT !.sourceCard="Specimen0008"]]) BidRepairWorld1014(mode,virtual,converted,mixed) == LET w==BidWorld1014("SideB","Specimen0006","Specimen0161") actor==IF mode="SideAPool" THEN "SideA" ELSE "SideB" row==IF mode="Fund" THEN LiabilityMarkerFundRow106 ELSE BidResourceUnit1014(IF mode="SideAPool" THEN "SideAResourceUnits" ELSE IF mode="SideBPool" THEN "SideBResourceUnits" ELSE "Play",IF mode="Hosted" THEN 600 ELSE 0) primary==ReplacementOverlay99([row EXCEPT !.virtual=virtual],IF converted THEN [card |-> IF mode \in {"SideAPool","Fund"} THEN "Specimen0046" ELSE "NeutralValue00006",owner |-> IF mode \in {"SideAPool","Fund"} THEN "SideA" ELSE "SideB",side |-> IF mode \in {"SideAPool","Fund"} THEN "SideA" ELSE "SideB",properties |-> [kind |-> "ResourceUnit"],marks |-> {"ConvertedRepairMark"}] ELSE Empty10) resourceUnits=={id \in DOMAIN w.objects : w.objects[id].form="Counter" /\ w.objects[id].kind="ResourceUnit"} added==IF mixed THEN [id \in {1500,1501} |-> IF id=1500 THEN primary ELSE row] ELSE [id \in {1500} |-> primary] objects==ReplacementOverlay99(Without101(w.objects,resourceUnits),added) controllers==[id \in DOMAIN objects |-> IF id \in DOMAIN added THEN IF mode="Fund" THEN "SideA" ELSE actor ELSE w.controllers[id]] IN BidRebase1014([w EXCEPT !.objects=objects,!.controllers=controllers,!.usedObjects=@ \cup DOMAIN added]) BidRepairCase1014(world,mode,selected) == BidCase1014(world,"Specimen0006",FALSE,IF mode="SideAPool" THEN Cardinality(selected) ELSE 0,IF mode="SideAPool" THEN 0 ELSE Cardinality(selected),IF mode="SideAPool" THEN selected ELSE {},IF mode="SideAPool" THEN {} ELSE selected) BidVirtualResourceUnitChecks1014 == /\ \A mode \in {"SideAPool","SideBPool","Fund","Hosted"} : LET actor==IF mode="SideAPool" THEN "SideA" ELSE "SideB" virtual==BidRepairWorld1014(mode,TRUE,FALSE,FALSE) zero==BidRepairCase1014(virtual,mode,{}) invalid==BidRepairCase1014(virtual,mode,{1500}) first==IF actor="SideA" THEN invalid.start.frame ELSE invalid.first next==IF actor="SideA" THEN invalid.first ELSE invalid.both current==IF actor="SideA" THEN invalid.start.world ELSE BidAt1014(invalid.start.world,first) mixed==BidRepairWorld1014(mode,TRUE,FALSE,TRUE) ordinary==BidRepairCase1014(mixed,mode,{1501}) IN /\ BidWalletFresh1014(virtual) /\ BidPaymentPlans1014(virtual,actor,1,CardFacts10)={} /\ BidPaymentPlans1014(virtual,actor,0,CardFacts10)={{}} /\ ~SelectSecretBid1014(first,next,current,actor,1,CardFacts10) /\ BidRevealSupport1014(invalid.ready,invalid.revealWorld,CardFacts10)="RequiresChangedPayabilityAdapter" /\ BidCaseValid1014(zero) /\ BidPublishValid1014(zero) /\ zero.afterObjects=virtual.objects /\ BidPaymentPlans1014(mixed,actor,1,CardFacts10)={{1501}} /\ BidPaymentPlans1014(mixed,actor,2,CardFacts10)={} /\ BidCaseValid1014(ordinary) /\ BidPublishValid1014(ordinary) /\ ordinary.afterObjects[1500]=mixed.objects[1500] /\ 1501 \notin DOMAIN ordinary.afterObjects /\ \A mode \in {"SideAPool","SideBPool","Fund","Hosted"},converted \in BOOLEAN : LET w==BidRepairWorld1014(mode,FALSE,converted,FALSE) actor==IF mode="SideAPool" THEN "SideA" ELSE "SideB" x==BidRepairCase1014(w,mode,{1500}) IN /\ BidPaymentPlans1014(w,actor,1,CardFacts10)={{1500}} /\ BidCaseValid1014(x) /\ BidPublishValid1014(x) /\ 1500 \notin DOMAIN x.afterObjects /\ IF converted THEN x.afterObjects[11500].marks={} /\ x.afterObjects[11500].zone=(IF mode \in {"SideAPool","Fund"} THEN "SideADiscard" ELSE "SideBDiscard") ELSE DOMAIN x.afterObjects=DOMAIN w.objects \ {1500} Block10Assertions == CASE block10=1 -> GeneralChecks101 /\ SimultaneousActivationChecks101 [] block10=2 -> InformationChecks102 [] block10=3 -> CheckpointCleanupChecks103 /\ CheckpointEnvironmentChecks103 /\ CheckpointHistoryChecks103 /\ CheckpointMarksChecks103 [] block10=4 -> DamagePacketChecks104 /\ DamageBatchChecks104 /\ DamageSequentialChecks104 /\ DamageCoreChecks104 [] block10=5 -> ExposureMarkerQuantityAndStatusChecks105 /\ ExposureMarkerActionAdmissionChecks105 /\ ExposureMarkerActionPostCostChecks105 /\ ExposureMarkerModifierAndSourceChecks105 /\ ExposureMarkerAdditionalCostChecks105 /\ ExposureMarkerConvertedCounterChecks105 [] block10=6 -> LiabilityMarkerViewsChecks106 /\ LiabilityMarkerPacketChecks106 /\ LiabilityMarkerLifecycleChecks106 /\ LiabilityMarkerZeroGrantChecks106 /\ LiabilityMarkerPaymentChecks106 /\ LiabilityMarkerConvertedChecks106 [] block10=7 -> LinkValueChecks107 /\ LinkFreshnessChecks107 /\ LinkProfileAndUseChecks107 [] block10=8 -> EscalatingResourceContestBirthChecks108 /\ EscalatingResourceContestPacketChecks108 /\ EscalatingResourceContestPhaseChecks108 /\ EscalatingResourceContestContextAndOrderChecks108 /\ EscalatingResourceContestWalletChecks108 /\ EscalatingResourceContestReactionAndCurrentReadChecks108 /\ EscalatingResourceContestResultRecognitionChecks108 /\ EscalatingResourceContestReactionProjectionChecks108 /\ EscalatingResourceContestInitiationReactionChecks108 /\ EscalatingResourceContestSideBSourceChecks108 [] block10=9 -> LoadAndEmptyChecks109 /\ UnloadedTypeChecks109 /\ LoadFreshnessChecks109 /\ LoadIncarnationChecks109 /\ LoadEffectiveCountChecks109 /\ EmptyStaticRecognitionChecks109 /\ EmptyBeforeLoadPendingChecks109 [] block10=10 -> ChargeChosenChecks1010 /\ ChargeCurrentLegalityChecks1010 /\ ChargeParticularChecks1010 /\ ChargeScopeAndCountChecks1010 /\ ChargeBindingChecks1010 /\ ChargeExampleFamily049Checks1010 [] block10=11 -> MarkCreationChecks1011 /\ MarkLifetimeChecks1011 /\ MarkSuccessHistoryChecks1011 /\ MarkSpecimen0119Checks1011 /\ MarkCleanupChecks1011 /\ MarkRelationChecks1011 /\ MarkProvenanceChecks1011 /\ MarkRenewalChecks1011 /\ MarkOtherTargetSiteBranches1011 [] block10=12 -> SabotageAllocationChecks1012 /\ SabotageSourceChecks1012 /\ SabotagePrivacyChecks1012 /\ SabotageDepartureChecks1012 /\ SabotageNegativeChecks1012 /\ SabotageObserverChecks1012 [] block10=13 -> DividendCaptureChecks1013 /\ DividendBodyChecks1013 /\ DividendBoundaryChecks1013 /\ DividendMissingSourceChecks1013 /\ DividendNegativeChecks1013 /\ DividendReplayChecks1013 /\ DividendConsideredBodyChecks1013 [] block10=14 -> BidMatrixChecks1014 /\ BidSecretChecks1014 /\ BidGeneralChecks1014 /\ BidGrantChecks1014 /\ BidExampleFamily022Checks1014 /\ BidMovementChecks1014 /\ BidDetachedChecks1014 /\ BidCheckpointChecks1014 /\ BidObserverChecks1014 /\ BidBindingChecks1014 /\ BidVirtualResourceUnitChecks1014 [] OTHER -> FALSE =============================================================================