[SCL] CL Controlled English (CLCE)
John F. Sowa
sowa at bestweb.net
Sun Dec 21 14:01:29 CST 2003
Pat,
I'll post more detail about CLCE later, but here
are some comments on your comments:
PH> Possible renderings as SCL header content interposed.
Those are suitable metalevel statements in traditional
notation, but the the "declare" syntax would probably
be better for CLCE users.
PH> Might be better to use the role-set syntax, then,
> since this is open-ended in this way.
I agree, especially since that is my preferred way
of using CGs. Perhaps we could have two options:
this simple way without roles, and a role version,
which would require more detail in the declarations.
Yhe simple version would be defined as a synonym for
the more detailed role version.
PH> + = sum (correct SCL, but yech!!)
Don't blame me -- that's the English word for the
result of the + function. I just used it to show
that the English word need not be the same as the
name used in the translation to SCL.
JS> Every cat is on a mat.
>
> (A x:cat)(E y:mat)on(x,y).
PH> How did you get the quantifier scopes to work out right?
Translation goes from left to right, and the
quantifiers for each clause are moved to prenex
form for the clause in which they occur. Following
are the steps of the translation:
1. Map noun phrases to restricted quantifiers:
(A x:cat) is on (E y:mat).
2. Move quantifiers, leaving variables behind:
(A x:cat)(E y:mat)(x is on y).
3. For prepositions following "is", the variable
in front of "is" is the first argument, and
the variable (or list) following the preposition
is the remaining argument(s).
These are the conceptual steps, but it is possible
for a compiler to generate the output in a single pass.
Also note that these rules give the correct translation
for negations, if we use the rule that A and E are
reversed when a quantifier is moved across a negation:
CLCE: Every cat is not on a mat.
1. (A x:cat) is not on (E y:mat).
2. (A x:cat)(A y:mat)(x is not on y).
3. (A x:cat)(A y:mat)~on(x,y).
Another way of stating the same proposition:
CLCE: No cat is on a mat.
1. ~(E x:cat) is on (E y:mat).
2. (A x:cat)(A y:mat)~(x is on y).
3. (A x:cat)(A y:mat)~on(x,y).
JS> Anyone who prefers "readable" names can write
"every cat x" to inroduce a variable and "the cat x"
to refer to it later.
PH> Hmm. Its hard to express new syntax in SCL
The "every" phrase is translated to (A x:cat),
and the phrase "the cat" in the later reference
is merely checked against the type listed in
the symbol table for x; it's main purpose it to
generate an error message in case of mismatch.
The translation for "the cat x" is just "x".
> Consider the English:
>
> There is a rock in the living room. Some person
> is between the rock and a hard place.
>
> Can you get 'the rock' to bind to the rock mentioned
> in the first sentence?
The scope of quantified variables stops at a period
(or at the closing parenthesis of quantifiers declared
within a parenthesized expression as translated to SCL).
The scope continues past a semicolon. So if you wrote ";"
instead of "." after the first sentence, the scope would
continue to the final ".".
> I'd like to see an exact statement of the rules for
> handling 'the' and 'a'. I suspect this is going to get
> very tricky.
The rules are complex in true English. For CLCE, I am
assuming the following rules:
1. Every occurrence of the words "a", "an", or "some"
maps to an existential quantifier.
2. The word "the" followed by a noun has exactly two
possible translations:
If the noun is followed by "of",
then the noun must have been declared as functional,
and the translation is a function application;
else it is translated as just a single variable,
which must be within the scope of a quantifier
restricted by the same noun (possibly with
additional qualifiers).
John
More information about the SCL
mailing list