The identity substitution.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Applies a substitution to a variable. Free variables remain unchanged.
Equations
- (CC.Var.bound x_2).subst x✝ = x✝.var x_2
- (CC.Var.free n).subst x✝ = CC.Var.free n
Instances For
Applies a substitution to all bound variables in a capture set.
Equations
- CC.CaptureSet.empty.subst x✝ = CC.CaptureSet.empty
- (cs1.union cs2).subst x✝ = (cs1.subst x✝).union (cs2.subst x✝)
- (CC.CaptureSet.var x_2).subst x✝ = CC.CaptureSet.var (x_2.subst x✝)
- (CC.CaptureSet.cvar x_2).subst x✝ = x✝.cvar x_2
Instances For
Applies a substitution to a capture bound.
Equations
Instances For
Applies a substitution to a type.
Equations
- CC.Ty.top.subst x✝ = CC.Ty.top
- (CC.Ty.tvar x_2).subst x✝ = x✝.tvar x_2
- (T1.arrow T2).subst x✝ = (T1.subst x✝).arrow (T2.subst x✝.lift)
- (T1.poly T2).subst x✝ = (T1.subst x✝).poly (T2.subst x✝.lift)
- (CC.Ty.cpoly cb T).subst x✝ = CC.Ty.cpoly (cb.subst x✝) (T.subst x✝.lift)
- CC.Ty.unit.subst x✝ = CC.Ty.unit
- CC.Ty.cap.subst x✝ = CC.Ty.cap
- CC.Ty.bool.subst x✝ = CC.Ty.bool
- CC.Ty.cell.subst x✝ = CC.Ty.cell
- (CC.Ty.capt cs T).subst x✝ = CC.Ty.capt (cs.subst x✝) (T.subst x✝)
- T.exi.subst x✝ = (T.subst x✝.lift).exi
- T.typ.subst x✝ = (T.subst x✝).typ
Instances For
Applies a substitution to an expression.
Equations
- (CC.Exp.var x_2).subst x✝ = CC.Exp.var (x_2.subst x✝)
- (CC.Exp.abs cs T e).subst x✝ = CC.Exp.abs (cs.subst x✝) (T.subst x✝) (e.subst x✝.lift)
- (CC.Exp.tabs cs T e).subst x✝ = CC.Exp.tabs (cs.subst x✝) (T.subst x✝) (e.subst x✝.lift)
- (CC.Exp.cabs cs cb e).subst x✝ = CC.Exp.cabs (cs.subst x✝) (cb.subst x✝) (e.subst x✝.lift)
- (CC.Exp.pack cs x_2).subst x✝ = CC.Exp.pack (cs.subst x✝) (x_2.subst x✝)
- (CC.Exp.app x_2 y).subst x✝ = CC.Exp.app (x_2.subst x✝) (y.subst x✝)
- (CC.Exp.tapp x_2 T).subst x✝ = CC.Exp.tapp (x_2.subst x✝) (T.subst x✝)
- (CC.Exp.capp x_2 cs).subst x✝ = CC.Exp.capp (x_2.subst x✝) (cs.subst x✝)
- (e1.letin e2).subst x✝ = (e1.subst x✝).letin (e2.subst x✝.lift)
- (e1.unpack e2).subst x✝ = (e1.subst x✝).unpack (e2.subst x✝.lift.lift)
- CC.Exp.unit.subst x✝ = CC.Exp.unit
- CC.Exp.btrue.subst x✝ = CC.Exp.btrue
- CC.Exp.bfalse.subst x✝ = CC.Exp.bfalse
- (CC.Exp.read x_2).subst x✝ = CC.Exp.read (x_2.subst x✝)
- (CC.Exp.write x_2 y).subst x✝ = CC.Exp.write (x_2.subst x✝) (y.subst x✝)
- (CC.Exp.cond x_2 e2 e3).subst x✝ = CC.Exp.cond (x_2.subst x✝) (e2.subst x✝) (e3.subst x✝)
Instances For
Opens a type variable binder, substituting U for the innermost bound.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Opens a capture variable binder, substituting C for the innermost bound.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Opens an existential package, substituting C and x for the two innermost binders.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Function extensionality for substitutions. Two substitutions are equal if they map all variables equally.
Substituting with the identity substitution leaves a capture set unchanged.
Substituting with the identity substitution leaves a capture bound unchanged.
Converts a renaming to a substitution.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Substituting a substitution lifted from a renaming is the same as renaming.
Substituting a substitution lifted from a renaming is the same as renaming.
A substitution is closed if all its images are closed.
Instances For
Substitution preserves closedness for capture sets.
Equations
- ⋯ = ⋯
Instances For
Substitution preserves closedness for capture bounds.
Equations
- ⋯ = ⋯
Instances For
The openTVar substitution is closed if the type is closed.
The openCVar substitution is closed if the capture set is closed.
If the result of substitution is closed, the original capture set was closed.
If the result of substitution is closed, the original capture bound was closed.