Attempto Controlled English
en.wikipedia.org
en.wikipedia.org
For example (taken from [2]), instead of saying the straightforward “Caitra goes to the village”, if you wished to be really precise you might say “There is an activity which leads to a connection-activity which has as Agent no one other than Caitra, specified by singularity, [which] is taking place in the present and which has as Object something not different from ‘village’.” (Sounds a bit less unnatural and also a bit less confusing in Sanskrit.)
> [Attempto Controlled English] can serve as knowledge representation…
It is not clear to me when this project started, but there was a 1985 article pointing out the Navya-Nyāya/“Shastric Sanskrit” language as an example of something that is both (somewhat) a natural language and (somewhat) usable for knowledge representation [2]. In its own way that article became, in popular culture in some circles in India, the source of various unfounded memes about Sanskrit being good for computers, or more absurd claims (https://news.ycombinator.com/item?id=14295285).
[1]: http://www.columbia.edu/itc/mealac/pollock/sks/papers/Ganeri... (can't find a link to the second paper now)
[2]: https://www.aaai.org/ojs/index.php/aimagazine/article/view/4...
https://en.wikipedia.org/wiki/Ecclesiastical_Latin#Current_u...
You might say that the use of Latin has a benefit of precision for the Catholic Church because there are some familiar theological and ecclesiological terms available whose meaning should be clear and which can be matched up with similar vocabulary in older Christian texts. Still, these texts are not using some kind of formal logic, and they don't do a more careful job of avoiding ambiguities than lawyers drafting legislation or contracts in modern languages do.
To be fair, though: The later bit is from Greek; but why not tomatoes, huh?
Quisque aliquid habet quod occultet
for a t-shirt.
While the intended meaning is 'everybody has something to hide', in a different context one could imagine that the subject of "occultet" is someone else previously referred to. For example, if we had just been talking about Moxie Marlinspike, we could conceivably read this sentence as 'everybody has something for him [Moxie] to hide'. (Like, all of us users out here have got different things that Moxie can help each of us to protect.)
There's also a famous joke "malo malo malo malo malo" ('I prefer (being) a bad man in a bad situation to (being) an apple in an apple tree'). I'm sure we can proliferate examples of ambiguous Latin to match every other natural language.
A cool disambiguation feature in Latin is the distinction between the possessive pronouns "eius" and "suus", where "suus" is used when referring to possessions of the grammatical subject of the sentence and "eius" when referring to someone else's possessions. While English can specify the former ("his/her/its own"), it doesn't have a straightforward way to show that the possessor is not the subject of the sentence.
You can see the contrast between eius and suus in the text of the Magnificat
https://en.wikipedia.org/wiki/Magnificat#Text
where "ancillae suae" ('his handmaiden') occurs in a sentence whose grammatical subject is God, but "nomen eius" ('his name') in a sentence whose grammatical subject is the name. And sure enough, there is an actual disambiguation between the subject of a sentence and someone else later on:
Suscepit Israel, puerum suum, recordatus misericordiae suae, sicut locutus est ad patres nostros, Abraham et semini eius in saecula.
He [God] has taken up Israel, his [God's] servant, remembering his [God's] mercy, as he [God] said to our ancestors, Abraham and his [Abraham's] seed forever.
In this case "his mercy" and "his seed" refer to God's mercy but Abraham's seed, but there is no referential ambiguity about that in the Latin because one is "misericordiae suae" and the other is "semini eius".
https://en.wikipedia.org/wiki/High-context_and_low-context_c...
https://en.wikipedia.org/wiki/Genitive_case#Functions
People would usually mention that "amor Dei" ("love of God") could mean love toward God, or love that God has toward someone else.
Similarly you could have "odium brassicae" ("hatred of cabbage") which could mean a person's attitude toward cabbage, or perhaps a cabbage's attitude toward something or someone else.
Latin obviously has other ways to be more specific ("odium, quod brassica in te fert" 'hatred that cabbage bears against you' or something) but if you just use a genitive to express an attitudinal relation, it's going to be gramatically ambiguous which direction that attitude flows!
1) Is correct Latin
2) Sounds Italian, not Latin
3) In Italian it would mean "God's veals are beautiful"
4) In Latin it actually means "Go, Vitellio, to the sound of war (made by) the roman God"
[0]: https://it.wikipedia.org/wiki/I_vitelli_dei_romani_sono_bell... (didn't find an English version of it)
Cool sentence -- I had never heard of it before!
The Latin etymological equivalent of the Italian sentence would be "illi vitelli de illis Romanis sunt belli", which uses "de" in a way that's unidiomatic for ancient Latin (where it only means something like "from", not "of" in the sense of "belonging to").
1. Creative re-interpretation/re-analysis: A lot of commentators have re-interpreted existing verses to derive different meanings, and this is very possible to do. To pick a simple example, there is Kālidāsa's verse “…jagataḥ pitaru vande pārvatīparameśvarau” which clearly is a prayer to Pārvatī and Parameśvara (Shiva). But pārvatī-parameśvarau could be re-analyzed as pārvatīpa-rameśvarau (Parvati's and Ramā (Lakshmi)'s husbands), i.e. a prayer to Shiva and Vishnu. Similarly there are Shiva-para and Vishnu-para interpretations of various verses/works, people have written spiritual commentaries on love poetry, etc. So if something straightforward you say can be interpreted to have any meaning whatsoever (exaggerating a bit) by a sufficiently clever commentator, you better be careful :)
2. Happening naturally: Poets have used this too, what appear to be the same word being used in different settings. For example, here's a prayer that millions of people recite, to Ganesha: “agajānāna-padmārkaṃ gajānanam aharniśam / anekadantam bhaktānām ekadantam upāsmahe” — here the first line has the well-known word “gajānana” (the one with an elephant face), but it also starts with “agajānana” with appears to be the opposite (not an elephant face?). Actually the simple compound “agajānāna-padmārkaṃ” turns out to be made from: a-ga=mountain (that which does not move), thus agajā=daughter of the mountain (Pārvatī), agaja-ānana=Pārvati's face, agajānana-padma=the lotus of Pārvati's face, and the whole word agajānana-padma-arka=the sun to the lotus that is the face of Pārvatī (the sun of course being what makes a lotus bloom), thus it's a simple adjective describing Ganesha (namely that he makes his mother's face bloom with joy). And this is a perfectly straightforward usage of language that most educated readers will simply understand and find unremarkable, not a trick. At most a pleasing coincidence that the same syllables repeat (known as “yamaka”). In the second half, “ekadantam” refers to Ganesha having one tusk, but the “anekadantam” that it starts with is not the opposite of that but simply “anekadam taṃ” (him, who gives many things).
3. Used intentionally: At the extreme, poets have used ambiguity in the above way and also using puns (śleṣa, words with multiple meanings like kara=hand/doer/tax), to compose poems that have multiple meanings, including entire continuous works of poetry that tell two stories at once (each stanza being interpretable in two ways, and in one instance even up to six ways). There's a book about this called Extreme Poetry (https://cup.columbia.edu/book/extreme-poetry/9780231151603 — unfortunately for the lover of literature, this is a product of modern academia so heavy on theory and light on examples, but worth a look nevertheless). There's even a verse that consists of the syllable yā repeated 32 times (yāyāyāyā...) (https://www.scribd.com/document/6591853/The-Wonder-That-is-S...) which is not just “yeah, yeah” but is intended by the author to mean something. :-)
Do you think those readers would recognize the specific words, or that they would successfully parse the words in context at first glance using their language ability?
> There's even a verse that consists of the syllable yā repeated 32 times
Wow! It seems like this tradition or at least possibility is shared between Sanskrit and Chinese.
https://en.wikipedia.org/wiki/Lion-Eating_Poet_in_the_Stone_...
In general, a lot of the wordplay techniques and genres that are mentioned in the Extreme Poetry book you linked to are also practiced in similar forms in modern English (and to some extent French due to the Oulipo), but many of them were only invented or popularized during the 20th century, so I imagine some of these Sanskrit wordplay traditions are dramatically older.
The difference I was suggesting is that such instances are either rare or awkward in English. But in Sanskrit they are common (helped by poets' enormous skill over centuries, honed in a highly language-focused tradition) even in popular works, and feel natural/elegant.
[1]: https://en.wikipedia.org/wiki/An_Essay_Towards_a_Real_Charac...
This is the primary benefit for heavily structuring the sentences. It effectively turns into a programming language with its own form of definitions and statements. My question is: Can we make it Turing-complete by means of recursive sentences? Maybe by using the sentences that redefine proper nouns?
For example, a system that starts and stops based on observing parts of another system, but also allowing a user to input explicit start/stop commands would require additional rules:
The system is stopped if the subsystem is in state A.
The system is started if the subsystem is not in state A.
The system is stopped if the user sets the stop flag.
The system is started if the user unsets the stop flag.
Error: ambiguous state if subsystem not in state A and user sets the stop flag.
There's some real value here in allowing non-programmers to work through all the edge cases of a system, while simultaneously adding tools to convert standard English to ACE (eg: identifying ambiguous English and asking them to rewrite pronouns or split sentences up).https://en.wikipedia.org/wiki/TLA%2B
and formally verify properties (but perhaps that's something that the ACE developers already do).
In theory, you carefully say what you want the software to do in given scenarios, human developers understand the spec as-is, and automated tests can read and execute the spec as-is as a test.
I have no professional experience with it because all the docs make it look like something I would run from: lots of in-code scaffolding and talking like a computer just to get the same job done. But maybe you'll like it.
The "it's not code" part of Cucumber is that the test document is something that a non-programmer won't freak out at manipulating. (But a developer would still have to make sure the code snippets bind to the statements, so...).
Still, I like it. I really like the suggested tactics discussed in Specification By Example https://gojko.net/books/specification-by-example/
That last 2% is pretty damned awkward though. When you have 2 preconditions your tests go cartesian, you have to pick a dominant one. It's always a matter of one sucking less than the other, but that situation isn't stable. It tends to flip as bugs are identified or requirements shift.
Thing is, if it's 3 concerns, and definitely by 4, you're probably due for a refactor anyway, instead of reaching for Cucumber or a similar tool.
This is of course why the article can’t follow wikipedia’s citation rules. And also all the references just link to articles by one group, so the article can’t give you any real context. Is this a serious, notable work? Or is someone just boosting their search rankings with a Wikipedia link?
It's definitely not more notable than a list of butterflies on stamps of Australia https://en.wikipedia.org/wiki/List_of_butterflies_on_stamps_...
[1] https://en.wikipedia.org/wiki/Simplified_Technical_English
The quote "the limits of my language are the limits of my world" [2] shows when we try expressing these business rules in high-level programing languages like C, C#, Javascript. There are (a significant) parts of my code where I wish to not be limited by the syntax of the language.
DSLs helps, but usually takes a disproportionate effort to implement.
Would be great see more natural languages embedded on our day to day programing language.
[1] https://twitter.com/ianmiell/status/1144154072217522176?s=19 [2] https://www.quora.com/What-did-Ludwig-Wittgenstein-mean-by-t...
Jaqen H'ghar spoke ACE
[1] http://digitalcollections.library.cmu.edu/awweb/awarchive?ty...
There is defined syntax for variables, but they are expressly nouns exclusively.
Or maybe "To be honest, I do not like that the Wikipedia editors chose not to write this article in ACE"
The sentence does not follow the rule it describes, since "rules" does not have a determiner. It might be worth a try, but I suspect ACE would make the article awkward and harder to read.
Can you give good examples to the contrary?
The main risk would be people blindly accepting corrections that actually change the meaning -- just like any other autocorrection system. I’m not sure how to mitigate against that.