But arguably this is only true in the untyped version. Even in CL, the
type of a term still depends on context. And type is part of the
meaning, it affects what inferences we are licensed to perform. (And
even if we ultimately want to regard types as predicates, we still
need to bootstrap the whole system on a bottom layer type system of
the usual variety, to avoid paradoxes by determining what constitutes
a valid predicate.)
Does this mean that typed CL terms aren't going to have value
semantics after all, and therefore we might as well stick with lambda
and avoid paying the various costs of translation into CL?
This in turn would seem to mean (somebody please correct me if I'm
missing something) that = can't be a single object, but must be a
class of objects, one instance per occurrence, so that each occurrence
may be filled in with a different specific type.
--
You received this message because you are subscribed to the Google Groups "One Logic" group.
To post to this group, send email to one-...@googlegroups.com.
To unsubscribe from this group, send email to one-logic+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/one-logic?hl=en.
Here's a thought I just came up with. The reason types are such a big
headache is basically because they have to be carried around, they
gunk up the _data_.
Suppose we store all terms as untyped, but every time we make an
inference, on the spot we run the usual type inference algorithm on
the newly generated term, and reject it if it doesn't pass. That way
whatever complexity there may be can be incorporated into a single
_procedure_, which is vastly more benign.
(Also, if we want to allow more sophisticated ways of proving
termination later, they could be added to that procedure.)
Is it okay to do this? Can type information be thus localized in space and time?
That would cover the role of types in safeguarding against paradox.
There is also their role in licensing inference.
But the safeguarding was the hard part. The reason is because you
can't start making types be predicates, at least not by itself, you
can't just have Halts(T) as a predicate, or you just run into
strengthened versions of the paradoxes.
The role of types in licensing inference, however, might perhaps not
have that property, and might be covered by making types be normal
predicates?
As far as I can see, the answer is yes, that is, when the question we
are asking is "can this term be consistently assigned some finite type
(we don't care exactly what)", then we can answer it just by running
the usual type inference algorithm on the term in isolation. I think
doing this with every inferred statement should be sufficient to
safeguard against paradox. Someone please correct me if I'm wrong.
Among the things we want to be able to figure out are,
Suppose we have an occurrence of x!=false somewhere in the input
(assuming the input is in the form of typed lambda calculus)
deduce x:bool
Translate that into bool(x)
And the system should already know:
bool(x) = (x=true | x=false)
from which it should be possible to deduce x!=false => x=true
similarly, if x has been used in an integer context, we can figure out int(x)
What about functions? Suppose + is the addition function on integers,
how do we represent this? I suppose something like
int(X) & int(Y) <=> int(X+Y)
In TPTP format, + is polymorphic over the various numeric types
perhaps we could represent this as
int(X) & int(Y) <=> int(X+Y)
rat(X) & rat(Y) <=> rat(X+Y)
real(X) & real(Y) <=> real(X+Y)
though of course it would be nicer if we could represent it as
type(X+Y) = type(X) = type(Y)
How do we define type so as to make this possible? It can't be just
any predicate, because the above is true for type=int, but not for
type=even.
Does the definition of type have to make a list of known basic types,
and how to compose them into compound types?
--
You received this message because you are subscribed to the Google Groups "One Logic" group.
To post to this group, send email to one-...@googlegroups.com.
To unsubscribe from this group, send email to one-logic+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/one-logic?hl=en.