A calculus with recursive types, record concatenation and subtyping