Can you elaborate on this? I'm not sure what you mean by valid and invalid programs.
By "valid", do you mean ones which are well typed under the type system?
But then, what does it mean for it to be well typed under the type system, other than that the type system, err, allows it?
edit: by which I mean, the theoretically defined type system, not the actual program implementing it.
edit: by which I mean, the theoretically defined type system, not the actual program implementing it.