I've been reading "Towards Observational Type Theory". I'm new to type
theory, so I have not been able to understand big chunks of the paper;
hopefully as I read wider I'll understand more of it.

However, one rule which jumped out at me is this, on page 9, because it
seems silly (apologies if my email client mangles this even after I've
tried to fix it up - I've never tried pasting type rules from PDFs into
it before):

Γ |- S≡T  Γ |- Q:S=T  Γ |- s:S
     Γ |- s[Q>S ≡ s : T

It seems silly to include a definitional equality as a premise, because
I _thought_ the whole point of definitional equality was that S≡T means
that S and T are freely co-substitutable, and type-checking will
automatically substitute S for T or T for S _whenever_ required. (For
example, it is often noted that Coq will automatically reduce (i.e.
substitute) n+0 to n in a dependent type - but only if you write n+0
the "right" way round! I can't remember offhand which way round works.)

So anyway, surely any derivation which needed that rule could also
use this rule instead:

          Γ |- Q:S=S  Γ |- s:S
     Γ |- s[Q>S ≡ s : S

(which is trivial), substituting S for T before applying it, and
substituting Ts for some of the Ss afterwards.

Where have I gone wrong?


Reply via email to