The content of this module is based on the MSc Thesis Coinductive Formalization of SECD Machine in Agda by Adam Krupička
data STLCR : List (Ty, Ty) -> List Ty -> Ty -> TypeVar : Elem ty g -> STLCR r g tyLam : STLCR ((a, b) :: r) (a :: g) b -> STLCR r g (TyFun a b)App : STLCR r g (TyFun a b) -> STLCR r g a -> STLCR r g bRec : Elem (a, b) r -> STLCR r g (TyFun a b)If : STLCR r g TyBool -> STLCR r g a -> STLCR r g a -> STLCR r g aEqb : STLCR r g a -> STLCR r g a -> STLCR r g TyBoolLit : Const ty -> STLCR r g tyAdd : STLCR r g TyInt -> STLCR r g TyInt -> STLCR r g TyIntSub : STLCR r g TyInt -> STLCR r g TyInt -> STLCR r g TyIntMul : STLCR r g TyInt -> STLCR r g TyInt -> STLCR r g TyIntfromInteger : Integer -> STLCR r g TyIntcompile : STLCR r g ty -> Steps (MkState s g r) (MkState (ty :: s) g r)compileT : STLCR ((a, b) :: r) (a :: g) b -> Steps (MkState [] (a :: g) ((a, b) :: r)) (MkState [b] (a :: g) ((a, b) :: r))compileAcc : Stepz init (MkState s g r) -> STLCR r g ty -> Stepz init (MkState (ty :: s) g r)