Safe Haskell | None |
---|---|
Language | Haskell98 |
Agda.TypeChecking.Rules.LHS.Unify
- type UnificationResult = UnificationResult' (Telescope, PatternSubstitution)
- data UnificationResult' a
- unifyIndices :: MonadTCM tcm => Telescope -> FlexibleVars -> Type -> Args -> Args -> tcm UnificationResult
- unifyIndices_ :: MonadTCM tcm => Telescope -> FlexibleVars -> Type -> Args -> Args -> tcm (Telescope, PatternSubstitution)
Documentation
type UnificationResult = UnificationResult' (Telescope, PatternSubstitution) Source #
Result of unifyIndices
.
data UnificationResult' a Source #
Constructors
Unifies a | Unification succeeded. |
NoUnify TCErr | Terms are not unifiable. |
DontKnow TCErr | Some other error happened, unification got stuck. |
Instances
unifyIndices :: MonadTCM tcm => Telescope -> FlexibleVars -> Type -> Args -> Args -> tcm UnificationResult Source #
unifyIndices_ :: MonadTCM tcm => Telescope -> FlexibleVars -> Type -> Args -> Args -> tcm (Telescope, PatternSubstitution) Source #
Unify indices.
In unifyIndices_ flex a us vs
,
a
is the type eliminated by us
and vs
(usally the type of a constructor),
need not be reduced,
us
and vs
are the argument lists to unify,
flex
is the set of flexible (instantiable) variabes in us
and vs
.
The result is the most general unifier of us
and vs
.