Fix type cast rules
Do not lift values unnecessarily in let bindings

Convert
  let x:[int]0 = 5 in ...
to
  let x = 5 :: Int
instead of
  let x = lift (5 :: Int) in ...
Add two home made examples