Skip to content

Examples.Structures.Signatures

{-# OPTIONS --cubical-compatible --exact-split --safe #-}

module Examples.Structures.Signatures where

-- Imports from the Agda Standard Library -------------------------------------
open import Data.Empty                    using () renaming ( ⊄ to šŸ˜ )
open import Data.Unit.Base                using () renaming ( ⊤ to šŸ™ ; tt to šŸŽ )
open import Level                         using () renaming ( 0ā„“ to ā„“ā‚€ )

open import Overture                      using ( šŸš ; šŸ› )
open import Legacy.Base.Structures.Basic  using ( signature )

Examples of finite signatures

-- The signature with...

-- ... no symbols  (e.g., sets)
Sāˆ… : signature ā„“ā‚€ ā„“ā‚€
Sāˆ… = record { symbol = šŸ˜ ; arity = Ī» () }

-- ... one nullary symbol (e.g., pointed sets)
S1 : signature ā„“ā‚€ ā„“ā‚€
S1 = record { symbol = šŸ™ ; arity = Ī» _ → šŸ˜ }

S01 : signature ā„“ā‚€ ā„“ā‚€ -- ...one unary
S01 = record { symbol = šŸ™ ; arity = Ī» _ → šŸ™ }

-- ...one binary symbol (e.g., magmas, semigroups, semilattices)
S001 : signature ā„“ā‚€ ā„“ā‚€
S001 = record { symbol = šŸ™ ; arity = Ī» _ → šŸš }

-- ...one ternary symbol (e.g., boolean NAE-3-SAT relational structure)
S0001 : signature ā„“ā‚€ ā„“ā‚€
S0001 = record { symbol = šŸ™ ; arity = Ī» _ → šŸ› }

-- ...0 nullary, 2 unary, and 1 binary
S021 : signature ā„“ā‚€ ā„“ā‚€
S021 = record { symbol = šŸ› ; arity = Ī»{ šŸ›.šŸŽ → šŸš ; šŸ›.šŸ → šŸ™ ; šŸ›.šŸ → šŸ™ } }

-- ...one nullary and one binary (e.g., monoids)
S101 : signature ā„“ā‚€ ā„“ā‚€
S101 = record { symbol = šŸš ; arity = Ī»{ šŸš.šŸŽ → šŸ˜ ; šŸš.šŸ → šŸš } }

-- ...one nullary, one unary, and one binary (e.g., groups)
S111 : signature ā„“ā‚€ ā„“ā‚€
S111 = record { symbol = šŸ› ; arity = Ī»{ šŸ›.šŸŽ → šŸ˜ ; šŸ›.šŸ → šŸ™ ; šŸ›.šŸ → šŸš } }