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

Safe HaskellNone
LanguageHaskell2010

Agda.TypeChecking.Reduce

Contents

Synopsis

Documentation

reduce :: Reduce a => a -> TCM a Source #

reduceB :: Reduce a => a -> TCM (Blocked a) Source #

normalise :: Normalise a => a -> TCM a Source #

simplify :: Simplify a => a -> TCM a Source #

isFullyInstantiatedMeta :: MetaId -> TCM Bool Source #

Meaning no metas left in the instantiation.

class Instantiate t where Source #

Instantiate something. Results in an open meta variable or a non meta. Doesn't do any reduction, and preserves blocking tags (when blocking meta is uninstantiated).

Minimal complete definition

instantiate'

Methods

instantiate' :: t -> ReduceM t Source #

Instances
Instantiate EqualityView Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate LevelAtom Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate PlusLevel Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Level Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Sort Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Telescope Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Type Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Elim Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Term Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Candidate Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Constraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate t => Instantiate [t] Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: [t] -> ReduceM [t] Source #

Instantiate t => Instantiate (Dom t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Dom t -> ReduceM (Dom t) Source #

Instantiate t => Instantiate (Arg t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Arg t -> ReduceM (Arg t) Source #

Instantiate a => Instantiate (Blocked a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate t => Instantiate (Abs t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Abs t -> ReduceM (Abs t) Source #

Instantiate a => Instantiate (Closure a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Instantiate a, Instantiate b) => Instantiate (a, b) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: (a, b) -> ReduceM (a, b) Source #

Instantiate e => Instantiate (Map k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Map k e -> ReduceM (Map k e) Source #

(Instantiate a, Instantiate b, Instantiate c) => Instantiate (a, b, c) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: (a, b, c) -> ReduceM (a, b, c) Source #

Reduction to weak head normal form.

ifBlocked :: MonadTCM tcm => Term -> (MetaId -> Term -> tcm a) -> (NotBlocked -> Term -> tcm a) -> tcm a Source #

Case on whether a term is blocked on a meta (or is a meta). That means it can change its shape when the meta is instantiated.

ifBlockedType :: MonadTCM tcm => Type -> (MetaId -> Type -> tcm a) -> (NotBlocked -> Type -> tcm a) -> tcm a Source #

Case on whether a type is blocked on a meta (or is a meta).

class Reduce t where Source #

Methods

reduce' :: t -> ReduceM t Source #

reduceB' :: t -> ReduceM (Blocked t) Source #

Instances
Reduce EqualityView Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce LevelAtom Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce PlusLevel Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Level Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Sort Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Telescope Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Type Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Elim Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Term Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Candidate Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Constraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce t => Reduce [t] Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: [t] -> ReduceM [t] Source #

reduceB' :: [t] -> ReduceM (Blocked [t]) Source #

Reduce t => Reduce (Dom t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: Dom t -> ReduceM (Dom t) Source #

reduceB' :: Dom t -> ReduceM (Blocked (Dom t)) Source #

Reduce t => Reduce (Arg t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: Arg t -> ReduceM (Arg t) Source #

reduceB' :: Arg t -> ReduceM (Blocked (Arg t)) Source #

(Subst t a, Reduce a) => Reduce (Abs a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: Abs a -> ReduceM (Abs a) Source #

reduceB' :: Abs a -> ReduceM (Blocked (Abs a)) Source #

Reduce a => Reduce (Closure a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Reduce a, Reduce b) => Reduce (a, b) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: (a, b) -> ReduceM (a, b) Source #

reduceB' :: (a, b) -> ReduceM (Blocked (a, b)) Source #

Reduce e => Reduce (Map k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: Map k e -> ReduceM (Map k e) Source #

reduceB' :: Map k e -> ReduceM (Blocked (Map k e)) Source #

(Reduce a, Reduce b, Reduce c) => Reduce (a, b, c) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

reduce' :: (a, b, c) -> ReduceM (a, b, c) Source #

reduceB' :: (a, b, c) -> ReduceM (Blocked (a, b, c)) Source #

unfoldDefinition :: Bool -> (Term -> ReduceM (Blocked Term)) -> Term -> QName -> Args -> ReduceM (Blocked Term) Source #

If the first argument is True, then a single delayed clause may be unfolded.

reduceDefCopy :: QName -> Elims -> TCM (Reduced () Term) Source #

Reduce a non-primitive definition if it is a copy linking to another def.

reduceHead :: Term -> TCM (Blocked Term) Source #

Reduce simple (single clause) definitions.

unfoldInlined :: Term -> TCM Term Source #

Unfold a single inlined function.

appDef_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term) Source #

Apply a definition using the compiled clauses, or fall back to ordinary clauses if no compiled clauses exist.

appDef :: Term -> CompiledClauses -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term) Source #

Apply a defined function to it's arguments, using the compiled clauses. The original term is the first argument applied to the third.

appDef' :: Term -> [Clause] -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term) Source #

Apply a defined function to it's arguments, using the original clauses.

Simplification

class Simplify t where Source #

Only unfold definitions if this leads to simplification which means that a constructor/literal pattern is matched.

Minimal complete definition

simplify'

Methods

simplify' :: t -> ReduceM t Source #

Instances
Simplify Bool Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify EqualityView Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify LevelAtom Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify PlusLevel Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Level Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Sort Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Type Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Elim Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Term Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Candidate Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify DisplayForm Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Constraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify ProblemConstraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify t => Simplify [t] Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: [t] -> ReduceM [t] Source #

Simplify a => Simplify (Maybe a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Maybe a -> ReduceM (Maybe a) Source #

Simplify t => Simplify (Dom t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Dom t -> ReduceM (Dom t) Source #

Simplify t => Simplify (Arg t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Arg t -> ReduceM (Arg t) Source #

(Subst t a, Simplify a) => Simplify (Tele a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Tele a -> ReduceM (Tele a) Source #

(Subst t a, Simplify a) => Simplify (Abs a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Abs a -> ReduceM (Abs a) Source #

Simplify a => Simplify (Closure a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Simplify a, Simplify b) => Simplify (a, b) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: (a, b) -> ReduceM (a, b) Source #

Simplify e => Simplify (Map k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Map k e -> ReduceM (Map k e) Source #

Simplify t => Simplify (Named name t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Named name t -> ReduceM (Named name t) Source #

(Simplify a, Simplify b, Simplify c) => Simplify (a, b, c) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: (a, b, c) -> ReduceM (a, b, c) Source #

Normalisation

class Normalise t where Source #

Minimal complete definition

normalise'

Methods

normalise' :: t -> ReduceM t Source #

Instances
Normalise Bool Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Char Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Int Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise EqualityView Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise ConPatternInfo Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise DBPatVar Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise LevelAtom Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise PlusLevel Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Level Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Sort Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Type Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Elim Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Term Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Candidate Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise DisplayForm Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Constraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise ProblemConstraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise t => Normalise [t] Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: [t] -> ReduceM [t] Source #

Normalise a => Normalise (Maybe a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Maybe a -> ReduceM (Maybe a) Source #

Normalise t => Normalise (Dom t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Dom t -> ReduceM (Dom t) Source #

Normalise t => Normalise (Arg t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Arg t -> ReduceM (Arg t) Source #

Normalise a => Normalise (Pattern' a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Subst t a, Normalise a) => Normalise (Tele a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Tele a -> ReduceM (Tele a) Source #

(Subst t a, Normalise a) => Normalise (Abs a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Abs a -> ReduceM (Abs a) Source #

Normalise a => Normalise (Closure a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Normalise a, Normalise b) => Normalise (a, b) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: (a, b) -> ReduceM (a, b) Source #

Normalise e => Normalise (Map k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Map k e -> ReduceM (Map k e) Source #

Normalise t => Normalise (Named name t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Named name t -> ReduceM (Named name t) Source #

(Normalise a, Normalise b, Normalise c) => Normalise (a, b, c) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: (a, b, c) -> ReduceM (a, b, c) Source #

Full instantiation

class InstantiateFull t where Source #

instantiateFull' instantiates metas everywhere (and recursively) but does not reduce.

Minimal complete definition

instantiateFull'

Methods

instantiateFull' :: t -> ReduceM t Source #

Instances
InstantiateFull Bool Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Char Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Int Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ModuleName Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull QName Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Name Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Scope Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull EqualityView Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Substitution Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ConPatternInfo Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DBPatVar Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Clause Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull LevelAtom Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull PlusLevel Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Level Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Sort Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Term Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ConHead Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull CompiledClauses Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Candidate Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull FunctionInverse Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Defn Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Definition Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull RewriteRule Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull NLPType Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull NLPat Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DisplayTerm Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DisplayForm Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Section Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Signature Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Constraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ProblemConstraint Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Interface Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull AsBinding Source # 
Instance details

Defined in Agda.TypeChecking.Rules.LHS.Problem

InstantiateFull LHSResult Source # 
Instance details

Defined in Agda.TypeChecking.Rules.LHS

InstantiateFull t => InstantiateFull [t] Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: [t] -> ReduceM [t] Source #

InstantiateFull a => InstantiateFull (Maybe a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull t => InstantiateFull (Dom t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Dom t -> ReduceM (Dom t) Source #

InstantiateFull t => InstantiateFull (Arg t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Arg t -> ReduceM (Arg t) Source #

InstantiateFull a => InstantiateFull (Pattern' a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Subst t a, InstantiateFull a) => InstantiateFull (Tele a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (Type' a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(Subst t a, InstantiateFull a) => InstantiateFull (Abs a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Abs a -> ReduceM (Abs a) Source #

InstantiateFull a => InstantiateFull (Elim' a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (Case a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (WithArity a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (Builtin a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (Open a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull a => InstantiateFull (Closure a) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

(InstantiateFull a, InstantiateFull b) => InstantiateFull (a, b) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: (a, b) -> ReduceM (a, b) Source #

InstantiateFull e => InstantiateFull (Map k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Map k e -> ReduceM (Map k e) Source #

InstantiateFull e => InstantiateFull (HashMap k e) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull t => InstantiateFull (Named name t) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Named name t -> ReduceM (Named name t) Source #

(InstantiateFull a, InstantiateFull b, InstantiateFull c) => InstantiateFull (a, b, c) Source # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: (a, b, c) -> ReduceM (a, b, c) Source #