Dear David,
I had a look at your new version of MoTT
(
http://arxiv.org/pdf/1407.7274v5.pdf). I have not had the time to
study is seriously, but here are a couple of technical remarks. As it
stands, the formulation of MoTT does not seem to hold water.
It would be very helpful if at the beginning you listed not only all
syntax of terms and propositions, but also the syntax of types (it
looks like the only types are Bool, type_i, and function types?), as
well as all forms of judgements. Several constructs are missing
formation rules (:: and iso for instance), you never announce the fact
that there will be judgmenal equality (which you call absolute
equality), etc. Such omissions create a confusion that is hard to
penetrate. Also, I find "Γ ⊢ True" to be a strange way of saying that
Γ is well-formed context. How about something like "Γ context"?
At the bottom of page 7 you make it sound like in HoTT people are only
concerned with consistency of HoTT and not at all the meaning. You
base this opinion on the HoTT book. I would just like to point out
that the HoTT book does pay attention to the *intuitive* explanation
of what types are, but was purposely written *avoiding* any
discussions of models of HoTT (as a foundation, HoTT/UF has to stand
on its own feet, without reference to a "model"). There are other
bibliographical sources discussing the meaning of HoTT.
Your axioms for the definite description operator The(x:A, φ) require
that the only free variable appearing in φ is x. You then define
λ-abstraction λx:A.e:B as an abbreviation for The(f : A → B. ∀x:A.
f(x) = e). This is going to be severely limiting because we cannot
nest λ-abstractions, for instance the K combinator
λx:A. ((λy:B x:A) : B → A) : A → (B → A)
is not a valid expression because the inner abstraction is invalid, as
it becomes
The (f : B → A, ∀y:B . f(y) = x)
and this is not closed. The readers should be warned about this. How
do you express the K combinator of type A → (B → A)? And how would
you write down the isomorphisms from A × B → C to A → (B → C)? The
usual ones is
λf : A × B → C . λy:A . λx:B . f (x, y)
and this is not valid in your calculus, again because of nested
λ-abstractions. It looks like you can use the axiom of choice (page
10, Figure 2, bottom row) for this purpose. Can you say a bit more
about this? Why don't you allow a definite description operator with
parameters?
I cannot make sense of the iso(σ, a, b) things (figure 6). Something
is wrong there. First of all, the third line of Figure 6 reads:
a ↔_σ b ≡ ∃x:iso(σ,a,b)
This does not make sense as the thing on the right-hand side of ≡ is
not a well-formed formula. I think you meant
∃x:iso(σ,a,b) . true.
Next, how does one form an iso(σ, a, b) type? I expected a rule such
as "if σ is a type, a : σ and σ : A then iso(σ, a, b) is a type". If
σ : type_i where does iso(σ, a, b) live, also in type_i? In the second
row of Figure 6 has things like
x ↔_iso(σ, τ, f) y
which unfolds to
∃_:iso(iso(σ, τ, f), x, y) . true
This is very strange, as it seems to suggest that whenever x : σ then
also x : iso(σ, τ, f). Can you please give the standard formation,
introduction, and elimination rules for iso-types? The reader should
be able to answer these questions by looking only at the rules:
1) Does iso(σ, a, a) always have an element for a : σ ?
2) What does iso(Bool, true, false) look like, and what does iso(Bool,
true, true) look like?
When you introduce the double colon :: you say
"A sequent of the form Σ ⊢ e :: τ is valid if in every semantic
interpretation of Σ
we have that the semantic value of e is a member of the value of τ."
What does this mean? In that entire part of the text you are referring
to semantic validity before having given any semantics to your formal
system. If the paragraph is meant to just give helpful intuition then
you should say so. It cannot serve as an official definition for parts
of your formal system.
What is the status of dependent products, Figure 11. You tell us that
they are not "first-class types", but what never tell us what they
*are*? Are they types? If so, do you have "first-class" and
"second-class" types in your type theory? You write (Λx:σ e[x]) ::
Πx:σ τ[x], so it looks like Πx:σ τ[x] ought to be a type. Or is it
that r :: s can be well-formed even when s is not a type? It would be
really helpful if you properly stated formation rules for all
constructs: what does it take for r :: s to be well-formed? Is there a
judgement expressing the fact that "Πx:σ τ[x] is well-formed"? You
should give all forms of judgements up front.
In Theorem 2.1 please state clearly what the status of the symbols a
and b is. I am guessing that a : σ and b : τ[b]. If this is indeed so,
then doesn't Theorem 2.1 just say that from (a, b) = (a, e) we can
derive b = e? I am pretty sure Voldemort is a bit more evil than
that.
On page 21, the last displayed formula states that
Pair(S2,b) = Pair(S2,e[S2])
where equality is at type PairOf(X:Sphere, z:π1(X)) and all we know
about b and e[S2] is that they are of type S2. Why does this hold?
Morphoid Type Theory is quite similar in several respects to Church's
Type Theory (
http://plato.stanford.edu/entries/type-theory-church/),
which is a theory of simple types. You should explain in what sense
Morphoid Type Theory differs from Church's Type Theory. Church's types
are *simple*, while yours are kind-of-dependent (you allow dependent
sums, dependent SubType's and iso-types, but not dependent products).
Another relevant piece of work is Aczel & Gambino's Logic-Enriched
Type Theory, see
http://dx.doi.org/10.2178/jsl/1140641163. Their are
agnostic about excluded middle, but their setup is similar in the
sense that there is "logic over types", which by the way has appeared
in various forms elsewhere, for instance in categorical logic. I am
pointing out this particular work because it might be useful to look
at how they set things up.
With kind regards,
Andrej