Polymorphic functions with set-theoretic types_ part 1_ syntax, semantics, and evaluation