LocationContracts¶
Complete selected asymmetric reference profile. Definitions and supplied fixtures are distinct from the three teaching specializations; review and qualification are stated in the bound evidence and release.
Package reference-profile, input revision 2. Exact prepared source; CC0 1.0.
This is a definition inventory. Start with the learning chapters for the contract and its assumptions.
o · operator
reference-profile · input revision 2 · CC0 1.0
o == objects[id]Exact module download · Source bundle and reproduction instructions
excess · operator
reference-profile · input revision 2 · CC0 1.0
excess == Cardinality(remotes) > effectiveLimitExact module download · Source bundle and reproduction instructions
Resolved project definitions: remotes
remotes · operator
reference-profile · input revision 2 · CC0 1.0
remotes == AuxiliarySiteTargetSiteIds4(targetSites)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: AuxiliarySiteTargetSiteIds4
valid · operator
reference-profile · input revision 2 · CC0 1.0
valid == keep \subseteq remotes /\
(IF excess THEN Cardinality(keep) = effectiveLimit ELSE keep = remotes)Exact module download · Source bundle and reproduction instructions
effects · operator
reference-profile · input revision 2 · CC0 1.0
effects == IF valid THEN {transits[id].effect : id \in ids} ELSE {}Exact module download · Source bundle and reproduction instructions
ids · operator
reference-profile · input revision 2 · CC0 1.0
ids == {id \in SetAsideIds4(objects) :
objects[id].form = "Card" /\ objects[id].face = "Down"}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideIds4
valid · operator
reference-profile · input revision 2 · CC0 1.0
valid == SetAsideTrackingValid4(objects,transits)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideTrackingValid4
sees · operator
reference-profile · input revision 2 · CC0 1.0
sees == SetAsideAbilityCanSee4(transit,abilityId,specificallySetsAside,refersToSetAside)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideAbilityCanSee4
retainOld · operator
reference-profile · input revision 2 · CC0 1.0
retainOld == triggerOrCostMovedFromTargetSite /\ targetSiteBeforeThatMove # "NoValue"Exact module download · Source bundle and reproduction instructions
AnotherTargetSiteCandidates4 · operator
reference-profile · input revision 2 · CC0 1.0
AnotherTargetSiteCandidates4(targetSites, reference) ==
IF reference = "NoValue" THEN {} ELSE DOMAIN targetSites \ {reference}Exact module download · Source bundle and reproduction instructions
AnotherTargetSiteContextValid4 · operator
reference-profile · input revision 2 · CC0 1.0
AnotherTargetSiteContextValid4(mode, sourceCaseApplies, linkedChoiceCaseApplies, traversalActive) ==
CASE mode = "SchemaAtom149" -> sourceCaseApplies
[] mode = "LinkedChoice" -> linkedChoiceCaseApplies
[] mode = "SchemaAtom138" -> ~sourceCaseApplies /\ ~linkedChoiceCaseApplies /\ traversalActive
[] mode = "NoValue" -> ~sourceCaseApplies /\ ~linkedChoiceCaseApplies /\ ~traversalActive
[] OTHER -> FALSEExact module download · Source bundle and reproduction instructions
AnotherTargetSiteReference4 · operator
reference-profile · input revision 2 · CC0 1.0
AnotherTargetSiteReference4(mode, sourceBinding, chosenTargetSite, attackedTargetSite) ==
CASE mode = "SchemaAtom149" -> sourceBinding.targetSite
[] mode = "LinkedChoice" -> chosenTargetSite
[] mode = "SchemaAtom138" -> attackedTargetSite [] OTHER -> "NoValue"Exact module download · Source bundle and reproduction instructions
AssociatedTargetSite4 · operator
reference-profile · input revision 2 · CC0 1.0
AssociatedTargetSite4(objects, id) ==
IF id \notin DOMAIN objects THEN "NoValue"
ELSE LET o == objects[id]
IN IF o.host # 0 THEN AssociatedTargetSite4(objects,o.host)
ELSE IF CentralTargetSiteForZone4(o.zone) # "NoValue" THEN CentralTargetSiteForZone4(o.zone)
ELSE IF o.zone = "Play" /\ o.area \in {"Root","Protecting"} THEN o.targetSite
ELSE "NoValue"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: o, AssociatedTargetSite4, CentralTargetSiteForZone4
AtomicZoneMove4 · operator
reference-profile · input revision 2 · CC0 1.0
AtomicZoneMove4(inGameIds, before, after, id, source, destination,
movementAuthorized, revealRequired, revealedBeforeMove) ==
/\ source \in ZoneInstances4 /\ destination \in ZoneInstances4 /\ source # destination
/\ ZonePartition4(inGameIds,before) /\ id \in before[source]
/\ movementAuthorized /\ (revealRequired => revealedBeforeMove)
/\ after = [z \in ZoneInstances4 |-> IF z = source THEN before[z] \ {id}
ELSE IF z = destination THEN before[z] \cup {id} ELSE before[z]]
/\ ZonePartition4(inGameIds,after)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneInstances4, ZonePartition4
AuxiliarySiteLimitPlan4 · operator
reference-profile · input revision 2 · CC0 1.0
AuxiliarySiteLimitPlan4(targetSites, keep, effectiveLimit, objects) ==
LET remotes == AuxiliarySiteTargetSiteIds4(targetSites)
excess == Cardinality(remotes) > effectiveLimit
valid == keep \subseteq remotes /\
(IF excess THEN Cardinality(keep) = effectiveLimit ELSE keep = remotes)
IN [valid |-> valid,chooser |-> "SideA",stage |-> "ProcedureCodea488e1ba6ca3",
trash |-> IF valid THEN UNION {DirectTargetSiteCards4(objects,s) : s \in remotes \ keep} ELSE {}]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: remotes, valid, DirectTargetSiteCards4
AuxiliarySiteRegistryCheckpoint4 · operator
reference-profile · input revision 2 · CC0 1.0
AuxiliarySiteRegistryCheckpoint4(before, after, objects, deploying, stage) ==
/\ stage = "ProcedureCode2d73b20aa788" /\ TargetSiteRegistryValid4(before)
/\ after = [id \in {s \in DOMAIN before :
before[s].kind = "SchemaAtom033" \/ AuxiliarySiteSurvivesCheckpoint4(s,objects,deploying)}
|-> before[id]]
/\ TargetSiteRegistryValid4(after)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: AuxiliarySiteSurvivesCheckpoint4, TargetSiteRegistryValid4
AuxiliarySiteSurvivesCheckpoint4 · operator
reference-profile · input revision 2 · CC0 1.0
AuxiliarySiteSurvivesCheckpoint4(targetSite, objects, deploying) ==
DeployedTargetSiteCards4(objects,targetSite) # {} \/ PendingTargetSiteDeploy4(deploying,targetSite)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeployedTargetSiteCards4, PendingTargetSiteDeploy4
AuxiliarySiteTableLayout4 · operator
reference-profile · input revision 2 · CC0 1.0
AuxiliarySiteTableLayout4 ==
[roots |-> "VerticalRowAwayFromCentrals",barrierCard |-> "HorizontalInFrontOutward"]Exact module download · Source bundle and reproduction instructions
AuxiliarySiteTargetSiteIds4 · operator
reference-profile · input revision 2 · CC0 1.0
AuxiliarySiteTargetSiteIds4(targetSites) ==
{id \in DOMAIN targetSites : targetSites[id].kind = "SchemaAtom132"}Exact module download · Source bundle and reproduction instructions
BDiscardPileFaceValid4 · operator
reference-profile · input revision 2 · CC0 1.0
BDiscardPileFaceValid4(face) == face = "Up"Exact module download · Source bundle and reproduction instructions
BDiscardPileVisibleCards4 · operator
reference-profile · input revision 2 · CC0 1.0
BDiscardPileVisibleCards4(cards) == cardsExact module download · Source bundle and reproduction instructions
BankCheckpointReturn4 · operator
reference-profile · input revision 2 · CC0 1.0
BankCheckpointReturn4(before, after, actualLocationLegal, returnStageAuthorized) ==
/\ returnStageAuthorized
/\ after = [id \in DOMAIN before \ IllegalPhysicalCounterIds4(before,actualLocationLegal)
|-> before[id]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: IllegalPhysicalCounterIds4
BankDefaultSource4 · operator
reference-profile · input revision 2 · CC0 1.0
BankDefaultSource4(operation, explicitAlternative, actualAlternative) ==
IF operation \in {"Place","Load","Gain"}
THEN IF explicitAlternative THEN actualAlternative ELSE [kind |-> "Zone",zone |-> "Bank"]
ELSE [kind |-> "NoValue"]Exact module download · Source bundle and reproduction instructions
BankMintProjection4 · operator
reference-profile · input revision 2 · CC0 1.0
BankMintProjection4(before, after, added, amount, kind, usedIds,
actualSource, creationAuthorized, destinationsLegal) ==
/\ actualSource = [kind |-> "Zone",zone |-> "Bank"]
/\ creationAuthorized /\ destinationsLegal /\ BankSupplyAvailable4(amount)
/\ Cardinality(DOMAIN added) = amount
/\ DOMAIN added \intersect (usedIds \cup DOMAIN before) = {}
/\ \A id \in DOMAIN added : BankPhysicalToken4(added[id]) /\ added[id].kind = kind /\
added[id].zone # "Bank"
/\ after = [id \in DOMAIN before \cup DOMAIN added |->
IF id \in DOMAIN added THEN added[id] ELSE before[id]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankPhysicalToken4, BankSupplyAvailable4
BankObjectsValid4 · operator
reference-profile · input revision 2 · CC0 1.0
BankObjectsValid4(objects) ==
\A id \in DOMAIN objects : objects[id].zone = "Bank" => BankPhysicalToken4(objects[id])Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankPhysicalToken4
BankPhysicalToken4 · operator
reference-profile · input revision 2 · CC0 1.0
BankPhysicalToken4(o) == o.form = "Counter" /\ o.card = "none" /\ ~o.virtualExact module download · Source bundle and reproduction instructions
BankProfile4 · operator
reference-profile · input revision 2 · CC0 1.0
BankProfile4 == [shared |-> TRUE,active |-> FALSE,unlimited |-> TRUE,cardsAllowed |-> FALSE]Exact module download · Source bundle and reproduction instructions
BankSpendReturn4 · operator
reference-profile · input revision 2 · CC0 1.0
BankSpendReturn4(before, after, selected, actualPaymentAuthorized) ==
/\ actualPaymentAuthorized /\ selected \subseteq DOMAIN before
/\ \A id \in selected : BankPhysicalToken4(before[id])
/\ after = [id \in DOMAIN before \ selected |-> before[id]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankPhysicalToken4
BankSupplyAvailable4 · operator
reference-profile · input revision 2 · CC0 1.0
BankSupplyAvailable4(amount) == amount \in NatExact module download · Source bundle and reproduction instructions
BarrierPosition4 · operator
reference-profile · input revision 2 · CC0 1.0
BarrierPosition4(order, id) ==
[exists |-> id \in SetupRange(order),
amount |-> IF id \in SetupRange(order)
THEN (CHOOSE i \in 1..Len(order) : order[i] = id)-1 ELSE 0]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupRange
CanonicalZone4 · operator
reference-profile · input revision 2 · CC0 1.0
CanonicalZone4(runtimeZone) ==
IF runtimeZone \in CounterPlayAliases4 THEN "Play" ELSE runtimeZoneExact module download · Source bundle and reproduction instructions
Resolved project definitions: CounterPlayAliases4
CentralASpecimen0139Layout4 · operator
reference-profile · input revision 2 · CC0 1.0
CentralASpecimen0139Layout4 ==
[NeutralValue00012 |-> "SideAProfile",markerZone |-> "Play",markerInsideCentralA |-> FALSE,
protectingBarrier |-> "InFront",rootUpgrades |-> "Behind"]Exact module download · Source bundle and reproduction instructions
CentralSpecimen0139Layout4 · operator
reference-profile · input revision 2 · CC0 1.0
CentralSpecimen0139Layout4(targetSite) ==
[NeutralValue00012 |-> CASE targetSite = "SchemaAtom082" -> "SideAProfile"
[] targetSite = "SchemaAtom129" -> "SideADeck" [] OTHER -> "SideADiscard",
markerDefinesMembership |-> FALSE,upgrades |-> "VerticalNearSpecimen0139",
barrierCard |-> "HorizontalInFrontOutward"]Exact module download · Source bundle and reproduction instructions
CentralTargetSiteForZone4 · operator
reference-profile · input revision 2 · CC0 1.0
CentralTargetSiteForZone4(zone) ==
CASE zone = "SideAHand" -> "SchemaAtom082" [] zone = "SideADeck" -> "SchemaAtom129"
[] zone = "SideADiscard" -> "SchemaAtom018" [] OTHER -> "NoValue"Exact module download · Source bundle and reproduction instructions
CentralTargetSiteZone4 · operator
reference-profile · input revision 2 · CC0 1.0
CentralTargetSiteZone4(targetSite) ==
CASE targetSite = "SchemaAtom082" -> "SideAHand" [] targetSite = "SchemaAtom129" -> "SideADeck"
[] targetSite = "SchemaAtom018" -> "SideADiscard" [] OTHER -> "NoValue"Exact module download · Source bundle and reproduction instructions
CentralTargetSites4 · operator
reference-profile · input revision 2 · CC0 1.0
CentralTargetSites4 == {"SchemaAtom082","SchemaAtom129","SchemaAtom018"}Exact module download · Source bundle and reproduction instructions
CostAsideCleanupIds4 · operator
reference-profile · input revision 2 · CC0 1.0
CostAsideCleanupIds4(transits, objects, finishedAbilities, stage) ==
{id \in DOMAIN transits \intersect DOMAIN objects :
transits[id].protected /\ transits[id].ability \in finishedAbilities /\
transits[id].cleanupStage = stage /\ objects[id].zone = "SetAside"}Exact module download · Source bundle and reproduction instructions
CostAsideStillHosted4 · operator
reference-profile · input revision 2 · CC0 1.0
CostAsideStillHosted4(transit, abilityId, currentlySetAside, abilityResolving) ==
transit.protected /\ transit.ability = abilityId /\ currentlySetAside /\ abilityResolvingExact module download · Source bundle and reproduction instructions
CounterPlayAliases4 · operator
reference-profile · input revision 2 · CC0 1.0
CounterPlayAliases4 == {"SideAResourceUnits","SideBResourceUnits","SideAExposureMarkers","SideBExposureMarkers",
"SideALiabilityMarker","SideBLiabilityMarker","SideAPersistentCapacityLoss","SideBPersistentCapacityLoss"}Exact module download · Source bundle and reproduction instructions
DeckCardInactive4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckCardInactive4(o, gameStarted, cardData) ==
ZoneType4(o.zone) = "Deck" => ~DefaultActive(o,gameStarted,cardData)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneType4, DefaultActive
DeckCentralTargetSite4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckCentralTargetSite4(player) == IF player = "SideA" THEN "SchemaAtom129" ELSE "NoValue"Exact module download · Source bundle and reproduction instructions
DeckCount4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckCount4(deck) == Len(deck)Exact module download · Source bundle and reproduction instructions
DeckMayLook4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckMayLook4(viewer, explicitlyDirected) == viewer \in SetupPlayers /\ explicitlyDirectedExact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupPlayers
DeckName4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckName4(player) == IF player = "SideA" THEN "SchemaAtom129" ELSE "DrawPile"Exact module download · Source bundle and reproduction instructions
DeckPhysicalFace4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckPhysicalFace4 == "Down"Exact module download · Source bundle and reproduction instructions
DeckReorder4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckReorder4(before, after, explicitlyDirected, searchingThisDeck) ==
/\ DeckSequenceValid4(before) /\ DeckSequenceValid4(after)
/\ SetupRange(before) = SetupRange(after)
/\ (after = before \/ explicitlyDirected \/ searchingThisDeck)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeckSequenceValid4, SetupRange
DeckSearchCompletion4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckSearchCompletion4(remainingCards, after, shuffleExecuted) ==
/\ DeckSequenceValid4(remainingCards) /\ DeckSequenceValid4(after)
/\ SetupRange(after) = SetupRange(remainingCards) /\ shuffleExecutedExact module download · Source bundle and reproduction instructions
Resolved project definitions: DeckSequenceValid4, SetupRange
DeckSequenceValid4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckSequenceValid4(deck) == Cardinality(SetupRange(deck)) = Len(deck)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupRange
DeckStartHandoff4 · operator
reference-profile · input revision 2 · CC0 1.0
DeckStartHandoff4(completedSetup, drawDecks) ==
/\ completedSetup.gameStarted /\ completedSetup.stage = "Done"
/\ DOMAIN drawDecks = SetupPlayers /\ drawDecks = completedSetup.deck
/\ \A p \in SetupPlayers : DeckSequenceValid4(drawDecks[p])Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeckSequenceValid4, SetupPlayers
DefaultZoneLook4 · operator
reference-profile · input revision 2 · CC0 1.0
DefaultZoneLook4(zone, face, viewer, controller) ==
CASE ZoneClass4(zone) = "Hidden" -> FALSE
[] ZoneClass4(zone) = "Secret" -> viewer = controller
[] ZoneClass4(zone) = "SchemaAtom128" -> face = "Up" \/ viewer = controller
[] OTHER -> FALSEExact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneClass4
DeployedProtectingBarrier4 · operator
reference-profile · input revision 2 · CC0 1.0
DeployedProtectingBarrier4(objects, targetSite) ==
{id \in DeployedTargetSiteCards4(objects,targetSite) :
objects[id].kind = "Barrier" /\ objects[id].area = "Protecting"}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeployedTargetSiteCards4
DeployedTargetSiteCards4 · operator
reference-profile · input revision 2 · CC0 1.0
DeployedTargetSiteCards4(objects, targetSite) ==
{id \in DirectTargetSiteCards4(objects,targetSite) : objects[id].deployed}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DirectTargetSiteCards4
DeployedTargetSiteMoveGate4 · operator
reference-profile · input revision 2 · CC0 1.0
DeployedTargetSiteMoveGate4(beforeTargetSite, afterTargetSite, explicitlyDirected) ==
beforeTargetSite = afterTargetSite \/ explicitlyDirectedExact module download · Source bundle and reproduction instructions
DirectTargetSiteCards4 · operator
reference-profile · input revision 2 · CC0 1.0
DirectTargetSiteCards4(objects, targetSite) ==
{id \in DOMAIN objects : objects[id].form = "Card" /\ objects[id].zone = "Play" /\
objects[id].area \in {"Root","Protecting"} /\ objects[id].targetSite = targetSite}Exact module download · Source bundle and reproduction instructions
DiscardArrivalFace4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardArrivalFace4(owner, sourceZone, movementKind, visibleToSideB) ==
IF owner = "SideB" THEN "Up"
ELSE IF sourceZone = "SideAHand" /\ movementKind = "Discard" THEN "Down"
ELSE IF visibleToSideB THEN "Up" ELSE "Down"Exact module download · Source bundle and reproduction instructions
DiscardArrivalPost4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardArrivalPost4(o, owner, sourceZone, movementKind, visibleToSideB) ==
/\ movementKind \in {"Retire","Discard"} /\ o.form = "Card"
/\ o.zone = DiscardDestination4(owner) /\ ~o.deployed
/\ o.face = DiscardArrivalFace4(owner,sourceZone,movementKind,visibleToSideB)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DiscardArrivalFace4, DiscardDestination4
DiscardCardInactive4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardCardInactive4(o, gameStarted, cardData) ==
ZoneType4(o.zone) = "Discard" => ~DefaultActive(o,gameStarted,cardData)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneType4, DefaultActive
DiscardCentralTargetSite4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardCentralTargetSite4(player) == IF player = "SideA" THEN "SchemaAtom018" ELSE "NoValue"Exact module download · Source bundle and reproduction instructions
DiscardCount4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardCount4(cards) == Cardinality(cards)Exact module download · Source bundle and reproduction instructions
DiscardDestination4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardDestination4(owner) == owner \o "Discard"Exact module download · Source bundle and reproduction instructions
DiscardName4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardName4(player) == IF player = "SideA" THEN "SchemaAtom018" ELSE "BDiscardPile"Exact module download · Source bundle and reproduction instructions
DiscardPilesInitiallyEmpty4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardPilesInitiallyEmpty4(zoneCards) ==
zoneCards["SideADiscard"] = {} /\ zoneCards["SideBDiscard"] = {}Exact module download · Source bundle and reproduction instructions
DiscardSiteFaceValid4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardSiteFaceValid4(face) == face \in {"Up","Down"}Exact module download · Source bundle and reproduction instructions
DiscardSiteFacedownOrientation4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardSiteFacedownOrientation4(face) ==
IF face = "Down" THEN "Horizontal" ELSE "Unspecified"Exact module download · Source bundle and reproduction instructions
DiscardSiteVisibleCards4 · operator
reference-profile · input revision 2 · CC0 1.0
DiscardSiteVisibleCards4(cards, faces, viewer, explicitlyVisibleIds) ==
{id \in cards : faces[id] = "Up" \/ viewer = "SideA" \/ id \in explicitlyVisibleIds}Exact module download · Source bundle and reproduction instructions
FacedownSetAsideGroupView4 · operator
reference-profile · input revision 2 · CC0 1.0
FacedownSetAsideGroupView4(objects, transits) ==
LET valid == SetAsideTrackingValid4(objects,transits)
ids == {id \in SetAsideIds4(objects) :
objects[id].form = "Card" /\ objects[id].face = "Down"}
effects == IF valid THEN {transits[id].effect : id \in ids} ELSE {}
IN [valid |-> valid,
groups |-> [e \in effects |-> {id \in ids : transits[id].effect = e}]]Exact module download · Source bundle and reproduction instructions
ForfeitObjectivePost4 · operator
reference-profile · input revision 2 · CC0 1.0
ForfeitObjectivePost4(before, after, objectiveAreaPlayer, forfeitAuthorized) ==
/\ objectiveAreaPlayer \in SetupPlayers /\ before.kind = "Objective"
/\ before.zone = ObjectiveAreaZone4(objectiveAreaPlayer)
/\ RemovedCardPost4(before,after,forfeitAuthorized)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveAreaZone4, RemovedCardPost4, SetupPlayers
HandArrival4 · operator
reference-profile · input revision 2 · CC0 1.0
HandArrival4(before, after, incoming, movementAuthorized) ==
/\ movementAuthorized /\ before \intersect incoming = {}
/\ after = before \cup incomingExact module download · Source bundle and reproduction instructions
HandCardInactive4 · operator
reference-profile · input revision 2 · CC0 1.0
HandCardInactive4(o, gameStarted, cardData) ==
ZoneType4(o.zone) = "Hand" => ~DefaultActive(o,gameStarted,cardData)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneType4, DefaultActive
HandCentralTargetSite4 · operator
reference-profile · input revision 2 · CC0 1.0
HandCentralTargetSite4(player) == IF player = "SideA" THEN "SchemaAtom082" ELSE "NoValue"Exact module download · Source bundle and reproduction instructions
HandCount4 · operator
reference-profile · input revision 2 · CC0 1.0
HandCount4(hand) == Cardinality(hand)Exact module download · Source bundle and reproduction instructions
HandDiscardDemand4 · operator
reference-profile · input revision 2 · CC0 1.0
HandDiscardDemand4(hand, effectiveMaximum, discardStepDue) ==
IF discardStepDue THEN MaxOf(0,Cardinality(hand)-effectiveMaximum) ELSE 0Exact module download · Source bundle and reproduction instructions
Resolved project definitions: MaxOf
HandDiscardResult4 · operator
reference-profile · input revision 2 · CC0 1.0
HandDiscardResult4(before, after, discarded, effectiveMaximum,
actualDiscardStep, harmEliminationCheckPassed) ==
/\ actualDiscardStep /\ harmEliminationCheckPassed /\ discarded \subseteq before
/\ Cardinality(discarded) = HandDiscardDemand4(before,effectiveMaximum,TRUE)
/\ after = before \ discardedExact module download · Source bundle and reproduction instructions
Resolved project definitions: HandDiscardDemand4
HandHeldCountAllowed4 · operator
reference-profile · input revision 2 · CC0 1.0
HandHeldCountAllowed4(count) == count \in NatExact module download · Source bundle and reproduction instructions
HandName4 · operator
reference-profile · input revision 2 · CC0 1.0
HandName4(player) == IF player = "SideA" THEN "SchemaAtom082" ELSE "BHand"Exact module download · Source bundle and reproduction instructions
HandSetupProjection4 · operator
reference-profile · input revision 2 · CC0 1.0
HandSetupProjection4(setupHands) ==
[p \in SetupPlayers |-> SetupRange(setupHands[p])]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupPlayers, SetupRange
HandVisibleCards4 · operator
reference-profile · input revision 2 · CC0 1.0
HandVisibleCards4(hand, viewer, controller, explicitlyVisibleIds) ==
IF viewer = controller THEN hand ELSE hand \intersect explicitlyVisibleIdsExact module download · Source bundle and reproduction instructions
HandWithinMaximum4 · operator
reference-profile · input revision 2 · CC0 1.0
HandWithinMaximum4(hand, effectiveMaximum) == Cardinality(hand) <= effectiveMaximumExact module download · Source bundle and reproduction instructions
HostPlayRelationship4 · operator
reference-profile · input revision 2 · CC0 1.0
HostPlayRelationship4(hostId, host, child, deployedByThisHosting, hostingAuthorized) ==
/\ hostingAuthorized /\ host.zone = "Play" /\ child.zone = "Play"
/\ hostId # 0 /\ child.host = hostId
/\ child.deployed = deployedByThisHostingExact module download · Source bundle and reproduction instructions
HostedCostSetAsideChoice4 · operator
reference-profile · input revision 2 · CC0 1.0
HostedCostSetAsideChoice4(actualHostedIds, selected, uninstallsOrForfeitsSource, effectsReferToHosted) ==
selected = IF HostedCostSetAsideRequired4(uninstallsOrForfeitsSource,effectsReferToHosted)
THEN actualHostedIds ELSE {}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: HostedCostSetAsideRequired4
HostedCostSetAsideRequired4 · operator
reference-profile · input revision 2 · CC0 1.0
HostedCostSetAsideRequired4(uninstallsOrForfeitsSource, effectsReferToHosted) ==
uninstallsOrForfeitsSource /\ effectsReferToHostedExact module download · Source bundle and reproduction instructions
IllegalPhysicalCounterIds4 · operator
reference-profile · input revision 2 · CC0 1.0
IllegalPhysicalCounterIds4(objects, actualLocationLegal) ==
{id \in DOMAIN objects : BankPhysicalToken4(objects[id]) /\ ~actualLocationLegal[id]}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: BankPhysicalToken4
InnermostBarrier4 · operator
reference-profile · input revision 2 · CC0 1.0
InnermostBarrier4(order, id) == Len(order) > 0 /\ order[1] = idExact module download · Source bundle and reproduction instructions
MoveRevealRequired4 · operator
reference-profile · input revision 2 · CC0 1.0
MoveRevealRequired4(sourceZone, facedown, requiresAttribute, deploying, deployRevealRequired) ==
IF deploying THEN deployRevealRequired
ELSE requiresAttribute /\ (facedown \/ ZoneClass4(sourceZone) = "Hidden")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneClass4
NewAuxiliarySiteDeclaration4 · operator
reference-profile · input revision 2 · CC0 1.0
NewAuxiliarySiteDeclaration4(before, after, newId, usedIds, destination, deployAuthorized, activeLimits) ==
/\ TargetSiteRegistryValid4(before) /\ newId \notin usedIds \cup DOMAIN before \cup {"NoValue"}
/\ deployAuthorized /\ destination.targetSite = newId
/\ destination.zone = "Play" /\ destination.area \in {"Root","Protecting"}
/\ \A limit \in activeLimits : Cardinality(AuxiliarySiteTargetSiteIds4(before))+1 <= limit
/\ after = [id \in DOMAIN before \cup {newId} |->
IF id = newId THEN [kind |-> "SchemaAtom132"] ELSE before[id]]
/\ TargetSiteRegistryValid4(after)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: AuxiliarySiteTargetSiteIds4, TargetSiteRegistryValid4
NonfunctionalOrHostedCounter4 · operator
reference-profile · input revision 2 · CC0 1.0
NonfunctionalOrHostedCounter4(o, isNonfunctionalAid) ==
o.form = "Counter" /\ o.zone = "Play" /\ o.kind \notin {"ResourceUnit","ExposureMarker","LiabilityMarker"} =>
(o.host # 0 \/ isNonfunctionalAid)Exact module download · Source bundle and reproduction instructions
NormalObjectiveCompletionClaimObjectivePost4 · operator
reference-profile · input revision 2 · CC0 1.0
NormalObjectiveCompletionClaimObjectivePost4(o, player, movementKind, objectiveCompletionClaimObjectiveAuthorized) ==
/\ player \in SetupPlayers /\ objectiveCompletionClaimObjectiveAuthorized
/\ movementKind = IF player = "SideA" THEN "Scored" ELSE "ClaimedObjective"
/\ o.form = "Card" /\ o.kind = "Objective" /\ ~o.deployed
/\ o.zone = ObjectiveAreaZone4(player) /\ o.face = "Up"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveAreaZone4, SetupPlayers
ObjectLocation4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectLocation4(o, deckPosition, actualPlayLocation) ==
IF o.host # 0 THEN [kind |-> "Host",object |-> o.host]
ELSE IF ZoneType4(o.zone) = "Deck" THEN
[kind |-> "DeckPosition",zone |-> o.zone,position |-> deckPosition]
ELSE IF o.zone = "Play" THEN actualPlayLocation
ELSE [kind |-> "Zone",zone |-> o.zone]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneType4
ObjectiveAreaCount4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaCount4(objects, player) == Cardinality(ObjectiveAreaObjectiveIds4(objects,player))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveAreaObjectiveIds4
ObjectiveAreaObjectActive4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaObjectActive4(o, gameStarted, cardData, sideBObjectiveAreaCardTextActive) ==
/\ gameStarted /\ o.form = "Card" /\ o.kind = "Objective"
/\ o.zone \in {"SideAObjectiveCompletion","SideBObjectiveCompletion"}
/\ (DefaultActive(o,gameStarted,cardData) \/
(o.zone = "SideBObjectiveCompletion" /\ sideBObjectiveAreaCardTextActive))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DefaultActive
ObjectiveAreaObjectiveIds4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaObjectiveIds4(objects, player) ==
{id \in DOMAIN objects : objects[id].form = "Card" /\ objects[id].kind = "Objective" /\
objects[id].zone = ObjectiveAreaZone4(player)}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveAreaZone4
ObjectiveAreaOpenObjectives4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaOpenObjectives4(objects, player) == ObjectiveAreaObjectiveIds4(objects,player)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveAreaObjectiveIds4
ObjectiveAreaPoints4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaPoints4(objects, player, effectivePoints) ==
SumMap([id \in ObjectiveAreaObjectiveIds4(objects,player) |->
ObjectivePointsInObjectiveArea(objects[id],ObjectiveAreaZone4(player),effectivePoints[id])])Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SumMap, ObjectiveAreaObjectiveIds4, ObjectiveAreaZone4, ObjectivePointsInObjectiveArea
ObjectiveAreaZone4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreaZone4(player) == player \o "ObjectiveCompletion"Exact module download · Source bundle and reproduction instructions
ObjectiveAreasInitiallyEmpty4 · operator
reference-profile · input revision 2 · CC0 1.0
ObjectiveAreasInitiallyEmpty4(zoneCards) ==
zoneCards["SideAObjectiveCompletion"] = {} /\ zoneCards["SideBObjectiveCompletion"] = {}Exact module download · Source bundle and reproduction instructions
OutermostBarrier4 · operator
reference-profile · input revision 2 · CC0 1.0
OutermostBarrier4(order, id) == Len(order) > 0 /\ order[Len(order)] = idExact module download · Source bundle and reproduction instructions
OutsideCardCanAffect4 · operator
reference-profile · input revision 2 · CC0 1.0
OutsideCardCanAffect4(zone) == zone # "Outside"Exact module download · Source bundle and reproduction instructions
OutsideCardCanBeAffected4 · operator
reference-profile · input revision 2 · CC0 1.0
OutsideCardCanBeAffected4(zone, explicitlyBringsExtraCardIn) ==
zone # "Outside" \/ explicitlyBringsExtraCardInExact module download · Source bundle and reproduction instructions
PendingTargetSiteDeploy4 · operator
reference-profile · input revision 2 · CC0 1.0
PendingTargetSiteDeploy4(deploying, targetSite) ==
\E id \in DOMAIN deploying :
deploying[id].form = "Card" /\ deploying[id].destination.zone = "Play" /\
deploying[id].destination.targetSite = targetSite /\
deploying[id].destination.area \in {"Root","Protecting"}Exact module download · Source bundle and reproduction instructions
PlayCardCount4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayCardCount4(objects) == Cardinality(PlayCardIds4(objects))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: PlayCardIds4
PlayCardDefaultActive4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayCardDefaultActive4(o, gameStarted, cardData, playActivationReached) ==
/\ o.zone = "Play" /\ o.form = "Card" /\ gameStarted
/\ ~(o.host # 0 /\ ~o.deployed)
/\ IF o.kind \in {"Plan","Action"}
THEN PlayedCardActive(o,playActivationReached)
ELSE DefaultActive(o,gameStarted,cardData)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DefaultActive, PlayedCardActive
PlayCardIds4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayCardIds4(objects) ==
{id \in DOMAIN objects : objects[id].form = "Card" /\ objects[id].zone = "Play"}Exact module download · Source bundle and reproduction instructions
PlayCardVisible4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayCardVisible4(o, viewer, controller, currentLookGrant) ==
/\ o.form = "Card" /\ o.zone = "Play"
/\ (o.face = "Up" \/ viewer = controller \/ currentLookGrant)Exact module download · Source bundle and reproduction instructions
PlayLocation4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayLocation4(o, barrierPosition) ==
IF o.host # 0 THEN [kind |-> "Host",object |-> o.host]
ELSE IF o.form = "Card" /\ o.area = "Protecting"
THEN [kind |-> "Protecting",targetSite |-> o.targetSite,position |-> barrierPosition]
ELSE IF o.form = "Card" /\ o.area = "Root"
THEN [kind |-> "Root",targetSite |-> o.targetSite]
ELSE IF o.form = "Counter" /\ o.kind = "ResourceUnit"
THEN [kind |-> "ResourceUnitLocation",location |-> o.resourceUnitLocation]
ELSE [kind |-> "Zone",zone |-> "Play"]Exact module download · Source bundle and reproduction instructions
PlayResourceUnitLocationValid4 · operator
reference-profile · input revision 2 · CC0 1.0
PlayResourceUnitLocationValid4(o) ==
o.form = "Counter" /\ o.kind = "ResourceUnit" /\ o.zone = "Play" =>
(o.host # 0 \/ o.resourceUnitLocation \in {"SideAPool","SideBPool","LiabilityMarkerFund"})Exact module download · Source bundle and reproduction instructions
PrivateZoneInstances4 · operator
reference-profile · input revision 2 · CC0 1.0
PrivateZoneInstances4 == {"SideADeck","SideBDeck","SideAHand","SideBHand",
"SideADiscard","SideBDiscard","SideAObjectiveCompletion","SideBObjectiveCompletion"}Exact module download · Source bundle and reproduction instructions
ProtectionLayoutValid4 · operator
reference-profile · input revision 2 · CC0 1.0
ProtectionLayoutValid4(objects, orders, targetSites) ==
/\ DOMAIN orders = DOMAIN targetSites
/\ \A targetSite \in DOMAIN targetSites :
DeckSequenceValid4(orders[targetSite]) /\
SetupRange(orders[targetSite]) = DeployedProtectingBarrier4(objects,targetSite)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeckSequenceValid4, DeployedProtectingBarrier4, SetupRange
RemovedCardCount4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedCardCount4(objects) == Cardinality(RemovedOpenCardIds4(objects))Exact module download · Source bundle and reproduction instructions
Resolved project definitions: RemovedOpenCardIds4
RemovedCardPost4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedCardPost4(before, after, removalAuthorized) ==
/\ removalAuthorized /\ before.form = "Card" /\ after.form = "Card"
/\ before.zone \in ZoneInstances4 \ {"Removed"}
/\ after.card = before.card /\ after.zone = "Removed"
/\ ~after.deployed /\ after.host = 0 /\ after.face = "Up"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneInstances4
RemovedCardZonePersistence4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedCardZonePersistence4(beforeCardZones, afterCardZones) ==
\A card \in {c \in DOMAIN beforeCardZones : beforeCardZones[c] = "Removed"} :
card \in DOMAIN afterCardZones /\ afterCardZones[card] = "Removed"Exact module download · Source bundle and reproduction instructions
RemovedController4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedController4(zone, otherwiseController) ==
IF zone = "Removed" THEN "none" ELSE otherwiseControllerExact module download · Source bundle and reproduction instructions
RemovedDefaultActivity4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedDefaultActivity4(zone, otherwiseActive) ==
IF zone = "Removed" THEN FALSE ELSE otherwiseActiveExact module download · Source bundle and reproduction instructions
RemovedObjectInteractionGate4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedObjectInteractionGate4(zone, operation) ==
zone # "Removed" \/ operation \in {"Look","Count","ReadOpenInformation"}Exact module download · Source bundle and reproduction instructions
RemovedOpenCardIds4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedOpenCardIds4(objects) ==
{id \in DOMAIN objects : objects[id].form = "Card" /\ objects[id].zone = "Removed"}Exact module download · Source bundle and reproduction instructions
RemovedProfile4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedProfile4 == [shared |-> TRUE,active |-> FALSE,open |-> TRUE,controller |-> "none"]Exact module download · Source bundle and reproduction instructions
RemovedSourceMoveGate4 · operator
reference-profile · input revision 2 · CC0 1.0
RemovedSourceMoveGate4(sourceZone) == sourceZone # "Removed"Exact module download · Source bundle and reproduction instructions
RequiredEmptyDeckWinner4 · operator
reference-profile · input revision 2 · CC0 1.0
RequiredEmptyDeckWinner4(player, deck, drawRequired, validDrawProcedure) ==
IF player = "SideA" /\ deck = <<>> /\ drawRequired /\ validDrawProcedure
THEN "SideB" ELSE "NoValue"Exact module download · Source bundle and reproduction instructions
RootCardLayout4 · operator
reference-profile · input revision 2 · CC0 1.0
RootCardLayout4(targetSite, publicDeploymentOrder) ==
[orientation |-> "Vertical",location |-> [kind |-> "Root",targetSite |-> targetSite],
deploymentOrder |-> publicDeploymentOrder]Exact module download · Source bundle and reproduction instructions
SameBarrierPosition4 · operator
reference-profile · input revision 2 · CC0 1.0
SameBarrierPosition4(orderA, idA, orderB, idB) ==
/\ BarrierPosition4(orderA,idA).exists /\ BarrierPosition4(orderB,idB).exists
/\ BarrierPosition4(orderA,idA).amount = BarrierPosition4(orderB,idB).amountExact module download · Source bundle and reproduction instructions
Resolved project definitions: BarrierPosition4
SetAsideAbilityCanSee4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideAbilityCanSee4(transit, abilityId, specificallySetsAside, refersToSetAside) ==
/\ (specificallySetsAside \/ refersToSetAside)
/\ (~transit.protected \/ abilityId = transit.ability)Exact module download · Source bundle and reproduction instructions
SetAsideDefaultActivity4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideDefaultActivity4(zone, otherwiseActive) ==
IF zone = "SetAside" THEN FALSE ELSE otherwiseActiveExact module download · Source bundle and reproduction instructions
SetAsideEntryPost4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideEntryPost4(o, foundDuringSearch, specificallyFacedown, setAsideAuthorized) ==
/\ setAsideAuthorized /\ o.zone = "SetAside" /\ ~o.deployed
/\ IF o.form = "Card" THEN o.face = SetAsideFace4(foundDuringSearch,specificallyFacedown)
ELSE TRUEExact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideFace4
SetAsideExitView4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideExitView4(transit, abilityId, specificallySetsAside, refersToSetAside, destinationZone) ==
LET sees == SetAsideAbilityCanSee4(transit,abilityId,specificallySetsAside,refersToSetAside)
IN [fromZone |-> IF sees THEN "SetAside" ELSE transit.originZone,
fromLocation |-> IF sees THEN [kind |-> "Zone",zone |-> "SetAside"] ELSE transit.originLocation,
toZone |-> destinationZone]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: sees
SetAsideFace4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideFace4(foundDuringSearch, specificallyFacedown) ==
IF foundDuringSearch \/ specificallyFacedown THEN "Down" ELSE "Up"Exact module download · Source bundle and reproduction instructions
SetAsideGroupRearrangement4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideGroupRearrangement4(viewer, controller, before, after) ==
viewer = controller /\ UnorderedArrangement4(before,after)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: UnorderedArrangement4
SetAsideIds4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideIds4(objects) == {id \in DOMAIN objects : objects[id].zone = "SetAside"}Exact module download · Source bundle and reproduction instructions
SetAsidePlayerVisibleCards4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsidePlayerVisibleCards4(objects, controllers, viewer, currentLookGrants) ==
{id \in SetAsideIds4(objects) : objects[id].form = "Card" /\
(objects[id].face = "Up" \/ controllers[id] = viewer \/ id \in currentLookGrants)}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideIds4
SetAsideProfile4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideProfile4 == [shared |-> TRUE,active |-> FALSE,temporary |-> TRUE]Exact module download · Source bundle and reproduction instructions
SetAsidePublicGroupCounts4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsidePublicGroupCounts4(groupView) ==
[valid |-> groupView.valid,
counts |-> [effect \in DOMAIN groupView.groups |-> Cardinality(groupView.groups[effect])]]Exact module download · Source bundle and reproduction instructions
SetAsideTrackingValid4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideTrackingValid4(objects, transits) ==
/\ SetAsideIds4(objects) \subseteq DOMAIN transits
/\ \A id \in SetAsideIds4(objects) : transits[id].object = idExact module download · Source bundle and reproduction instructions
Resolved project definitions: SetAsideIds4
SetAsideTransit4 · operator
reference-profile · input revision 2 · CC0 1.0
SetAsideTransit4(currentObject, originalZone, originalLocation, effectInstance, owningAbility,
protectedForHostedCost, sourceWasForfeited) ==
[object |-> currentObject,originZone |-> originalZone,originLocation |-> originalLocation,
effect |-> effectInstance,ability |-> owningAbility,protected |-> protectedForHostedCost,
cleanupStage |-> IF sourceWasForfeited THEN "ProcedureCode76ca53ad9dd0" ELSE "ProcedureCode96bfa1b6a970"]Exact module download · Source bundle and reproduction instructions
SharedZoneInstances4 · operator
reference-profile · input revision 2 · CC0 1.0
SharedZoneInstances4 == {"Play","Bank","SetAside","Removed"}Exact module download · Source bundle and reproduction instructions
SideBHandHarmElimination4 · operator
reference-profile · input revision 2 · CC0 1.0
SideBHandHarmElimination4(player, effectiveMaximum, beginningOfActualDiscardStep) ==
player = "SideB" /\ beginningOfActualDiscardStep /\ effectiveMaximum < 0Exact module download · Source bundle and reproduction instructions
SideBPositionAfterBarrierShift4 · operator
reference-profile · input revision 2 · CC0 1.0
SideBPositionAfterBarrierShift4(traversal, barrierId, beforeOrder, afterOrder) ==
IF traversal.active /\ traversal.currentBarrier = barrierId /\ traversal.phase \in {"Approach","Encounter","Pass"} /\
BarrierPosition4(beforeOrder,barrierId).exists /\ BarrierPosition4(afterOrder,barrierId).exists
THEN [traversal EXCEPT !.position = @ +
BarrierPosition4(afterOrder,barrierId).amount-BarrierPosition4(beforeOrder,barrierId).amount]
ELSE traversalExact module download · Source bundle and reproduction instructions
Resolved project definitions: BarrierPosition4
StandardAuxiliarySiteCountAllowed4 · operator
reference-profile · input revision 2 · CC0 1.0
StandardAuxiliarySiteCountAllowed4(count) == count \in NatExact module download · Source bundle and reproduction instructions
StandardMaximumHandSize4 · operator
reference-profile · input revision 2 · CC0 1.0
StandardMaximumHandSize4 == 5Exact module download · Source bundle and reproduction instructions
StartingPlayCards4 · operator
reference-profile · input revision 2 · CC0 1.0
StartingPlayCards4(objects, profileIds, actualAuthorizedSetupCards) ==
PlayCardIds4(objects) = profileIds \cup actualAuthorizedSetupCardsExact module download · Source bundle and reproduction instructions
Resolved project definitions: PlayCardIds4
TargetSiteDeployDestinationGate4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteDeployDestinationGate4(actor, kind, destination, destinationExists, upgradeRestrictionHolds) ==
/\ destinationExists
/\ CASE kind = "Objective" -> ObjectiveDeployTypeLocation(actor,kind,destination)
[] kind = "Facility" -> FacilityDeployTypeLocation(actor,kind,destination)
[] kind = "Attachment" -> UpgradeDeployTypeLocation(actor,kind,destination) /\ upgradeRestrictionHolds
[] kind = "Barrier" -> BarrierDeployTypeLocation(actor,kind,destination)
[] OTHER -> FALSEExact module download · Source bundle and reproduction instructions
Resolved project definitions: BarrierDeployTypeLocation, FacilityDeployTypeLocation, ObjectiveDeployTypeLocation, UpgradeDeployTypeLocation
TargetSiteKinds4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteKinds4 == {"SchemaAtom033","SchemaAtom132"}Exact module download · Source bundle and reproduction instructions
TargetSiteRegistryAtStart4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteRegistryAtStart4(targetSites) ==
TargetSiteRegistryValid4(targetSites) /\ DOMAIN targetSites = CentralTargetSites4Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CentralTargetSites4, TargetSiteRegistryValid4
TargetSiteRegistryValid4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteRegistryValid4(targetSites) ==
/\ CentralTargetSites4 \subseteq DOMAIN targetSites /\ "NoValue" \notin DOMAIN targetSites
/\ \A id \in DOMAIN targetSites :
targetSites[id].kind = IF id \in CentralTargetSites4 THEN "SchemaAtom033" ELSE "SchemaAtom132"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CentralTargetSites4
TargetSiteRootLimits4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteRootLimits4(objects, deploying, targetSite) ==
ObjectiveFacilityRootLimit(objects,targetSite) /\ RegionRootLimit(objects,deploying,targetSite)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ObjectiveFacilityRootLimit, RegionRootLimit
TargetSiteRootTypeValid4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteRootTypeValid4(o, targetSiteKind) ==
o.form = "Card" /\ o.zone = "Play" /\ o.deployed /\ o.area = "Root" =>
(IF targetSiteKind = "SchemaAtom033" THEN o.kind = "Attachment"
ELSE o.kind \in {"Objective","Facility","Attachment"})Exact module download · Source bundle and reproduction instructions
TargetSiteTraversalTargetGate4 · operator
reference-profile · input revision 2 · CC0 1.0
TargetSiteTraversalTargetGate4(actor, targetSites, targetSite, traversalAuthorized) ==
actor = "SideB" /\ targetSite \in DOMAIN targetSites /\ traversalAuthorizedExact module download · Source bundle and reproduction instructions
ThisTargetSiteBinding4 · operator
reference-profile · input revision 2 · CC0 1.0
ThisTargetSiteBinding4(currentTargetSite, triggerOrCostMovedFromTargetSite, targetSiteBeforeThatMove) ==
LET retainOld == triggerOrCostMovedFromTargetSite /\ targetSiteBeforeThatMove # "NoValue"
IN [targetSite |-> IF retainOld THEN targetSiteBeforeThatMove ELSE currentTargetSite,
frozen |-> retainOld]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: retainOld
ThisTargetSiteDuringResolution4 · operator
reference-profile · input revision 2 · CC0 1.0
ThisTargetSiteDuringResolution4(before, sourceMovedNow, targetSiteBeforeMove, currentTargetSite) ==
IF before.frozen THEN before
ELSE IF sourceMovedNow THEN [targetSite |-> targetSiteBeforeMove,frozen |-> TRUE]
ELSE [targetSite |-> currentTargetSite,frozen |-> FALSE]Exact module download · Source bundle and reproduction instructions
TraversalAfterAuxiliarySiteCleanup4 · operator
reference-profile · input revision 2 · CC0 1.0
TraversalAfterAuxiliarySiteCleanup4(traversal, targetSitesAfter, paidAbilityWindowOpen) ==
IF traversal.active /\ traversal.attacked \notin DOMAIN targetSitesAfter
THEN IF paidAbilityWindowOpen THEN [traversal EXCEPT !.targetSiteGone = TRUE]
ELSE [traversal EXCEPT !.targetSiteGone = TRUE,!.active = FALSE,
!.result = IF @ = "Undeclared" THEN "Neither" ELSE @]
ELSE traversalExact module download · Source bundle and reproduction instructions
UnorderedArrangement4 · operator
reference-profile · input revision 2 · CC0 1.0
UnorderedArrangement4(before, after) ==
DeckSequenceValid4(before) /\ DeckSequenceValid4(after) /\
SetupRange(before) = SetupRange(after)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: DeckSequenceValid4, SetupRange
UpgradeTargetSiteRestriction4 · operator
reference-profile · input revision 2 · CC0 1.0
UpgradeTargetSiteRestriction4(o, allowedTargetSites) ==
o.form = "Card" /\ o.kind = "Attachment" /\ o.deployed /\ o.area = "Root" =>
o.targetSite \in allowedTargetSitesExact module download · Source bundle and reproduction instructions
ZoneClass4 · operator
reference-profile · input revision 2 · CC0 1.0
ZoneClass4(zone) ==
CASE ZoneType4(zone) = "Deck" -> "Hidden"
[] ZoneType4(zone) = "Hand" -> "Secret"
[] zone \in ZoneInstances4 -> "SchemaAtom128"
[] OTHER -> "Outside"Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneInstances4, ZoneType4
ZoneDefaultActivityGate4 · operator
reference-profile · input revision 2 · CC0 1.0
ZoneDefaultActivityGate4(canonicalZone, otherwiseActive) ==
CASE canonicalZone = "Bank" -> BankProfile4.active
[] canonicalZone = "SetAside" -> SetAsideProfile4.active
[] canonicalZone = "Removed" -> RemovedProfile4.active
[] canonicalZone = "Outside" -> FALSE
[] OTHER -> otherwiseActiveExact module download · Source bundle and reproduction instructions
Resolved project definitions: BankProfile4, RemovedProfile4, SetAsideProfile4
ZoneInstances4 · operator
reference-profile · input revision 2 · CC0 1.0
ZoneInstances4 == PrivateZoneInstances4 \cup SharedZoneInstances4Exact module download · Source bundle and reproduction instructions
Resolved project definitions: PrivateZoneInstances4, SharedZoneInstances4
ZonePartition4 · operator
reference-profile · input revision 2 · CC0 1.0
ZonePartition4(inGameIds, occupants) ==
/\ DOMAIN occupants = ZoneInstances4
/\ UNION {occupants[z] : z \in ZoneInstances4} = inGameIds
/\ \A a,b \in ZoneInstances4 : a # b => occupants[a] \intersect occupants[b] = {}Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ZoneInstances4
ZoneType4 · operator
reference-profile · input revision 2 · CC0 1.0
ZoneType4(zone) ==
CASE zone \in {"SideADeck","SideBDeck"} -> "Deck"
[] zone \in {"SideAHand","SideBHand"} -> "Hand"
[] zone \in {"SideADiscard","SideBDiscard"} -> "Discard"
[] zone \in {"SideAObjectiveCompletion","SideBObjectiveCompletion"} -> "ObjectiveCompletion"
[] OTHER -> zoneExact module download · Source bundle and reproduction instructions
ZoneTypes4 · operator
reference-profile · input revision 2 · CC0 1.0
ZoneTypes4 == {"Deck","Hand","Discard","ObjectiveCompletion","Play","Bank","SetAside","Removed"}Exact module download · Source bundle and reproduction instructions