Agda-2.6.4: A dependently typed functional programming language and proof assistant
Safe HaskellSafe-Inferred
LanguageHaskell2010

Agda.Interaction.MakeCase

Synopsis

Documentation

parseVariables Source #

Arguments

:: QName

The function name.

-> Context

The context of the RHS of the clause we are splitting.

-> [AsBinding]

The as-bindings of the clause we are splitting

-> InteractionId

The hole of this function we are working on.

-> Range

The range of this hole.

-> [String]

The words the user entered in this hole (variable names).

-> TCM [(Int, NameInScope)]

The computed de Bruijn indices of the variables to split on, with information about whether each variable is in scope.

Parse variables (visible or hidden), returning their de Bruijn indices. Used in makeCase.

type ClauseZipper = ([Clause], Clause, [Clause]) Source #

Lookup the clause for an interaction point in the signature. Returns the CaseContext, the previous clauses, the clause itself, and a list of the remaining ones.

makeCase :: InteractionId -> Range -> String -> TCM (QName, CaseContext, [Clause]) Source #

Entry point for case splitting tactic.

makePatternVarsVisible :: [Nat] -> SplitClause -> SplitClause Source #

Make the given pattern variables visible by marking their origin as CaseSplit and pattern origin as PatOSplit in the SplitClause.

makeRHSEmptyRecord :: RHS -> RHS Source #

If a copattern split yields no clauses, we must be at an empty record type. In this case, replace the rhs by record{}

makeAbsurdClause :: QName -> ExpandedEllipsis -> SplitClause -> TCM Clause Source #

Make clause with no rhs (because of absurd match).

makeAbstractClause :: QName -> RHS -> ExpandedEllipsis -> SplitClause -> TCM Clause Source #

Make a clause with a question mark as rhs.