%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% Definition 1 + 5 + Figure 4 : Cont-validity of cps terms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% cvalR : croot -> type. cvalE : (ccont -> cexp) -> type. cvalT : ctriv -> type. cvalC : (ccont -> ccont) -> type. %mode cvalR +R. %mode cvalE +E. %mode cvalT +T. %mode cvalC +C. cvalK : (ccont -> (ctriv -> cexp)) -> type. %mode cvalK +K. cval_klam : cvalR (klam E) <- cvalE E. cval_capp : cvalE ([k:ccont]capp T0 T1 (C k)) <- cvalT T1 <- cvalT T0 <- cvalC C. cval_cret : cvalE ([k:ccont]cret (C k) T) <- cvalT T <- cvalC C. cval_xlam : cvalT (xlam R) <- ({x:ctriv}cvalT x -> cvalR (R x)). cval_vlam : cvalC ([k:ccont]vlam [v:ctriv](C v k)) <- ({v:ctriv}cvalT v -> cvalE (C v)). cval_k : cvalC ([k:ccont]k). cval_kappa : cvalK Kappa <- ({t:ctriv}cvalT t -> cvalE ([k:ccont]Kappa k t)). %name cvalR CVR. %name cvalE CVE. %name cvalT CVT. %name cvalC CVC. %name cvalK CVK. %terminates (R E T C) (cvalR R) (cvalE E) (cvalT T) (cvalC C). %terminates K (cvalK K).