new idea for self types

transitivity looks better now

to be done:

- extend-wf-tp
- extend-sub-tp
- restrict-sub-tp
- sub-tp-refl