------------------------------------------------------------------------
-- The Agda standard library
--
-- Signs
------------------------------------------------------------------------
{-#
OPTIONS
--cubical-compatible
--safe
#-}
module
Data.Sign.Base
where
open
import
Algebra.Bundles.Raw
using
(
RawMagma
;
RawMonoid
;
RawGroup
)
open
import
Level
using
(
0ℓ
)
open
import
Relation.Binary.PropositionalEquality.Core
using
(
_≡_
)
------------------------------------------------------------------------
-- Definition
data
Sign
:
Set
where
-
:
Sign
+
:
Sign
------------------------------------------------------------------------
-- Operations
-- The opposite sign.
opposite
:
Sign
→
Sign
opposite
-
=
+
opposite
+
=
-
-- "Multiplication".
infixl
7
_*_
_*_
:
Sign
→
Sign
→
Sign
+
*
s₂
=
s₂
-
*
s₂
=
opposite
s₂
------------------------------------------------------------------------
-- Raw Bundles
*-rawMagma
:
RawMagma
0ℓ
0ℓ
*-rawMagma
=
record
{
_≈_
=
_≡_
;
_∙_
=
_*_
}
*-1-rawMonoid
:
RawMonoid
0ℓ
0ℓ
*-1-rawMonoid
=
record
{
_≈_
=
_≡_
;
_∙_
=
_*_
;
ε
=
+
}
*-1-rawGroup
:
RawGroup
0ℓ
0ℓ
*-1-rawGroup
=
record
{
_≈_
=
_≡_
;
_∙_
=
_*_
;
_⁻¹
=
opposite
;
ε
=
+
}