abstract class Val+− case object Empty extends Val+− case class Chr(c: Char) extends Val+− case class Sequ(v1: Val, v2: Val) extends Val+− case class Left(v: Val) extends Val+− case class Right(v: Val) extends Val+− case class Stars(vs: List[Val]) extends Val+− case class Rec(x: String, v: Val) extends Val+−