| Home | Table of Contents |

General Intelligence :

Rus logical form

version 0.1

Note: I recently found out that my invention "Geniform" is in fact equivalent to the "Rus logical form". I'll revise this page soon...


Geniform is a simple scheme for translating natural language sentences into logical formulae. It can be easily and completely expressed in first-order predicate logic and Prolog, and therefore is very suitable for knowledge representation.

  1. Rule 0: sentences
  2. Rule 1: composition
  3. Rule 2: reification
  4. First order logic and Prolog
  5. More examples

Rule 0: sentences

1. Verbs. A sentence of the form "subject verb object" is translated to (verb subject object).

2. Adjectives. A sentence of the form "subject is adjective", for example the cat is black, is translated as (black cat).

3. Prepositions.

the apple is on the table(on apple table)

This example shows how a complex sentence can be broken down:
she smiles at me(smile1 she), (at smile1 me)

4. Adverbs.

she smiles wickedly(smile1 she) (wickedly smile1)

5. Membership is expressed using the traditional isa predicate, eg (isa bird animal).

6. Identity is expressed using the is predicate, eg (is marilynMonroe normaJeane).

7. Connectives in propositional logic are used in the same way, eg:

John is handsome and Mary is pretty(handsome john) ^ (pretty mary).


Rule 1: composition

1. The composition functor * is applied to two concepts to produce a composite concept, eg:

green applegreen*apple

colorless green ideacolorless*(green*idea)

Special algorithms are required to compute the meaning of the composite A*B [ see below ].

2. Quantifiers and determiners can also be treated this way:

the girlthe*girl

some girls some*girls

three girls 3*girls


Algorithms for composition

The composite meaning of A*B depends on the type (word class) of A and B. We give two examples:

Adjective x noun

To compute the meaning of A*B where A is an adjective and B is a noun, as in Mary has a red rose (ignoring the determiner "a"):

(has mary red*rose) → (has mary rose1) ^ (red rose1)

Noun x noun

A possible (but not optimal) algorithm for computing the meaning of 2 nouns, A*B, such as door knob (a knob that belongs to a door), glass slippers (slippers made of glass) or street prostitute (a prostitute who works in the streets), is as follows:

  1. Try to search the memory for facts containing both A and B.
  2. If step 1 fails, try to search for facts containing concepts similar to A and B, eg a fact containing A and C where C is similar to B (for example C is a synonym for B).
  3. If both step 1 and 2 fail, arbitrarily construct some short sentences containing A and B.
  4. Among the candidate sentences obtained above, select the sentence that "makes the most sense". By this we mean the sentence that has the highest consistency with other related facts in memory.

Rule 2: reification

In English there are many ways to embed a clause in a sentence, as shown [from Jackson 1990]:

They are illustrated by the following examples:

a. I'm surprised that the dog chases the cat.
b. I can't see what the dog chases.
c. The cat which the dog chases is black.
d. It is difficult to chase the cat.
e. I've seen the dog chase a cat.
f. Chasing the cat is difficult.
g. I see the cat chased by the dog.

In a,b,c,e,g there is actually a hypothetical sentence, that a certain dog chases a certain cat, embedded in the main sentence. All we need to do is to break the sentence into 2 parts, make the hypothesis explicit, and then address the desired subjects. For example:

I'm surprised that the dog chases the cat (chase1 dog cat), (surprisedBy I chase1)

The exception is d and f, to chase a cat and chasing a cat, where it is wrong to assume that the chasing is actually happening. In such cases, we must construct the abstract individual via composition (verb × noun → verb), eg:

Chasing the cat is difficult (x = chase*cat), (difficult x)



First order logic and Prolog

The important thing is that all this is strictly within first-order predicate logic, and can be expressed in Prolog.

The geniform (a b c) is equivalent to r(a,b,c) in Prolog, where r/3 is a predicate representing a generic relation with 3 arguments.

The composition functor x*y can be expressed in Prolog using a predicate com(x,y). Mathematically com(x,y) is actually a function that maps from 2 concepts to their composite concept.

What are functors?

In Prolog, predicates are called "functors" because they have the form of functions but are never evaluated. For example one can say in Prolog:

married(X,wife(X))

to mean that a man X is married to the wife of X. Then this query

married(dick,Y)

would return wife(dick).


More examples...

Some complicated noun phrases:

a heart as big as the world

their idea, to get it all over with at once,

his solution, with all its faults,

English

geniform

Socrates is wise. (wise socrates)
Some philosopher is wise. (wise some*philosopher)
Romeo loves Juliet. (love romeo juliet)
It is cold and it is wet. (cold it) ^ (wet it)
John's brother is tall. (tall (brother john))
If Tom is not lying then he is crazy. ¬(lying tom) → (crazy tom)
She is the prettiest (pretty1 she), (most pretty1)
She is prettier than Jane (pretty1 she), (more1 pretty1), (than more1 jane)
   
   
   
   

You may provide some instant feedback with this form:

Name:
Comment / suggestion / question:


Reference

[Jackson 1990] Grammar and Meaning: A Semantic Approach to English Grammar. Longman, NY.

| Home | Table of Contents |

1/Aug/2007, 30/Nov, 07/Nov/2006 (C) GIRG [ Notice about intellectual property on this page ]