Augmented Form #
This module defines AugmentedForm: these are Siegel's augmented forms,
which apart from ordinary options may also have tombstones, as defined in
Siegel, Definition 5.1 on p. 212.
The main result is AugmentedForm.instForm.
References #
Like GameForm, but each position may contain Left and/or Right tombstones.
Equations
Instances For
Equations
- AugmentedForm.instMoves = { moves := AugmentedForm.moves'✝, isOption'_wf := AugmentedForm.instMoves._proof_1✝ }
Check if a given Player has a tombstone.
Equations
- AugmentedForm.hasTombstone p x = (QPF.Fix.dest x).2 p
Instances For
Construct an AugmentedForm from available options and tombstones.
Equations
- AugmentedForm.ofSetsWithTombs st tomb = QPF.Fix.mk (⟨st, ⋯⟩, tomb)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Two AugmentedForms are equal if they have the same options and tombstones.
This is Conway induction.
Equations
- AugmentedForm.moveRecOn x mk = mk x fun (p : Player) (y : AugmentedForm) (x : y ∈ Moves.moves p x) => AugmentedForm.moveRecOn y mk
Instances For
Equations
- AugmentedForm.instAdd = { add := AugmentedForm.add'✝ }
Convert a GameForm to an AugmentedForm with no tombstones.
Equations
- AugmentedForm.ofGameForm g = AugmentedForm.ofSetsWithTombs (fun (p : Player) => Set.range fun (gp : ↑(Moves.moves p g)) => AugmentedForm.ofGameForm ↑gp) fun (x : Player) => False
Instances For
Equations
An AugmentedForm is TombstoneFree if no player has a tombstone and all
options are TombstoneFree.
Equations
- g.TombstoneFree = ((∀ (p : Player), ¬AugmentedForm.hasTombstone p g) ∧ ∀ (p : Player), ∀ h ∈ Moves.moves p g, h.TombstoneFree)
Instances For
Convert a TombstoneFree AugmentedForm to a GameForm by 'forgetting' about
the missing tombstones.
Equations
- g.toGameForm h = !{Set.range fun (gl : ↑(Moves.moves Player.left g)) => (↑gl).toGameForm ⋯ | Set.range fun (gr : ↑(Moves.moves Player.right g)) => (↑gr).toGameForm ⋯}
Instances For
Equations
- AugmentedForm.instNeg = { neg := AugmentedForm.neg'✝ }
Equations
- AugmentedForm.instInvolutiveNeg = { toNeg := AugmentedForm.instNeg, neg_neg := AugmentedForm.instInvolutiveNeg._private_1 }
Equations
- AugmentedForm.instAddCommSemigroup = { toAdd := AugmentedForm.instAdd, add_assoc := AugmentedForm.instAddCommSemigroup._private_1, add_comm := AugmentedForm.instAddCommSemigroup._private_2 }
Equations
- One or more equations did not get rendered due to their size.
The coercion from GameForm to AugmentedForm is an additive monoid
homomorphism.
Equations
- AugmentedForm.ofGameFormHom = { toFun := AugmentedForm.ofGameForm, map_zero' := AugmentedForm.ofGameForm_zero, map_add' := AugmentedForm.ofGameForm_add }