Deep knowledge of the Eberban logical conlang — grammar, morphology, vocabulary, parser, and tooling
Load this skill when working on the Eberban conlang repository or when the user asks about Eberban grammar, vocabulary, translation, or tooling. Load reference files as needed for detailed information.
Logical conlang inspired by Lojban and Toaq. Goals: simple, regular, expressive. Translates to higher-order logic with trivalent truth (true/false/unknown). Pure functions, no side effects. Creator: mia.
Long-term vision: automated theorem prover — given axioms and a proposition, determine if provably true, false, or unknown. The axiom system (nu/ni/onu) is designed with this in mind.
c, a map/dictionary-like structure carrying time/tense/discourse state. Propagates inward only (predicates can't change parent/sibling context). Inter-sentence context injected per sentence; an updates it between sentences. Concept of "automatic an" (e.g., advancing "now" between narrative sentences). Mechanism (mue/mua) is stable; context manipulation vocabulary is experimental. Rationale: without a hidden context, expressing "In the future: you dance" would require adding explicit time parameters to every verb — not ergonomic. The hidden context solves this transparently.e)etiansa = e + tian (food, intrans) + sa (→ transitive) = "eats"{family: "Compound", prefix: "e", content: [{word: "tian"}, {word: "sa"}]}A (B (C D)). Always trace inside-out.mi ve etiansa meon fe dona skan vei = "I eat apples and like dogs." Repeating mi would create a new existential (possibly different speaker).sre at sentence/proposition start scopes naturally (no wrapping needed). Mid-chain: voi sre for narrow scope (only verb is past), sia sre for wide/transparent scope (whole sub-chain is past).h+vowel overrides right-bound. si+vowel = transparent (re-expose right pred's places, useful for proposition-place predicates like tenses/attitudes). -i suffix = equivalence. sae ≈ passive voice.[A:()] to [A:(p)] receiving E. SI after zue selects places (default sea). Use zue when subject = attitude holder; use sia when attitude holder is separate/unspecified.ke(c,e) = "e is fixed atom x". Use in argument lists, chains, or with bo for forethought assignment.gi- = intransitive, = transitive, final = equivalence.All m- particles. Key members (others are convenience roots like mi, mo, me):
oia pred mai removes a default.(default: 1) on A. mula = "1 meter", to mula = "3 meters" (number overrides default). Makes bare unit = 1 unit.Two modes: separator (PE item1 bu item2 pei) or prefix (PE bu item1 item2 pei).
mi pe etiansa bu dona pei meon = "I eat and like apples."mio pea bu za ualis za ubob = "we are Alice and Bob."peo tcu mian bu meon pei = "{all cats, some apples}."me vone peho bu mian meon = "this is a cat OR an apple."PE bu pei. Empty set doesn't exist; empty list does. pe bu pei = always true.Vowel scale (IEAOU): encodes order/scale from small/negative to big/positive. Final -i is skipped in patterns (it encodes transitivity type).
Directional cross diagram: vowels encode spatial direction:
A (forward)
|
O-I-E (left-center-right)
|
U (back)
A = forward (loudest, 3rd of 5), I = center, others counter-clockwise.
Pattern preference: vowel patterns > sonorant patterns. If sonorants are used, follow NRL order with same scale/direction guidelines.
Type roots are definition-level: roots like pan, man, gan, gen, gin, ski, sken, ban, stan are for typed definitions (place annotations like [E:tce* pan]), not common speech. Don't use them as regular predicates in example sentences or translations — they belong in dictionary short: fields and on definitions.
Vocabulary is designed to compose with chaining. Example: "tall tree" = jnu epnuencpie tcuin
[scale] [dimension] [class], NOT [class] [dimension] [scale]Eberban addresses specific Lojban issues:
au indistinguishable from a in practice; borrowings forced awkward spellings (e.g., "la .mian." → "la .miian."). Eberban uses clean vowel hiatuses instead.y was hard for speaker (mia). Eberban removes y entirely, bans difficult clusters via SSM.u...pause) + za prefix for names.u + foreign word adapted to Eberban phonology + space/pause. Must end with vowel or vowel+single-consonant.be. Example: umia uentropi be = single predicate "mia entropi."be is needed between distinct borrowing groups to prevent fusion. umia be uentropi be = two separate predicates.vie/via for predicate equivalence bindings.za prefix. za umia uentropi = "is named mia entropi."u, a space is needed after the u prefix. ' or . can be used instead of a full space to keep words visually connected (. preferred by mia). Example: u.ualis instead of u ualis.{kind: "BorrowingGroup", group: [{family: "Borrowing", prefix: "u", content: "..."}], end: be?}Map foreign sounds to closest Eberban phonemes (English [k]→k, [dʒ]→dj, [tʃ]→tc, [ʃ]→c), then fix morphology violations (insert buffer vowels for forbidden clusters, ensure valid ending). Names use za prefix: za udjon = "is named John."
a: assertion. an: context update (updates inter-sentence context). al: request/command.o: question. Introduces a variable + constraint; answers instantiate the variable. Ex: o gi seha etiansa meon = "who eats apples?" Reply: a gi za ualis = "Alice". Reply: a bi gi = "nobody".be arg lists (universal): With be, explicit arg list (KI/GI/BA before be) REPLACES chain-exposed places. Without be, chain's exposed places (from chaining rules) are used. bai always adds extra place at end. Applies everywhere ArgumentsList is used: sentences (a/o), VI/FI bindings, PE enumeration.mo), use seha to expose E while chaining via A, use bai for asked-about args. Ex: o ge seha zue katmi etiansa bai = "what does one want to eat?" Answer: a mi ge meon = "I want to eat apples." ge is transitive (E=subject, A=food).on: definition = runtime word creation. Dictionary is conceptually a preloaded text of on definitions (like a standard library). oni: capturing definition (captures current global context). onu: define+enable axiom.nu/ni: enable/disable axiom.on.mi=speaker, mo=listener, mio=inclusive we, mie=exclusive we, moe=3rd person, me=this/the.
de gali=❤️), dei=hashtag.PI accesses a word in a namespace (parent pi word), ohi imports a namespace. Future-oriented feature for domain vocabulary grouping (e.g., medical field) or accessing words overridden by another speaker (mi pi word). Not expected in casual speech currently.
pub in a programming module.references/open-design-problems.md.PA (pa- prefix) lets you resume bindings to a verb earlier in the chain by echoing (repeating) it.
Problem solved: VI/FI attach to the immediately preceding verb. If you're deep in a chain and realize you need to bind places of a verb you already passed, you're stuck without PA. PA eliminates the need to plan sentinel VI ahead of time.
Syntax: ... verb chain... pa verb [SI] [VI/FI binds] [continuation]
Matching rule: The echoed verb must match the original exactly — ZI modifiers, base word, and post annotations all must be identical. Leading SI CAN differ (you can resume with different place selection). Explicit binds are new (that's the whole point).
Walk-up: The parser tries to match PA+verb at the deepest chain step first. If no match, it walks up to the parent step, then grandparent, etc., until a matching verb is found. Unmatched PA produces E_UnmatchedResume error.
After PA+verb you can: add VI/FI explicit binds, apply different SI, continue chaining (resume_next).
Multiple resumes: PA can appear multiple times on the same verb. Each resume can have its own continuation chain.
Scope: PA is chain-scoped — cannot cross VI/FI bind boundaries.
PA forms: pa is the only defined member. Others (pae, pai, pao, etc.) are grammatically valid but reserved. PA_Free carries no annotations (no DI/DE/DA).
Example: a mi duna meon pa duna vo mo = "I give you an apple." PA resumes to duna to bind O=listener, after A=apple was already chained.
See references/grammar-deep-dive.md for formal grammar details and references/worked-examples.md for traced examples.
~880 entries: ~556 roots, 152 compounds, 172 particles. Strong in time/tense/sets/logic/animals/food/emotions/movement/weather/clothing/objects/nature. Still weak in materials/textures/taste/professions/instruments. See references/vocabulary-gaps.md.
Emotion design: reactive emotions are proposition-based (-i ending, use zue for self-referential). Relational emotions (love, hate, trust, jealous) are entity-based (non-i vowel ending). Unary: lonely. Reason is external (context mechanism). A reflexive combinator (vla) was explored but deemed redundant with zue for practical cases.
[base] ju [int] jo [fract] ja [repeat] je [magn] JI — all optional except at least one partci mian = "is the word 'mian'"co [text] — text until ]. Sentinel variant: co SENTINEL [text ]SENTINEL.Transitivity determines how verbs chain and what their chaining place accepts:
se=intrans, sa=trans sharing, sai=trans equiv.transitive/equivalence fields.gi- intrans, others trans. Ends -i after first vowel → equiv.h present → after h: i=trans, e=intrans. No h → atom intrans. Always sharing.books/refgram/src/ — reference grammar chaptersweb/src/grammar/eberban.peggy — formal PEG grammar (source of truth)web/src/visual-parser/visual.js — visual box rendererweb/src/visual-parser/boxes.css — box renderer stylesweb/src/visual-parser/index.html — visual parser pageweb/src/shared/ — shared utilities (regex, symbols, utils)web/src/vendor/ — bootstrap tabs (was legacy/)dictionary/en.yaml — complete dictionary (~798 entries, YAML)design.md — design rationale (Lojban comparison)references/grammar-deep-dive.md — morphology, logic, binding, sentences, transformations, time systemreferences/particle-families.md — complete particle family inventoryreferences/numbers-quotes-vocab.md — numbers, quotes, enumeration, colors, dictionary conventionsreferences/worked-examples.md — parsed sentences, common patterns, key lessonsreferences/vocabulary-gaps.md — domain coverage analysis, expansion prioritiesreferences/writing-and-tooling.md — writing systems, web app, visual renderer, grammar file, dev workflowsreferences/open-design-problems.md — unsolved: ze through equivalence boundariesreferences/word-form-design.md — sound symbolism, length strategy, consonant/vowel meaning associationsdictionary/en.yaml for domain prefixes (tc- sets, sr- time, zm- colors).npm run ids), family, gloss, tags, short. Place notation: [E:type], [A:(pred)], * for distributive. Compounds stored as "e tian sa" (spaces between parts). Spelling entries under _spelling key. No section/category comments (like # -- Animals --) in dictionary/en.yaml — just add entries directly.npm run build-peggy after editing eberban.peggy. Morphology rules are fragile — never modify without asking.ge/ga/go/gu--ibo ke = assign ke to new atom (breaks previous link). boi ge = assign ge to new predicate.bo ke mian blan assigns ke = beautiful cat. ke persists throughout text. Like naming a character.