First Steps in Lojban
Lesson 34. Tanru brackets: bo, ke … ke'e, and co

Long time no see! Sevan asked me to guest-lecture on tanru grouping.

Koshon knows this better than I do. Also, Sora listens to Koshon.

I do not… okay maybe a little.

Recall from Lesson 6: tanru group left to right by default.
blabi mlatu zdani = ((blabi mlatu) zdani)
That means "a white-cat house" — the house is cat-like (white-cat-type house). Not "a white (cat-house)" (a house for white cats).

Right, and we got burned by that once. So how do we change the grouping?

Three tools: bo, ke/ke'e, and co.
bo — raise binding priority

bo placed between two selbri binds them tighter than the default. Think of it as the multiplication sign in arithmetic: 2 + 3 × 4 evaluates differently from (2 + 3) × 4, and bo is the × sign.
- bo
- Makes the two selbri on either side bind before anything else.
blabi mlatu bo zdani = blabi (mlatu bo zdani) = blabi (mlatu-zdani) A white cat-house. — the house is white; it's a cat-house kind of thing.
blabi bo mlatu zdani = (blabi bo mlatu) zdani = (blabi-mlatu) zdani A white-cat house. — same as the default, emphasized.

Oh! So blabi mlatu bo zdani finally puts the house in charge of being white, not the cat.

Exactly. bo is the quick way to say "glue these two together first."
ke … ke'e — explicit parentheses

If bo is the × sign, ke … ke'e are actual parentheses. Everything between them is treated as one unit before any surrounding selbri are considered.
- ke
- Open grouping bracket for tanru.
- ke'e
- Close grouping bracket (terminator for ke).
blabi ke mlatu zdani ke'e = blabi ( mlatu zdani ) A white cat-house. (Same meaning as the bo example above.)

When would I use ke instead of bo?

When grouping more than two pieces. Watch:
xekri ke melbi kerfa ke'e ke cinla birka ke'e bo ninmu = xekri (melbi kerfa) (cinla birka) bo ninmu A woman with black beautiful-hair and slender arms. Structure: ((xekri (melbi kerfa)) ((cinla birka) ninmu))
- kerfa
- x1 is the hair/fur of body x2 at location x3
- cinla
- x1 is thin/slender in dimension x2, by standard x3
- birka
- x1 is an arm of body x2

So ke'e is the right terminator for ke. Not ku or anything else.

Right. And ke'e is often optional in practice — if it's at the very end of the tanru before a sumti, the parser can figure it out. But when you're nesting multiple brackets, explicit ke'e is much safer.
co — flip the modification direction

co is the trickiest of the three. It does two things together:
- Makes everything to its left the modifier (lower priority).
- Makes everything to its right the head (the modified selbri).
In other words: co reverses the usual left-modifies-right pattern.
- co
- Inverts tanru modification direction; what follows co is the head.
zdani co blabi → a white house (zdani is now the thing being described; blabi is the modifier) bunre mlatu co nimre jisra nelci → an orange-juice-liking brown cat
- nimre
- x1 is a citrus/mandarin of species x2
- jisra
- x1 is juice/liquid from x2

Why would you ever want to reverse the direction? That sounds confusing.

It becomes useful when you want to attach a long modifier phrase (one that includes be/bei sumti slots) to a simpler head. Without co, that gets unwieldy:
Without co (verbose): tu klama be la .latcmatcad. bei le cmana ke ladru nelci ke blabi mlatu
With co (clean): tu ladru nelci ke blabi mlatu co klama be la .latcmatcad. bei le cmana That thing is a milk-loving white-cat that goes from the mountain to Latcmatcad.

Oh — co lets you keep the main concept (klama — "goes") on the right where it's easy to read, and pile the modifiers to the left of co. The arguments after co then belong to klama, not to the stuff on the left.

That's the third feature of co: the sumti following co's right-side selbri fill that selbri's places, not the overall tanru's. It's a convenience for readable tanru with embedded sumti.
Tanru poetry challenge

Now for something fun. Write a short poem using only selbri — no sumti, no tags. Just predicates strung together with .i between them. You can use bo, ke, and co to shape your tanru. The brevity forces you to let the predicates carry everything.

Koshon calls this tanru pemci — predicate poetry.
- pemci
- x1 is a poem with property x2, by author x3, for audience x4

Here's an example:
.i xendo solri bo gusni canci
.i nicte manku klama
.i cladu cliva
.i smaji
(loose translation: The gentle sunlight fades. Night-darkness comes. Loudness departs. Silence.)
- xendo
- x1 is kind/gentle to x2
- solri
- x1 is the sun/star of planet x2
- gusni
- x1 is light illuminating x2 from source x3
- canci
- x1 disappears from x2 (place/view)
- cladu
- x1 is loud/noisy to observer x2, by standard x3
- smaji
- x1 is quiet/silent to observer x2, by standard x3

No nouns, no pronouns, no time words — just pure predicates. And it works. Because Lojban predicates already contain the "is" and "does" without needing extra words.

Tense is optional. Number is optional. Subject is optional. Tanru is ambiguous by design. All of that ambiguity becomes atmosphere in poetry.

Okay I'll try one:
.i barda mlatu
.i cmalu mlatu
.i mutce melbi
.i gleki munje
(Big cat. Small cat. Very beautiful. Happy world.)

I love it.

…I also love it, but I'm not going to say so.
True or false
Pick whether each statement is true or false according to the lesson.
In blabi mlatu bo zdani, it is the _house_ that is blabi (white), not the cat.
The ke'e in broda ke brode brodi ke'e brodo can always be safely omitted.
In a tanru containing co, the selbri to the _right_ of co is the head (the modified concept).
In A B bo ke C D ke E F co G H, the full grouping is ((G H) (A (B (C D (E F))))).