Home
Members
Publications
Projects/Collab.
Software
Events
Open Positions
Contact
News
module CubeExpr where import Char(isAlphaNum, isAlpha) import List(union, (\\)) import Expr import Sub import PreludeExt freeVars :: Expr -> [Sym] freeVars (Var s) = [s] freeVars (App f a) = freeVars f `union` freeVars a freeVars (Lam i t e) = freeVars t `union` (freeVars e \\ [i]) freeVars (Pi i k t) = freeVars k `union` (freeVars t \\ [i]) freeVars (Let i t e b) = freeVars (expandLet i t e b) freeVars (Kind _) = emptylist alphaEq :: Expr -> Expr -> Bool alphaEq (App f a) (App f' a') = alphaEq f f' && alphaEq a a' alphaEq (Lam s t e) (Lam s' t' e') = alphaEq t t' && alphaEq e (substVar s' s e') alphaEq (Pi s k t) (Pi s' k' t') = alphaEq k k' && alphaEq t (substVar s' s t') alphaEq (Let s t e b) (Let s' t' e' b') = alphaEq t t' && alphaEq e e' && alphaEq b (substVar s' s b') alphaEq (Var s) (Var s') = s == s' alphaEq (Kind k) (Kind k') = k == k' alphaEq _ _ = False | module CliMod where import Expr import CubeExpr tmp1 x = freeVars x tmp4 x y = alphaEq x y | module VarMod where |
module LamMod where import List(union, (\\)) import Sub import Expr
module PiMod where import List(union, (\\)) import Expr
module LetMod where import Expr
module KindMod where import PreludeExt