DefinitionChecksMC¶
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.
ActionPointAid · operator
reference-profile · input revision 2 · CC0 1.0
ActionPointAid == [HostedResourceUnit EXCEPT !.kind = "ActionPoint"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: HostedResourceUnit
AllAssertions · operator
reference-profile · input revision 2 · CC0 1.0
AllAssertions == done /\ StaticChecks /\ SetupChecks /\ LockedProfileChecksExact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileChecks, SetupChecks, StaticChecks, done
BadDem · operator
reference-profile · input revision 2 · CC0 1.0
BadDem == [p \in {"restrictedDemand", "generalDemand"} |-> IF p = "restrictedDemand" THEN 0 ELSE 3]Exact module download · Source bundle and reproduction instructions
Cap · operator
reference-profile · input revision 2 · CC0 1.0
Cap == [s \in {"base", "restrictedDemand"} |-> IF s = "base" THEN 1 ELSE 2]Exact module download · Source bundle and reproduction instructions
CardIds · operator
reference-profile · input revision 2 · CC0 1.0
CardIds == {"ci", "ri", "dA", "dA2", "dB", "dC", "mA", "mB", "bA", "bB",
"rExtra", "technique", "objective"}Exact module download · Source bundle and reproduction instructions
ChosenTraits · operator
reference-profile · input revision 2 · CC0 1.0
ChosenTraits == {"dA", "dB", "dC"}Exact module download · Source bundle and reproduction instructions
Costs · operator
reference-profile · input revision 2 · CC0 1.0
Costs == <<[category |-> "Play", kind |-> "ResourceUnit", amount |-> 2],
[category |-> "Additional", kind |-> "Retire", amount |-> 1]>>Exact module download · Source bundle and reproduction instructions
Data · operator
reference-profile · input revision 2 · CC0 1.0
Data == [c \in CardIds |->
CASE c = "ci" -> Meta("SideA", "Profile", "SideAId", "Other", {})
[] c = "ri" -> Meta("SideB", "Profile", "SideBId", "Other", {})
[] c \in {"dA", "dA2"} -> Meta("SideB", "Support", "TraitA", "Other", {"Trait"})
[] c = "dB" -> Meta("SideB", "Support", "TraitB", "Other", {"Trait"})
[] c = "dC" -> Meta("SideB", "Support", "TraitC", "Other", {"Trait"})
[] c \in {"mA", "mB"} -> Meta("SideA", "Profile", "SelectableProfile", "SelectableProfile", {})
[] c \in {"bA", "bB"} -> Meta("SideA", "Profile", "LockedProfile", "LockedProfile", {})
[] c = "rExtra" -> Meta("SideB", "Profile", "ExtraSideB", "Other", {})
[] c = "technique" -> Meta("SideB", "Technique", "Technique", "Other", {})
[] OTHER -> Meta("SideA", "Objective", "Objective", "Other", {})]Exact module download · Source bundle and reproduction instructions
Deck · operator
reference-profile · input revision 2 · CC0 1.0
Deck == <<SampleAction, SampleAction>>Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SampleAction
Decks · operator
reference-profile · input revision 2 · CC0 1.0
Decks == [p \in SetupPlayers |-> IF p = "SideA"
THEN <<"c1", "c2", "c3", "c4", "c5">>
ELSE <<"r1", "r2", "r3", "r4", "r5">>]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupPlayers
DefaultProfile · operator
reference-profile · input revision 2 · CC0 1.0
DefaultProfile(d, id, c) == AllStandardDeckChecks(c)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: AllStandardDeckChecks
Dem · operator
reference-profile · input revision 2 · CC0 1.0
Dem == [p \in {"restrictedDemand", "generalDemand"} |-> IF p = "restrictedDemand" THEN 2 ELSE 1]Exact module download · Source bundle and reproduction instructions
EmptyMap · operator
reference-profile · input revision 2 · CC0 1.0
EmptyMap == [x \in {} |-> 0]Exact module download · Source bundle and reproduction instructions
ExposureMarker · operator
reference-profile · input revision 2 · CC0 1.0
ExposureMarker == [HostedResourceUnit EXCEPT !.host = 0, !.kind = "ExposureMarker"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: HostedResourceUnit
HostedResourceUnit · operator
reference-profile · input revision 2 · CC0 1.0
HostedResourceUnit == Obj("none", "Counter", "ResourceUnit", "Play", FALSE, "NA", FALSE, 3, "none")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Obj
Id · operator
reference-profile · input revision 2 · CC0 1.0
Id == [side |-> "SideB", affiliation |-> "GroupA", minDeckSize |-> 2,
importBudget |-> 4, fullRulesLegal |-> TRUE]Exact module download · Source bundle and reproduction instructions
Ids · operator
reference-profile · input revision 2 · CC0 1.0
Ids == [p \in SetupPlayers |-> IF p = "SideA" THEN "ci" ELSE "ri"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SetupPlayers
Init · operator
reference-profile · input revision 2 · CC0 1.0
Init == done = TRUEExact module download · Source bundle and reproduction instructions
Resolved project definitions: done
LockedProfileBefore · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileBefore ==
[active |-> "bA", outside |-> {"bB"},
face |-> [c \in LockedProfileCopies |-> IF c = "bA" THEN "Up" ELSE "NA"],
front |-> [c \in LockedProfileCopies |-> TRUE],
locked |-> FALSE, stage |-> "AfterSetup"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileCopies
LockedProfileCandidateViews · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileCandidateViews ==
[active : LockedProfileCopies, outside : SUBSET LockedProfileCopies,
face : [LockedProfileCopies -> {"Up", "NA"}],
front : [LockedProfileCopies -> BOOLEAN], locked : BOOLEAN,
stage : {"AfterSetup"}]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileCopies
LockedProfileChecks · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileChecks ==
/\ ~ExtraLockedProfileSet(LockedProfileBefore, LockedProfileLostOutgoing,
{"bB"}, "bB", "SideA", Data)
/\ ExtraLockedProfileSet(LockedProfileBefore, LockedProfileSwitchAfter,
LockedProfileCopies, "bB", "SideA", Data)
/\ ~ExtraLockedProfileSet(LockedProfileBefore, LockedProfileLostOutgoing,
LockedProfileCopies, "bB", "SideA", Data)
/\ ~ExtraLockedProfileSet(LockedProfileBefore,
[LockedProfileSwitchAfter EXCEPT !.face["bA"] = "Up"],
LockedProfileCopies, "bB", "SideA", Data)
/\ ExtraLockedProfileSet(LockedProfileBefore, LockedProfileKeepAfter,
LockedProfileCopies, "bA", "SideA", Data)
/\ ExtraLockedProfileSet(LockedProfileSoloBefore,
[LockedProfileSoloBefore EXCEPT !.locked = TRUE],
{"bA"}, "bA", "SideA", Data)
/\ ~ExtraLockedProfileSet([LockedProfileBefore EXCEPT !.locked = TRUE],
LockedProfileSwitchAfter, LockedProfileCopies, "bB", "SideA", Data)
/\ ~ExtraLockedProfileSet([LockedProfileBefore EXCEPT !.stage = "InGame"],
[LockedProfileSwitchAfter EXCEPT !.stage = "InGame"],
LockedProfileCopies, "bB", "SideA", Data)
/\ \A provided \in SUBSET LockedProfileCopies, chosen \in LockedProfileCopies,
after \in LockedProfileCandidateViews :
ExtraLockedProfileSet(LockedProfileBefore, after, provided, chosen, "SideA", Data) =>
/\ after.active = chosen
/\ after.outside = LockedProfileCopies \ {chosen}
/\ after.face[chosen] = "Up"
/\ \A outgoing \in LockedProfileCopies \ {chosen} :
after.face[outgoing] = "NA"
/\ after.lockedExact module download · Source bundle and reproduction instructions
Resolved project definitions: Data, LockedProfileBefore, LockedProfileCandidateViews, LockedProfileCopies, LockedProfileKeepAfter, LockedProfileLostOutgoing, LockedProfileSoloBefore, LockedProfileSwitchAfter, ExtraLockedProfileSet
LockedProfileCopies · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileCopies == {"bA", "bB"}Exact module download · Source bundle and reproduction instructions
LockedProfileKeepAfter · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileKeepAfter == [LockedProfileBefore EXCEPT !.locked = TRUE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileBefore
LockedProfileLostOutgoing · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileLostOutgoing ==
[LockedProfileSwitchAfter EXCEPT !.outside = {}, !.face["bA"] = "Up"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileSwitchAfter
LockedProfileSoloBefore · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileSoloBefore ==
[active |-> "bA", outside |-> {},
face |-> [c \in {"bA"} |-> "Up"],
front |-> [c \in {"bA"} |-> TRUE],
locked |-> FALSE, stage |-> "AfterSetup"]Exact module download · Source bundle and reproduction instructions
LockedProfileSwitchAfter · operator
reference-profile · input revision 2 · CC0 1.0
LockedProfileSwitchAfter ==
[LockedProfileBefore EXCEPT !.active = "bB", !.outside = {"bA"},
!.face["bA"] = "NA", !.face["bB"] = "Up", !.locked = TRUE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: LockedProfileBefore
Meta · operator
reference-profile · input revision 2 · CC0 1.0
Meta(owner, kind, name, family, subtypes) ==
[owner |-> owner, side |-> owner, kind |-> kind, name |-> name,
profileFamily |-> family, subtypes |-> subtypes]Exact module download · Source bundle and reproduction instructions
Next · operator
reference-profile · input revision 2 · CC0 1.0
Next == UNCHANGED doneExact module download · Source bundle and reproduction instructions
Resolved project definitions: done
NoOverride · operator
reference-profile · input revision 2 · CC0 1.0
NoOverride(before, after, witness) == FALSEExact module download · Source bundle and reproduction instructions
NoTournament · operator
reference-profile · input revision 2 · CC0 1.0
NoTournament(d, id) == TRUEExact module download · Source bundle and reproduction instructions
Obj · operator
reference-profile · input revision 2 · CC0 1.0
Obj(card, form, kind, zone, deployed, face, activated, host, placedBy) ==
[card |-> card, form |-> form, kind |-> kind, zone |-> zone,
deployed |-> deployed, face |-> face, front |-> TRUE,
activated |-> activated, host |-> host, placedBy |-> placedBy]Exact module download · Source bundle and reproduction instructions
Perm · operator
reference-profile · input revision 2 · CC0 1.0
Perm == [s \in {"base", "restrictedDemand"} |-> IF s = "base" THEN {"restrictedDemand", "generalDemand"} ELSE {"restrictedDemand"}]Exact module download · Source bundle and reproduction instructions
RedrawAfter · operator
reference-profile · input revision 2 · CC0 1.0
RedrawAfter == [RedrawBefore EXCEPT !.stage = "RedrawSideB", !.redrawn = {"SideA"}]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: RedrawBefore
RedrawBefore · operator
reference-profile · input revision 2 · CC0 1.0
RedrawBefore == [Start EXCEPT !.stage = "RedrawSideA", !.bankReady = TRUE,
!.pool = [p \in SetupPlayers |-> 5], !.hand = Decks,
!.deck = [p \in SetupPlayers |-> <<>>]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Decks, Start, SetupPlayers
RedrawWitness · operator
reference-profile · input revision 2 · CC0 1.0
RedrawWitness == [redraw |-> TRUE, deck |-> Decks["SideA"]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Decks
ReplacementAfter · operator
reference-profile · input revision 2 · CC0 1.0
ReplacementAfter == [ReplacementBefore EXCEPT !.active = "rExtra",
!.outside = {"ri"}, !.face["ri"] = "NA", !.face["rExtra"] = "Up", !.front["rExtra"] = TRUE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ReplacementBefore
ReplacementBefore · operator
reference-profile · input revision 2 · CC0 1.0
ReplacementBefore == [active |-> "ri", outside |-> {"rExtra"},
face |-> [c \in {"ri", "rExtra"} |-> IF c = "ri" THEN "Down" ELSE "NA"],
front |-> [c \in {"ri", "rExtra"} |-> FALSE], locked |-> FALSE, stage |-> "InGame"]Exact module download · Source bundle and reproduction instructions
ResourceUnitsAfter · operator
reference-profile · input revision 2 · CC0 1.0
ResourceUnitsAfter == [ResourceUnitsBefore EXCEPT !.stage = "Shuffle", !.pool = [p \in SetupPlayers |-> 5]]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ResourceUnitsBefore, SetupPlayers
ResourceUnitsBefore · operator
reference-profile · input revision 2 · CC0 1.0
ResourceUnitsBefore == [Start EXCEPT !.stage = "TakeResourceUnits", !.bankReady = TRUE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Start
SampleAction · operator
reference-profile · input revision 2 · CC0 1.0
SampleAction == [name |-> "SampleAction", side |-> "SideB", kind |-> "Action", affiliation |-> "GroupA",
hasImportCost |-> TRUE, importCost |-> 2, objectivePoints |-> 0, copyLimit |-> 3]Exact module download · Source bundle and reproduction instructions
SelectableProfileBefore · operator
reference-profile · input revision 2 · CC0 1.0
SelectableProfileBefore == [active |-> "mA", outside |-> {"mB"},
face |-> [c \in {"mA", "mB"} |-> IF c = "mA" THEN "Down" ELSE "NA"],
front |-> [c \in {"mA", "mB"} |-> FALSE], locked |-> FALSE, stage |-> "InGame"]Exact module download · Source bundle and reproduction instructions
SelectableProfileSameAfter · operator
reference-profile · input revision 2 · CC0 1.0
SelectableProfileSameAfter == [SelectableProfileBefore EXCEPT !.face["mA"] = "Up", !.front["mA"] = TRUE]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SelectableProfileBefore
SetupChecks · operator
reference-profile · input revision 2 · CC0 1.0
SetupChecks ==
/\ SetupRolesLegal([p \in {"Alice", "Bob"} |-> IF p = "Alice" THEN "SideA" ELSE "SideB"], {"Alice", "Bob"})
/\ ~SetupRolesLegal([p \in {"Alice", "Bob"} |-> "SideA"], {"Alice", "Bob"})
/\ SetupInitialProfilesLegal(Ids, Data)
/\ SetupCardKindLegal(Data["objective"])
/\ ~SetupCardKindLegal([Data["objective"] EXCEPT !.side = "SideB"])
/\ (\A p \in SetupPlayers : Start.profileFront[p] /\ Start.profileFace[p] = "Up")
/\ Start.pool = [p \in SetupPlayers |-> 0]
/\ SetupStandardNext(ResourceUnitsBefore, ResourceUnitsAfter, [unused |-> TRUE])
/\ SetupSuccessor("PlaceProfiles") = "ProfileEffectsSideA"
/\ SetupSuccessor("ProfileEffectsSideA") = "ProfileEffectsSideB"
/\ SetupSuccessor("DrawHands") = "RedrawSideA"
/\ SetupSuccessor("RedrawSideA") = "RedrawSideB"
/\ SetupSuccessor("BeforeSideAFirstTurn") = "BeginGame"
/\ (~Start.gameStarted /\ Start.activePlayer = SetupNoPlayer)
/\ SetupStandardNext(RedrawBefore, RedrawAfter, RedrawWitness)
/\ ~SetupStandardNext([RedrawBefore EXCEPT !.redrawn = {"SideA"}], RedrawAfter, RedrawWitness)
/\ SetupStandardNext(RedrawBefore, [RedrawBefore EXCEPT !.stage = "RedrawSideB"], [redraw |-> FALSE])
/\ ~SetupPermutation(<<"a", "a", "b">>, <<"a", "b", "b">>)
/\ ~SetupNext(Start, [Start EXCEPT !.stage = "ProfileEffectsSideA"], [overrideRequired |-> TRUE], NoOverride)
/\ ExtraThreeTraitsProvision(Traits, Data)
/\ ExtraThreeTraitsSelection(Traits, ChosenTraits, Data)
/\ ~ExtraThreeTraitsSelection(Traits, {"dA", "dA2", "dB"}, Data)
/\ ExtraThreeTraitsInitialPartition({"technique"}, Traits, ChosenTraits, ChosenTraits, {"dA2"}, Data)
/\ ExtraSelectableProfileChoice("mA", {"mA", "mB"}, "mA", "SideA", Data)
/\ ExtraSelectableProfileSet(SelectableProfileBefore, SelectableProfileSameAfter, {"mA", "mB"}, "mA", "SideA", Data)
/\ ExtraProfileReplacement(ReplacementBefore, ReplacementAfter, "rExtra", Data)
/\ ExtraMayLookSideBProfile("SideB", "rExtra", {"rExtra"})
/\ ~ExtraMayLookSideBProfile("SideA", "rExtra", {"rExtra"})
/\ DefaultActive(TechniqueUp, TRUE, Data)
/\ ~DefaultActive(TechniqueUp, FALSE, Data)
/\ ~DefaultActive(TechniqueDown, TRUE, Data)
/\ DefaultActive(SideAObjective, TRUE, Data)
/\ ~DefaultActive(SideBObjective, TRUE, Data)
/\ ~SetupRetainsPrintedCharacteristics(TechniqueDown, Data)
/\ SetupOwner([TechniqueUp EXCEPT !.form = "Counter"], Data) = "SideB"
/\ SetupOwner(HostedResourceUnit, Data) = SetupNoPlayer
/\ SetupCardController(SideBObjective, Data) = "SideB"
/\ SetupCounterController(HostedResourceUnit, "SideA", SetupNoPlayer) = "SideA"
/\ SetupCounterController(ActionPointAid, "SideA", SetupNoPlayer) = SetupNoPlayer
/\ SetupCounterController(ExposureMarker, "SideA", SetupNoPlayer) = "SideB"
/\ DefaultAbilityController(SideBObjective, "SideB", SetupNoPlayer) = "SideA"
/\ DefaultAbilityController(SideBObjective, "SideB", "SideB") = "SideB"
/\ SetupEffectExecutor("SideA", "SideB") = "SideB"
/\ SetupMayUseForCost("SideA", ExposureMarker, "SideB", FALSE)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: ActionPointAid, ChosenTraits, Data, ExposureMarker, HostedResourceUnit, Ids, NoOverride, RedrawAfter, RedrawBefore, RedrawWitness, ReplacementAfter, ReplacementBefore, ResourceUnitsAfter, ResourceUnitsBefore, SelectableProfileBefore, SelectableProfileSameAfter, SideAObjective, SideBObjective, Start, TechniqueDown, TechniqueUp, Traits, DefaultAbilityController, DefaultActive, ExtraMayLookSideBProfile, ExtraProfileReplacement, ExtraSelectableProfileChoice, ExtraSelectableProfileSet, ExtraThreeTraitsInitialPartition, ExtraThreeTraitsProvision, ExtraThreeTraitsSelection, SetupCardController, SetupCardKindLegal, SetupCounterController, SetupEffectExecutor, SetupInitialProfilesLegal, SetupMayUseForCost, SetupNext, SetupNoPlayer, SetupOwner, SetupPermutation, SetupPlayers, SetupRetainsPrintedCharacteristics, SetupRolesLegal, SetupStandardNext, SetupSuccessor
SideAObjective · operator
reference-profile · input revision 2 · CC0 1.0
SideAObjective == Obj("objective", "Card", "Objective", "SideAObjectiveCompletion", FALSE, "Up", FALSE, 0, "SideA")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Obj
SideBObjective · operator
reference-profile · input revision 2 · CC0 1.0
SideBObjective == [SideAObjective EXCEPT !.zone = "SideBObjectiveCompletion"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SideAObjective
Spec · operator
reference-profile · input revision 2 · CC0 1.0
Spec == Init /\ [][Next]_doneExact module download · Source bundle and reproduction instructions
Start · operator
reference-profile · input revision 2 · CC0 1.0
Start == SetupStart(Ids, Decks, [p \in SetupPlayers |-> {}])Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Decks, Ids, SetupPlayers, SetupStart
StaticChecks · operator
reference-profile · input revision 2 · CC0 1.0
StaticChecks ==
/\ SymbolMeaning("{retire}") = "RetireThisCardCost"
/\ StandardObjectiveRange(39) = {}
/\ StandardObjectiveRange(40) = {18,19}
/\ StandardObjectiveRange(44) = {18,19}
/\ StandardObjectiveRange(45) = {20,21}
/\ StandardObjectiveRange(54) = {22,23}
/\ StandardObjectiveRange(55) = {24,25}
/\ StandardObjectiveRange(66) = {28,29}
/\ OutOfAffiliation(Unaffiliated, [Id EXCEPT !.affiliation = "Unaffiliated"])
/\ ImportCostTotal(Deck, [Id EXCEPT !.affiliation = "GroupB"]) = 4
/\ DeckLegal(Deck, Id, DefaultProfile, NoTournament)
/\ ~DeckLegal(<<SampleAction, SampleAction, SampleAction, SampleAction>>, Id, DefaultProfile, NoTournament)
/\ ~DeckLegal(Deck, [Id EXCEPT !.fullRulesLegal = FALSE], DefaultProfile, NoTournament)
/\ ModifiedCost(2, <<1,1>>, <<7>>) = 0
/\ XValue(FALSE, 7) = 0
/\ TotalDiscountSplit(3,1,2)
/\ ~TotalDiscountSplit(3,2,2)
/\ EffectiveCosts(Costs, {"Play"}, FALSE, FALSE) = <<Costs[2]>>
/\ EffectiveCosts(Costs, {}, TRUE, FALSE) = <<Costs[2]>>
/\ EffectiveCosts(Costs, {}, FALSE, TRUE) = <<>>
/\ CapacityFits(Cap, Dem, Perm)
/\ UnusedCapacity(Cap, BadDem) = 0
/\ ~CapacityFits(Cap, BadDem, Perm)
/\ CapacityFits(EmptyMap, EmptyMap, EmptyMap)
/\ StartingCapacity(FALSE, 0) = 4
/\ ~NestedBranch(FALSE, TRUE)
/\ NestedBranch(FALSE, FALSE)Exact module download · Source bundle and reproduction instructions
Resolved project definitions: CapacityFits, DeckLegal, EffectiveCosts, ImportCostTotal, ModifiedCost, NestedBranch, OutOfAffiliation, StandardObjectiveRange, StartingCapacity, SymbolMeaning, TotalDiscountSplit, UnusedCapacity, XValue, BadDem, Cap, Costs, Deck, DefaultProfile, Dem, EmptyMap, Id, NoTournament, Perm, SampleAction, Unaffiliated
TechniqueDown · operator
reference-profile · input revision 2 · CC0 1.0
TechniqueDown == [TechniqueUp EXCEPT !.face = "Down"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: TechniqueUp
TechniqueUp · operator
reference-profile · input revision 2 · CC0 1.0
TechniqueUp == Obj("technique", "Card", "Technique", "Play", TRUE, "Up", FALSE, 0, "SideB")Exact module download · Source bundle and reproduction instructions
Resolved project definitions: Obj
Traits · operator
reference-profile · input revision 2 · CC0 1.0
Traits == {"dA", "dA2", "dB", "dC"}Exact module download · Source bundle and reproduction instructions
Unaffiliated · operator
reference-profile · input revision 2 · CC0 1.0
Unaffiliated == [SampleAction EXCEPT !.affiliation = "Unaffiliated", !.name = "Unaffiliated"]Exact module download · Source bundle and reproduction instructions
Resolved project definitions: SampleAction
done · variable
reference-profile · input revision 2 · CC0 1.0
doneExact module download · Source bundle and reproduction instructions