rebuttal 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. Review 2
  2. > Cite a standard type checking algorithm.
  3. For instance,
  4. A. Abel, T. Coquand, "Untyped Algorithmic Equality for Martin-Löf’s Logical
  5. Framework (extended version)".
  6. > Theorem 1
  7. Indeed \Gamma and \Sigma are assumed to be correct as a premise to the
  8. statement. The precise formulation (for type checking) is:
  9. <\Sigma> \Gamma |- e ^ A ~> M ==> <\Sigma'> /\ \Gamma |-_\Sigma A type
  10. \implies \Sigma' extends \Sigma /\ \Gamma |-_{\Sigma'} M : A
  11. Here \Gamma |- \Sigma A type implies that \Gamma and \Sigma are well-formed.
  12. The statements for the other judgement forms are similar. To save space we cut
  13. all of the precise formulations, which made the statement unneccesarily
  14. unclear.
  15. > Theorem 2
  16. The premise \Gamma |-_\Sigma A type is missing. This is a typo.
  17. > On p.7 the rule in paragraph "Conversion rules"...
  18. The rule is correct. p takes arguments of types \Gamma and A_1 and returns a
  19. term of type A_2.
  20. > On p.8, the first rule has several typos...
  21. The rule is correct. The relationship between A and B is
  22. B[\bar M/\Delta] = A = B[\bar N/\Delta]
  23. which is guaranteed by the fact that h \bar{M} and h \bar{N} have type A (this
  24. invariant is stated on p.6 in the second paragraph). Consequently we don't need
  25. to check it. The choice of names for the type of h in the text is unfortunate
  26. and should match the type in the rule to avoid confusion.
  27. > Where do you use pattern unification?
  28. We only instantiate meta-variables if they are applied to distinct variables
  29. (last rule on p.8). This is the same restriction as in pattern unification.
  30. > Are you implying that a correct unification algorithm (returning a
  31. > substitution that does unify) could be too strong?
  32. We are not sure what you mean here. The main point of our algorithm is that
  33. substitutions are well-typed. Not all unification algorithms produce well-typed
  34. substitutions.
  35. > How are the types of terms unified before the terms are unified?
  36. This is ensured by the invariant (second paragraph on p.6) that all constraints
  37. are well-typed, i.e when we try to solve a constraint \Gamma |- M = N : A we
  38. know that \Gamma |- M : A and \Gamma |- N : A, and so the types unify
  39. trivially. The invariant is maintained by introducing guarded constants.