MiniAgda
Safe HaskellNone
LanguageHaskell98

Eval

Synopsis

Documentation

traceEta :: String -> a -> a Source #

traceEtaM :: Monad m => String -> m () Source #

traceRecord :: String -> a -> a Source #

traceRecordM :: Monad m => String -> m () Source #

traceMatch :: String -> a -> a Source #

traceMatchM :: Monad m => String -> m () Source #

traceLoop :: String -> a -> a Source #

traceLoopM :: Monad m => String -> m () Source #

traceSize :: String -> a -> a Source #

traceSizeM :: Monad m => String -> m () Source #

class Reval a where Source #

Minimal complete definition

reval'

Methods

reval' :: Valuation -> a -> TypeCheck a Source #

reval :: a -> TypeCheck a Source #

Instances

Instances details
Reval Env Source # 
Instance details

Defined in Eval

Reval Val Source # 
Instance details

Defined in Eval

Reval Valuation Source #

When combining valuations, the old one takes priority. [sigma][tau]v = [[sigma]tau]v

Instance details

Defined in Eval

Reval a => Reval (Bound a) Source # 
Instance details

Defined in Eval

Reval a => Reval (Measure a) Source # 
Instance details

Defined in Eval

Reval a => Reval (Maybe a) Source # 
Instance details

Defined in Eval

Reval a => Reval [a] Source # 
Instance details

Defined in Eval

Methods

reval' :: Valuation -> [a] -> TypeCheck [a] Source #

reval :: [a] -> TypeCheck [a] Source #

Reval b => Reval (a, b) Source # 
Instance details

Defined in Eval

Methods

reval' :: Valuation -> (a, b) -> TypeCheck (a, b) Source #

reval :: (a, b) -> TypeCheck (a, b) Source #

class ClosToExpr a where Source #

Minimal complete definition

Nothing

Methods

closToExpr :: Env -> a -> TypeCheck a Source #

bindClosToExpr :: Env -> a -> (Env -> a -> TypeCheck b) -> TypeCheck b Source #

Instances

Instances details
ClosToExpr Expr Source # 
Instance details

Defined in Eval

ClosToExpr Telescope Source # 
Instance details

Defined in Eval

ClosToExpr a => ClosToExpr (Bound a) Source # 
Instance details

Defined in Eval

Methods

closToExpr :: Env -> Bound a -> TypeCheck (Bound a) Source #

bindClosToExpr :: Env -> Bound a -> (Env -> Bound a -> TypeCheck b) -> TypeCheck b Source #

ClosToExpr a => ClosToExpr (Dom a) Source # 
Instance details

Defined in Eval

Methods

closToExpr :: Env -> Dom a -> TypeCheck (Dom a) Source #

bindClosToExpr :: Env -> Dom a -> (Env -> Dom a -> TypeCheck b) -> TypeCheck b Source #

ClosToExpr a => ClosToExpr (Measure a) Source # 
Instance details

Defined in Eval

ClosToExpr a => ClosToExpr (Sort a) Source # 
Instance details

Defined in Eval

Methods

closToExpr :: Env -> Sort a -> TypeCheck (Sort a) Source #

bindClosToExpr :: Env -> Sort a -> (Env -> Sort a -> TypeCheck b) -> TypeCheck b Source #

ClosToExpr a => ClosToExpr (TBinding a) Source # 
Instance details

Defined in Eval

ClosToExpr a => ClosToExpr (Tagged a) Source # 
Instance details

Defined in Eval

ClosToExpr a => ClosToExpr (Maybe a) Source # 
Instance details

Defined in Eval

Methods

closToExpr :: Env -> Maybe a -> TypeCheck (Maybe a) Source #

bindClosToExpr :: Env -> Maybe a -> (Env -> Maybe a -> TypeCheck b) -> TypeCheck b Source #

ClosToExpr a => ClosToExpr [a] Source # 
Instance details

Defined in Eval

Methods

closToExpr :: Env -> [a] -> TypeCheck [a] Source #

bindClosToExpr :: Env -> [a] -> (Env -> [a] -> TypeCheck b) -> TypeCheck b Source #

whnf :: Env -> Expr -> TypeCheck Val Source #

Weak head normal form. Monadic, since it reads the globally defined constants from the signature. lets are expanded away.

app' :: Bool -> Val -> Clos -> TypeCheck Val Source #

Application of arguments and projections.

bindMaybe :: Monad m => m (Maybe a) -> (a -> m (Maybe b)) -> m (Maybe b) Source #

Typed Non-linear Matching -----------------------------------------

expandDefPat :: Pattern -> TypeCheck Pattern Source #

Expand a top-level pattern synonym

Unification

class Nocc a where Source #

Occurrence check nocc ks v (used by SPos and TypeCheck). Checks that generic values ks does not occur in value v. In the process, tv is normalized.

Methods

nocc :: [Int] -> a -> TypeCheck Bool Source #

Instances

Instances details
Nocc Val Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> Val -> TypeCheck Bool Source #

Nocc a => Nocc (Bound a) Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> Bound a -> TypeCheck Bool Source #

Nocc a => Nocc (Dom a) Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> Dom a -> TypeCheck Bool Source #

Nocc a => Nocc (Measure a) Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> Measure a -> TypeCheck Bool Source #

Nocc a => Nocc (Sort a) Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> Sort a -> TypeCheck Bool Source #

Nocc a => Nocc [a] Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> [a] -> TypeCheck Bool Source #

(Nocc a, Nocc b) => Nocc (a, b) Source # 
Instance details

Defined in Eval

Methods

nocc :: [Int] -> (a, b) -> TypeCheck Bool Source #

eqVal :: TVal -> Val -> Val -> TypeCheck () Source #

data Force Source #

Constructors

N 
L 
R 

Instances

Instances details
Switchable Force Source # 
Instance details

Defined in Eval

Methods

switch :: Force -> Force Source #

Show Force Source # 
Instance details

Defined in Eval

Methods

showsPrec :: Int -> Force -> ShowS #

show :: Force -> String #

showList :: [Force] -> ShowS #

Eq Force Source # 
Instance details

Defined in Eval

Methods

(==) :: Force -> Force -> Bool #

(/=) :: Force -> Force -> Bool #

class Switchable a where Source #

Methods

switch :: a -> a Source #

Instances

Instances details
Switchable Force Source # 
Instance details

Defined in Eval

Methods

switch :: Force -> Force Source #

Switchable Pol Source # 
Instance details

Defined in Eval

Methods

switch :: Pol -> Pol Source #

Switchable a => Switchable (Maybe a) Source # 
Instance details

Defined in Eval

Methods

switch :: Maybe a -> Maybe a Source #

Switchable (a, a) Source # 
Instance details

Defined in Eval

Methods

switch :: (a, a) -> (a, a) Source #

leqDec :: Pol -> Dec -> Dec -> Bool Source #

leqVal :: Pol -> TVal -> Val -> Val -> TypeCheck () Source #

data SortShape Source #

Instances

Instances details
Eq SortShape Source # 
Instance details

Defined in Eval

Ord SortShape Source # 
Instance details

Defined in Eval

leqVal' :: Force -> Pol -> MT12 -> Val -> Val -> TypeCheck () Source #

leqClauses :: Force -> Pol -> MT12 -> Val -> TVal -> Env -> [Clause] -> Env -> [Clause] -> TypeCheck () Source #

type NameMap = [(Name, Name)] Source #

leqCases :: Force -> Pol -> MT12 -> Val -> Val -> TVal -> Env -> [Clause] -> TypeCheck () Source #

leqCase :: Force -> Pol -> MT12 -> Val -> Val -> TVal -> Env -> Clause -> TypeCheck () Source #

leqApp :: Force -> Pol -> Val -> [Val] -> Val -> [Val] -> TypeCheck () Source #

leSize :: LtLe -> Pol -> Val -> Val -> TypeCheck () Source #

leSize'' :: LtLe -> Int -> Val -> Val -> TypeCheck () Source #

leSizePlus :: LtLe -> Int -> [Val] -> [Val] -> TypeCheck () Source #

leSizePlus' :: LtLe -> Int -> [Val] -> [Val] -> TypeCheck () Source #

lexSizes :: LtLe -> [Val] -> [Val] -> TypeCheck () Source #

mkConVal :: Dotted -> ConK -> QName -> [Val] -> TVal -> TypeCheck Val Source #

Turn a fully applied constructor value into a named record value.

Orphan instances