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

Safe HaskellNone
LanguageHaskell98

Agda.TypeChecking.Monad.Context

Contents

Synopsis

Modifying the context

modifyContext :: MonadTCM tcm => (Context -> Context) -> tcm a -> tcm a Source #

Modify a Context in a computation.

inContext :: MonadTCM tcm => [Dom (Name, Type)] -> tcm a -> tcm a Source #

Change the context.

inTopContext :: MonadTCM tcm => tcm a -> tcm a Source #

Change to top (=empty) context.

escapeContext :: MonadTCM tcm => Int -> tcm a -> tcm a Source #

Delete the last n bindings from the context.

Adding to the context

addCtx :: MonadTCM tcm => Name -> Dom Type -> tcm a -> tcm a Source #

addCtx x arg cont add a variable to the context.

Chooses an unused Name.

class AddContext b where Source #

Various specializations of addCtx.

Minimal complete definition

addContext

Methods

addContext :: MonadTCM tcm => b -> tcm a -> tcm a Source #

Instances

AddContext String Source # 

Methods

addContext :: MonadTCM tcm => String -> tcm a -> tcm a Source #

AddContext Name Source # 

Methods

addContext :: MonadTCM tcm => Name -> tcm a -> tcm a Source #

AddContext Telescope Source # 

Methods

addContext :: MonadTCM tcm => Telescope -> tcm a -> tcm a Source #

AddContext a => AddContext [a] Source # 

Methods

addContext :: MonadTCM tcm => [a] -> tcm a -> tcm a Source #

AddContext (Dom (String, Type)) Source # 

Methods

addContext :: MonadTCM tcm => Dom (String, Type) -> tcm a -> tcm a Source #

AddContext (Dom (Name, Type)) Source # 

Methods

addContext :: MonadTCM tcm => Dom (Name, Type) -> tcm a -> tcm a Source #

AddContext (Dom Type) Source # 

Methods

addContext :: MonadTCM tcm => Dom Type -> tcm a -> tcm a Source #

AddContext ([WithHiding Name], Dom Type) Source # 

Methods

addContext :: MonadTCM tcm => ([WithHiding Name], Dom Type) -> tcm a -> tcm a Source #

AddContext ([Name], Dom Type) Source # 

Methods

addContext :: MonadTCM tcm => ([Name], Dom Type) -> tcm a -> tcm a Source #

AddContext (String, Dom Type) Source # 

Methods

addContext :: MonadTCM tcm => (String, Dom Type) -> tcm a -> tcm a Source #

AddContext (Name, Dom Type) Source # 

Methods

addContext :: MonadTCM tcm => (Name, Dom Type) -> tcm a -> tcm a Source #

addCtxs :: MonadTCM tcm => [Name] -> Dom Type -> tcm a -> tcm a Source #

add a bunch of variables with the same type to the context

addCtxString :: MonadTCM tcm => String -> Dom Type -> tcm a -> tcm a Source #

Turns the string into a name and adds it to the context.

addCtxString_ :: MonadTCM tcm => String -> tcm a -> tcm a Source #

Turns the string into a name and adds it to the context, with dummy type.

addCtxStrings_ :: MonadTCM tcm => [String] -> tcm a -> tcm a Source #

dummyDom :: Dom Type Source #

Context entries without a type have this dummy type.

underAbstraction :: (Subst t a, MonadTCM tcm) => Dom Type -> Abs a -> (a -> tcm b) -> tcm b Source #

Go under an abstraction.

underAbstraction_ :: (Subst t a, MonadTCM tcm) => Abs a -> (a -> tcm b) -> tcm b Source #

Go under an abstract without worrying about the type to add to the context.

addCtxTel :: MonadTCM tcm => Telescope -> tcm a -> tcm a Source #

Add a telescope to the context.

addLetBinding :: MonadTCM tcm => ArgInfo -> Name -> Term -> Type -> tcm a -> tcm a Source #

Add a let bound variable

Querying the context

getContext :: MonadReader TCEnv m => m [Dom (Name, Type)] Source #

Get the current context.

getContextSize :: (Applicative m, MonadReader TCEnv m) => m Nat Source #

Get the size of the current context.

getContextArgs :: (Applicative m, MonadReader TCEnv m) => m Args Source #

Generate [var (n - 1), ..., var 0] for all declarations in the context.

getContextTerms :: (Applicative m, MonadReader TCEnv m) => m [Term] Source #

Generate [var (n - 1), ..., var 0] for all declarations in the context.

getContextTelescope :: (Applicative m, MonadReader TCEnv m) => m Telescope Source #

Get the current context as a Telescope.

getContextId :: MonadReader TCEnv m => m [CtxId] Source #

Check if we are in a compatible context, i.e. an extension of the given context.

getContextNames :: (Applicative m, MonadReader TCEnv m) => m [Name] Source #

Get the names of all declarations in the context.

lookupBV :: MonadReader TCEnv m => Nat -> m (Dom (Name, Type)) Source #

get type of bound variable (i.e. deBruijn index)

getVarInfo :: MonadReader TCEnv m => Name -> m (Term, Dom Type) Source #

Get the term corresponding to a named variable. If it is a lambda bound variable the deBruijn index is returned and if it is a let bound variable its definition is returned.