1. A program error detection system comprising: a component that receives a program; and a type checker that utilizes type definitions and structural subtyping rules to determine whether the program is well formed within a meaning of the type definitions and subtyping rules.