[YG Conlang Archives] > [engelang group] > messages [Date Index] [Thread Index] >
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.