1. The fundamental purpose of a type system is to prevent th occurrences of execution erros during the running of a program. The most obvious symptom of execution errors is the occurrence of unexpected software faults.
2. A type of a variable is the upper bound of the range. Languages where variables can be given types are typed languages.
3. Judgement: formal assertions about the typing of programs; Type rules: implications between judgements; Derivations: deductions based on type rules.
4. Trapped errors: errors that cause the computation to stop immediately; Untrapped errors: errors that go unnoticed and later cause arbitrary behavior. Safe language is the language where all programs are safe, that is, all of them do not cause untrapped errors to occur.
5. Forbidden errors include all of the untrapped errors, plus a subset of trapped errors. Good behavior languages are languages where all of program fragments will not cause forbidden errors to occur.
6. How a type system is formalized?
(1) to describe the syntax of types (knowledge) and terms (behavior); (2) define the scoping rules; (3) define the semantics as a relation has-value between the terms and their results.