[YG Conlang Archives] > [engelang group] > messages [Date Index] [Thread Index] >


[Date Prev] [Date Next] [Thread Prev] [Thread Next]

A sketch of a syntax for VOCALL



This is a first sketch of a syntax for a logical language I'm working
on.  I have provisionally codenamed it VOCALL (Versatile,
Ontology-oriented, Compound-based, Auxiliary Logical Language).

My current model for speaking about action and time can be described
as a variant of event-token reification (let's call it "ETR"). A
comparison of different approaches can be found at: 
http://plato.stanford.edu/entries/logic-temporal/ ; a more thorough
description of Reified Temporal logic can be found here:
http://cms1.gre.ac.uk/rae/CSabstracts/aireview.htm

I want the language to be essentially timeless and spaceless, with
time, space, states and events introduced as any other concept, in a
particular ontology for event description, and conciseness achieved by
what can be described as macro features.

John gave Mary a flower yesterday

One usual way in logical languages (NOT the one I'll use):

(happens (E (?x) (and (give John Mary ?x)(flower ?x))  ) yesterday)

where "E" stand for the "thereExists" function, variables are preceded
by "?" and the structure is "(predicateOrFunction arg1 arg2 ..)"


With my version of ETR:

(E (?x ?y) (and ((and (acType give) (subj John) (obj Mary)
(happens-during yesterday) (theme ?y) ) ?x) 
(E (?z) ((and acType  beAFlower (subj ?y) (lambda (?v) (A ?t ((implies
(happens-during ?t)(holds-during ?t)) ?v))) ) ?z))    ) )

where "A" stand for the "forAll" function


We define the equivalent of thematic roles as predicates that take
actors, events and ordinary predicates as arguments. For instance:

subj: subject/agent/initiator/controller/owner/whole
obj: object/patient/acceptor/controlled/owned/part
theme: theme/content
ref: reference, unaltered source of information



There should be other predicates to indicate instrument, way, and so
on. The speaker can pick which ones to use, and define new ones, by
editing the event-description macros. There's a particle to indicate
"grammatical use" and another particle to indicate "non-grammatical
use". The speakers can choose between assigning their new thematic
role indicators to previously ordinary predicates (and use the
"non-grammatical use" particle when they wan to use them with the old
meaning) and assigning them to predicates preceded by the "grammatical
use" particle (and the predicate preserves the old meaning unless
preceded by the particle).


In lojban, when someone wants to create a new concept, say "to sing",
first they think very carefully of what singing involves. They decide
that a singing action must have a singer, a song and an audience, so
they define:

##
sing 2.  sanga (sag sa'a): x1 |-s/chants x2 [song/hymn/melody/melodic
sounds] to audience x3  [melody (= sa'azgi, ralsa'azgi), harmony (=
saxsa'azgi), harmonize/| harmony (= saxsa'a), song (= selsa'a)]
##

In my language, first you create the "sing" predicate, which simply
means there's a singing action. Later, if you decide that every
singing action must have a "subj", "obj" and "theme", you add the
corresponding axioms to the ontology, and so on.


we can create the predicate "holds-when":

(def holds-when (lambda (?v) (A (?t) ((implies (happens-during
?t)(holds-during ?t)) ?v)) ))



.. and use it:


(E (?x ?y) (and ((and (acType give) (subj John) (obj Mary)
(happens-during yesterday) (theme ?y) ) ?x) 
(E (?z) ( (and acType  beAFlower (subj ?y) (holds-when ?x)) ?z))    ) )


But what if we define a macro called "pred" for the most usual
predicates, which recognises subj, obj, etc as keywords:

(E (?x ?y) (and ((pred acType give subj John obj Mary happens-during
yesterday theme ?y ) ?x) 
(E (?z) ( (pred acType  beAFlower subj ?y holds-when ?x) ?z))    ) )


We can also define the macro "E-var" which autocompletes declaration
of all variables inside the corresponding scope. It also eliminates
the variable declaration brackets by requiring all variables to begin
with "?":

(E-var and ((pred acType give subj John obj Mary happens-during
yesterday theme ?y ) ?x) 
(E-var ?z  (pred acType  beAFlower subj ?y holds-when ?x) ?z) )

Notice that when no variables are specified, E-var captures all of
them. On the other hand, if one or more variables are specified, it
captures the specified variables and ignores the other variables.
Besides, it recognises strings beginnig with "?" as variables, so
there's no need for internal brackets. The syntax is (E-var ?x ?y ...
expression ). A reserved small word would be the equivalent of "?".

We are specifying that what John gave to Mary was a flower when he
gave it to her. But we should have a shorthand for when we don't care
whether the flower was not a flower at some earlier time, or will
become something else later, because we will always talk about it as a
flower in the present context. This is the meaning of "(beAFlower ?y)"

(E-var and ((pred acType give subj John obj Mary happens-during
yesterday theme ?y ) ?x )
 (beAFlower ?y))

Now with labeled brackets:

(3]E-var and (2](1]pred acType give subj John obj Mary happens-during
yesterday theme ?y )1] ?x )2]
 (1]beAFlower ?y)1] )3]

and fusing them:

(3]E-var and (2]pred acType give subj John obj Mary happens-during
yesterday theme ?y )1] ?x |2]beAFlower ?y)3]

In a sentence, the outest brackets can be omitted:

E-var and (2]pred acType give subj John obj Mary happens-during
yesterday theme ?y )1] ?x |2]beAFlower ?y




It's cool to have a word for "yesterday", but a more general approach
would be,say, "t-int-past 1 day", which means "the 1st day towards the
past (current day not included)":

E-var and (2]pred acType give subj John obj Mary happens-during
(1]t-int-past 1 day )1] theme ?y )1] ?x |2]beAFlower ?y

Notice that we didn't change the level of the other brackets. As I've
said, it's ok, as long as we don't fuse them.
The fused form is:

E-var and (3]pred acType give subj John obj Mary theme ?y
happens-during (1]t-int-past 1 day )2]  ?x |3]beAFlower ?y



We could replace the name "Mary" with a definite description, like
"the red-haired girl". I think there are two senses in which the
concept of "the" is usually applied, so I decided to have two
different "the" words:

(1)the: 

With the corresponding predicate, it forms a definite description to
refer to a known person/entity, just as if we were using their name.
We say "the red-haired girl" because we don't know (or we don't
remember) she's called Mary.

(2)whoevThe:

That is, "whoever is the_". This could be used if, say, John told us
that yesterday he gave a flower to a girl. Then we can say "the girl
who got a flower from John, whoever she is, must be gorgeous", which
is not the same as saying "Mary must be gorgeous". Here we are not
referring to a known person in a different way; we are defining a new
person, then stating that "got a flower from John" is enough to
identify her, and then stating that she's gorgeous. If later we
descover that this person was Mary (whom we know) and not someone
else, we can alway state "(equals Mary (whoevThe ....))".

Here I'll pick the first option. But we use "the-var" instead of
"the", just as we used "E-var" instead of "E"



the red-haired girl(2): (2]the-var and beAGirl (1]lambda-var  beRed
the-var ?y haveAs hair obj ?y  subj ?x  )2]

Notice that "?y" is bounded in "the-var", so "lambda-var" only binds
"?x". Since it only binds one variable, there's no need to ask about
the order of variables when the lambda-var function is applied, and
"?x" after "lambda-var" can be ommited. That is, the lambda-var
expression is equivalent to:

(lambda (?x) ( beRed  (the (?y)(haveAs hair obj ?y  subj ?x))  )  )


where "haveAs ?w obj ?y subj?x" means "?x has ?y as its ?w". "haveAs"
is a predicate that takes another predicate as its first argument.
Here, "subj" is acting as "whole" and "obj" as "part". Of course, this
has nothing to do with logic itself, but with the semantics of the
"subj" and "obj" predicates. 

I defined the "haveAs" predicate because I don't think that saying
"this is my hair" is equivalent to saying "this is the thing wich is
hair and is mine". In the second case, it could be someone else's hair
in a locket I own. Even if I restrict "mine" to mean "a part of my
body", it's still not the same. Let's take a clearer example: "this is
my foot". Maybe I'm a mutant, and my hands are structurally like feet,
and indeed look like feet and can be described as such, while the
reverse is true for my feet.   




Let's put it all together:

"John gave a flower to the red-haired girl yesterday":

E-var and (3]pred acType give subj John obj (2]the-var and beAGirl
(1]lambda-var  beRed the-var ?y haveAs hair  obj ?y  subj ?x  )2]
theme ?y happens-during (1]t-int-past 1 day )2]  ?x |3]beAFlower ?y

We can't fuse more brackets, because the structure of "pred" gets in
the middle. For deeply nested structures, an alternative to "pred"
wich doesn't avoid brackets, as "pred" does, may be useful.

I don't have a fixed lexicon, but anyway, I can make up an example of
what the real language may look like:

nou: number prefix. (like "li" in lojban)
nou ri: the number 3

ra:"0" for grammatical and special purposes 
re:"1" for grammatical and special purposes 
ro:"2" for grammatical and special purposes 
ri: "3" for grammatical and special purposes 

lo yon: John
lie m'eri: Mary

(proper names are described in message#139)



I'm less sure about the following:

na: (]
ne: |]
no: )]

na re: (1]
ne re: |1]
no re: )1]

na ro: (2]
ne ro: |2]
no ro: )2]

na ri: (3]
ne ri: |3]
no ri: )3]

fa: ?


sa: and
xa: E-var
xe: pred
xo: the-var
xi: lambda-var
va: acType
ve: subj
vo: obj
vi: theme
vua: t-int-past
do: day


tai : give
kuo: beAGirl
pua: beRed
biu: haveAs
zai: hair
gau:happens-during
tieu:beaFlower

The following will be explained and used later on:

fe: ?-e
fo: ?-p
bui: haveA_which
xei: pred2
xiei: do not assume "xei" at the beginning of each sentence.



xa sa nari xe va tai ve lo yon vo naro xo sa kuo nare xi  pua xo faro
biu zai faro fare  noro vi faro gau nare vua nou re do noro  fare neri
tieu faro

We could eliminate "acType" (va) and "subj"(ve) when they are right
after "pred":

E-var and (3]pred  give  John obj (2]the-var and beAGirl (1]lambda-var
 beRed the-var ?y haveAs hair  obj ?y  subj ?x  )2] theme ?y
happens-during (1]t-int-past 1 day )2]  ?x |3]beAFlower ?y


xa sa nari xe  tai  lo yon vo naro xo sa kuo nare xi  pua xo faro biu
zai faro fare  noro vi faro gau nare vua nou re do noro  fare neri
tieu faro



For short sentences, it would be convenient to have a more concise way
of saying "a flower". There are two subtly different notions of "a".

1) Logical existence function: This kind of "a flower" in the phrase
"john gave the red-haired girl a flower" would simply tell the "pred"
macro to produce the longer phrase "there's at least one x shuch that
x is a flower and John gave x to the red-haired girl" 

fe: ?-e

2) Presentation: It would be equivalent to declaring a new entity,
saying that it's a flower and then using it in the phrase just like we
used the name "John".

fo: ?-p

Here I'll pick the first option. Notice that it lets  me eliminate the
level-3 brackets, the "and" and the last "?x" and ")2]"

E-var  pred  give  John obj (2]the-var and beAGirl (1]lambda-var 
beRed the-var ?y haveAs hair  obj ?y subj ?x  )2] theme ?-e-beAFlower
happens-during (1]t-int-past 1 day  

xa  xe  tai  lo yon vo naro xo sa kuo nare xi  pua xo faro biu zai vo
faro ve fare  noro vi fetieu gau nare vua noure do 

We could define a predicate "haveA_which":

(def haveA_which  (lambda-var ?hair ?beRed ?whole (?beRed (the ?part
haveAs ?hair ?part ?whole) ) ) )

Where, of course, "?hair","?beRed","?whole","?part" are just variable
names that can be replaced by any other.



Note: haveA_which, as usual, is left-associative:

(equals ((haveA_which ?t ?w)?x)  (haveA_which ?t ?w? x) )



And we can reserve the word "bui" for it:

bui: haveA_which



E-var  pred  give  John obj (2]the-var and beAGirl (1]haveA_which hair
beRed )2] theme ?-e-beAFlower happens-during (1]t-int-past 1 day 

xa xe  tai  lo yon vo naro xo sa kuo nare   bui zai pua  noro vi
fetieu gau nare vua noure do

the (1]("nare") can be simplified as (] ("na")

xa xe  tai  lo yon vo naro xo sa kuo na   bui zai pua  noro vi fetieu
gau na vua noure do


Let's define a new macro, "pred2", more concise than "pred" for usual,
real-world sentences.  Whenever it encounters keywords such as "subj",
"obj",..etc, it creates an expression that enclose everything until
the next keyword, except when two consecutive keywords are
encountered. In this case, it only spans until the first keyword.
Besides, it lets you ommit "the". Of course, there should be ways to
"reprogram" this macro, so as to add or remove thematic roles (those
keywords) and change some other setting, such as the preference for
AND. It seems that most natural languages have,in a sense, a
preference for AND over OR. For instance, when we say "the subject is
John, the object is Mary,.." we are mean "he subject is John AND the
object is Mary, AND..". Or when we say "black circle" whe mean
"something which is black AND is a circle" Why "AND" and not "OR"? It
should be configurable.

Besides, it lets you ommit the initial "E-var", it assumes an "and"
relation inside terms if no logical relation is specified (it lets you
ommit "and" before "and beaGirl"..) and it lets you eliminate 
superfluous brackets under the assumption that, when in doubt, every
expressions takes its maximum number of arguments (but remember that
thematic roles are not usually implemented as argument slots). This
lets you eliminate the brackets around "haveA_which hair beRed".
 

xei: pred2


pred2  give  John obj beAGirl haveA_which hair beRed theme ?-e
beAFlower happens-during t-int-past 1 day 


xei tai lo yon vo kuo  bui zai pua vi fe tieu gau vua noure do

There should be a way to ommit even the  "xei" macro name at the
beginning of each sentence. It would be like a jargon where every
sentence begins with "xei" unless specified otherwise with another
keyword (xiei) 

xiei: do not assume "xei" at the beginning of each sentence.


So, the sentence ends up like this:

tai lo yon vo kuo  bui zai pua vi fe tieu gau vua noure do

(John gave a flower to the red-haired girl yesterday)

So, one might ask, why begin with a Lisp-like syntax and labelled
brackets, only to gradually drop them for everyday speech, and call
this dropping a "macro"? Well, my goal is to make this "syntactic
sugar" explicit, and not built into the basic syntax of the language.
The intended benefits are:

1) The language should be well-suited for logic and mathematics. Just
replace the "event description macros" with more suitable macros or no
macros at all.

2) If a flaw is found in the event description macros, it's easier to
correct. You are not changing the syntax of the language.

3) You gain more flexibility for jargon: you can define not just
specific lexicon or meanings, but also specific syntax (for instance,
new thematic roles). All you have to do is define a new macro and
specify how it differs from the usual one.

4) A customizable syntax, by removing most syntactic constrains, could
be a rich source of Whorfian observations.

Regards,

                Martin Baldan


PS: I will be busy for a few weeks (until june 23), and won't be able
to take as much time as I would like for responding. This doesn't mean
I won't read the questions, comments or objections, or that I'm not
interested in them. Please excuse the inconvenience arising from this
fact, and from any omissions, errors and obscurities in the syntax
description.