concrete TestCnc of Test = { param Number = Pl | Sg; lincat E = {s:Str; n : Number} ; lindef E = \s -> {s=s; n=Sg} ; lincat S = {s:Str} ; lin Exist f = {s = "exists" ++ f.$0 ++ "such that" ++ f.s}; lin Even x = {s = x.s ++ case x.n of {Sg => "is"; Pl => "are"} ++ "even"}; lin a = {s = pre {"a"; "aa" / strs {"a"}}; n = Pl} ; lin f a = {s = a.s}; lin fa a = {s = a.s ++ "a"}; lin fb a = {s = a.s ++ "b"}; lin IsString x = {s = x.s ++ "is string"} ; lin IsInteger x = {s = x.s ++ "is integer"} ; lin IsFloat x = {s = x.s ++ "is float"} ; }