Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Match a
- match :: (MonadReduce m, HasConstInfo m, HasBuiltins m) => [Clause] -> [NamedArg SplitPattern] -> m (Match (Nat, [SplitAssignment]))
- type SplitPattern = Pattern' SplitPatVar
- data SplitPatVar = SplitPatVar {}
- fromSplitPatterns :: [NamedArg SplitPattern] -> [NamedArg DeBruijnPattern]
- toSplitPatterns :: [NamedArg DeBruijnPattern] -> [NamedArg SplitPattern]
- toSplitPSubst :: PatternSubstitution -> SplitPSubstitution
- applySplitPSubst :: Subst Term a => SplitPSubstitution -> a -> a
- isTrivialPattern :: HasConstInfo m => Pattern' a -> m Bool
- data BlockingVar = BlockingVar {}
- type BlockingVars = [BlockingVar]
- data BlockedOnResult
- setBlockingVarOverlap :: BlockingVar -> BlockingVar
- data ApplyOrIApply
Documentation
If matching is inconclusive (Block
) we want to know which
variables or projections are blocking the match.
Yes a | Matches unconditionally. |
No | Definitely does not match. |
Block | |
|
match :: (MonadReduce m, HasConstInfo m, HasBuiltins m) => [Clause] -> [NamedArg SplitPattern] -> m (Match (Nat, [SplitAssignment])) Source #
Match the given patterns against a list of clauses
type SplitPattern = Pattern' SplitPatVar Source #
data SplitPatVar Source #
For each variable in the patterns of a split clause, we remember the de Bruijn-index and the literals excluded by previous matches.
Instances
Show SplitPatVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match showsPrec :: Int -> SplitPatVar -> ShowS # show :: SplitPatVar -> String # showList :: [SplitPatVar] -> ShowS # | |
Pretty SplitPatVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match pretty :: SplitPatVar -> Doc Source # prettyPrec :: Int -> SplitPatVar -> Doc Source # prettyList :: [SplitPatVar] -> Doc Source # | |
DeBruijn SplitPattern Source # | |
Defined in Agda.TypeChecking.Coverage.Match deBruijnVar :: Int -> SplitPattern Source # debruijnNamedVar :: String -> Int -> SplitPattern Source # deBruijnView :: SplitPattern -> Maybe Int Source # | |
DeBruijn SplitPatVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match deBruijnVar :: Int -> SplitPatVar Source # debruijnNamedVar :: String -> Int -> SplitPatVar Source # deBruijnView :: SplitPatVar -> Maybe Int Source # | |
PrettyTCM SplitPatVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match | |
Subst SplitPattern SplitPattern Source # | |
Defined in Agda.TypeChecking.Coverage.Match |
toSplitPSubst :: PatternSubstitution -> SplitPSubstitution Source #
applySplitPSubst :: Subst Term a => SplitPSubstitution -> a -> a Source #
isTrivialPattern :: HasConstInfo m => Pattern' a -> m Bool Source #
A pattern that matches anything (modulo eta).
data BlockingVar Source #
Variable blocking a match.
BlockingVar | |
|
Instances
Show BlockingVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match showsPrec :: Int -> BlockingVar -> ShowS # show :: BlockingVar -> String # showList :: [BlockingVar] -> ShowS # | |
Pretty BlockingVar Source # | |
Defined in Agda.TypeChecking.Coverage.Match pretty :: BlockingVar -> Doc Source # prettyPrec :: Int -> BlockingVar -> Doc Source # prettyList :: [BlockingVar] -> Doc Source # |
type BlockingVars = [BlockingVar] Source #
data BlockedOnResult Source #
BlockedOnProj | Blocked on unsplit projection |
| |
BlockedOnApply | Blocked on unintroduced argument |
| |
NotBlockedOnResult |