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

Safe HaskellNone
LanguageHaskell98

Agda.Compiler.Epic.NatDetection

Description

Detect if a datatype could be represented as a primitive integer. If it has one constructor with no arguments and one with a recursive argument this is true. This is done using IrrFilters which filter out forced arguments, so for example Fin becomes primitive.

Synopsis

Documentation

getNatish :: Compile TCM [(ForcedArgs, [QName])] Source

Get a list of all the datatypes that look like nats. The [QName] is on the form [zeroConstr, sucConstr]

nrRel :: ForcedArgs -> Integer Source

Count the number of relevant arguments

isRec :: Int -> Type -> QName -> Bool Source

Check if argument n is recursive