An entry for the persistent environment extension for declared type classes
- name : Name
Class name.
Positions of universe level parameters that only appear in output parameter types. For example, for
HAdd (α : Type u) (β : Type v) (γ : outParam (Type w)),outLevelParams := #[2]since universewonly appears in the output parameterγ. This is used to normalize TC resolution cache keys.
Instances For
Switch the state into persistent mode. We switch to this mode after
we read all imported .olean files.
Recall that we use a SMap for implementing the state of the type class environment extension.
Instances For
Type class environment extension
Return true if n is the name of type class in the given environment.
Instances For
If declName is a class, return the position of its outParams.
Instances For
Return true if the given declName is a type class with output parameters.
Instances For
If declName is a class, return the positions of universe level parameters that only appear in output parameter types.
Instances For
Mark outParams in type as implicit. Note that it also marks instance implicit arguments that depend on outParams as implicit.
Remark: this function consumes the outParam annotations.
This function uses the same logic used as checkOutParam.
See issue #1901
Instances For
Add a new type class with the given name to the environment.
declName must not be the name of an existing type class,
and it must be the name of constant in env.
declName must be a inductive datatype or axiom.
Recall that all structures are inductive datatypes.