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

Safe HaskellNone
LanguageHaskell2010

Agda.TypeChecking.Primitive

Contents

Description

Primitive functions, such as addition on builtin integers.

Synopsis

Primitive functions

data PrimitiveImpl #

Constructors

PrimImpl Type PrimFun 

newtype Nat #

Constructors

Nat 

Fields

Instances
Enum Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

succ :: Nat -> Nat #

pred :: Nat -> Nat #

toEnum :: Int -> Nat #

fromEnum :: Nat -> Int #

enumFrom :: Nat -> [Nat] #

enumFromThen :: Nat -> Nat -> [Nat] #

enumFromTo :: Nat -> Nat -> [Nat] #

enumFromThenTo :: Nat -> Nat -> Nat -> [Nat] #

Eq Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

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

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

Integral Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

quot :: Nat -> Nat -> Nat #

rem :: Nat -> Nat -> Nat #

div :: Nat -> Nat -> Nat #

mod :: Nat -> Nat -> Nat #

quotRem :: Nat -> Nat -> (Nat, Nat) #

divMod :: Nat -> Nat -> (Nat, Nat) #

toInteger :: Nat -> Integer #

Num Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

(+) :: Nat -> Nat -> Nat #

(-) :: Nat -> Nat -> Nat #

(*) :: Nat -> Nat -> Nat #

negate :: Nat -> Nat #

abs :: Nat -> Nat #

signum :: Nat -> Nat #

fromInteger :: Integer -> Nat #

Ord Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

compare :: Nat -> Nat -> Ordering #

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

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

(>) :: Nat -> Nat -> Bool #

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

max :: Nat -> Nat -> Nat #

min :: Nat -> Nat -> Nat #

Real Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toRational :: Nat -> Rational #

Show Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

showsPrec :: Int -> Nat -> ShowS #

show :: Nat -> String #

showList :: [Nat] -> ShowS #

TermLike Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

traverseTermM :: Monad m => (Term -> m Term) -> Nat -> m Nat #

foldTerm :: Monoid m => (Term -> m) -> Nat -> m #

FromTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Nat -> Term) #

toTermR :: TCM (Nat -> ReduceM Term) #

PrimTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Nat -> TCM Term #

newtype Lvl #

Constructors

Lvl 

Fields

Instances
Eq Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

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

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

Ord Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

compare :: Lvl -> Lvl -> Ordering #

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

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

(>) :: Lvl -> Lvl -> Bool #

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

max :: Lvl -> Lvl -> Lvl #

min :: Lvl -> Lvl -> Lvl #

Show Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

showsPrec :: Int -> Lvl -> ShowS #

show :: Lvl -> String #

showList :: [Lvl] -> ShowS #

FromTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Lvl -> Term) #

toTermR :: TCM (Lvl -> ReduceM Term) #

PrimTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Lvl -> TCM Term #

class PrimType a where #

Minimal complete definition

primType

Methods

primType :: a -> TCM Type #

Instances
PrimTerm a => PrimType a # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primType :: a -> TCM Type #

class PrimTerm a where #

Minimal complete definition

primTerm

Methods

primTerm :: a -> TCM Term #

Instances
PrimTerm Bool # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Bool -> TCM Term #

PrimTerm Char # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Char -> TCM Term #

PrimTerm Double # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Double -> TCM Term #

PrimTerm Integer # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Integer -> TCM Term #

PrimTerm Word64 # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Word64 -> TCM Term #

PrimTerm Str # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Str -> TCM Term #

PrimTerm Fixity' # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Fixity' -> TCM Term #

PrimTerm MetaId # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: MetaId -> TCM Term #

PrimTerm QName # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: QName -> TCM Term #

PrimTerm Type # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Type -> TCM Term #

PrimTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Lvl -> TCM Term #

PrimTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: Nat -> TCM Term #

PrimTerm a => PrimTerm [a] # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: [a] -> TCM Term #

PrimTerm a => PrimTerm (IO a) # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: IO a -> TCM Term #

(PrimType a, PrimType b) => PrimTerm (a -> b) # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

primTerm :: (a -> b) -> TCM Term #

class ToTerm a where #

Minimal complete definition

toTerm

Methods

toTerm :: TCM (a -> Term) #

toTermR :: TCM (a -> ReduceM Term) #

Instances
ToTerm Bool # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Bool -> Term) #

toTermR :: TCM (Bool -> ReduceM Term) #

ToTerm Char # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Char -> Term) #

toTermR :: TCM (Char -> ReduceM Term) #

ToTerm Double # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Double -> Term) #

toTermR :: TCM (Double -> ReduceM Term) #

ToTerm Integer # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm Word64 # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Word64 -> Term) #

toTermR :: TCM (Word64 -> ReduceM Term) #

ToTerm Str # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Str -> Term) #

toTermR :: TCM (Str -> ReduceM Term) #

ToTerm Fixity' # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm MetaId # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (MetaId -> Term) #

toTermR :: TCM (MetaId -> ReduceM Term) #

ToTerm ArgInfo # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm QName # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (QName -> Term) #

toTermR :: TCM (QName -> ReduceM Term) #

ToTerm Fixity # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Fixity -> Term) #

toTermR :: TCM (Fixity -> ReduceM Term) #

ToTerm Associativity # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm PrecedenceLevel # 
Instance details

Defined in Agda.TypeChecking.Primitive

ToTerm Type # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Type -> Term) #

toTermR :: TCM (Type -> ReduceM Term) #

ToTerm Term # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Term -> Term) #

toTermR :: TCM (Term -> ReduceM Term) #

ToTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Lvl -> Term) #

toTermR :: TCM (Lvl -> ReduceM Term) #

ToTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM (Nat -> Term) #

toTermR :: TCM (Nat -> ReduceM Term) #

ToTerm a => ToTerm [a] # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

toTerm :: TCM ([a] -> Term) #

toTermR :: TCM ([a] -> ReduceM Term) #

buildList :: TCM ([Term] -> Term) #

buildList A ts builds a list of type List A. Assumes that the terms ts all have type A.

class FromTerm a where #

Minimal complete definition

fromTerm

Instances
FromTerm Bool # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Char # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Double # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Integer # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Word64 # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Str # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm MetaId # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm QName # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Lvl # 
Instance details

Defined in Agda.TypeChecking.Primitive

FromTerm Nat # 
Instance details

Defined in Agda.TypeChecking.Primitive

(ToTerm a, FromTerm a) => FromTerm [a] # 
Instance details

Defined in Agda.TypeChecking.Primitive

Methods

fromTerm :: TCM (FromTermFunction [a]) #

redBind :: ReduceM (Reduced a a') -> (a -> b) -> (a' -> ReduceM (Reduced b b')) -> ReduceM (Reduced b b') #

Conceptually: redBind m f k = either (return . Left . f) k =<< m

redReturn :: a -> ReduceM (Reduced a' a) #

primTrustMe :: TCM PrimitiveImpl #

trustMe : {a : Level} {A : Set a} {x y : A} -> x ≡ y

getReflArgInfo :: ConHead -> TCM (Maybe ArgInfo) #

Get the ArgInfo of the principal argument of BUILTIN REFL.

Returns Nothing for e.g. data Eq {a} {A : Set a} (x : A) : A → Set a where refl : Eq x x

Returns Just ... for e.g. data Eq {a} {A : Set a} : (x y : A) → Set a where refl : ∀ x → Eq x x

genPrimForce :: TCM Type -> (Term -> Arg Term -> Term) -> TCM PrimitiveImpl #

Used for both primForce and primForceLemma.

mkPrimFun1 :: (PrimType a, FromTerm a, PrimType b, ToTerm b) => (a -> b) -> TCM PrimitiveImpl #

mkPrimFun2 :: (PrimType a, FromTerm a, ToTerm a, PrimType b, FromTerm b, PrimType c, ToTerm c) => (a -> b -> c) -> TCM PrimitiveImpl #

mkPrimFun4 :: (PrimType a, FromTerm a, ToTerm a, PrimType b, FromTerm b, ToTerm b, PrimType c, FromTerm c, ToTerm c, PrimType d, FromTerm d, PrimType e, ToTerm e) => (a -> b -> c -> d -> e) -> TCM PrimitiveImpl #

(-->) :: TCM Type -> TCM Type -> TCM Type infixr 4 #

(.-->) :: TCM Type -> TCM Type -> TCM Type infixr 4 #

(..-->) :: TCM Type -> TCM Type -> TCM Type infixr 4 #

varM :: Int -> TCM Term #

(<@>) :: TCM Term -> TCM Term -> TCM Term infixl 9 #

(<#>) :: TCM Term -> TCM Term -> TCM Term infixl 9 #

argN :: e -> Arg e #

Abbreviation: argN = Arg defaultArgInfo.

domN :: e -> Dom e #

argH :: e -> Arg e #

Abbreviation: argH = hide Arg defaultArgInfo.

domH :: e -> Dom e #

The actual primitive functions

type Op a = a -> a -> a #

type Fun a = a -> a #

type Rel a = a -> a -> Bool #

type Pred a = a -> Bool #