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

Agda.TypeChecking.Rules.LHS.Unify

Synopsis

Documentation

data Equality Source

Constructors

Equal Type Term Term 

Instances

data UnifyState Source

Constructors

USt 

Fields

uniSub :: Sub
 
uniConstr :: [Equality]
 

onSub :: (Sub -> a) -> Unify aSource

occursCheck :: Nat -> Term -> Type -> Unify ()Source

Includes flexible occurrences, metas need to be solved. TODO: relax? TODO: later solutions may remove flexible occurences

ureduce :: Term -> Unify TermSource

Apply the current substitution on a term and reduce to weak head normal form.

flattenSubstitution :: Substitution -> SubstitutionSource

Take a substitution  and ensure that no variables from the domain appear in the targets. The context of the targets is not changed. TODO: can this be expressed using makeSubstitution and substs?

unifyIndices_ :: MonadTCM tcm => FlexibleVars -> Type -> [Arg Term] -> [Arg Term] -> tcm SubstitutionSource

Unify indices.

dataOrRecordTypeSource

Arguments

:: MonadTCM tcm 
=> QName

Constructor name.

-> Type 
-> tcm Type 

Given the type of a constructor application the corresponding data or record type, applied to its parameters (extracted from the given type), is returned.

Precondition: The type has to correspond to an application of the given constructor.