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

Safe HaskellNone
LanguageHaskell2010

Agda.TypeChecking.Reduce

Contents

Synopsis

Documentation

instantiate :: Instantiate a => a -> TCM a #

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

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

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

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

isFullyInstantiatedMeta :: MetaId -> TCM Bool #

Meaning no metas left in the instantiation.

class Instantiate t where #

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 #

Instances
Instantiate EqualityView # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate LevelAtom # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate PlusLevel # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Level # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Sort # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Telescope # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Type # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Elim # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Term # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Candidate # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate Constraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Instantiate t => Instantiate [t] # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Blocked a -> ReduceM (Blocked a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiate' :: Closure a -> ReduceM (Closure a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

Reduction to weak head normal form.

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

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.

isBlocked :: MonadTCM tcm => Term -> tcm (Maybe MetaId) #

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

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

class Reduce t where #

Methods

reduce' :: t -> ReduceM t #

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

Instances
Reduce EqualityView # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce LevelAtom # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce PlusLevel # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Level # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Sort # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Telescope # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Type # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Elim # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Term # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Candidate # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce Constraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Reduce t => Reduce [t] # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

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

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

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

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

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

Reduce simple (single clause) definitions.

unfoldInlined :: Term -> TCM Term #

Unfold a single inlined function.

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

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) #

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) #

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

Simplification

class Simplify t where #

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 #

Instances
Simplify Bool # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Bool -> ReduceM Bool #

Simplify EqualityView # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify LevelAtom # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify PlusLevel # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Level # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Sort # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Sort -> ReduceM Sort #

Simplify Type # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Type -> ReduceM Type #

Simplify Elim # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Elim -> ReduceM Elim #

Simplify Term # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Term -> ReduceM Term #

Simplify Candidate # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify DisplayForm # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify Constraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify ProblemConstraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Simplify t => Simplify [t] # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

simplify' :: Closure a -> ReduceM (Closure a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

Normalisation

class Normalise t where #

Minimal complete definition

normalise'

Methods

normalise' :: t -> ReduceM t #

Instances
Normalise Bool # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Char # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Int # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Int -> ReduceM Int #

Normalise EqualityView # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise ConPatternInfo # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise DBPatVar # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise LevelAtom # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise PlusLevel # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Level # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Sort # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Type # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Elim # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Term # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Candidate # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise DisplayForm # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise Constraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise ProblemConstraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

Normalise t => Normalise [t] # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Pattern' a -> ReduceM (Pattern' a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

normalise' :: Closure a -> ReduceM (Closure a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

Full instantiation

class InstantiateFull t where #

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

Minimal complete definition

instantiateFull'

Methods

instantiateFull' :: t -> ReduceM t #

Instances
InstantiateFull Bool # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Char # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Int # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ModuleName # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull QName # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Name # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Scope # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull EqualityView # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Substitution # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ConPatternInfo # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DBPatVar # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Clause # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull LevelAtom # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull PlusLevel # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Level # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Sort # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Term # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ConHead # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull CompiledClauses # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Candidate # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull FunctionInverse # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Defn # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Definition # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull RewriteRule # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull NLPType # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull NLPat # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DisplayTerm # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull DisplayForm # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Section # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Signature # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Constraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull ProblemConstraint # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull Interface # 
Instance details

Defined in Agda.TypeChecking.Reduce

InstantiateFull AsBinding # 
Instance details

Defined in Agda.TypeChecking.Rules.LHS.Problem

InstantiateFull LHSResult # 
Instance details

Defined in Agda.TypeChecking.Rules.LHS

InstantiateFull t => InstantiateFull [t] # 
Instance details

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Maybe a -> ReduceM (Maybe a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Tele a -> ReduceM (Tele a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Type' a -> ReduceM (Type' a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Elim' a -> ReduceM (Elim' a) #

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Case a -> ReduceM (Case a) #

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

Defined in Agda.TypeChecking.Reduce

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

Defined in Agda.TypeChecking.Reduce

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: Open a -> ReduceM (Open a) #

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

Defined in Agda.TypeChecking.Reduce

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

instantiateFull' :: HashMap k e -> ReduceM (HashMap k e) #

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

Defined in Agda.TypeChecking.Reduce

Methods

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

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

Defined in Agda.TypeChecking.Reduce

Methods

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