--- This module defines the ;Symbol; type and some helper functions.
module Logic.Symbol;

open import Stdlib.Prelude;

--- A symbol represents a token that can be placed in a square
type Symbol :=
  | --- The circle token
    O : Symbol
  | --- The cross token
    X : Symbol;

--- Equality for ;Symbol;s
==Symbol : SymbolSymbolBool;
==Symbol O O := true;
==Symbol X X := true;
==Symbol _ _ := false;

--- Turns ;O; into ;X; and ;X; into ;O;
switch : SymbolSymbol;
switch O := X;
switch X := O;

--- Textual representation of a ;Symbol;
showSymbol : SymbolString;
showSymbol O := "O";
showSymbol X := "X";
Last modified on 2023-05-08 11:40 UTC