r1 qualified Selected asymmetric formal reference: 2,502 contracts across nine families; bounded evidence and three separate teaching models Read the evidence scope

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) > effectiveLimit

Exact 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

Resolved project definitions: excess, remotes

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

Resolved project definitions: ids, valid

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 -> FALSE

Exact 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) == cards

Exact 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.virtual

Exact 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 Nat

Exact 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 runtimeZone

Exact 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 /\ abilityResolving

Exact 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 /\ explicitlyDirected

Exact 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) /\ shuffleExecuted

Exact 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 -> FALSE

Exact 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 \/ explicitlyDirected

Exact 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

Resolved project definitions: effects, ids, valid

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 incoming

Exact 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 0

Exact 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 \ discarded

Exact 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 Nat

Exact 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 explicitlyVisibleIds

Exact module download · Source bundle and reproduction instructions

HandWithinMaximum4 · operator

reference-profile · input revision 2 · CC0 1.0

HandWithinMaximum4(hand, effectiveMaximum) == Cardinality(hand) <= effectiveMaximum

Exact 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 = deployedByThisHosting

Exact 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 /\ effectsReferToHosted

Exact 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] = id

Exact 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)] = id

Exact 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" \/ explicitlyBringsExtraCardIn

Exact 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 otherwiseController

Exact 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 otherwiseActive

Exact 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).amount

Exact 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 otherwiseActive

Exact 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 TRUE

Exact 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 = id

Exact 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 < 0

Exact 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 traversal

Exact 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 Nat

Exact module download · Source bundle and reproduction instructions

StandardMaximumHandSize4 · operator

reference-profile · input revision 2 · CC0 1.0

StandardMaximumHandSize4 == 5

Exact 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 actualAuthorizedSetupCards

Exact 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 -> FALSE

Exact 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 = CentralTargetSites4

Exact 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 /\ traversalAuthorized

Exact 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 traversal

Exact 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 allowedTargetSites

Exact 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 -> otherwiseActive

Exact 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 SharedZoneInstances4

Exact 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 -> zone

Exact 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