HORIZON HASKELLDocslts/ghc-9.14.x3e2d5682026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 3e2d568 · 2026-10-11

ModuleAgda-2.8.0.2Haskell2010

Agda.TypeChecking.Sort

This module contains the rules for Agda's sort system viewed as a pure type system (pts). The specification of a pts consists of a set of axioms of the form s1 : s2 specifying when a sort fits in another sort, and a set of rules of the form (s1,s2,s3) specifying that a pi type with domain in s1 and codomain in s2 itself fits into sort s3.

To ensure unique principal types, the axioms and rules of Agda's pts are given by two partial functions univSort' and piSort' (see Agda.TypeChecking.Substitute). If these functions return Nothing, a constraint is added to ensure that the sort will be computed eventually.

One upgrade over the standard definition of a pts is that in a rule (s1,s2,s3), in Agda the sort s2 can depend on a variable of some type in s1. This is needed to support Agda's universe polymorphism where we can have e.g. a function of type ∀ {ℓ} → Set ℓ.

  • 12 values
  • PackageAgda-2.8.0.2
  • Exports12
  • LanguageHaskell2010
  • LicenceMIT
  • SourceSort.hs
valueinferUnivSort :: (PureTCM m, MonadConstraint m) => Sort -> m Sort
#

Infer the sort of another sort. If we can compute the bigger sort straight away, return that. Otherwise, return UnivSort s and add a constraint to ensure we can compute the sort eventually.

valueinferPiSort
  1. :: (PureTCM m, MonadConstraint m)
  2. => Dom Type

    Domain of the Pi type.

  3. -> Abs Sort

    (Dependent) sort of the codomain of the Pi type.

  4. -> m Sort

    Sort of the Pi type.

#

Infer the sort of a Pi type. If we can compute the sort straight away, return that. Otherwise, return a PiSort and add a constraint to ensure we can compute the sort eventually.

valuecheckTelePiSort :: Type -> TCM ()
#

Recursively check that an iterated function type constructed by telePi is well-sorted.