Idea of Type Rules
Notation for Type Rules
We write 
 to indicate that
 is well-typed inside and has resulting type 
Examples:
Type rule for addition:
  e1 : Int, e2 : Int
  ------------------
     e1+e2 : Int
For <=:
  e1 : int, e2 : int
  ------------------
     e1<=e2 : boolean
Type derivation for
3 + 5 <= 9
is the following
  3 : Int, 5 : Int
  ---------------- , 9 : Int
    3 + 5 : Int
  ---------------------------
      (3 + 5 <= 9) : boolean
Type Rule for Function Application
We have





- for user-defined functions, rules are given by their declaration
 
The general rule for operation 
 is:
- if
, - and
, - then

 
We write this as the following application typing rule: