The types of programming language semantics, according to CTM