{-
This second-order signature was created from the following second-order syntax description:
syntax GroupAction | GA
type
* : 0-ary
X : 0-ary
term
unit : * | ε
add : * * -> * | _⊕_ l20
neg : * -> * | ⊖_ r40
act : * X -> X | _⊙_ r30
theory
(εU⊕ᴸ) a |> add (unit, a) = a
(εU⊕ᴿ) a |> add (a, unit) = a
(⊕A) a b c |> add (add(a, b), c) = add (a, add(b, c))
(⊖N⊕ᴸ) a |> add (neg (a), a) = unit
(⊖N⊕ᴿ) a |> add (a, neg (a)) = unit
(εU⊙) x : X |> act (unit, x) = x
(⊕A⊙) g h x : X |> act (add(g, h), x) = act (g, act(h, x))
-}
module GroupAction.Signature where
open import SOAS.Context
-- Type declaration
data GAT : Set where
* : GAT
X : GAT
open import SOAS.Syntax.Signature GAT public
open import SOAS.Syntax.Build GAT public
-- Operator symbols
data GAₒ : Set where
unitₒ addₒ negₒ actₒ : GAₒ
-- Term signature
GA:Sig : Signature GAₒ
GA:Sig = sig λ
{ unitₒ → ⟼₀ *
; addₒ → (⊢₀ *) , (⊢₀ *) ⟼₂ *
; negₒ → (⊢₀ *) ⟼₁ *
; actₒ → (⊢₀ *) , (⊢₀ X) ⟼₂ X
}
open Signature GA:Sig public