Sentences (A/O/NI/RA/PO/PU)
Eberban sentences all start with particles in families A, O or NI, which are respectively all particles which start with a-, o- and n-. They are followed by a combination of these elements:
- a definable word: a root, compound, GI and i-variable (optionally namespaced, see ohi explanation below).
- an inner predicate, which is a predicate chain optionally prefixed by an argument list.
A, O and NI differ in what is expected after them:
- A must be followed by an inner predicate.
- NI must be followed by a definable word.
- O must be followed by a definable word then an inner predicate.
If the first sentence of a paragraph doesn’t start with A/O/NI, then it is implicitly a a sentence.
A family
-
a (assertion): a allows the speaker to make an assertion of a proposition (0-ary predicate).
-
al (injunction): al allows the speaker to make a request/order/command.
-
an (context update): The context argument of the predicate wrapped with a is filled with a globally managed context variable that can be updated using an. an wraps a 1-ary predicate that takes as its parameter the new context, which can thus be constrained in terms of the current implicit context argument. The vocabulary contains many predicates designed to easily be used with an to provide many important concepts, such as tenses.
-
anu (register automatic context update): anu wraps a 1-ary like an, which describes how the context is updated after each a sentence ends. It is currently unknown if it will be used significantly by casual speakers, but its existence is necessary to implement things like the “present” going forward in time after each sentence.
-
ahu (sentence wrapper): ahu wraps a 1-ary predicate that will take every sentence expressed with a as an argument, which is mainly used to correctly configure the context for some features to work. Will likely not be used by casual speakers.
O family
-
o (question): o allows the speaker to ask a question by defining a predicate to be used by the interlocutors. This predicate must then be used in reply.
A 0-ary predicate prompts the listener to assert it is true (a gi), that it is false (a bi/zi gi), or that it is unknown (mui). (TODO: Add an easy way to state the answer to the question is unknown / gi equivalent to mui).
Similarly, a higher arity predicate prompts the listener to provide the required arguments to make the predicate true, to negate it if there are no such arguments, or to assert that it is unknown.
-
on (definition): on allows the speaker to assign a definition to a word, and is an important tool to create the vocabulary of Eberban and avoid repetitions.
It can also be used by speakers to simplify complex sentences by defining part of it using on, then using the defined predicate(s) in a a sentence.
Note that the definition doesn’t use the global context argument, and instead uses the context argument provided by the sentence using this predicate.
-
oni (capturing definition): Same as on but captures the current global context. The implicit context argument is ignored.
-
ol (performative / axiom definition): Shorthand of defining a predicate using on then enabling it as an axiom with nu. Can be used as an equivalent to a performative speech act in natural language.
-
ohi (imports): Imports definitions and enabled axioms from eberban quote in slot E under the namespace represented by the “defined predicate” following ohi. Predicates in namespaces can be used by prefixing them with the namespace predicate followed by PI (with single member pi) If word ga is imported in namespace gi (using
ohi gi <quote defining ga>
), then it can be used withgi pi ga
. -
oie/oia/oio/oiu (set defaults): Set the default binding for a slot of the given predicate. See the chapter on defaults
NI family
-
nu (enable axiom): Considers the provided definable word as an axiom, a proposition that is true by definition, and which is evaluated within the current global context.
Redefining this word will not change the enabled axiom, however enabling it again using nu will disable the previous one and enable the new one.
-
ni (disable axiom): Disable an axiom previously enabled with nu.
-
nohu: enable all axioms in given namespace.
-
nohi: disable all axioms in given namespace.
-
no: extract a predicate from its namespace to put it in the root namespace. Equivalent to
on <pred> <namespace> pi <pred>
-
noi: extract all predicates from given namespace.
noi <namespace>
is equivalent to sayingno <namespace> pi <pred>
for all<pred>
in<namespace>
.
RA eraser
ra is a special word which erase anything said since the start of the current sentence, initial A/O/NI included. It must be surrounded by spaces or pauses.
It is able to erase it even if the text is ungrammatical, and will erase anything back to the start of the last sentence where the text was still grammatical (this means that an ungrammatical sentence followed by grammatically-looking sentences actually just counts as a single ungrammatical sentence).
However one must be careful with foreign quotes. If the text was grammatical until now, a ra appearing inside the foreign quote will be quoted and will not erase the sentence. However if the sentence was ungrammatical, then ra will erase the sentence even if it looks like it is inside a foreign quote. To avoid this issue, it is recommended to properlly close the foreign quote (as if the text was grammatical), so that ra will properly erase the sentence regardless of if the sentence was grammatical or not.
To erase only a part of a sentence, use short erasure “buhu”.
Paragraph marker PO
PO can be placed before A/O/NI to mark a change of subject or new paragraph. If PO is not followed by one of them then a is implied. If multiple prefixes in a row are used it must be the first of them.
PO contains 2 members po and poi, which affects definitions involving namespaces:
- Inside a text imported with ohi, po marks the following definitions as public, meaning they’ll be accessible in the namespace using PI. poi on the other end marks the following definitions as private, making them inaccessible in the namespace. This allows to hide implementation details.
- Outside a text imported with ohi, predicates defined in a namespace will not be exported by noi if defined in a poi paragraph, while they will be exported if defined in a po paragraph. In both cases they are accessible with PI.
Sentence terminator PU
Every sentence can optionally be terminated with PU (with single member pu). It’s sole purpose is to attach annotations on the sentence after the fact, as if it was attached on A/O/NI.
Conversations and special namespaces
In a conversion between multiple interlocutors, the following rules applies:
- the context is carried between the sentences of all interlocutors, in order of utturance
- a context transformation is applied when changing speaker to update personal pronouns and related concepts (TODO: create word for it and define how it works)
- definitions made by an interlocutor applies to all. All interlocutors shares the same word meanings in the root namespace.
MI is used for special namespaces than can be used but not modified freely by the speakers, and allows mitigating problems that can be caused by the above rules (like an interlocutor redefining a word another wants to use for its former meaning).
- mio (inclusive we) namespace contains all the words defined in the official dictionnary. It can be used to access a word that has been overwritten by any interlocutor’s definition.
- mi (speaker) namespace contains all the words from mio, but is modified by any definitions made by the speaker; and is not modified by definitions made by other interlocutors.
- mo (interlocutor) namespace contains all the words from mio, but is modified by any definitions made by interlocutors; and is not modified by definitions made by the speaker.