| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Agda.TypeChecking.Rules.Data
Contents
Synopsis
- checkDataDef :: DefInfo -> QName -> PositivityCheck -> UniverseCheck -> DataDefParams -> [Constructor] -> TCM ()
- checkDataSort :: QName -> Sort -> TCM ()
- forceSort :: Type -> TCM Sort
- checkConstructor :: QName -> UniverseCheck -> Telescope -> Nat -> Sort -> Constructor -> TCM IsPathCons
- defineCompData :: QName -> ConHead -> Telescope -> [QName] -> Telescope -> Type -> Boundary -> TCM CompKit
- defineProjections :: QName -> ConHead -> Telescope -> [QName] -> Telescope -> Type -> TCM ()
- freshAbstractQName'_ :: String -> TCM QName
- checkNoLocalRewrites :: QName -> TCM ()
- checkNoLocalRewrites' :: QName -> Tele (Dom Type) -> TCM ()
- defineTranspIx :: QName -> TCM (Maybe QName)
- defineTranspFun :: QName -> Maybe QName -> [QName] -> [QName] -> TCM (Maybe QName)
- defineConClause :: QName -> Bool -> Maybe QName -> Nat -> Nat -> Telescope -> Telescope -> Substitution -> Type -> [QName] -> TCM [Clause]
- defineKanOperationForFields :: Command -> Maybe Term -> (Term -> QName -> Term) -> QName -> Telescope -> Telescope -> [Arg QName] -> Type -> TCM (Maybe ((QName, Telescope, Type, [Dom Type], [Term]), Substitution))
- defineTranspForFields :: Maybe Term -> (Term -> QName -> Term) -> QName -> Telescope -> Tele (Dom CType) -> [Arg QName] -> Type -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)
- defineHCompForFields :: (Term -> QName -> Term) -> QName -> Telescope -> Tele (Dom LType) -> [Arg QName] -> LType -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)
- getGeneralizedParameters :: Set Name -> QName -> TCM [Maybe Name]
- bindGeneralizedParameters :: [Maybe Name] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
- bindParameters :: Int -> [LamBinding] -> Type -> (Telescope -> Type -> TCM a) -> TCM a
- bindParameter :: Int -> [LamBinding] -> Name -> Dom Type -> Abs Type -> (Telescope -> Type -> TCM a) -> TCM a
- fitsIn :: DataOrRecord_ -> QName -> UniverseCheck -> [IsForced] -> Type -> Sort -> TCM Int
- checkIndexSorts :: Sort -> Telescope -> TCM ()
- data IsPathCons
- constructs :: Int -> Int -> Type -> QName -> TCM IsPathCons
- isCoinductive :: Type -> TCM (Maybe Bool)
Datatypes
checkDataDef :: DefInfo -> QName -> PositivityCheck -> UniverseCheck -> DataDefParams -> [Constructor] -> TCM () Source #
Type check a datatype definition. Assumes that the type has already been checked.
checkDataSort :: QName -> Sort -> TCM () Source #
Make sure that the target universe admits data type definitions.
E.g. IUniv, SizeUniv etc. do not accept new constructions.
forceSort :: Type -> TCM Sort Source #
Ensure that the type is a sort.
If it is not directly a sort, compare it to a newSortMetaBelowInf.
Arguments
| :: QName | Name of data type. |
| -> UniverseCheck | Check universes? |
| -> Telescope | Parameter telescope. |
| -> Nat | Number of indices of the data type. |
| -> Sort | Sort of the data type. |
| -> Constructor | Constructor declaration (type signature). |
| -> TCM IsPathCons |
Type check a constructor declaration. Checks that the constructor targets the datatype and that it fits inside the declared sort. Returns the non-linear parameters.
defineProjections :: QName -> ConHead -> Telescope -> [QName] -> Telescope -> Type -> TCM () Source #
Define projections for non-indexed data types (families don't work yet). Of course, these projections are partial functions in general.
Precondition: we are in the context Γ of the data type parameters.
checkNoLocalRewrites :: QName -> TCM () Source #
I am not sure what the generated transport functions should look like in the presence of local rewrite rule parameters. The easiest solution is to just refuse to generate the transport function, and throw a type error.
Defines and returns the name of the transpIx function.
defineKanOperationForFields Source #
Arguments
| :: Command | |
| -> Maybe Term | PathCons, Δ.Φ ⊢ u : R δ |
| -> (Term -> QName -> Term) | how to apply a "projection" to a term |
| -> QName | some name, e.g. record name |
| -> Telescope | param types Δ |
| -> Telescope | fields' types Δ ⊢ Φ |
| -> [Arg QName] | fields' names |
| -> Type | record type Δ ⊢ T |
| -> TCM (Maybe ((QName, Telescope, Type, [Dom Type], [Term]), Substitution)) |
defineTranspForFields Source #
Arguments
| :: Maybe Term | PathCons, Δ.Φ ⊢ u : R δ |
| -> (Term -> QName -> Term) | how to apply a "projection" to a term |
| -> QName | some name, e.g. record name |
| -> Telescope | param types Δ |
| -> Tele (Dom CType) | fields' types Δ ⊢ Φ |
| -> [Arg QName] | fields' names |
| -> Type | record type Δ ⊢ T |
| -> TCM ((QName, Telescope, Type, [Dom Type], [Term]), Substitution) |
|
bindGeneralizedParameters :: [Maybe Name] -> Type -> (Telescope -> Type -> TCM a) -> TCM a Source #
Bind the named generalized parameters.
Arguments
| :: Int | Number of parameters |
| -> [LamBinding] | Bindings from definition site. |
| -> Type | Pi-type of bindings coming from signature site. |
| -> (Telescope -> Type -> TCM a) | Continuation, accepting parameter telescope and rest of type. The parameters are part of the context when the continutation is invoked. |
| -> TCM a |
Bind the parameters of a datatype.
We allow omission of hidden parameters at the definition site.
Example:
data D {a} (A : Set a) : Set a
data D A where
c : A -> D A
bindParameter :: Int -> [LamBinding] -> Name -> Dom Type -> Abs Type -> (Telescope -> Type -> TCM a) -> TCM a Source #
fitsIn :: DataOrRecord_ -> QName -> UniverseCheck -> [IsForced] -> Type -> Sort -> TCM Int Source #
Check that the arguments to a constructor fits inside the sort of the datatype. The third argument is the type of the constructor.
When --without-K is active and the type is fibrant the
procedure also checks that the type is usable at the current
modality. See #4784 and #5434.
As a side effect, return the arity of the constructor.
checkIndexSorts :: Sort -> Telescope -> TCM () Source #
When --without-K is enabled, we should check that the sorts of the index types fit into the sort of the datatype.
data IsPathCons Source #
Return the parameters that share variables with the indices nonLinearParameters :: Int -> Type -> TCM [Int] nonLinearParameters nPars t =
Instances
| Show IsPathCons Source # | |
Defined in Agda.TypeChecking.Rules.Data Methods showsPrec :: Int -> IsPathCons -> ShowS # show :: IsPathCons -> String # showList :: [IsPathCons] -> ShowS # | |
| Eq IsPathCons Source # | |
Defined in Agda.TypeChecking.Rules.Data | |
constructs :: Int -> Int -> Type -> QName -> TCM IsPathCons Source #
Check that a type constructs something of the given datatype. The first argument is the number of parameters to the datatype and the second the number of additional non-parameters in the context (1 when generalizing, 0 otherwise).