Friendly Lojban
Chapter 21. Formal Grammar
What Is the Formal Grammar?
Lojban's grammar is defined by a formal EBNF (Extended Backus-Naur Form) grammar — a precise mathematical specification of every legal sentence. This is what makes Lojban genuinely unambiguous: there is exactly one parse tree for every grammatical Lojban expression.
This chapter summarizes the key structural rules in reader-friendly terms. It does not duplicate the full EBNF rules or selma’o cross-reference tables line-for-line.
Where the machine grammar lives
The complete formal grammar of Lojban is specified as an EBNF (PEG) machine grammar. You do not need to read it to speak Lojban, but knowing it exists explains why "the parser says no" can have a definitive answer.
Key resources for the formal grammar:
- Parser tools: camxes, ilmentufa, and other community parsers accept a Lojban string and return its parse tree or an error — the fastest way to check a tricky sentence.
- cmavo by selmaʼo: Chapter 20 of this book catalogues every selmaʼo with examples; jbovlaste lists individual cmavo.
- Abbreviated EBNF for key rules — the table below gives the handful of non-terminals that most affect learners.
| Rule | What it generates | Key cmavo classes |
|---|---|---|
text | A full Lojban utterance | I, NIhO, NO'I |
sentence | One bridi or question | I (sentence separator) |
bridi_tail | selbri + trailing sumti | CU, VAU |
selbri | The predicate (may be a tanru) | CO, KE/KEhE |
sumti | Any argument | LE, LA, LO, KOhA, ZO, ZOI |
tag | Tense or modal prefix | PU, ZI, ZEhA, FAhA, BAI |
relative_clause | poi/noi + _bridi_tail | GOI, NOI |
prenex | Bound variables before bridi | DA, GOhA + ZO'U |
abstraction | Abstractor + _bridi_tail + kei | NU + KEI |
number | Any numeric string | PA, MAI, MOI, ROI |
Using this friendly chapter: treat these sections as a conceptual map (templates, scope, elision). If a parser rejects a sentence, check the formal chapter and your parser’s documented baseline — community grammars evolve; the friendly text may simplify or reorder explanations for teaching.
The Hierarchy of Lojban Structure
Lojban utterances are built up through nested layers:
text
└── paragraphs (ni'o / no'i groups)
└── sentences (.i separated)
└── _bridi_
├── prenex (... zo'u)
├── _sumti_ (arguments)
└── _selbri_ (predicate)
├── _brivla_ (single word)
├── _tanru_ (_brivla_ sequence)
└── abstraction (NU + _bridi_ + kei)
Each level can contain connectives, tense tags, attitudinals, and terminators.
The Core Bridi Template
A canonical bridi has this structure:
[prenex zo'u] [_sumti_...] [tense] [NA] _selbri_ [_sumti_...] [vau]
More precisely:
[topic zo'u] [FA-tag] _sumti_ [cu] [tense/modal] [na] _selbri_ [_sumti_...] [vau]
cu separates the pre-selbri sumti from the selbri itself and is required when the sumti might otherwise be parsed as part of a tanru.
vau closes the bridi (almost always elidable, but terminates any implicit open bridi).
Sumti
A sumti is any of:
| Form | Description |
|---|---|
| le/lo/la … ku | description with gadri |
| li … | mathematical expression |
| lu … li'u | Lojban quotation |
| zo word | single-word quotation |
| zoi X … X | foreign text quotation |
| la'o X … X | foreign name |
| pronoun | mi, do, ti, ko'a, da, ke'a, ce'u, zo'e, etc. |
| name | la + cmevla |
| abstraction | le NU bridi kei |
Sumti can be followed by relative clauses (poi/noi … ku'o), relative phrases (pe/po/ne + sumti), or be/bei/be'o inner-slot fillers when embedded in a description.
Selbri
A selbri is any of:
| Form | Description |
|---|---|
| single brivla | klama, blanu, mamta |
| tanru | two or more brivla, optionally with bo, ke…ke'e, je, co |
| NU bridi kei | abstraction as selbri |
| me sumti me'u | sumti converted to selbri |
| go'i (and other GOhA) | pro-selbri |
| na'e/no'e/to'e + selbri | scalar negation prefix |
The co operator inverts the tanru so the post-co word is the modifier and the pre-co word is the head:
A co B = B-type A (B modifies A)
Tense Structure
Tense is a prefix on the selbri (before na and the selbri itself):
[PU] [ZI] [FAhA] [VA] [ZAhO] [CAhA] _selbri_
Each component is optional and they stack left-to-right, each adding a leg of the "imaginary journey":
- PU = temporal direction (pu/ca/ba)
- ZI = temporal distance (zi/za/zu)
- FAhA = spatial direction (zu'a, ri'u, etc.)
- VA = spatial distance (vi/va/vu)
- ZAhO = aspect (co'a, ca'o, co'u, etc.)
- CAhA = actuality/potentiality (ca'a, ka'e, etc.)
A tense may be followed by ki to set it as a persistent reference point for subsequent sentences.
Logical Connective Forms
Lojban has six positions where logical connectives appear, each with its own cmavo class:
| Position | Class | Example |
|---|---|---|
| Between sentences | I + JA | .ije, .ija |
| Between bridi-tails (shared x₁) | GIhA | gi'e, gi'a |
| Between sumti | A | .e, .a |
| Between tanru components | JA | je, ja |
| Forethought (before both bridi) | GA + gi | ge…gi, ganai…gi |
| Forethought (inside selbri) | GUhA + gi | gu'e…gi |
All connectives follow the same four-vowel system (A/E/O/U) encoding the same truth functions regardless of position.
Terminator Elision Rules
Lojban has many optional terminators. The general rule: a terminator can be elided when the next word unambiguously signals the end of the current construction.
Key terminators and their elision conditions:
| Terminator | Closes | Safe to elide when… |
|---|---|---|
| ku | LE/LA description | next word is a selbri, another sumti starter, or end-of-bridi signal |
| kei | NU abstraction | next is cu, a tense, or end-of-bridi |
| vau | bridi | almost always (.i or fa'o next) |
| ku'o | poi/noi clause | next is not another word that could extend the clause |
| ge'u | GOI phrase | next is not another sumti modifier |
| ke'e | ke grouping | at the end of the tanru/selbri |
| be'o | be/bei chain | not followed by a relative clause (poi/noi) |
| li'u | lu quotation | usually kept for clarity |
| lo'o | loi/lei mass description | usually safe |
| tu'u | tu'e block | at the actual end of the block |
| me'u | me construction | usually safe |
| kei | tense/tag NU | before ku or .i |
When elision is unsafe (keep the terminator):
1. Ambiguity with following word:
le gerku poi blabi ku'o cu barda → safe to elide ku'o le gerku poi blabi cu barda = same meaning (cu ends the poi clause unambiguously)
But:
le gerku poi le nanmu pu viska — does this end after viska? Or does more follow? le gerku poi le nanmu pu viska ku'o cu batci — explicit ku'o needed here because cu is far away
2. be/bei before a relative clause:
le dunda be le rozgu poi melbi — ambiguous: does poi attach to le rozgu or to the whole dunda be le rozgu? le dunda be le rozgu be'o poi melbi — clear: poi attaches to the whole dunda-construction
3. Nested abstractions:
le du'u le nu mi klama kei cu vajni — kei needed to close the inner nu before the outer bridi continues
4. Stacking sumti without clear boundary:
mi djuno le du'u do klama le zarci — the LE stacks are closed by context mi djuno le du'u do klama le zarci ku kei — explicit if the outer bridi continues with more sumti
The elision hierarchy (informal rule of thumb):
Terminators lower in this list are more commonly elided than those above them:
- li'u — least often elided (keeps quotes clearly bounded)
- be'o — elide only at end of description
- ku'o — elide when cu or .i follows
- kei — elide when cu follows
- ku — usually safe to elide
- vau — almost always safe
The parser is greedy: it absorbs as much as it can into the current construction. So ku, kei, and ku'o tell the parser "stop here" — without them, the parser keeps extending.
Free Modifiers (Free Grammar)
Many constructs can appear almost anywhere in a sentence without changing the parse. These have "free grammar" — they attach to whatever is nearest them:
- Attitudinals (UI): .ui, .oi, pe'i, ti'e, etc.
- Discursives (UI): ku'i (however), ta'o (incidentally), mi'u (ditto)
- to … toi: parenthetical remarks
- sei … se'u: metalinguistic commentary
- xi: subscript
Free modifiers do not change the syntactic parse; they only add pragmatic/attitudinal color.
Prenex and Quantifier Logic
zo'u and the Prenex
zo'u is the grammatical separator between a prenex and the bridi body. Its grammar role is unambiguous: everything before zo'u is the prenex (a sequence of quantified sumti), everything after is the bridi.
ro da poi prenu zo'u da morsi
│ ← prenex ──────────│ ─ _bridi_ ──┤
"For all X that are persons: X dies."
The prenex binds logical variables (da, de, di, and their subscripted variants) with quantifiers. The variables then appear in the bridi body where they are used.
Why zo'u exists (grammar perspective)
Without zo'u, a quantifier phrase like ro da poi prenu would be parsed as a sumti — just an argument filling a numbered place. There would be no structural way to indicate it binds the whole following bridi.
zo'u signals: "I am done listing the variables; everything that follows is the scope of those bindings." This is the Lojban equivalent of the mathematical ∀x ( … ) or ∃x ( … ) notation — zo'u is the opening parenthesis and the end of the bridi is the close.
Quantifier Types
da zo'u da klama = ∃x: x goes = Something goes. ro da poi prenu zo'u da morsi = ∀x: person(x) → dies(x) = All persons die. su'o da poi gerku zo'u da blabi = ∃x: dog(x) ∧ white(x) = Some dog is white.
Scope Order
The order of variables in the prenex determines scope. The leftmost variable has the widest scope (is the outermost quantifier):
ro da su'o de zo'u da dunda de mi = ∀x ∃y: x gives y to me = Everyone gives me something (possibly different things).
su'o de ro da zo'u da dunda de mi = ∃y ∀x: x gives y to me = There is one thing that everyone gives me (the same thing).
These have different meanings despite using the same words. Only the prenex order distinguishes them.
Inner Quantifiers vs. Prenex
Quantifiers can also appear without a prenex, directly inside descriptions:
ro le prenu cu morsi = All the persons die. (inner quantifier on le) su'o lo gerku cu blabi = Some dog is white. (inner quantifier on lo)
These are equivalent to prenex quantifiers for most purposes, but the scope of inner quantifiers is limited to the bridi they appear in. They cannot extend across sentence boundaries.
Prenex variables (da, de, di) can extend across a whole discourse (until a da'o resets them). This is how Lojban expresses complex logical arguments:
da poi prenu zo'u da'e mlatu = There is a person such that [in all possible worlds] that person is a cat. (da ranges across the modal)
da'o: Resetting Variables
da'o cancels all current pronoun and logical variable assignments, starting fresh. It is often placed after ni'o at major topic boundaries. Without da'o, a variable bound in one paragraph might unexpectedly still be bound in the next.
Useful Prenex Patterns
Universal negation:
ro da poi prenu zo'u da na morsi = No person dies (literally: for all persons, they do not die).
Mutual relationship:
ro da ro de poi prenu zo'u ganai da prami de gi de prami da = For all persons A and B: if A loves B then B loves A. (mutual love claim)
Existential within universal:
ro da poi prenu zo'u su'o de poi plise zo'u da citka de = Every person eats some apple (they may eat different apples).
zo'u in topic-comment sentences: When zo'u appears with a non-variable sumti (like a description), it creates a topic-comment sentence rather than a logical prenex. The distinction is grammatical only in how the sentence is interpreted:
le finpe zo'u citka — The fish: [it/they] eat[s]. (topic-comment) da poi finpe zo'u da citka — For some fish: it eats. (logical prenex)
The Grammar as a Whole
Key properties of the formal Lojban grammar:
- Unambiguous: every grammatical string has exactly one parse tree. No structural ambiguity.
- Context-free (with some lexical lookups): the grammar can be parsed left-to-right with bounded lookahead.
- Regular morphology: word-class (cmavo / brivla / cmene) is determinable from word shape alone, before parsing.
- Audio-visual isomorphism: written form = spoken form with no exceptions.
- Elidable terminators: formal grammar permits all terminators; spoken and written usage elides them when unambiguous.
Quick Reference: Sentence Building
A minimal grammatical Lojban bridi requires only a selbri:
klama — Someone/something goes to somewhere from somewhere.
Add x₁:
mi klama
Add x₂:
mi klama le zarci
Add tense:
mi pu klama le zarci
Add negation:
mi pu na klama le zarci
Add relative clause on sumti:
mi pu klama le zarci poi barda
Add modal:
mi pu klama le zarci mu'i le nu mi djica
Embed in abstraction:
le du'u mi pu klama le zarci cu vajni The proposition that I went to the store is important.
Each layer is added according to the formal grammar — and at each step the result is unambiguous.
bu'a-series: Selbri Variables
Just as da/de/di are bound variable sumti (standing for unknown things), bu'a/bu'e/bu'i are bound variable selbri — they stand for unknown predicates or relations:
da bu'a — Something stands in some relation. (existential claim about any relation)
ro da ro de zo'u ganai da bu'a de gi de bu'a da For all relations bu'a: if A bu'a B then B bu'a A. (claim that all such relations are symmetric)
bu'a/bu'e/bu'i work exactly like da/de/di — they are bound by quantifiers in the prenex and appear in the bridi body. They fill the selbri slot:
su'o bu'a zo'u mi bu'a do There is some relation that holds between me and you.
This is how Lojban makes claims about properties of properties — second-order logic. It's used in precise logical arguments and in formal definitions.
Prenex rule (CLL): You cannot write bare bu'a zo'u … — the prenex must contain sumti, and su'o bu'a (or ro bu'a, etc.) counts as an indefinite description in that slot, just like su'o nanmu. If you drop the prenex, you drop the explicit su'o too:
la .djim. bu'a la .djan. Jim stands in at least one relation to John. (implicit su'o)
If the quantifier on bu'a is anything other than su'o, keep the prenex:
ro bu'a zo'u la .djim. bu'a la .djan. For every relation F: Jim F John — usually false; needs ro bu'a in the prenex.
bu'a vs broda: Chapter 5 uses broda, brode, … as informal “slot-filler” brivla in examples. For bound predicate variables in a prenex, use bu'a/bu'e/bu'i (selma'o GOhA), not broda.
A few more notes on variables
Subscripts: If you need more than three sumti variables or three selbri variables, add a xi subscript — da xi vo, bu'a xi re — each (cmavo + subscript) pair is a fresh binding (Chapter 18 for xi notation).
Requantifying the same variable: Later in the bridi, ci da … re da … can pick out a subset of the things da already ranged over (e.g. three cats white, two of those cats big). Full detail is textbook logic; just remember later numbers are about the same da, not a new unrelated da.
Where this chapter sits: CLL’s logic chapter ends by noting that speakable predicate logic is open-ended — Lojban’s grammar is fixed, but the hardest metalogic is still research. Here you have the practical core: prenexes, naku movement, connectives, da and bu'a, and De Morgan. Deeper proof theory is the same as in any logic text, only with Lojban surface forms.
De Morgan's Laws in Lojban
De Morgan's laws state that logical negation distributes over connectives, swapping AND↔OR:
not(A and B) = (not A) or (not B) not(A or B) = (not A) and (not B)
In Lojban, these translate directly:
For sumti connectives:
naku la .alis. .e la .djan. cu klama = la .alis. na klama .a la .djan. na klama Not both Alice and John go = Alice doesn't go or John doesn't go.
For bridi connectives:
na ku ge la .alis. cu klama gi la .djan. cu klama = la .alis. na klama .a la .djan. na klama It's not the case that both go = One of them doesn't go.
The rule in connective vocabulary:
- Negating E (and) → A (or) with negated components: naE = nand
- Negating A (or) → E (and) with negated components: naA = nor
This is why the vowel+na+nai system covers all 16 truth functions — De Morgan lets you express every combination.
Quantifier De Morgan (covered in Chapter 13):
- naku ro da = su'o da naku — not-all = some-not
- naku su'o da = ro da naku — none = all-not
naku Outside a Prenex: Full Treatment
naku in a prenex position negates the scope of what follows with full quantifier interaction. Outside a prenex, it works as a "wide-scope na":
naku la .alis. cu klama
This is equivalent to la .alis. na klama for simple bridi but differs with quantifiers:
naku ro le prenu cu morsi Not every person dies. (= some person doesn't die — naku + ro = su'o na)
naku su'o le prenu cu morsi No person dies. (= every person doesn't die — naku + su'o = ro na)
The full table:
| With naku | Without naku | Quantifier effect |
|---|---|---|
| naku ro da broda | su'o da na broda | not-all → some-not |
| naku su'o da broda | ro da na broda | none → all-not |
| naku no da broda | su'o da broda | not-zero → some |
| naku re da broda | complex | not-exactly-two |
naku is most important in logical arguments and in understanding the precise scope of negation. For ordinary speech, na before the selbri is usually sufficient.
Logic and Quantifiers
Existential Claims: da, de, di
The cmavo da, de, and di (selma'o KOhA) are logical variables — they stand for unknown things, like X, Y, and Z in logic notation.
The most basic use is an existential claim: asserting that something exists.
da viska mi There is an X such that X sees me. → Something sees me.
This does not presuppose that the listener knows what is doing the seeing — it only claims that something does.
A prenex makes the structure explicit. It consists of any number of variable declarations followed by zo'u:
da zo'u da viska mi There-is-an-X such-that: X sees me.
The prenex can hold multiple variables:
da de zo'u da prami de There-is-an-X, there-is-a-Y: X loves Y. → Somebody loves somebody.
Note: da and de can refer to the same thing unless that is explicitly ruled out. The sentence above does not mean "somebody loves somebody else."
da zo'u da prami da Somebody loves themselves.
Universal Claims: ro da
When ro (all/every) precedes a variable, it makes a universal claim:
ro da zo'u da viska mi For every X: X sees me. → Everything sees me.
Mixed universal and existential claims have crucially different meanings depending on order:
ro da de zo'u da viska de For every X, there is a Y: X sees Y. → Everything sees something. (each thing sees something, possibly different somethings)
da ro de zo'u da viska de There is an X such that for every Y: X sees Y. → Something sees everything. (one particular thing sees all)
These mean completely different things. The order of variables in the prenex determines scope: the leftmost has the widest scope.
Restricted Variables: da poi
Variables can be restricted to a subset using a poi relative clause:
da poi gerku cu vasxu There is an X which is a dog: X breathes. → Some dog breathes.
ro da poi gerku cu vasxu For every X which is a dog: X breathes. → Every dog breathes.
This is far more useful than unrestricted universal claims, which are almost never true about absolutely everything.
Dropping the Prenex
The prenex is optional when the variables appear in the same order in the main bridi as they did in the prenex. In that case, just move any ro and poi to the first occurrence of the variable:
da viska mi — Something sees me. ro da poi gerku cu vasxu — Every dog breathes.
When variables need to appear in a different order than their scope order, you need the prenex explicitly. For example, to say "every person is bitten by some dog":
ro da poi prenu ku'o de poi gerku zo'u de batci da
Dropping the prenex here and reversing the order would instead say "some dog bites every person" — a completely different claim.
Generalized Quantifiers
Any number can quantify a variable, not just ro (all) and su'o (at least one):
re da viska mi — Exactly two things see me. su'ore da viska mi — At least two things see me. no da viska mi — Nothing sees me. (zero things see me)
Note: bare da without an explicit quantifier implies su'o da (at least one). So da viska mi means "at least one thing sees me."
The distinction between exact and minimum counts:
- re = exactly two
- su'ore = at least two (su'o = "at least", re = "two")
Quantifier Scope and Grouping
When two quantified expressions appear in the same bridi without a prenex, the left-to-right order determines scope:
ci gerku cu batci re nanmu Three dogs bite two men.
Does each dog bite the same two men, or possibly different pairs? In Lojban, the left variable (ci gerku) has wider scope — so there are three dogs each biting two men, possibly different ones. Up to six different men could be involved.
To make both quantifiers have equal scope (the same two men bitten by all three dogs), use a termset with ce'e:
ci gerku ce'e re nanmu cu batci Three dogs [together with] two men bite. (the same two men are bitten by all three dogs)
The Problem of "Any"
English "any" is ambiguous. Lojban treats the two senses differently:
Universal "any" (anyone who does X also does Y): use ro da poi:
ro da poi klama le zarci cu cadzu le foldi Everyone who goes to the store walks across the field.
This asserts that there are people going to the store (universal claims imply the existential). If you want a purely conditional statement with no such implication, use the logical connective go (if-and-only-if):
ro da zo'u da go klama le zarci gi cadzu le foldi For every X: X goes to the store if and only if X walks across the field.
This does not imply that anyone actually goes to the store.
Existential "any" (I need any box = I need a box, one will do): when the existence is inside a want/need/possibility context, bind the variable in the inner prenex:
mi nitcu lo nu da poi tanxe gi'e bramau ti zo'u mi ponse da I need an event of: there existing a box bigger than this that I own.
The da is existential only within the nu abstraction — it doesn't assert the box exists in the real world right now, only in the needed event.
Negation Boundaries
When naku appears in a prenex, it creates a negation boundary. Moving naku past a quantifier inverts it: ro ↔ su'o.
Starting from:
ro da su'o de zo'u da prami de Everybody loves at least one thing.
Negate it:
naku ro da su'o de zo'u da prami de It is false that everybody loves at least one thing.
Moving naku rightward past ro da (inverting ro → su'o):
su'o da naku su'o de zo'u da prami de There is someone who doesn't love anything.
Moving it one more step past su'o de (inverting su'o → ro):
su'o da ro de naku zo'u da prami de There is someone who, for each thing, doesn't love that thing.
All three forms are logically equivalent. The rule: every time naku crosses a quantifier boundary, invert the quantifier (ro↔su'o). Double negatives in adjacent position cancel.
The quantifier no (zero) is shorthand for naku su'o — none means not-at-least-one. To negate a noda sentence, first expand it:
noda vasxu = naku su'o da vasxu → negation = su'o da vasxu (something breathes)
Terminator Elision: Context Rules
The Lojban parser is greedy — it consumes as much as possible into the current construction before stopping. Terminators tell the parser where to stop. Knowing when elision is safe requires understanding what the parser would do without the terminator:
Always safe to elide (parser cannot be misled):
- vau at the end of a sentence before .i or end of text
- li'u at the very end of a bridi (nothing follows in the same sentence)
- do'u after a vocative phrase at sentence start
- kei at the end of the entire sentence
- ku after a description that immediately precedes the selbri via cu
Usually safe to elide (by convention, rarely ambiguous):
- ku before most selbri
- ge'u (GOI terminator) before sentence-final position
- be'o when the be/bei chain is the final component of a tanru
Must keep (parser will extend the construction otherwise):
| Terminator | Keep when… |
|---|---|
| be'o | followed by a relative clause (poi/noi): without be'o, the clause attaches to the last bei argument instead of the whole tanru |
| kei | followed by another sumti filling x₂ of the abstractor: le nu mi klama kei be le zarci requires kei or the parser swallows le zarci into the abstraction |
| ku | before a selbri whose first word is a PA (number) — the number could be read as the inner quantifier of the description |
| ke'e | in mid-tanru when more tanru components follow the group |
| vau | in gi'e compound-bridi when the first bridi tail has trailing modifiers |
| fe'u | (fi'o terminator) before a non-logical connective immediately after a fi'o-modal |
| lu'u | (LAhE terminator) before another sumti that would be absorbed into the qualified sumti |
Heuristic: elide terminators by default; restore them one at a time if a canonical Lojban parser (e.g., camxes) rejects or misparses the sentence.
PA Role Ambiguity
A PA (number) cmavo can fill several roles in the same grammatical position, creating ambiguity that requires context or terminators to resolve:
Role 1 — Outer quantifier (before a description):
re le gerku cu blabi Two of the dogs are white. (re = outer quantifier)
Role 2 — Inner quantifier (between descriptor and selbri):
le re gerku cu blabi The two dogs are white. (re = inner quantifier of le)
Role 3 — Bare number sumti (standalone):
re cu klama Two (things) come. (re = number standing alone as sumti, implies lo re)
Role 4 — Part of a mekso expression:
li re su'i ci du li mu 2 + 3 = 5 (re = numeral inside li…)
Role 5 — MOI selbri (with a MOI cmavo):
mi pamoi I am first. (pa + moi → ordinal selbri)
Role 6 — Part of a quantifier phrase (with ROI/MAI/etc.):
mi reroi tavla I talk twice. (re + roi = twice)
The critical ambiguity — a number immediately before a selbri could be outer quantifier or mekso:
pa klama = one comes (outer quantifier — someone comes) li pa = the number 1 (inside li... unambiguous)
When a number precedes a le/lo description directly, it is unambiguously an outer quantifier. When a number appears with no descriptor before a selbri, it is read as outer quantifier over an implicit lo. To use a number as a mekso value outside li…, wrap it in li.
PA before selbri after ku — the specific trap:
le gerku ku pa blabi
Without ku this is: le gerku pa blabi — the parser could read pa as the inner quantifier of le gerku or the outer quantifier before blabi. The ku terminates the description cleanly, making pa unambiguously the outer quantifier for blabi.
Summary
The formal Lojban grammar defines:
- Three word classes (cmavo, brivla, cmene) by morphological shape
- Bridi structure: prenex + sumti + tense + selbri + sumti
- Tense as a stacked prefix (PU ZI FAhA VA ZAhO CAhA)
- Six connective positions with consistent truth-function vocabulary
- Terminator elision rules (greedy parser; elide when unambiguous; keep be'o before poi/noi, kei before nested sumti)
- Free modifier attachment (attitudinals, discursives, to/toi, sei/se'u)
- Quantifier prenex for logical variables
Terminator elision key points:
- The parser is greedy — terminators tell it where to stop
- li'u almost always kept; vau almost always dropped
- be'o required before relative clauses; kei required in nested abstractions
- When in doubt, include terminators
Prenex / quantifier scope key points:
- zo'u grammatically separates prenex from bridi body
- Leftmost prenex variable has widest scope (outermost quantifier)
- ro da su'o de zo'u ≠ su'o de ro da zo'u — order controls meaning
- Inner quantifiers (ro le) are scoped to one bridi; prenex variables (da) can span discourse
- da'o resets all variable bindings
Selbri variables:
- bu'a/bu'e/bu'i = bound variable selbri (stand for unknown predicates)
- su'o bu'a zo'u required in prenex (not bare bu'a zo'u); drop prenex ⇒ drop explicit su'o
- ro bu'a etc. keep the prenex; broda is informal — use bu'a for real variable binding
- xi subscripts extend da/… and bu'a/… when three of each are not enough
De Morgan's laws:
- naku (A and B) = (not A) or (not B)
- naku (A or B) = (not A) and (not B)
- naku ro da = su'o da naku (not-all = some-not)
- naku su'o da = ro da naku (none = all-not)
Logical variables and quantifiers:
- da/de/di = existential variables (something, something-else, a-third-thing)
- Bare da implies su'o da (at least one); explicit ro da = for all
- Prenex: da de zo'u … — leftmost variable has widest scope
- Dropping the prenex: legal when variable scope order matches bridi order
- da poi [bridi] = restricted variable: only X that satisfy [bridi]
Quantifier scope:
- Left-to-right order in a bridi determines scope: ci gerku cu batci re nanmu → 3 dogs each bite 2 (possibly different) men
- Use a termset (ce'e) to force equal scope: both quantifiers range over the same objects
The problem of "any":
- Universal "any" (every X that…) → ro da poi …
- ro da poi implies the set is non-empty; for pure conditionality use go in a prenex
- Existential "any" (one will do) → bind da inside an inner abstraction (nu, ka, etc.) so it is existential only within that scope
Negation boundaries:
- naku in a prenex creates a scope boundary; moving it past a quantifier inverts it: ro ↔ su'o
- no da = naku su'o da (none = not-at-least-one); negate it → su'o da
- Each time naku crosses one quantifier boundary, that quantifier flips; two adjacent negatives cancel
Formal spec: This friendly chapter is the conceptual skeleton — enough to see why sentences parse as they do. For machine-readable rules, use one of the parser tools listed in Where the machine grammar lives above.