Check whether something can be used in a position of the given relevance.
This is a substitute for double-checking that only makes sure relevances are correct. See issue #2640.
Used in unifier ( unifyStep Solution{}).
At the moment, this implements McBride-style irrelevance, where Pfenning-style would be the most accurate thing. However, these two notions only differ how they handle bound variables in a term. Here, we are only concerned in the free variables, used meta-variables, and used (irrelevant) definitions.
Methods
usableRel :: (ReadTCState m, HasConstInfo m, MonadTCEnv m, MonadAddContext m, MonadDebug m) => Relevance -> a -> m Bool
Instances12UsableRelevance, …
UsableRelevance LevelDefined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance PlusLevelDefined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance SortDefined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance TermDefined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance a => UsableRelevance (Arg a)Defined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance a => UsableRelevance (Dom a)Defined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance a => UsableRelevance (Type' a)Defined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance a => UsableRelevance (Elim' a)Defined in Agda-2.7.0.1 · Agda.TypeChecking.IrrelevanceUsableRelevance a => UsableRelevance [a]Defined in Agda-2.7.0.1 · Agda.TypeChecking.Irrelevance(Subst a, UsableRelevance a) => UsableRelevance (Abs a)Defined in Agda-2.7.0.1 · Agda.TypeChecking.Irrelevance(UsableRelevance a, UsableRelevance b) => UsableRelevance (a, b)Defined in Agda-2.7.0.1 · Agda.TypeChecking.Irrelevance(UsableRelevance a, UsableRelevance b, UsableRelevance c) => UsableRelevance (a, b, c)Defined in Agda-2.7.0.1 · Agda.TypeChecking.Irrelevance