ccodes and rcodes

Michael Genesereth <>
Date: Fri, 14 Sep 1990 12:58:10 PDT
From: Michael Genesereth <>
Subject: ccodes and rcodes
Message-id: <CMM.0.88.653342290.mrg@Sunburn.Stanford.EDU>

This discussion of rcodes and ccodes is very interesting.  I have
always thought that we were (in the interlingua effort) trying to
create a ccode.  This raises several issues.  (1) As Ramesh mentioned,
translating into and out of a ccode requires reasoning of some sort
and so the ccode becomes an rcode.  (2) As Bob MacGregor pointed out
''implementing'' the ccode is difficult or maybe even impossible.  (3)
As several people have mentioned the role of quotation in a ccode is
not the same as in an rcode.  I would like to address these three
issues in this note.

(1) The need for translation means that the ccode is also an rcode.
Yes indeed.  However, there can be many different rcodes, one for each
style of kr system.  The kind of rcode that one wants for a
frame-based system is likely to be very different from the rcode one
wants for a production rule system.  KIF as an rcode is probably
different from either of these and is intended to be.  It needs to be
more general to bridge the gap between these different kr paradigms.
The DISADVANTAGE fo this is that KIF does not necessarily make that
good an rcode.  It may be harder to read than the rcode for one of
these other types of systems.  It is likely to lead to greater
inefficiency in processing.  Now, some people might say that that is a
strong sargment against KIF as ccode.  But I do not think so.  Let me
try to make the case.  In my view the use of KIF is intended to be non
runtime uses.  Suppose I want to build a program that needs some
common sense knowledge.  I go to CYC andget some knowledge in KIF.  I
translate into my own rcode.  This takes a while.  I then run the
resulting program.  My program's users do not suffer the inefficiency
because my program is using MY rcode.  The cost was not paid at
runtime.  Besides, if I want my program to communicate with another
system of the samesort then I can use the common rcode.  We only use
the ccode when crossing style boundaries where there is no agreed upon
point-to-point translation.

(2) Implementing the ccode is difficult.  Yes indeed.  What I have
always hoped is that people will write good translators that will 
eliminate the need for passing interpreters around.  I have looked 
at knowledge bases in alien systems and found that much if not all
can be gotten into purely declarative fom with a little massgaing,
so that it was not necessar to pass the interpreter, even though
the communication was to take place between disparate systems.  The
point of poviding ameans for passing interprters is not that I think
that is a good idea.  I think it is terrible!  It is to ensure that,
in the worst case, there is a way for two systems to commmunicate
knowledge which has not or cannot be declarativized.

By the way Epikit does provide a lot of facilites for reasoning with
and compiling knowledge in KIF 1.0.  That was our purpose in designing
epikit -- to build a set of utilties for intercommunication languages.
However, even epikit cannot deal at this point with the full range 
of kif 2.0.  (I think a lot can be done though.)

(3) On quotation.  I am not sure what to say about the discussion
here.  There seems to be disagreemnet about when quotation is useful.
I personally believe it is useful for both ccodes and many rcodes.  In
my own work I have encountered many cases of knowledge that was best
represented with quote (even before considering the intermachine
communication problem).  Often, i want to represent knowledge aboiut
knowledge.  Some of this knowlegde can be written with a believes
modal.  However, some of it requires syntactic treatment, e.g. when I
want to say something about the form in which I plan to write all of
my knowledge, when I want to give the machine advice on
representation, when I want to encode problem solving hints (e.g.
prove this lemma befoire attempting the main theorem).  The quotation
operator is just right for this.  Since it is more general than
modals, it just seems convenient to define those things in terms of
it.  And we should do thi.  And wes hould make those modals available
as IF they were primitive.  However, we cannot flush quote or I would
npot be able to transmit my knowledge baseswith those problem solving

Now, when we started talking about communication. it became apparent
that6 quotation could also serve to let people encode their
representation schemes and, therefore, make the interlingua extensible
in a very dramatic way.  So I got pretty psyched about it.  It appears
that I may have overstated the scase though.  I do not think we should
emphasize quote.  I think it should be used rarely in everyday
transmissions.  But I think itis important for US (who are designing
the interlingua) to pay it careful attention, even if our users (who
areusing the interlingua) rarely see it.

By the way and IMPORTANT, THERE ARE NO PARADOXES with quote in KIF 2.0.
You can write a paradoxical souding sentence, but if you look at the 
semantics, there is no contradiction.  The model theoretic semantics
still gives a perfectly well defned meaning to the entire language.

Well, sorry for the length of this message.  I like these issues.
And, contrary to what some people may think, I think we ought to
spend a lot of time talking them over.  I have been reluctant to engage
in conversation at this level heretofore because I wanted  and sytill
want to get a well-worked out poposal on the table first.  So that
when we argue abot these issues, at least the object under discussion
is clear.