Agda-2.5.1.1: A dependently typed functional programming language and proof assistant

Safe HaskellSafe
LanguageHaskell98

Agda.Utils.SemiRing

Synopsis

Documentation

class SemiRing a where Source #

Minimal complete definition

ozero, oone, oplus, otimes

Methods

ozero :: a Source #

oone :: a Source #

oplus :: a -> a -> a Source #

otimes :: a -> a -> a Source #

Instances

SemiRing Weight Source # 
SemiRing Occurrence Source #

Occurrence is a complete lattice with least element Mixed and greatest element Unused.

It forms a commutative semiring where oplus is meet (glb) and otimes is composition. Both operations are idempotent.

For oplus, Unused is neutral (zero) and Mixed is dominant. For otimes, StrictPos is neutral (one) and Unused is dominant.

SemiRing Edge Source #

These operations form a semiring if we quotient by the relation "the Occurrence components are equal".

SemiRing a => SemiRing (Maybe a) Source # 

Methods

ozero :: Maybe a Source #

oone :: Maybe a Source #

oplus :: Maybe a -> Maybe a -> Maybe a Source #

otimes :: Maybe a -> Maybe a -> Maybe a Source #

class SemiRing a => StarSemiRing a where Source #

Minimal complete definition

ostar

Methods

ostar :: a -> a Source #

Instances

StarSemiRing Occurrence Source # 
StarSemiRing Edge Source #

As OccursWhere does not have an oplus we cannot do something meaningful for the OccursWhere here.

E.g. ostar (Edge JustNeg w) = Edge Mixed (w oplus (w >*< w)) would probably more sense, if we could do it.

Methods

ostar :: Edge -> Edge Source #

StarSemiRing a => StarSemiRing (Maybe a) Source # 

Methods

ostar :: Maybe a -> Maybe a Source #