MiniAgda
Safe HaskellNone
LanguageHaskell98

Abstract

Synopsis

Names carry a name suggestion and a unique identifier

data WhatName Source #

Each Name is classified as User, EtaAlias, or Quote.

Constructors

UserName 
EtaAliasName

a name for the eta-expanded name of a definition

QuoteName 

Instances

Instances details
Show WhatName Source # 
Instance details

Defined in Abstract

Eq WhatName Source # 
Instance details

Defined in Abstract

Ord WhatName Source # 
Instance details

Defined in Abstract

data Name Source #

Constructors

Name 

Fields

Instances

Instances details
PrettyTCM Name Source # 
Instance details

Defined in PrettyTCM

Pretty Name Source # 
Instance details

Defined in Abstract

Show Name Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

Eq Name Source #

Names are compared according to their UID.

Instance details

Defined in Abstract

Methods

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

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

Ord Name Source # 
Instance details

Defined in Abstract

Methods

compare :: Name -> Name -> Ordering #

(<) :: Name -> Name -> Bool #

(<=) :: Name -> Name -> Bool #

(>) :: Name -> Name -> Bool #

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

max :: Name -> Name -> Name #

min :: Name -> Name -> Name #

fresh :: String -> Name Source #

fresh s generates a new name with suggestion s.

To a void a monad here, we use imperative features (unsafePerformIO).

noName :: Name Source #

A non-unique empty name. Use only inconstant functions!

emptyName :: Name -> Bool Source #

Check whether name is "".

bestName :: [Name] -> Name Source #

Get the first non-empty name from a non-empty list of names.

mkExtName :: Name -> Name Source #

External reference to recursive function (outside of the body).

internal :: Name -> Name Source #

Internal name for compiler-generated stuff.

spaceToUnderscore :: String -> String Source #

Convert a dot pattern into an identifier which should not look too confusing.

data QName Source #

Qualified name.

Constructors

Qual 

Fields

QName 

Fields

Instances

Instances details
Pretty QName Source # 
Instance details

Defined in Abstract

Show QName Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> QName -> ShowS #

show :: QName -> String #

showList :: [QName] -> ShowS #

Eq QName Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord QName Source # 
Instance details

Defined in Abstract

Methods

compare :: QName -> QName -> Ordering #

(<) :: QName -> QName -> Bool #

(<=) :: QName -> QName -> Bool #

(>) :: QName -> QName -> Bool #

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

max :: QName -> QName -> QName #

min :: QName -> QName -> QName #

nameInstanceOf :: QName -> QName -> Bool Source #

An unqualified name is an instance of a qualified name.

unqual :: QName -> Name Source #

Fails if qualified name.

data Sized Source #

Constructors

Sized 
NotSized 

Instances

Instances details
Show Sized Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Sized -> ShowS #

show :: Sized -> String #

showList :: [Sized] -> ShowS #

Eq Sized Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Sized Source # 
Instance details

Defined in Abstract

Methods

compare :: Sized -> Sized -> Ordering #

(<) :: Sized -> Sized -> Bool #

(<=) :: Sized -> Sized -> Bool #

(>) :: Sized -> Sized -> Bool #

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

max :: Sized -> Sized -> Sized #

min :: Sized -> Sized -> Sized #

data Co Source #

Constructors

Ind 
CoInd 

Instances

Instances details
Show Co Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Co -> ShowS #

show :: Co -> String #

showList :: [Co] -> ShowS #

Eq Co Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Co Source # 
Instance details

Defined in Abstract

Methods

compare :: Co -> Co -> Ordering #

(<) :: Co -> Co -> Bool #

(<=) :: Co -> Co -> Bool #

(>) :: Co -> Co -> Bool #

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

max :: Co -> Co -> Co #

min :: Co -> Co -> Co #

data LtLe Source #

Constructors

Lt 
Le 

Instances

Instances details
Pretty LtLe Source # 
Instance details

Defined in Abstract

Show LtLe Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> LtLe -> ShowS #

show :: LtLe -> String #

showList :: [LtLe] -> ShowS #

Eq LtLe Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord LtLe Source # 
Instance details

Defined in Abstract

Methods

compare :: LtLe -> LtLe -> Ordering #

(<) :: LtLe -> LtLe -> Bool #

(<=) :: LtLe -> LtLe -> Bool #

(>) :: LtLe -> LtLe -> Bool #

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

max :: LtLe -> LtLe -> LtLe #

min :: LtLe -> LtLe -> LtLe #

data Decoration pos Source #

Constructors

Dec 

Fields

Hidden 

Instances

Instances details
LensPol Dec Source # 
Instance details

Defined in Abstract

Methods

getPol :: Dec -> Pol Source #

setPol :: Pol -> Dec -> Dec Source #

mapPol :: (Pol -> Pol) -> Dec -> Dec Source #

Functor Decoration Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Decoration a -> Decoration b #

(<$) :: a -> Decoration b -> Decoration a #

Foldable Decoration Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Decoration m -> m #

foldMap :: Monoid m => (a -> m) -> Decoration a -> m #

foldMap' :: Monoid m => (a -> m) -> Decoration a -> m #

foldr :: (a -> b -> b) -> b -> Decoration a -> b #

foldr' :: (a -> b -> b) -> b -> Decoration a -> b #

foldl :: (b -> a -> b) -> b -> Decoration a -> b #

foldl' :: (b -> a -> b) -> b -> Decoration a -> b #

foldr1 :: (a -> a -> a) -> Decoration a -> a #

foldl1 :: (a -> a -> a) -> Decoration a -> a #

toList :: Decoration a -> [a] #

null :: Decoration a -> Bool #

length :: Decoration a -> Int #

elem :: Eq a => a -> Decoration a -> Bool #

maximum :: Ord a => Decoration a -> a #

minimum :: Ord a => Decoration a -> a #

sum :: Num a => Decoration a -> a #

product :: Num a => Decoration a -> a #

Traversable Decoration Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Decoration a -> f (Decoration b) #

sequenceA :: Applicative f => Decoration (f a) -> f (Decoration a) #

mapM :: Monad m => (a -> m b) -> Decoration a -> m (Decoration b) #

sequence :: Monad m => Decoration (m a) -> m (Decoration a) #

Polarity a => Polarity (Decoration a) Source # 
Instance details

Defined in Abstract

Show pos => Show (Decoration pos) Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Decoration pos -> ShowS #

show :: Decoration pos -> String #

showList :: [Decoration pos] -> ShowS #

Eq pos => Eq (Decoration pos) Source # 
Instance details

Defined in Abstract

Methods

(==) :: Decoration pos -> Decoration pos -> Bool #

(/=) :: Decoration pos -> Decoration pos -> Bool #

Ord pos => Ord (Decoration pos) Source # 
Instance details

Defined in Abstract

Methods

compare :: Decoration pos -> Decoration pos -> Ordering #

(<) :: Decoration pos -> Decoration pos -> Bool #

(<=) :: Decoration pos -> Decoration pos -> Bool #

(>) :: Decoration pos -> Decoration pos -> Bool #

(>=) :: Decoration pos -> Decoration pos -> Bool #

max :: Decoration pos -> Decoration pos -> Decoration pos #

min :: Decoration pos -> Decoration pos -> Decoration pos #

polarity :: Polarity pol => Decoration pol -> pol Source #

class LensPol a where Source #

Minimal complete definition

getPol

Methods

getPol :: a -> Pol Source #

setPol :: Pol -> a -> a Source #

mapPol :: (Pol -> Pol) -> a -> a Source #

Instances

Instances details
LensPol Dec Source # 
Instance details

Defined in Abstract

Methods

getPol :: Dec -> Pol Source #

setPol :: Pol -> Dec -> Dec Source #

mapPol :: (Pol -> Pol) -> Dec -> Dec Source #

LensPol (Dom a) Source # 
Instance details

Defined in Abstract

Methods

getPol :: Dom a -> Pol Source #

setPol :: Pol -> Dom a -> Dom a Source #

mapPol :: (Pol -> Pol) -> Dom a -> Dom a Source #

neutralDec :: Decoration Pol Source #

Composing with neutralDec should do nothing.

class HasPred a where Source #

Methods

predecessor :: a -> Maybe a Source #

Instances

Instances details
HasPred Expr Source # 
Instance details

Defined in Abstract

HasPred Expr Source # 
Instance details

Defined in Concrete

HasPred Val Source # 
Instance details

Defined in Value

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

Defined in Abstract

data Class Source #

Constructors

Tm 
Size 
TSize 

Instances

Instances details
Show Class Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Class -> ShowS #

show :: Class -> String #

showList :: [Class] -> ShowS #

Eq Class Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Class Source # 
Instance details

Defined in Abstract

Methods

compare :: Class -> Class -> Ordering #

(<) :: Class -> Class -> Bool #

(<=) :: Class -> Class -> Bool #

(>) :: Class -> Class -> Bool #

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

max :: Class -> Class -> Class #

min :: Class -> Class -> Class #

data Sort a Source #

Constructors

SortC Class 
Set a 
CoSet a 

Instances

Instances details
Functor Sort Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Sort a -> Sort b #

(<$) :: a -> Sort b -> Sort a #

Foldable Sort Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Sort m -> m #

foldMap :: Monoid m => (a -> m) -> Sort a -> m #

foldMap' :: Monoid m => (a -> m) -> Sort a -> m #

foldr :: (a -> b -> b) -> b -> Sort a -> b #

foldr' :: (a -> b -> b) -> b -> Sort a -> b #

foldl :: (b -> a -> b) -> b -> Sort a -> b #

foldl' :: (b -> a -> b) -> b -> Sort a -> b #

foldr1 :: (a -> a -> a) -> Sort a -> a #

foldl1 :: (a -> a -> a) -> Sort a -> a #

toList :: Sort a -> [a] #

null :: Sort a -> Bool #

length :: Sort a -> Int #

elem :: Eq a => a -> Sort a -> Bool #

maximum :: Ord a => Sort a -> a #

minimum :: Ord a => Sort a -> a #

sum :: Num a => Sort a -> a #

product :: Num a => Sort a -> a #

Traversable Sort Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Sort a -> f (Sort b) #

sequenceA :: Applicative f => Sort (f a) -> f (Sort a) #

mapM :: Monad m => (a -> m b) -> Sort a -> m (Sort b) #

sequence :: Monad m => Sort (m a) -> m (Sort a) #

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

Defined in Abstract

Methods

freeVars :: Sort a -> Set Name Source #

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

Defined in Abstract

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Sort a -> Sort a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Sort a -> Sort a Source #

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

Defined in Abstract

Methods

usedDefs :: Sort a -> [Name] Source #

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 #

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

Defined in Eval

Methods

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

PrettyTCM (Sort Expr) Source # 
Instance details

Defined in PrettyTCM

PrettyTCM (Sort Val) Source # 
Instance details

Defined in PrettyTCM

Substitute v => Substitute (Sort v) Source # 
Instance details

Defined in TypeChecker

Pretty (Sort Expr) Source # 
Instance details

Defined in Abstract

Show (Sort Expr) Source # 
Instance details

Defined in Abstract

Show (Sort Val) Source # 
Instance details

Defined in Value

Methods

showsPrec :: Int -> Sort Val -> ShowS #

show :: Sort Val -> String #

showList :: [Sort Val] -> ShowS #

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

Defined in Abstract

Methods

(==) :: Sort a -> Sort a -> Bool #

(/=) :: Sort a -> Sort a -> Bool #

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

Defined in Abstract

Methods

compare :: Sort a -> Sort a -> Ordering #

(<) :: Sort a -> Sort a -> Bool #

(<=) :: Sort a -> Sort a -> Bool #

(>) :: Sort a -> Sort a -> Bool #

(>=) :: Sort a -> Sort a -> Bool #

max :: Sort a -> Sort a -> Sort a #

min :: Sort a -> Sort a -> Sort a #

tSize :: Expr Source #

The expression representing the type Size.

isSize :: Expr -> Bool Source #

Checking whether an expression represents type Size.

data Kind Source #

Constructors

Kind 
NoKind 
AnyKind 

Instances

Instances details
Show Kind Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Kind -> ShowS #

show :: Kind -> String #

showList :: [Kind] -> ShowS #

Eq Kind Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Kind Source # 
Instance details

Defined in Abstract

Methods

compare :: Kind -> Kind -> Ordering #

(<) :: Kind -> Kind -> Bool #

(<=) :: Kind -> Kind -> Bool #

(>) :: Kind -> Kind -> Bool #

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

max :: Kind -> Kind -> Kind #

min :: Kind -> Kind -> Kind #

data Kinded a Source #

Constructors

Kinded 

Fields

Instances

Instances details
Functor Kinded Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Kinded a -> Kinded b #

(<$) :: a -> Kinded b -> Kinded a #

Foldable Kinded Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Kinded m -> m #

foldMap :: Monoid m => (a -> m) -> Kinded a -> m #

foldMap' :: Monoid m => (a -> m) -> Kinded a -> m #

foldr :: (a -> b -> b) -> b -> Kinded a -> b #

foldr' :: (a -> b -> b) -> b -> Kinded a -> b #

foldl :: (b -> a -> b) -> b -> Kinded a -> b #

foldl' :: (b -> a -> b) -> b -> Kinded a -> b #

foldr1 :: (a -> a -> a) -> Kinded a -> a #

foldl1 :: (a -> a -> a) -> Kinded a -> a #

toList :: Kinded a -> [a] #

null :: Kinded a -> Bool #

length :: Kinded a -> Int #

elem :: Eq a => a -> Kinded a -> Bool #

maximum :: Ord a => Kinded a -> a #

minimum :: Ord a => Kinded a -> a #

sum :: Num a => Kinded a -> a #

product :: Num a => Kinded a -> a #

Traversable Kinded Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Kinded a -> f (Kinded b) #

sequenceA :: Applicative f => Kinded (f a) -> f (Kinded a) #

mapM :: Monad m => (a -> m b) -> Kinded a -> m (Kinded b) #

sequence :: Monad m => Kinded (m a) -> m (Kinded a) #

Show a => Show (Kinded a) Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Kinded a -> ShowS #

show :: Kinded a -> String #

showList :: [Kinded a] -> ShowS #

Eq a => Eq (Kinded a) Source # 
Instance details

Defined in Abstract

Methods

(==) :: Kinded a -> Kinded a -> Bool #

(/=) :: Kinded a -> Kinded a -> Bool #

Ord a => Ord (Kinded a) Source # 
Instance details

Defined in Abstract

Methods

compare :: Kinded a -> Kinded a -> Ordering #

(<) :: Kinded a -> Kinded a -> Bool #

(<=) :: Kinded a -> Kinded a -> Bool #

(>) :: Kinded a -> Kinded a -> Bool #

(>=) :: Kinded a -> Kinded a -> Bool #

max :: Kinded a -> Kinded a -> Kinded a #

min :: Kinded a -> Kinded a -> Kinded a #

data Dom a Source #

Constructors

Domain 

Fields

Instances

Instances details
Functor Dom Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Dom a -> Dom b #

(<$) :: a -> Dom b -> Dom a #

Foldable Dom Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Dom m -> m #

foldMap :: Monoid m => (a -> m) -> Dom a -> m #

foldMap' :: Monoid m => (a -> m) -> Dom a -> m #

foldr :: (a -> b -> b) -> b -> Dom a -> b #

foldr' :: (a -> b -> b) -> b -> Dom a -> b #

foldl :: (b -> a -> b) -> b -> Dom a -> b #

foldl' :: (b -> a -> b) -> b -> Dom a -> b #

foldr1 :: (a -> a -> a) -> Dom a -> a #

foldl1 :: (a -> a -> a) -> Dom a -> a #

toList :: Dom a -> [a] #

null :: Dom a -> Bool #

length :: Dom a -> Int #

elem :: Eq a => a -> Dom a -> Bool #

maximum :: Ord a => Dom a -> a #

minimum :: Ord a => Dom a -> a #

sum :: Num a => Dom a -> a #

product :: Num a => Dom a -> a #

Traversable Dom Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Dom a -> f (Dom b) #

sequenceA :: Applicative f => Dom (f a) -> f (Dom a) #

mapM :: Monad m => (a -> m b) -> Dom a -> m (Dom b) #

sequence :: Monad m => Dom (m a) -> m (Dom a) #

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

Defined in Abstract

Methods

freeVars :: Dom a -> Set Name Source #

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

Defined in Abstract

Methods

injectiveVars :: Dom a -> Set Name Source #

LensDec (Dom a) Source # 
Instance details

Defined in Abstract

Methods

getDec :: Dom a -> Dec Source #

setDec :: Dec -> Dom a -> Dom a Source #

mapDec :: (Dec -> Dec) -> Dom a -> Dom a Source #

LensPol (Dom a) Source # 
Instance details

Defined in Abstract

Methods

getPol :: Dom a -> Pol Source #

setPol :: Pol -> Dom a -> Dom a Source #

mapPol :: (Pol -> Pol) -> Dom a -> Dom a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Dom a -> Dom a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Dom a -> Dom a Source #

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

Defined in Abstract

Methods

usedDefs :: Dom a -> [Name] 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 #

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

Defined in Eval

Methods

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

Substitute v => Substitute (Dom v) Source # 
Instance details

Defined in TypeChecker

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

Defined in Abstract

Methods

showsPrec :: Int -> Dom a -> ShowS #

show :: Dom a -> String #

showList :: [Dom a] -> ShowS #

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

Defined in Abstract

Methods

(==) :: Dom a -> Dom a -> Bool #

(/=) :: Dom a -> Dom a -> Bool #

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

Defined in Abstract

Methods

compare :: Dom a -> Dom a -> Ordering #

(<) :: Dom a -> Dom a -> Bool #

(<=) :: Dom a -> Dom a -> Bool #

(>) :: Dom a -> Dom a -> Bool #

(>=) :: Dom a -> Dom a -> Bool #

max :: Dom a -> Dom a -> Dom a #

min :: Dom a -> Dom a -> Dom a #

class LensDec a where Source #

Minimal complete definition

getDec

Methods

getDec :: a -> Dec Source #

setDec :: Dec -> a -> a Source #

mapDec :: (Dec -> Dec) -> a -> a Source #

Instances

Instances details
LensDec Telescope Source # 
Instance details

Defined in Abstract

LensDec (Dom a) Source # 
Instance details

Defined in Abstract

Methods

getDec :: Dom a -> Dec Source #

setDec :: Dec -> Dom a -> Dom a Source #

mapDec :: (Dec -> Dec) -> Dom a -> Dom a Source #

LensDec (TBinding a) Source # 
Instance details

Defined in Abstract

Methods

getDec :: TBinding a -> Dec Source #

setDec :: Dec -> TBinding a -> TBinding a Source #

mapDec :: (Dec -> Dec) -> TBinding a -> TBinding a Source #

data ConK Source #

Constructors

Cons

a constructor

CoCons

a coconstructor

DefPat

a defined pattern

Instances

Instances details
Show ConK Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> ConK -> ShowS #

show :: ConK -> String #

showList :: [ConK] -> ShowS #

Eq ConK Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord ConK Source # 
Instance details

Defined in Abstract

Methods

compare :: ConK -> ConK -> Ordering #

(<) :: ConK -> ConK -> Bool #

(<=) :: ConK -> ConK -> Bool #

(>) :: ConK -> ConK -> Bool #

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

max :: ConK -> ConK -> ConK #

min :: ConK -> ConK -> ConK #

data IdKind Source #

Constructors

DatK

data/codata

ConK ConK

constructor (indcoinddefined)

FunK

fun/cofun

LetK

let definition

Instances

Instances details
Show IdKind Source # 
Instance details

Defined in Abstract

Eq IdKind Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord IdKind Source # 
Instance details

Defined in Abstract

data DefId Source #

Constructors

DefId 

Fields

Instances

Instances details
UsedDefs DefId Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: DefId -> [Name] Source #

Pretty DefId Source # 
Instance details

Defined in Abstract

Show DefId Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> DefId -> ShowS #

show :: DefId -> String #

showList :: [DefId] -> ShowS #

Eq DefId Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord DefId Source # 
Instance details

Defined in Abstract

Methods

compare :: DefId -> DefId -> Ordering #

(<) :: DefId -> DefId -> Bool #

(<=) :: DefId -> DefId -> Bool #

(>) :: DefId -> DefId -> Bool #

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

max :: DefId -> DefId -> DefId #

min :: DefId -> DefId -> DefId #

type MVar = Int Source #

data TBinding a Source #

Constructors

TBind 

Fields

TMeasure (Measure Expr)

Measure |m|.

TBound (Bound Expr)

Constraint |m| <(=) |m'|.

Instances

Instances details
Pretty TBind Source # 
Instance details

Defined in Abstract

Functor TBinding Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> TBinding a -> TBinding b #

(<$) :: a -> TBinding b -> TBinding a #

Foldable TBinding Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => TBinding m -> m #

foldMap :: Monoid m => (a -> m) -> TBinding a -> m #

foldMap' :: Monoid m => (a -> m) -> TBinding a -> m #

foldr :: (a -> b -> b) -> b -> TBinding a -> b #

foldr' :: (a -> b -> b) -> b -> TBinding a -> b #

foldl :: (b -> a -> b) -> b -> TBinding a -> b #

foldl' :: (b -> a -> b) -> b -> TBinding a -> b #

foldr1 :: (a -> a -> a) -> TBinding a -> a #

foldl1 :: (a -> a -> a) -> TBinding a -> a #

toList :: TBinding a -> [a] #

null :: TBinding a -> Bool #

length :: TBinding a -> Int #

elem :: Eq a => a -> TBinding a -> Bool #

maximum :: Ord a => TBinding a -> a #

minimum :: Ord a => TBinding a -> a #

sum :: Num a => TBinding a -> a #

product :: Num a => TBinding a -> a #

Traversable TBinding Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> TBinding a -> f (TBinding b) #

sequenceA :: Applicative f => TBinding (f a) -> f (TBinding a) #

mapM :: Monad m => (a -> m b) -> TBinding a -> m (TBinding b) #

sequence :: Monad m => TBinding (m a) -> m (TBinding a) #

BoundVars (TBinding a) Source # 
Instance details

Defined in Abstract

Methods

boundVars :: Collection c Name => TBinding a -> c Source #

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

Defined in Abstract

Methods

freeVars :: TBinding a -> Set Name Source #

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

Defined in Abstract

LensDec (TBinding a) Source # 
Instance details

Defined in Abstract

Methods

getDec :: TBinding a -> Dec Source #

setDec :: Dec -> TBinding a -> TBinding a Source #

mapDec :: (Dec -> Dec) -> TBinding a -> TBinding a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> TBinding a -> TBinding a Source #

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

Defined in Abstract

Methods

subst :: Subst -> TBinding a -> TBinding a Source #

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

Defined in Abstract

Methods

usedDefs :: TBinding a -> [Name] Source #

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

Defined in Eval

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

Defined in Abstract

Methods

showsPrec :: Int -> TBinding a -> ShowS #

show :: TBinding a -> String #

showList :: [TBinding a] -> ShowS #

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

Defined in Abstract

Methods

(==) :: TBinding a -> TBinding a -> Bool #

(/=) :: TBinding a -> TBinding a -> Bool #

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

Defined in Abstract

Methods

compare :: TBinding a -> TBinding a -> Ordering #

(<) :: TBinding a -> TBinding a -> Bool #

(<=) :: TBinding a -> TBinding a -> Bool #

(>) :: TBinding a -> TBinding a -> Bool #

(>=) :: TBinding a -> TBinding a -> Bool #

max :: TBinding a -> TBinding a -> TBinding a #

min :: TBinding a -> TBinding a -> TBinding a #

mapDecM :: Applicative m => (Dec -> m Dec) -> TBind -> m TBind Source #

newtype Measure a Source #

Constructors

Measure 

Fields

Instances

Instances details
Functor Measure Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Measure a -> Measure b #

(<$) :: a -> Measure b -> Measure a #

Foldable Measure Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Measure m -> m #

foldMap :: Monoid m => (a -> m) -> Measure a -> m #

foldMap' :: Monoid m => (a -> m) -> Measure a -> m #

foldr :: (a -> b -> b) -> b -> Measure a -> b #

foldr' :: (a -> b -> b) -> b -> Measure a -> b #

foldl :: (b -> a -> b) -> b -> Measure a -> b #

foldl' :: (b -> a -> b) -> b -> Measure a -> b #

foldr1 :: (a -> a -> a) -> Measure a -> a #

foldl1 :: (a -> a -> a) -> Measure a -> a #

toList :: Measure a -> [a] #

null :: Measure a -> Bool #

length :: Measure a -> Int #

elem :: Eq a => a -> Measure a -> Bool #

maximum :: Ord a => Measure a -> a #

minimum :: Ord a => Measure a -> a #

sum :: Num a => Measure a -> a #

product :: Num a => Measure a -> a #

Traversable Measure Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Measure a -> f (Measure b) #

sequenceA :: Applicative f => Measure (f a) -> f (Measure a) #

mapM :: Monad m => (a -> m b) -> Measure a -> m (Measure b) #

sequence :: Monad m => Measure (m a) -> m (Measure a) #

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

Defined in Abstract

Methods

freeVars :: Measure a -> Set Name Source #

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

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Measure a -> Measure a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Measure a -> Measure a Source #

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

Defined in Abstract

Methods

usedDefs :: Measure a -> [Name] Source #

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

Defined in Eval

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

Defined in Eval

Methods

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

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

Defined in Eval

ToExpr a => PrettyTCM (Measure a) Source # 
Instance details

Defined in PrettyTCM

Substitute v => Substitute (Measure v) Source # 
Instance details

Defined in TypeChecker

Pretty (Measure Expr) Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

Methods

showsPrec :: Int -> Measure a -> ShowS #

show :: Measure a -> String #

showList :: [Measure a] -> ShowS #

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

Defined in Abstract

Methods

(==) :: Measure a -> Measure a -> Bool #

(/=) :: Measure a -> Measure a -> Bool #

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

Defined in Abstract

Methods

compare :: Measure a -> Measure a -> Ordering #

(<) :: Measure a -> Measure a -> Bool #

(<=) :: Measure a -> Measure a -> Bool #

(>) :: Measure a -> Measure a -> Bool #

(>=) :: Measure a -> Measure a -> Bool #

max :: Measure a -> Measure a -> Measure a #

min :: Measure a -> Measure a -> Measure a #

succMeasure :: (a -> a) -> Measure a -> Measure a Source #

applyLastM :: (a -> Maybe a) -> Measure a -> Maybe (Measure a) Source #

data Bound a Source #

Constructors

Bound 

Fields

Instances

Instances details
Functor Bound Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Bound a -> Bound b #

(<$) :: a -> Bound b -> Bound a #

Foldable Bound Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Bound m -> m #

foldMap :: Monoid m => (a -> m) -> Bound a -> m #

foldMap' :: Monoid m => (a -> m) -> Bound a -> m #

foldr :: (a -> b -> b) -> b -> Bound a -> b #

foldr' :: (a -> b -> b) -> b -> Bound a -> b #

foldl :: (b -> a -> b) -> b -> Bound a -> b #

foldl' :: (b -> a -> b) -> b -> Bound a -> b #

foldr1 :: (a -> a -> a) -> Bound a -> a #

foldl1 :: (a -> a -> a) -> Bound a -> a #

toList :: Bound a -> [a] #

null :: Bound a -> Bool #

length :: Bound a -> Int #

elem :: Eq a => a -> Bound a -> Bool #

maximum :: Ord a => Bound a -> a #

minimum :: Ord a => Bound a -> a #

sum :: Num a => Bound a -> a #

product :: Num a => Bound a -> a #

Traversable Bound Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Bound a -> f (Bound b) #

sequenceA :: Applicative f => Bound (f a) -> f (Bound a) #

mapM :: Monad m => (a -> m b) -> Bound a -> m (Bound b) #

sequence :: Monad m => Bound (m a) -> m (Bound a) #

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

Defined in Abstract

Methods

freeVars :: Bound a -> Set Name Source #

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

Defined in Abstract

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Bound a -> Bound a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Bound a -> Bound a Source #

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

Defined in Abstract

Methods

usedDefs :: Bound a -> [Name] Source #

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 #

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

Defined in Eval

Methods

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

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

Defined in Eval

ToExpr a => PrettyTCM (Bound a) Source # 
Instance details

Defined in PrettyTCM

Substitute v => Substitute (Bound v) Source # 
Instance details

Defined in TypeChecker

Pretty (Bound Expr) Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

Methods

showsPrec :: Int -> Bound a -> ShowS #

show :: Bound a -> String #

showList :: [Bound a] -> ShowS #

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

Defined in Abstract

Methods

(==) :: Bound a -> Bound a -> Bool #

(/=) :: Bound a -> Bound a -> Bool #

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

Defined in Abstract

Methods

compare :: Bound a -> Bound a -> Ordering #

(<) :: Bound a -> Bound a -> Bool #

(<=) :: Bound a -> Bound a -> Bool #

(>) :: Bound a -> Bound a -> Bool #

(>=) :: Bound a -> Bound a -> Bool #

max :: Bound a -> Bound a -> Bound a #

min :: Bound a -> Bound a -> Bound a #

data Tag Source #

Constructors

Erased

Expression will be erased.

Cast

Expression will need to be casted.

Instances

Instances details
Show Tag Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Tag -> ShowS #

show :: Tag -> String #

showList :: [Tag] -> ShowS #

Eq Tag Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Tag Source # 
Instance details

Defined in Abstract

Methods

compare :: Tag -> Tag -> Ordering #

(<) :: Tag -> Tag -> Bool #

(<=) :: Tag -> Tag -> Bool #

(>) :: Tag -> Tag -> Bool #

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

max :: Tag -> Tag -> Tag #

min :: Tag -> Tag -> Tag #

type Tags = [Tag] Source #

data Tagged a Source #

Constructors

Tagged 

Fields

Instances

Instances details
Functor Tagged Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> Tagged a -> Tagged b #

(<$) :: a -> Tagged b -> Tagged a #

Foldable Tagged Source # 
Instance details

Defined in Abstract

Methods

fold :: Monoid m => Tagged m -> m #

foldMap :: Monoid m => (a -> m) -> Tagged a -> m #

foldMap' :: Monoid m => (a -> m) -> Tagged a -> m #

foldr :: (a -> b -> b) -> b -> Tagged a -> b #

foldr' :: (a -> b -> b) -> b -> Tagged a -> b #

foldl :: (b -> a -> b) -> b -> Tagged a -> b #

foldl' :: (b -> a -> b) -> b -> Tagged a -> b #

foldr1 :: (a -> a -> a) -> Tagged a -> a #

foldl1 :: (a -> a -> a) -> Tagged a -> a #

toList :: Tagged a -> [a] #

null :: Tagged a -> Bool #

length :: Tagged a -> Int #

elem :: Eq a => a -> Tagged a -> Bool #

maximum :: Ord a => Tagged a -> a #

minimum :: Ord a => Tagged a -> a #

sum :: Num a => Tagged a -> a #

product :: Num a => Tagged a -> a #

Traversable Tagged Source # 
Instance details

Defined in Abstract

Methods

traverse :: Applicative f => (a -> f b) -> Tagged a -> f (Tagged b) #

sequenceA :: Applicative f => Tagged (f a) -> f (Tagged a) #

mapM :: Monad m => (a -> m b) -> Tagged a -> m (Tagged b) #

sequence :: Monad m => Tagged (m a) -> m (Tagged a) #

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

Defined in Abstract

Methods

freeVars :: Tagged a -> Set Name Source #

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

Defined in Abstract

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Tagged a -> Tagged a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Tagged a -> Tagged a Source #

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

Defined in Abstract

Methods

usedDefs :: Tagged a -> [Name] Source #

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

Defined in Eval

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

Defined in Abstract

Methods

pretty :: Tagged a -> Doc Source #

prettyPrec :: Int -> Tagged a -> Doc Source #

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

Defined in Abstract

Methods

showsPrec :: Int -> Tagged a -> ShowS #

show :: Tagged a -> String #

showList :: [Tagged a] -> ShowS #

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

Defined in Abstract

Methods

(==) :: Tagged a -> Tagged a -> Bool #

(/=) :: Tagged a -> Tagged a -> Bool #

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

Defined in Abstract

Methods

compare :: Tagged a -> Tagged a -> Ordering #

(<) :: Tagged a -> Tagged a -> Bool #

(<=) :: Tagged a -> Tagged a -> Bool #

(>) :: Tagged a -> Tagged a -> Bool #

(>=) :: Tagged a -> Tagged a -> Bool #

max :: Tagged a -> Tagged a -> Tagged a #

min :: Tagged a -> Tagged a -> Tagged a #

data Expr Source #

Constructors

Sort (Sort Expr)

Size Set CoSet sizes

Zero 
Succ Expr 
Infty 
Max [Expr]

(list has at least 2 elements)

Plus [Expr]

(list has at least 2 elements) identifiers

Meta MVar

meta-variable

Var Name

variables are named

Def DefId

identifiers in the signature

Record RecInfo [(Name, Expr)]

record { p1 = e1; ...; pn = en }

Proj PrePost Name

proj _ or _ .proj

Pair Expr Expr 
Case Expr (Maybe Type) [Clause]

Type is Nothing in input, Just after t.c.

LLet LBind Telescope Expr Expr

let [x : A] = t in u, let [x] tel = t in u after t.c. Telescope is empty (fused into LBind)

App Expr Expr 
Lam Dec Name Expr 
Quant PiSigma TBind Expr 
Sing Expr Expr 
Below LtLe Expr

<(a : Size) or <=(a : Size) for extraction

Ann (Tagged Expr)

annotated expr, e.g. with Erased tag

Irr

for instance the term correponding to the absurd pattern

Instances

Instances details
FreeVars Expr Source # 
Instance details

Defined in Abstract

Methods

freeVars :: Expr -> Set Name Source #

HasPred Expr Source # 
Instance details

Defined in Abstract

InjectiveVars Expr Source # 
Instance details

Defined in Abstract

ParSubst Expr Source # 
Instance details

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Expr -> Expr Source #

Substitute Expr Source # 
Instance details

Defined in Abstract

Methods

subst :: Subst -> Expr -> Expr Source #

UsedDefs Expr Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Expr -> [Name] Source #

ClosToExpr Expr Source # 
Instance details

Defined in Eval

PrettyTCM Expr Source # 
Instance details

Defined in PrettyTCM

PrettyTCM Pattern Source # 
Instance details

Defined in PrettyTCM

ToExpr Expr Source # 
Instance details

Defined in PrettyTCM

Pretty Expr Source # 
Instance details

Defined in Abstract

Pretty Pattern Source # 
Instance details

Defined in Abstract

Pretty TBind Source # 
Instance details

Defined in Abstract

Show Expr Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

Show Pattern Source # 
Instance details

Defined in Abstract

Eq Expr Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Expr Source # 
Instance details

Defined in Abstract

Methods

compare :: Expr -> Expr -> Ordering #

(<) :: Expr -> Expr -> Bool #

(<=) :: Expr -> Expr -> Bool #

(>) :: Expr -> Expr -> Bool #

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

max :: Expr -> Expr -> Expr #

min :: Expr -> Expr -> Expr #

PrettyTCM (Sort Expr) Source # 
Instance details

Defined in PrettyTCM

PrettyTCM [Pattern] Source # 
Instance details

Defined in PrettyTCM

Pretty (Bound Expr) Source # 
Instance details

Defined in Abstract

Pretty (Measure Expr) Source # 
Instance details

Defined in Abstract

Pretty (Sort Expr) Source # 
Instance details

Defined in Abstract

Show (Sort Expr) Source # 
Instance details

Defined in Abstract

data PrePost Source #

Constructors

Pre 
Post 

Instances

Instances details
Show PrePost Source # 
Instance details

Defined in Abstract

Eq PrePost Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord PrePost Source # 
Instance details

Defined in Abstract

data PiSigma Source #

Constructors

Pi 
Sigma 

Instances

Instances details
Pretty PiSigma Source # 
Instance details

Defined in Abstract

Show PiSigma Source # 
Instance details

Defined in Abstract

Eq PiSigma Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord PiSigma Source # 
Instance details

Defined in Abstract

data RecInfo Source #

Optional constructor name of a record value.

Constructors

AnonRec

anonymous record

NamedRec 

Fields

Instances

Instances details
Show RecInfo Source # 
Instance details

Defined in Abstract

Eq RecInfo Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord RecInfo Source # 
Instance details

Defined in Abstract

newtype Dotted Source #

Constructors

Dotted 

Fields

Instances

Instances details
DotIf Dotted Source # 
Instance details

Defined in Abstract

Methods

dotIf :: Dotted -> Doc -> Doc Source #

Show Dotted Source # 
Instance details

Defined in Abstract

Eq Dotted Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Dotted Source # 
Instance details

Defined in Abstract

smart constructors

pi :: TBind -> Expr -> Expr Source #

Create a universal binding. Fuse hidden bindings.

funType :: Dom Type -> Expr -> Expr Source #

Non-dependent function type.

data Clause Source #

Constructors

Clause 

Instances

Instances details
FreeVars Clause Source # 
Instance details

Defined in Abstract

ParSubst Clause Source # 
Instance details

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Clause -> Clause Source #

Substitute Clause Source # 
Instance details

Defined in Abstract

Methods

subst :: Subst -> Clause -> Clause Source #

UsedDefs Clause Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Clause -> [Name] Source #

Show Clause Source # 
Instance details

Defined in Abstract

Eq Clause Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Clause Source # 
Instance details

Defined in Abstract

data Pat e Source #

Patterns parametrized by type of dot patterns.

Constructors

VarP Name

x

ConP PatternInfo QName [Pat e]

(c ps) and (.c ps)

SuccP (Pat e)

($ p)

SizeP e Name

(x > y) (# > y) ($x > y)

PairP (Pat e) (Pat e)

(p, p')

ProjP Name

.proj

DotP e

.e

AbsurdP

()

ErasedP (Pat e)

pattern which got erased

UnusableP (Pat e) 

Instances

Instances details
PrettyTCM Pattern Source # 
Instance details

Defined in PrettyTCM

Pretty Pattern Source # 
Instance details

Defined in Abstract

Show Pattern Source # 
Instance details

Defined in Abstract

BoundVars (Pat e) Source # 
Instance details

Defined in Abstract

Methods

boundVars :: Collection c Name => Pat e -> c Source #

PrettyTCM [Pattern] Source # 
Instance details

Defined in PrettyTCM

Eq e => Eq (Pat e) Source # 
Instance details

Defined in Abstract

Methods

(==) :: Pat e -> Pat e -> Bool #

(/=) :: Pat e -> Pat e -> Bool #

Ord e => Ord (Pat e) Source # 
Instance details

Defined in Abstract

Methods

compare :: Pat e -> Pat e -> Ordering #

(<) :: Pat e -> Pat e -> Bool #

(<=) :: Pat e -> Pat e -> Bool #

(>) :: Pat e -> Pat e -> Bool #

(>=) :: Pat e -> Pat e -> Bool #

max :: Pat e -> Pat e -> Pat e #

min :: Pat e -> Pat e -> Pat e #

type SpineView = (Expr, [Expr]) Source #

type Extr = Expr Source #

data Override Source #

Constructors

Fail

expect an error, ignore block

Check

expect no error, still ignore block

TrustMe

ignore recoverable errors

Impredicative

use impredicativity for these declarations

Instances

Instances details
Show Override Source # 
Instance details

Defined in Abstract

Eq Override Source # 
Instance details

Defined in Abstract

Ord Override Source # 
Instance details

Defined in Abstract

data TySig a Source #

Constructors

TypeSig 

Fields

Instances

Instances details
Functor TySig Source # 
Instance details

Defined in Abstract

Methods

fmap :: (a -> b) -> TySig a -> TySig b #

(<$) :: a -> TySig b -> TySig a #

Show a => Show (TySig a) Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> TySig a -> ShowS #

show :: TySig a -> String #

showList :: [TySig a] -> ShowS #

Eq a => Eq (TySig a) Source # 
Instance details

Defined in Abstract

Methods

(==) :: TySig a -> TySig a -> Bool #

(/=) :: TySig a -> TySig a -> Bool #

Ord a => Ord (TySig a) Source # 
Instance details

Defined in Abstract

Methods

compare :: TySig a -> TySig a -> Ordering #

(<) :: TySig a -> TySig a -> Bool #

(<=) :: TySig a -> TySig a -> Bool #

(>) :: TySig a -> TySig a -> Bool #

(>=) :: TySig a -> TySig a -> Bool #

max :: TySig a -> TySig a -> TySig a #

min :: TySig a -> TySig a -> TySig a #

type Type = Expr Source #

data Constructor Source #

Constructor declaration. Top-level scope (independent of data pars).

Constructors

Constructor 

Fields

newtype Telescope Source #

Constructors

Telescope 

Fields

Instances

Instances details
BoundVars Telescope Source # 
Instance details

Defined in Abstract

FreeVars Telescope Source # 
Instance details

Defined in Abstract

InjectiveVars Telescope Source # 
Instance details

Defined in Abstract

LensDec Telescope Source # 
Instance details

Defined in Abstract

ParSubst Telescope Source # 
Instance details

Defined in Abstract

Substitute Telescope Source # 
Instance details

Defined in Abstract

UsedDefs Telescope Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Telescope -> [Name] Source #

ClosToExpr Telescope Source # 
Instance details

Defined in Eval

Null Telescope Source # 
Instance details

Defined in Abstract

Methods

null :: Telescope -> Bool Source #

Pretty Telescope Source # 
Instance details

Defined in Abstract

Size Telescope Source # 
Instance details

Defined in Abstract

Methods

size :: Telescope -> Int Source #

Show Telescope Source # 
Instance details

Defined in Abstract

Eq Telescope Source # 
Instance details

Defined in Abstract

Ord Telescope Source # 
Instance details

Defined in Abstract

data Arity Source #

Constructors

Arity 

Fields

Instances

Instances details
Show Arity Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Arity -> ShowS #

show :: Arity -> String #

showList :: [Arity] -> ShowS #

Eq Arity Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Arity Source # 
Instance details

Defined in Abstract

Methods

compare :: Arity -> Arity -> Ordering #

(<) :: Arity -> Arity -> Bool #

(<=) :: Arity -> Arity -> Bool #

(>) :: Arity -> Arity -> Bool #

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

max :: Arity -> Arity -> Arity #

min :: Arity -> Arity -> Arity #

data Fun Source #

Constructors

Fun 

Fields

Instances

Instances details
Show Fun Source # 
Instance details

Defined in Abstract

Methods

showsPrec :: Int -> Fun -> ShowS #

show :: Fun -> String #

showList :: [Fun] -> ShowS #

Eq Fun Source # 
Instance details

Defined in Abstract

Methods

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

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

Ord Fun Source # 
Instance details

Defined in Abstract

Methods

compare :: Fun -> Fun -> Ordering #

(<) :: Fun -> Fun -> Bool #

(<=) :: Fun -> Fun -> Bool #

(>) :: Fun -> Fun -> Bool #

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

max :: Fun -> Fun -> Fun #

min :: Fun -> Fun -> Fun #

type EFun = Fun Source #

class BoundVars a where Source #

Collect the variables from the binders

Methods

boundVars :: Collection c Name => a -> c Source #

Instances

Instances details
BoundVars Telescope Source # 
Instance details

Defined in Abstract

BoundVars (Pat e) Source # 
Instance details

Defined in Abstract

Methods

boundVars :: Collection c Name => Pat e -> c Source #

BoundVars (TBinding a) Source # 
Instance details

Defined in Abstract

Methods

boundVars :: Collection c Name => TBinding a -> c Source #

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

Defined in Abstract

Methods

boundVars :: Collection c Name => Maybe a -> c Source #

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

Defined in Abstract

Methods

boundVars :: Collection c Name => [a] -> c Source #

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

Defined in Abstract

Methods

boundVars :: Collection c Name => (a, b) -> c Source #

(BoundVars a, BoundVars b, BoundVars c) => BoundVars (a, b, c) Source # 
Instance details

Defined in Abstract

Methods

boundVars :: Collection c0 Name => (a, b, c) -> c0 Source #

class FreeVars a where Source #

Boilerplate to extract free variables in the usual sense.

Methods

freeVars :: a -> Set Name Source #

Instances

Instances details
FreeVars Clause Source # 
Instance details

Defined in Abstract

FreeVars Expr Source # 
Instance details

Defined in Abstract

Methods

freeVars :: Expr -> Set Name Source #

FreeVars Telescope Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

Methods

freeVars :: Bound a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: Dom a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: Measure a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: Sort a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: TBinding a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: Tagged a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: Maybe a -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: [a] -> Set Name Source #

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

Defined in Abstract

Methods

freeVars :: (a, b) -> Set Name Source #

(FreeVars a, FreeVars b, FreeVars c) => FreeVars (a, b, c) Source # 
Instance details

Defined in Abstract

Methods

freeVars :: (a, b, c) -> Set Name Source #

class UsedDefs a where Source #

Get all the definitions that are refered to in expression. This is used e.g. to check whether a (co)fun is recursive.

Methods

usedDefs :: a -> [Name] Source #

Instances

Instances details
UsedDefs Clause Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Clause -> [Name] Source #

UsedDefs DefId Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: DefId -> [Name] Source #

UsedDefs Expr Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Expr -> [Name] Source #

UsedDefs Telescope Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: Telescope -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Bound a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Dom a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Measure a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Sort a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: TBinding a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Tagged a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: Maybe a -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: [a] -> [Name] Source #

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

Defined in Abstract

Methods

usedDefs :: (a, b) -> [Name] Source #

(UsedDefs a, UsedDefs b, UsedDefs c) => UsedDefs (a, b, c) Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: (a, b, c) -> [Name] Source #

(UsedDefs a, UsedDefs b, UsedDefs c, UsedDefs d) => UsedDefs (a, b, c, d) Source # 
Instance details

Defined in Abstract

Methods

usedDefs :: (a, b, c, d) -> [Name] Source #

class DotIf a where Source #

Methods

dotIf :: a -> Doc -> Doc Source #

Instances

Instances details
DotIf Dotted Source # 
Instance details

Defined in Abstract

Methods

dotIf :: Dotted -> Doc -> Doc Source #

DotIf Bool Source # 
Instance details

Defined in Abstract

Methods

dotIf :: Bool -> Doc -> Doc Source #

prettyRecFields :: (Pretty a, Pretty b) => [(a, b)] -> Doc Source #

vlist :: [Doc] -> Doc Source #

patSubst :: [(Name, Pattern)] -> Pattern -> Pattern Source #

substitute into pattern

class ParSubst a where Source #

Methods

parSubst :: (Name -> Expr) -> a -> a Source #

Instances

Instances details
ParSubst Clause Source # 
Instance details

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Clause -> Clause Source #

ParSubst Expr Source # 
Instance details

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Expr -> Expr Source #

ParSubst Telescope Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Bound a -> Bound a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Dom a -> Dom a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Measure a -> Measure a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Sort a -> Sort a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> TBinding a -> TBinding a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Tagged a -> Tagged a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> Maybe a -> Maybe a Source #

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

Defined in Abstract

Methods

parSubst :: (Name -> Expr) -> [a] -> [a] Source #

class Substitute a where Source #

Metavariable substitution. (BY INTENTION NOT CAPTURE AVOIDING!) Does not substitute in patterns!

Methods

subst :: Subst -> a -> a Source #

Instances

Instances details
Substitute Clause Source # 
Instance details

Defined in Abstract

Methods

subst :: Subst -> Clause -> Clause Source #

Substitute Expr Source # 
Instance details

Defined in Abstract

Methods

subst :: Subst -> Expr -> Expr Source #

Substitute Telescope Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

Methods

subst :: Subst -> Bound a -> Bound a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Dom a -> Dom a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Measure a -> Measure a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Sort a -> Sort a Source #

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

Defined in Abstract

Methods

subst :: Subst -> TBinding a -> TBinding a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Tagged a -> Tagged a Source #

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

Defined in Abstract

Methods

subst :: Subst -> Maybe a -> Maybe a Source #

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

Defined in Abstract

Methods

subst :: Subst -> [a] -> [a] Source #

data FieldClass Source #

Constructors

Index

E.g., the length in Vector.

NotErasableIndex

E.g., c : (index : A) -> D (f index)

Field (Maybe Destructor)

An actual field, not free in the target.

Instances

Instances details
Show FieldClass Source # 
Instance details

Defined in Abstract

Eq FieldClass Source # 
Instance details

Defined in Abstract

data FieldInfo Source #

Constructors

FieldInfo 

Fields

  • fDec :: Dec
     
  • fName :: Name

    Empty "" for anonymous fields.

  • fType :: Type

    Naked type (no preceeding telescope). , fLazy :: Bool -- lazy (coinductive occ) or strict (everything else) -- see TCM.hs ConSig

  • fClass :: FieldClass
     

Instances

Instances details
Show FieldInfo Source # 
Instance details

Defined in Abstract

data ConstructorInfo Source #

Constructors

ConstructorInfo 

Fields

Instances

Instances details
Show ConstructorInfo Source # 
Instance details

Defined in Abstract

class InjectiveVars a where Source #

Methods

injectiveVars :: a -> Set Name Source #

Instances

Instances details
InjectiveVars Expr Source # 
Instance details

Defined in Abstract

InjectiveVars Telescope Source # 
Instance details

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

Methods

injectiveVars :: Dom a -> Set Name Source #

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

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

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

Defined in Abstract

Methods

injectiveVars :: [a] -> Set Name Source #

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

Defined in Abstract

Methods

injectiveVars :: (a, b) -> Set Name Source #

(InjectiveVars a, InjectiveVars b, InjectiveVars c) => InjectiveVars (a, b, c) Source # 
Instance details

Defined in Abstract

Methods

injectiveVars :: (a, b, c) -> Set Name Source #

analyzeConstructors :: Co -> Name -> Telescope -> [Constructor] -> [ConstructorInfo] Source #

Analyze all constructors of a data type at once so that we can also check which constructors patterns are irrefutable.

reassembleConstructor :: ConstructorInfo -> Constructor Source #

Build constructor type from constructor info, erasing all indices.

reassembleConstructorType :: ConstructorInfo -> Type Source #

Assumes that all the indices (even from data telescope) are contained in fields.

exprToPattern :: Expr -> Maybe Pattern Source #

exprToPattern is used in the termination checker to convert dot patterns into proper patterns.

patApp :: Pattern -> Pattern -> Maybe Pattern Source #

Only constructor patterns can be applied to a pattern.

exprToDotPat :: Expr -> (Bool, Pattern) Source #

exprToDotPat turns an expression into a pattern. The Bool is True if the pattern is proper, i.e., does not contain DotP except DotP Infty.

dotConstructors :: Pattern -> Pattern Source #

Dot all constructor subpatterns. Used when expanding a dotted patsyn.

typeToTele :: Type -> (Telescope, Type) Source #

typeToTele ((x : A) -> (y : B) -> C) = ([(x,A),(y,B)], C)

typeToTele' :: Int -> Type -> (Telescope, Type) Source #

typeToTele' k t. If k > 0 it takes at most k leading Pis into the telescope STALE: (hidden bindings do not count).