Safe Haskell | None |
---|---|
Language | Haskell2010 |
Agda.TypeChecking.Substitute
Contents
Description
This module contains the definition of hereditary substitution and application operating on internal syntax which is in β-normal form (β including projection reductions).
Further, it contains auxiliary functions which rely on substitution but not on reduction.
Synopsis
- pattern LargeSort :: Univ -> Integer -> SizeOfSort
- pattern SmallSort :: Univ -> SizeOfSort
- absV :: Dom a -> ArgName -> TelV a -> TelV a
- abstractArgs :: Abstract a => Args -> a -> a
- applyNLPatSubst :: TermSubst a => Substitution' NLPat -> a -> a
- applyNLSubstToDom :: SubstWith NLPat a => Substitution' NLPat -> Dom a -> Dom a
- applyPatSubst :: TermSubst a => PatternSubstitution -> a -> a
- applySubstTerm :: (Coercible t Term, EndoSubst t, Apply t) => Substitution' t -> t -> t
- applyTermE :: (Coercible Term t, Apply t, EndoSubst t) => (Empty -> Term -> Elims -> Term) -> t -> Elims -> t
- argToDontCare :: Arg Term -> Term
- bindsToTel :: [Name] -> Dom Type -> ListTel
- bindsToTel' :: (Name -> a) -> [Name] -> Dom Type -> ListTel' a
- bindsToTel'1 :: (Name -> a) -> List1 Name -> Dom Type -> ListTel' a
- bindsToTel1 :: List1 Name -> Dom Type -> ListTel
- canProject :: QName -> Term -> Maybe (Arg Term)
- compiledClauseBody :: Clause -> Maybe Term
- conApp :: (Coercible t Term, Apply t) => (Empty -> Term -> Elims -> Term) -> ConHead -> ConInfo -> Elims -> Elims -> Term
- defApp :: QName -> Elims -> Elims -> Term
- domFromNamedArgName :: NamedArg Name -> Dom ()
- fromPatternSubstitution :: PatternSubstitution -> Substitution
- funSort :: Sort -> Sort -> Sort
- funSort' :: Sort -> Sort -> Either Blocker Sort
- isSmallSort :: Sort -> Bool
- lamView :: Term -> ([Arg ArgName], Term)
- levelLub :: Level -> Level -> Level
- levelMax :: Integer -> [PlusLevel] -> Level
- levelTm :: Level -> Term
- mkLam :: Arg ArgName -> Term -> Term
- mkPi :: Dom (ArgName, Type) -> Type -> Type
- mkPiSort :: Dom Type -> Abs Type -> Sort
- namedBindsToTel :: [NamedArg Name] -> Type -> Telescope
- namedBindsToTel1 :: List1 (NamedArg Name) -> Type -> Telescope
- namedTelVars :: Int -> Telescope -> [NamedArg DeBruijnPattern]
- piApply :: Type -> Args -> Type
- piSort :: Dom Term -> Sort -> Abs Sort -> Sort
- piSort' :: Dom Term -> Sort -> Abs Sort -> Either Blocker Sort
- projDropParsApply :: Projection -> ProjOrigin -> Relevance -> Args -> Term
- relToDontCare :: LensRelevance a => a -> Term -> Term
- renameP :: Subst a => Impossible -> Permutation -> a -> a
- renaming :: DeBruijn a => Impossible -> Permutation -> Substitution' a
- renamingR :: DeBruijn a => Permutation -> Substitution' a
- sizeOfSort :: Sort -> Either Blocker SizeOfSort
- sort :: Sort -> Type
- ssort :: Level -> Type
- telVars :: Int -> Telescope -> [Arg DeBruijnPattern]
- telView' :: Type -> TelView
- telView'UpTo :: Int -> Type -> TelView
- teleLam :: Telescope -> Term -> Term
- telePi :: Telescope -> Type -> Type
- telePi' :: (Abs Type -> Abs Type) -> Telescope -> Type -> Type
- telePiVisible :: Telescope -> Type -> Type
- telePi_ :: Telescope -> Type -> Type
- typeArgsWithTel :: Telescope -> [Term] -> Maybe [Dom Type]
- univSort :: Sort -> Sort
- univSort' :: Sort -> Either Blocker Sort
- unlamView :: [Arg ArgName] -> Term -> Term
- usePatOrigin :: PatOrigin -> Pattern' a -> Pattern' a
- usePatternInfo :: PatternInfo -> Pattern' a -> Pattern' a
- data SizeOfSort = SizeOfSort {
- szSortUniv :: Univ
- szSortSize :: Integer
- data TelV a = TelV {}
- type TelView = TelV Type
- class TeleNoAbs a where
- module Agda.TypeChecking.Substitute.Class
- module Agda.TypeChecking.Substitute.DeBruijn
- data Substitution' a
- = IdS
- | EmptyS Impossible
- | a :# (Substitution' a)
- | Strengthen Impossible !Int (Substitution' a)
- | Wk !Int (Substitution' a)
- | Lift !Int (Substitution' a)
- type Substitution = Substitution' Term
Documentation
pattern SmallSort :: Univ -> SizeOfSort Source #
absV :: Dom a -> ArgName -> TelV a -> TelV a Source #
Add given binding to the front of the telescope.
abstractArgs :: Abstract a => Args -> a -> a Source #
applyNLPatSubst :: TermSubst a => Substitution' NLPat -> a -> a Source #
applyNLSubstToDom :: SubstWith NLPat a => Substitution' NLPat -> Dom a -> Dom a Source #
applyPatSubst :: TermSubst a => PatternSubstitution -> a -> a Source #
applySubstTerm :: (Coercible t Term, EndoSubst t, Apply t) => Substitution' t -> t -> t Source #
applyTermE :: (Coercible Term t, Apply t, EndoSubst t) => (Empty -> Term -> Elims -> Term) -> t -> Elims -> t Source #
Apply Elims
while using the given function to report ill-typed
redexes.
Recursive calls for applyE
and applySubst
happen at type t
to
propagate the same strategy to subtrees.
bindsToTel' :: (Name -> a) -> [Name] -> Dom Type -> ListTel' a Source #
Turn a typed binding (x1 .. xn : A)
into a telescope.
canProject :: QName -> Term -> Maybe (Arg Term) Source #
If v
is a record or constructed value, canProject f v
returns its field f
.
compiledClauseBody :: Clause -> Maybe Term Source #
In compiled clauses, the variables in the clause body are relative to the pattern variables (including dot patterns) instead of the clause telescope.
conApp :: (Coercible t Term, Apply t) => (Empty -> Term -> Elims -> Term) -> ConHead -> ConInfo -> Elims -> Elims -> Term Source #
Eliminate a constructed term.
defApp :: QName -> Elims -> Elims -> Term Source #
defApp f us vs
applies Def f us
to further arguments vs
,
eliminating top projection redexes.
If us
is not empty, we cannot have a projection redex, since
the record argument is the first one.
funSort' :: Sort -> Sort -> Either Blocker Sort Source #
Compute the sort of a function type from the sorts of its domain and codomain.
This function should only be called on reduced sorts,
since the LevelUniv
rules should only apply when the sort does not reduce to Set
.
isSmallSort :: Sort -> Bool Source #
levelLub :: Level -> Level -> Level Source #
Given two levels a
and b
, compute a ⊔ b
and return its
canonical form.
namedBindsToTel :: [NamedArg Name] -> Type -> Telescope Source #
Turn a typed binding (x1 .. xn : A)
into a telescope.
namedTelVars :: Int -> Telescope -> [NamedArg DeBruijnPattern] Source #
piApply :: Type -> Args -> Type Source #
(x:A)->B(x) piApply
[u] = B(u)
Precondition: The type must contain the right number of pis without having to perform any reduction.
piApply
is potentially unsafe, the monadic piApplyM
is preferable.
piSort' :: Dom Term -> Sort -> Abs Sort -> Either Blocker Sort Source #
Compute the sort of a pi type from the sorts of its domain
and codomain.
This function should only be called on reduced sorts, since the LevelUniv
rules should only apply when the sort doesn't reduce to Set
projDropParsApply :: Projection -> ProjOrigin -> Relevance -> Args -> Term Source #
projDropParsApply proj o args =projDropPars
proj o `apply'
args
This function is an optimization, saving us from construction lambdas we immediately remove through application.
relToDontCare :: LensRelevance a => a -> Term -> Term Source #
renameP :: Subst a => Impossible -> Permutation -> a -> a Source #
The permutation should permute the corresponding context. (right-to-left list)
renaming :: DeBruijn a => Impossible -> Permutation -> Substitution' a Source #
If permute π : [a]Γ -> [a]Δ
, then applySubst (renaming _ π) : Term Γ -> Term Δ
renamingR :: DeBruijn a => Permutation -> Substitution' a Source #
If permute π : [a]Γ -> [a]Δ
, then applySubst (renamingR π) : Term Δ -> Term Γ
sizeOfSort :: Sort -> Either Blocker SizeOfSort Source #
Returns Left blocker
for unknown (blocked) sorts, and otherwise
returns Right s
where s
indicates the size and fibrancy.
telView' :: Type -> TelView Source #
Takes off all exposed function domains from the given type.
This means that it does not reduce to expose Pi
-types.
telView'UpTo :: Int -> Type -> TelView Source #
telView'UpTo n t
takes off the first n
exposed function types of t
.
Takes off all (exposed ones) if n < 0
.
telePi :: Telescope -> Type -> Type Source #
Uses free variable analysis to introduce NoAbs
bindings.
telePiVisible :: Telescope -> Type -> Type Source #
Only abstract the visible components of the telescope,
and all that bind variables. Everything will be an Abs
!
Caution: quadratic time!
typeArgsWithTel :: Telescope -> [Term] -> Maybe [Dom Type] Source #
Given arguments vs : tel
(vector typing), extract their individual types.
Returns Nothing
is tel
is not long enough.
univSort' :: Sort -> Either Blocker Sort Source #
univSort' univInf s
gets the next higher sort of s
, if it is
known (i.e. it is not just UnivSort s
).
Precondition: s
is reduced
usePatternInfo :: PatternInfo -> Pattern' a -> Pattern' a Source #
data SizeOfSort Source #
A sort can either be small (Set l, Prop l, Size, ...) or large (Setω n).
Constructors
SizeOfSort | |
Fields
|
data Substitution' a Source #
Substitutions.
Constructors
IdS | Identity substitution.
|
EmptyS Impossible | Empty substitution, lifts from the empty context. First argument is |
a :# (Substitution' a) infixr 4 | Substitution extension, ` |
Strengthen Impossible !Int (Substitution' a) | Strengthening substitution. First argument is |
Wk !Int (Substitution' a) | Weakening substitution, lifts to an extended context.
|
Lift !Int (Substitution' a) | Lifting substitution. Use this to go under a binder.
|
Instances
type Substitution = Substitution' Term Source #
Orphan instances
Abstract Clause Source # | |||||
Abstract Sort Source # | |||||
Abstract Telescope Source # | |||||
Abstract Term Source # | |||||
Abstract Type Source # | |||||
Abstract CompiledClauses Source # | |||||
Methods abstract :: Telescope -> CompiledClauses -> CompiledClauses Source # | |||||
Abstract Definition Source # | |||||
Methods abstract :: Telescope -> Definition -> Definition Source # | |||||
Abstract Defn Source # | |||||
Abstract FunctionInverse Source # | |||||
Methods abstract :: Telescope -> FunctionInverse -> FunctionInverse Source # | |||||
Abstract NumGeneralizableArgs Source # | |||||
Methods abstract :: Telescope -> NumGeneralizableArgs -> NumGeneralizableArgs Source # | |||||
Abstract PrimFun Source # | |||||
Abstract ProjLams Source # | |||||
Abstract Projection Source # | |||||
Methods abstract :: Telescope -> Projection -> Projection Source # | |||||
Abstract RewriteRule Source # |
| ||||
Methods abstract :: Telescope -> RewriteRule -> RewriteRule Source # | |||||
Abstract System Source # | |||||
Abstract Permutation Source # | |||||
Methods abstract :: Telescope -> Permutation -> Permutation Source # | |||||
Apply BraveTerm Source # | |||||
Apply Clause Source # | |||||
Apply Sort Source # | |||||
Apply Term Source # | |||||
Apply CompiledClauses Source # | |||||
Methods apply :: CompiledClauses -> Args -> CompiledClauses Source # applyE :: CompiledClauses -> Elims -> CompiledClauses Source # | |||||
Apply Definition Source # | |||||
Methods apply :: Definition -> Args -> Definition Source # applyE :: Definition -> Elims -> Definition Source # | |||||
Apply Defn Source # | |||||
Apply DisplayTerm Source # | |||||
Methods apply :: DisplayTerm -> Args -> DisplayTerm Source # applyE :: DisplayTerm -> Elims -> DisplayTerm Source # | |||||
Apply ExtLamInfo Source # | |||||
Methods apply :: ExtLamInfo -> Args -> ExtLamInfo Source # applyE :: ExtLamInfo -> Elims -> ExtLamInfo Source # | |||||
Apply FunctionInverse Source # | |||||
Methods apply :: FunctionInverse -> Args -> FunctionInverse Source # applyE :: FunctionInverse -> Elims -> FunctionInverse Source # | |||||
Apply NumGeneralizableArgs Source # | |||||
Methods apply :: NumGeneralizableArgs -> Args -> NumGeneralizableArgs Source # applyE :: NumGeneralizableArgs -> Elims -> NumGeneralizableArgs Source # | |||||
Apply PrimFun Source # | |||||
Apply ProjLams Source # | |||||
Apply Projection Source # | |||||
Methods apply :: Projection -> Args -> Projection Source # applyE :: Projection -> Elims -> Projection Source # | |||||
Apply RewriteRule Source # | |||||
Methods apply :: RewriteRule -> Args -> RewriteRule Source # applyE :: RewriteRule -> Elims -> RewriteRule Source # | |||||
Apply System Source # | |||||
Apply Permutation Source # | |||||
Methods apply :: Permutation -> Args -> Permutation Source # applyE :: Permutation -> Elims -> Permutation Source # | |||||
Subst ProblemEq Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg ProblemEq) -> ProblemEq -> ProblemEq Source # | |||||
Subst Name Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Name) -> Name -> Name Source # | |||||
Subst BraveTerm Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg BraveTerm) -> BraveTerm -> BraveTerm Source # | |||||
Subst ConPatternInfo Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg ConPatternInfo) -> ConPatternInfo -> ConPatternInfo Source # | |||||
Subst DeBruijnPattern Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg DeBruijnPattern) -> DeBruijnPattern -> DeBruijnPattern Source # | |||||
Subst EqualityTypeData Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg EqualityTypeData) -> EqualityTypeData -> EqualityTypeData Source # | |||||
Subst EqualityView Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg EqualityView) -> EqualityView -> EqualityView Source # | |||||
Subst Pattern Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Pattern) -> Pattern -> Pattern Source # | |||||
Subst Term Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Term) -> Term -> Term Source # | |||||
Subst Range Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Range) -> Range -> Range Source # | |||||
Subst Candidate Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Candidate) -> Candidate -> Candidate Source # | |||||
Subst CompareAs Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg CompareAs) -> CompareAs -> CompareAs Source # | |||||
Subst Constraint Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg Constraint) -> Constraint -> Constraint Source # | |||||
Subst DisplayForm Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg DisplayForm) -> DisplayForm -> DisplayForm Source # | |||||
Subst DisplayTerm Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg DisplayTerm) -> DisplayTerm -> DisplayTerm Source # | |||||
Subst LetBinding Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg LetBinding) -> LetBinding -> LetBinding Source # | |||||
Subst NLPSort Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg NLPSort) -> NLPSort -> NLPSort Source # | |||||
Subst NLPType Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg NLPType) -> NLPType -> NLPType Source # | |||||
Subst NLPat Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg NLPat) -> NLPat -> NLPat Source # | |||||
Subst RewriteRule Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg RewriteRule) -> RewriteRule -> RewriteRule Source # | |||||
Subst ContextEntry Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg ContextEntry) -> ContextEntry -> ContextEntry Source # | |||||
Subst () Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg ()) -> () -> () Source # | |||||
DeBruijn BraveTerm Source # | |||||
DeBruijn NLPat Source # | |||||
Eq Level Source # | |||||
Eq NotBlocked Source # | |||||
Eq PlusLevel Source # | |||||
Eq Sort Source # | |||||
Eq Substitution Source # | |||||
Eq Term Source # | Syntactic | ||||
Eq Candidate Source # | |||||
Eq CandidateKind Source # | |||||
Methods (==) :: CandidateKind -> CandidateKind -> Bool # (/=) :: CandidateKind -> CandidateKind -> Bool # | |||||
Eq Section Source # | |||||
Ord Level Source # | |||||
Ord PlusLevel Source # | |||||
Ord Sort Source # | |||||
Ord Substitution Source # | |||||
Methods compare :: Substitution -> Substitution -> Ordering # (<) :: Substitution -> Substitution -> Bool # (<=) :: Substitution -> Substitution -> Bool # (>) :: Substitution -> Substitution -> Bool # (>=) :: Substitution -> Substitution -> Bool # max :: Substitution -> Substitution -> Substitution # min :: Substitution -> Substitution -> Substitution # | |||||
Ord Term Source # | |||||
Ord Candidate Source # | |||||
Ord CandidateKind Source # | |||||
Methods compare :: CandidateKind -> CandidateKind -> Ordering # (<) :: CandidateKind -> CandidateKind -> Bool # (<=) :: CandidateKind -> CandidateKind -> Bool # (>) :: CandidateKind -> CandidateKind -> Bool # (>=) :: CandidateKind -> CandidateKind -> Bool # max :: CandidateKind -> CandidateKind -> CandidateKind # min :: CandidateKind -> CandidateKind -> CandidateKind # | |||||
Abstract a => Abstract (Case a) Source # | |||||
Abstract a => Abstract (WithArity a) Source # | |||||
DoDrop a => Abstract (Drop a) Source # | |||||
Abstract t => Abstract (Maybe t) Source # | |||||
Abstract [Polarity] Source # | |||||
Abstract [Occurrence] Source # | |||||
Methods abstract :: Telescope -> [Occurrence] -> [Occurrence] Source # | |||||
Abstract t => Abstract [t] Source # | |||||
Apply t => Apply (Blocked t) Source # | |||||
TermSubst a => Apply (Tele a) Source # | |||||
Apply a => Apply (Case a) Source # | |||||
Apply a => Apply (WithArity a) Source # | |||||
DoDrop a => Apply (Drop a) Source # | |||||
Apply t => Apply (Maybe t) Source # | |||||
Apply t => Apply (Maybe t) Source # | |||||
Apply [NamedArg (Pattern' a)] Source # | Make sure we only drop variable patterns. | ||||
Apply [Polarity] Source # | |||||
Apply [Occurrence] Source # | |||||
Methods apply :: [Occurrence] -> Args -> [Occurrence] Source # applyE :: [Occurrence] -> Elims -> [Occurrence] Source # | |||||
Apply t => Apply [t] Source # | |||||
Subst a => Subst (Arg a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Arg a)) -> Arg a -> Arg a Source # | |||||
Subst a => Subst (WithHiding a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (WithHiding a)) -> WithHiding a -> WithHiding a Source # | |||||
Subst a => Subst (Abs a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Abs a)) -> Abs a -> Abs a Source # | |||||
Subst a => Subst (Blocked a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Blocked a)) -> Blocked a -> Blocked a Source # | |||||
Subst a => Subst (Level' a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Level' a)) -> Level' a -> Level' a Source # | |||||
Subst a => Subst (PlusLevel' a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (PlusLevel' a)) -> PlusLevel' a -> PlusLevel' a Source # | |||||
(Coercible a Term, Subst a) => Subst (Sort' a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Sort' a)) -> Sort' a -> Sort' a Source # | |||||
EndoSubst a => Subst (Substitution' a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Substitution' a)) -> Substitution' a -> Substitution' a Source # | |||||
Subst a => Subst (Tele a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Tele a)) -> Tele a -> Tele a Source # | |||||
Subst a => Subst (Elim' a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Elim' a)) -> Elim' a -> Elim' a Source # | |||||
Subst a => Subst (List1 a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (List1 a)) -> List1 a -> List1 a Source # | |||||
Subst a => Subst (Maybe a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Maybe a)) -> Maybe a -> Maybe a Source # | |||||
Subst a => Subst [a] Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg [a]) -> [a] -> [a] Source # | |||||
DeBruijn a => DeBruijn (Pattern' a) Source # | |||||
(Subst a, Eq a) => Eq (Abs a) Source # | Equality of binders relies on weakening which is a special case of renaming which is a special case of substitution. | ||||
Eq t => Eq (Blocked t) Source # | |||||
Eq a => Eq (Pattern' a) Source # | |||||
(Subst a, Eq a) => Eq (Tele a) Source # | |||||
Eq a => Eq (Type' a) Source # | Syntactic | ||||
(Subst a, Eq a) => Eq (Elim' a) Source # | |||||
(Subst a, Ord a) => Ord (Abs a) Source # | |||||
Ord a => Ord (Dom a) Source # | |||||
(Subst a, Ord a) => Ord (Tele a) Source # | |||||
Ord a => Ord (Type' a) Source # | |||||
(Subst a, Ord a) => Ord (Elim' a) Source # | |||||
Abstract v => Abstract (Map k v) Source # | |||||
Abstract v => Abstract (HashMap k v) Source # | |||||
Apply v => Apply (Map k v) Source # | |||||
Apply v => Apply (HashMap k v) Source # | |||||
(Apply a, Apply b) => Apply (a, b) Source # | |||||
Subst a => Subst (Named name a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Named name a)) -> Named name a -> Named name a Source # | |||||
(Subst a, Subst b, SubstArg a ~ SubstArg b) => Subst (Dom' a b) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Dom' a b)) -> Dom' a b -> Dom' a b Source # | |||||
(Coercible a Term, Subst a, Subst b, SubstArg a ~ SubstArg b) => Subst (Type'' a b) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Type'' a b)) -> Type'' a b -> Type'' a b Source # | |||||
(Ord k, Subst a) => Subst (Map k a) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (Map k a)) -> Map k a -> Map k a Source # | |||||
(Subst a, Subst b, SubstArg a ~ SubstArg b) => Subst (a, b) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (a, b)) -> (a, b) -> (a, b) Source # | |||||
(Apply a, Apply b, Apply c) => Apply (a, b, c) Source # | |||||
(Subst a, Subst b, Subst c, SubstArg a ~ SubstArg b, SubstArg b ~ SubstArg c) => Subst (a, b, c) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (a, b, c)) -> (a, b, c) -> (a, b, c) Source # | |||||
(Subst a, Subst b, Subst c, Subst d, SubstArg a ~ SubstArg b, SubstArg b ~ SubstArg c, SubstArg c ~ SubstArg d) => Subst (a, b, c, d) Source # | |||||
Associated Types
Methods applySubst :: Substitution' (SubstArg (a, b, c, d)) -> (a, b, c, d) -> (a, b, c, d) Source # |