Canonical English

Version
1.0.0
Rules
11
Word forms
139
Word senses
129
Parts of speech
13
Test cases
52

Canonical English (CE) is a controlled natural language (CNL): a formal, computable, unambiguous subset of English intended for machine-to-human and machine-to-machine communication. Humans can write it too, with machine assistance (for example noah-parser).

CE is a domain-schema-independent API for agentic communication.

CE is meant to match uncontrolled English in semantic expressibility and beauty in the formal register — a better English, for the machine era. It is written by and for machines, and for humans who need the text to be unambiguous. Proper nouns carry stable semantic-web URIs, so the same text is readable by people and unambiguous even into the far future, after the original context is gone.

noah: a highly opinionated and extremely fast linter for natural English, written in Rust. Refuses to accept any ambiguity or grammatical or spelling mistakes or variations. Can be used in a tight loop with LLMs to produce high-quality English prose for communication with humans or other agents. [UNDER DEVELOPMENT]

Although self-attention models parse natural text well, those models do not record which sense or which entity they chose, so every later reader must still perform word sense disambiguation and entity disambiguation — and because the models are non-deterministic, two readings need not agree [2]. CE moves that burden to the writing step, where attention models resolve each sense and embed the result in the text. Once written, CE is deterministic: every content lexeme carries its sense in the metadata, and nothing is re-inferred downstream.

CE is a formal grammar, a sense-resolved lexicon, and formatting conventions that produce readable, unambiguous output. By “unambiguous” we mean that CE documents are free from all three sources of ambiguity:

CE consists of:

Scope

Canonical English is useful in the formal, bench-level, in-house, neutral, technical, and consultative registers.

It is not intended to be used for the slang register, where deviations from proper grammar are de rigueur.

Limitations

CE resolves syntactic, lexical, and referential ambiguity. It does not encode pragmatics — what an utterance is doing in a situation, beyond the proposition the words literally express. No amount of dictionary sense disambiguation closes that gap.

“Can you open the window?” is grammatically a question about ability. In ordinary use it is usually a request. “That’s interesting.” can be genuine enthusiasm, polite dismissal, sarcasm, surprise, or criticism. Those readings are not further senses of interesting; they are uses of the same proposition.

CE specifies literal propositional meaning and does not attempt to encode pragmatics (In linguistics and the philosophy of language, pragmatics is the study of how context contributes to meaning.). A CE document records the question about ability, and the predication that something is interesting. The request, and the tone, remain outside the language.

Formal-register communication is, by definition, intended to be low-context (i.e., low-pragmatics). The author encodes as much of the situation as possible in the words themselves, so a later reader can recover the assertions without sharing the original physical or social environment. Constraining CE to that register therefore makes the task of embedding context easier, since the gap is already intended to be minimal.

Rule Derivation Methodology

CE derives grammar rules from the Cambridge Grammar of the English Language (CGEL) by Rodney D. Huddleston and Geoffrey K. Pullum (2002) [6], as codified by the CGELBank team [7] [11].

Extending from CGEL, CE derives additional rules empirically, from corpora in which human annotators have already recorded which reading was intended:

A false negative or false positive must be measurable. The requirements-engineering literature distinguishes nocuous from innocuous ambiguity: an ambiguity is nocuous only when readers actually disagree about it. Innocuous ambiguity gets a construal rule; nocuous ambiguity is rejected. The disposition of every rule is therefore an empirical finding rather than an editorial preference.

Ambiguity Removal

Every sentence in CE must parse to exactly one reading under the rule set. The rule set has conventions that are implicit and may assist in clearing up ambiguity.

Coverage of English in the Wild

Most English sentences a native speaker would consider to be “correct” are also judged as passing in CE. However, there is a long tail of somewhat unusual sentences, a few percent of sentences appearing in wild English, that may not pass the current version of CE.

By definition those sentences are considered invalid, although future more sophisticated versions of CE may include them.

Since noah will mark such sentences invalid, authors wishing to conform to CE must rewrite their words until the text conforms.

The set-theoretic framing of this process — ideal CE as a Stewart set, and each CE1.0.x as a computable approximation measured by false positives and false negatives — is on the methodology page.

Benefits

Constraining English to a single, fully specified dialect is more useful than surface consistency alone would suggest.

Most natural-language systems treat English as an open mix of regional variants, spelling systems, punctuation habits, and near-synonyms. That variation is noise for machines. Eliminating it — fixed spelling, fixed number formats (ISO 80000-1 + ISO 8601), fixed preferred terms, epicene they as the unmarked third-person pronoun, CGEL grammar constraints, consistent punctuation — yields something closer to a formal language that still reads as English.

Regional forks of English, with different date and number formats, spelling (colour/color), and vocabulary, present barriers to communication in the guise of reducing friction for local users. Large software companies ship dozens of locale-specific date and number formats, despite ISO having developed standards. CE adheres to ISO [5]. ISO 80000-1 permits either a point or a comma as the decimal marker; CE picks the point, so 3.14 is a number and 3,14 is not. The world benefits from a single English standard without regional variation. Not only do machine protocols benefit from canonical serialization, but humans do as well.

Sense ambiguity is another barrier to communication:

To improve the handling of ambiguity, we advocate for extending redundant, ambiguity-aware annotation protocols (with attention to disagreement) from single-label tasks (e.g. QA, NLI) to complex, sequential outputs like semantic parsing. Improving both zero-shot generalization and data collection would help models capture the full range of utterance interpretations. This could lead to robust, interactive systems in which agents ask for confirmation or clarification on ambiguous examples (Stengel-Eskin & Van Durme, 2023), ultimately improving safety for critical systems.

Stengel-Eskin, Rawlins, and Van Durme (2024) [1]

Useful Applications of Canonical English

The output still reads as natural English. The constraints remove the degrees of freedom that create ambiguity and inconsistency, rather than replacing English with an artificial-looking notation.

Document format

CE has two equivalent serializations, ce-linear and ce-tree. Both are equally unambiguous, and both are equally parsable by a computer. They differ only in audience: ce-linear is GFM that humans can read; ce-tree is JSON-LD that tools can walk as a sentence tree. Each is accompanied by a JSON-LD lexicon of all words used, linked to the semantic web.

The sense @id is a dereferenceable Open English WordNet synset IRI for an open-class word, a Wikidata lexeme IRI for a closed-class function word, or a Wiktionary English-section URL for a mark or digit. @context is the w3id.org PURL https://w3id.org/canonical-english/context/v1. That identifier redirects to the hosted JSON-LD context. The identifier contract is in FORMAT.md.

ce-linear · document.ce.md

For humans

A ce-linear document is GFM prose (encoding: UTF-8, MIME type: text/markdown) conforming to every style rule. The metadata is a JSON-LD document in the frontmatter, between --- delimiters: the entity graph and the relation triples, so nothing about the meaning has to be recovered by inference. JSON is a subset of YAML 1.2, so ordinary Markdown tools that already skip YAML frontmatter ignore the JSON-LD and render the body as regular Markdown.

  • File: document.ce.md
  • MIME: text/markdown

ce-tree · document.ce.jsonld

For tree-walking tools

A ce-tree document is the same CE text as a single JSON-LD file (encoding: UTF-8, MIME type: application/ld+json). It contains the same entity graph as the ce-linear frontmatter, plus an explicit tree of each sentence — clauses, phrases, grammatical functions, and sense URIs — in the CGEL constituency formalism [11]. A tool that analyzes attachment, scope, or reference can walk that tree directly, without parsing the prose. The sentence string is still present on each node, so nothing is discarded. The root also carries linear_content: the paragraph string, so a page can render the prose without walking the tree.

  • File: document.ce.jsonld
  • MIME: application/ld+json

Tools

Best-effort conversion

noah-parser — converts natural English into CE

English is naturally ambiguous, so the parser works on a best-effort basis and is not necessarily deterministic. It reads your text and writes a single .ce.md file that keeps your prose intact and adds JSON-LD frontmatter describing its logical structure.

The input must already be valid GFM. The parser refuses a file markdownlint rejects, because Markdown block structure is what it walks: it splits the document into blocks — paragraphs, headings, list items, table cells — and then parses those blocks sequentially, in document order, one sentence at a time. Order matters, because an entity introduced in an earlier block is what a later reference resolves against.

  • Input: a plain text or Markdown file (.txt / .md) that is valid GFM
  • Output: a Canonical English file (.ce.md)

Deterministic verdict · 1.0.0

noah-linter — verifies a CE file

A fast, deterministic checker that answers yes or no: is this CE? Its first step is to require the JSON-LD frontmatter on the .ce.md file and extract it as JSON-LD. Its first pass over the prose is markdownlint, which decides whether the body is well-formed GFM. After those gates it holds the file to two further standards — that the human-readable prose obeys every style rule, and that the extracted frontmatter describes exactly that prose and nothing else. Because the linter is deterministic, the specification defines CE as what the linter accepts, not what the parser emits.

  • Input: a Canonical English file (.ce.md)
  • Output: pass, fail, or warnings

Those two programs convert and check a finished draft. Putting a language model in front of the same linter — so the model keeps proposing until the verdict is accept — is the generation loop below.

Implementing CE in a workflow

Natural English is a linear string. The relations it names are a tree, and later a graph. Token-level tagging — part of speech, even a word-sense label on each token — cannot decide attachment: which phrase a preposition modifies, which noun a relative clause restricts. A parser that tries to force arbitrary English into one tree fails on the unbounded edge cases of real text.

CE inverts that job. The generator — a language model, or a human with noah-parser — proposes a .ce.md file. A deterministic linter, noah-linter, answers yes or no. A text is CE only when the linter accepts it, not merely because a model emitted it. On accept, the same document is already a graph: JSON-LD frontmatter plus a single parse, ready for RDF or any later triple store. On reject, the diagnostic goes back to the generator.

That loop can close in two places. Both treat the linter as the gatekeeper. They differ in when the check runs, and in what access they need to the model.

Inner loop · self-hosted

Grammar-constrained decoding

The inference engine intercepts generation token by token. A logit processor — in vLLM, llama.cpp, or lm-format-enforcer — sets the score of every token that cannot continue a valid prefix to negative infinity, so it cannot be sampled [13]. The finished string is then valid by construction, not by later luck.

A per-token checker cannot wait for a complete sentence. It must answer a prefix question: can this incomplete sequence still become a document the linter would accept? Today’s noah-linter judges finished files. Constrained decoding needs a prefix-valid checker on top of that verdict — additional work, not a flag on the current binary.

Prefix search still dead-ends: every remaining token is illegal, yet the string is not yet a complete document. Three mitigations are standard. Beam search keeps several live prefixes so a doomed branch can be dropped. A scratchpad lets the model plan in unconstrained text before emitting the constrained .ce.md. Catch-and-release treats a terminal dead end as a structured error and restarts from the failure point.

The inner loop needs logit access, so it runs only on self-hosted open-weight models. Hosted APIs do not expose the decoder.

Outer loop · any API

Post-generation validation

The model writes a complete .ce.md file. The linter then evaluates that file as a whole. Accept ends the loop. Reject returns the CE-nnnn diagnostic and the failing span; the model revises and tries again. The statistical name for that pattern is rejection sampling: draw a candidate, test it against a hard predicate, keep it only if the predicate holds.

This is middleware. It wraps any chat or completions API — hosted frontier models and open-weight servers alike — and needs no GPU cluster and no custom decoder. The authoring loop is the same: emit JSON-LD frontmatter plus GFM, then run noah check until the process exits 0.

The cost is retries rather than masked tokens. The benefit is that the gatekeeper is the same complete-document linter that defines CE, with no prefix approximation in between.

Dimension Grammar-constrained decoding Post-generation validation
When it runs Each token, on the current prefix After a complete .ce.md draft
What it needs A prefix-valid checker, plus logit access in the inference engine Today’s complete-document noah-linter, plus a retry loop
Where it runs Self-hosted open-weight serving Any API, as an external wrapper
Failure mode Dead-end prefix; beam, scratchpad, or restart Reject and regenerate from the diagnostic

A yes/no specification

Earlier controlled languages such as Attempto Controlled English (ACE) succeeded as mathematics: a sentence that parsed mapped onto first-order logic and then onto OWL or RDF. They did not succeed as authoring languages. The grammar was a constructive recipe — humans had to learn which sentences were in the fragment — and the fragment was often too small for work outside the lab [14]. That is the usual controlled natural language dilemma: formal enough to check, or large enough to write, but not both. The comparison below places CE in that family.

CE is a verdict, not a constructive how-to-write-it grammar. The linter says accept or reject; it does not have to enumerate every sentence it would accept. A later constructive definition may be attempted. Until then, the pair of a language model and a deterministic linter is what makes the language usable: humans keep writing natural English, the model proposes CE, and the linter is the contract. The model is the compiler. The linter is the type checker. Nothing downstream has to guess.

Resolve Ambiguity at the Write Step, Not the Read Step

Uncontrolled English requires the reader to have implicit context in order to recover the meaning of the text. CE instead passes that work to the author, who must commit to exactly one sense of each word, and one URI for each proper name, before the document is transmitted to any reader.

A document-level default is not enough. On SemCor with fine-grained WordNet senses, about 33 percent of ambiguous words take more than one sense within a single discourse, with no meaningful difference across parts of speech [9]. Each occurrence must be committed, not the lemma.

The author already knows which sense they meant at the time of writing, so recording it is cheap. Every later reader has to reconstruct that same fact from context, and pays for it in compute, in latency, and in the risk of reconstructing it wrongly. Done by the author, the work happens once. Left to the readers, it happens once per reader, per reading, indefinitely.

Agent systems make that cost asymmetry unjustifiable. A system prompt, a tool description, a policy, a specification, or a contract is now read thousands or millions of times, mostly by machines, at a measurable cost per read — and every one of those reads re-derives meaning the author already knew and did not record. A large part of what retrieval and embedding pipelines do is guess, probabilistically and repeatedly, at what the writer knew and did not write down.

Recording senses by hand used to cost more than letting readers guess, which justified transmitting ambiguous text. That cost argument no longer holds: noah-parser performs the upconversion mechanically and noah-linter confirms it, so the author’s commitment costs a build step. With that tooling, there is no remaining reason to transmit ambiguous text. Disambiguate once, before the document is sent, rather than requiring every recipient to do it again.

CE does not claim to have solved word sense disambiguation. It moves the problem from the read side to the write side and records the result. A sense chosen once, written into the document, and transmitted with the text can be checked, diffed, and disputed. A sense inferred silently on every read cannot.

Read-time inference is measurably unreliable on the cases that matter. On AmbiEnt — 1,645 linguist-annotated English examples spanning lexical, syntactic, and pragmatic ambiguity — GPT-4’s generated disambiguations were judged correct only 32 percent of the time by crowdworkers, against 90 percent for the dataset’s own disambiguations [2]. The same model reached 63.0 percent on true/false judgments about whether an interpretation is valid, but when required to answer all four templates correctly for a single disambiguation, performance collapsed to 2.5 percent. That figure is the claim that two readings need not agree, measured directly: the same model, reading the same sentence, does not hold one interpretation consistently. The output is fluent, the meaning is wrong, and nothing flags the error. That is not an acceptable reading mode for a control surface: a system prompt, a tool description, a policy, or a contract.

Binding Versus Hinting

CE does not disambiguate by writing a glossary of definitions into the prose. A definition offered as ordinary sentences is a hint: a human reader may skip it, and a language model may ignore it in favour of context and attention. When a familiar word is replaced by an unfamiliar one and the reading must be inferred from context and stipulation alone, accuracy falls sharply, to near chance for smaller models [3].

Instead, CE records each commitment as JSON-LD frontmatter: a URI bound to each word, shipped with the document. Ordinary reading can still ignore that block. Audit and checking cannot. Downstream processes — noah-linter, conformance checks, archival tools — can be required to consume the URIs rather than re-infer the senses from the prose.

Benefits of using CE

Style rules

The style rules are the contract for a CE text: encoding, lexicon, grammar, and typography, together with the specification for citations, punctuation and quotations, words used as words, hyphenation of compound modifiers, dates and times, SI units, and deterministic title case. Every rule exists to remove a judgement call that an ordinary style guide would leave to the writer.

Compared with other CNLs

CE sits in the same family as other controlled natural languages, but aims for full English expressibility and beauty rather than a reduced subset, with machine checking and URI grounding. It does not invent a new controlled language from scratch: it combines existing open projects into one specification — a dictionary graph, a controlled grammar, entity grounding, and a linter that checks conformance. Uncontrolled English is included as the open baseline CE aims to match in range.

CE aims for the same unambiguity as the artificial language Lojban, while remaining as readable as English.

Dimension Canonical English Uncontrolled English ASD-STE100 ACE Gellish Basic English Linguine
Purpose Machine-to-human and machine-to-machine prose: a versioned, machine-checkable subset for machine-authored, human-readable text General human communication — open natural language, not designed as a formal protocol Aircraft maintenance documentation (Simplified Technical English) Formal knowledge representation in English Industrial data exchange as fact triples; formalized English for tabular facts International communication and teaching Natural-language-inspired programming: write imperative programs in a controlled English-like syntax and compile them (prototype targets Python)
Vocabulary Attractor subgraph from Wiktionary definitions (small edits only where needed to keep the graph well-formed) Full open lexicon — regional variants, polysemy, idioms, and neologisms unrestricted ~900 approved words (plus allowed technical nouns and verbs) Open lexicon under ACE constraints Taxonomic dictionary of concepts and relation types ~850-word core Not an English dictionary: closed function words / keywords in a programming grammar, plus programmer-chosen identifiers
Word count Attractor core target <10,000 nodes; open graph beyond that from Wiktionary-scale English Open / unbounded (~500k+ OED headwords; ~900k+ English Wiktionary lemmas) ~900 approved general words ~100,000 content-word lexicon entries (extensible; users may add domain lexicons) Extensible taxonomic dictionary (tens of thousands of concepts; grows by domain extension) 850 core words No fixed lexical inventory (~140–150 grammar productions; not a word-count CNL)
Grammar Cambridge Grammar of the English Language (CGEL), as codified by CGELBank, plus empirically derived rules Full English — ambiguous, unversioned, not machine-decidable as a single formal grammar Authoring writing rules Formal controlled English with a precise parse Binary relations / taxonomy, not prose grammar Restricted English Hand-written LL(k) controlled English-like syntax for assignments, conditionals, loops, and arithmetic — not ordinary spoken English
Proper nouns Stable semantic-web URIs via Wikidata (and related vocabularies) so named entities are grounded, not free text Free text; grounding optional and non-standard Taxonomic identifiers Program identifiers / pronouns (it, them, …) resolved statically — not entity grounding to the semantic web
Checking Automatic (noah-linter verifies conformance) None as a language (style/grammar tools optional and incomplete) Manual / authoring-rule compliance ACE parsers Schema / tooling for facts Compiler (parse, type inference, static pronoun resolution, abstract interpretation)
Expressibility goal Match uncontrolled English in range and beauty Maximal open expressibility (at the cost of ambiguity and no API contract) Shrink English for domain readability Unambiguous formal subset Tabular facts, not literary prose Shrink English for learners Readable programs in English-like syntax — not natural speaking or writing English as prose
Origins By Michael B. Currie (from 2026-08-09) — CGEL + Wikidata, plus noah Natural language (no single author or specification) AECMA/ASD working groups (early leadership included René Van Dijk) Led by Norbert E. Fuchs at the University of Zurich (from 1995), with major contributions from Rolf Schwitter, Kaarel Kaljurand, and Tobias Kuhn By Dr. Ir. Andries van Renssen (permalink) By C. K. Ogden (with I. A. Richards) By Lifan Hu (National University of Singapore, 2025). arXiv preprint promises a GitHub repo; none public as of that paper
DOI / reference Industry standard (no DOI) — asd-ste100.org doi:10.1007/978-3-540-85658-0_3 doi:10.1109/SIIT.2003.1251209 Ogden 1930 (no DOI) — Wikipedia doi:10.48550/arXiv.2506.08396

License

This project requires no attribution and may be freely used.

Sources

It is ironic that CGEL forms the basis of CE, given Geoffrey K. Pullum’s famous contention that the notion of “a language” is not scientifically reconstructable [8]. Because CE is not intended for the casual register, however, there is perhaps no discrepancy:

It seems to me that the notion of ‘a language’ should not be regarded as scientifically reconstructable at all. … The vagueness is ineliminable, and unproblematic.

Pullum (2013) [8]
  1. Stengel-Eskin, E., Rawlins, K., and Van Durme, B. (2024). Zero and few-shot semantic parsing with ambiguous inputs. International Conference on Learning Representations (ICLR). https://arxiv.org/pdf/2306.00824
  2. Liu, A., Wu, Z., Michael, J., Suhr, A., West, P., Koller, A., Swayamdipta, S., Smith, N., and Choi, Y. (2023). We’re afraid language models aren’t modeling ambiguity. Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP), 790–807. https://doi.org/10.18653/v1/2023.emnlp-main.51
  3. Yae, J. H., Skelly, N. C., Ranly, N. C., and LaCasse, P. M. (2024). Leveraging large language models for word sense disambiguation. Neural Computing and Applications 37, 4093–4110. https://doi.org/10.1007/s00521-024-10747-5
  4. Groth, P., Gibson, A., and Velterop, J. (2010). The anatomy of a nanopublication. Information Services and Use 30(1–2), 51–56. https://doi.org/10.3233/ISU-2010-0613
  5. Currie, M. B. (2026). Microsoft loves regional date formats but hates “colour” and “honour”. Medium. https://medium.com/@michaelbcurrie/microsoft-loves-your-regional-date-format-but-hates-colour-and-honour-64bcfc7d7ca7
  6. Huddleston, R. D., and Pullum, G. K. (2002). The Cambridge Grammar of the English Language. Cambridge University Press. https://en.wikipedia.org/wiki/The_Cambridge_Grammar_of_the_English_Language
  7. Reynolds, B., Schneider, N., and Arora, A. (2023). CGELBank Annotation Manual. arXiv. https://arxiv.org/abs/2305.17347
  8. Pullum, G. K. (2013). The central question in comparative syntactic metatheory. Mind & Language 28(4), 492–521. https://doi.org/10.1111/mila.12029
  9. Krovetz, R. (1998). More than one sense per discourse. Proceedings of the ACL-SIGLEX SENSEVAL Workshop. https://aclanthology.org/S98-1.pdf
  10. Star Trek: First Contact (1996). https://en.wikipedia.org/wiki/Star_Trek:_First_Contact. https://perma.cc/3ZRL-GVUR
  11. Reynolds, B., Arora, A., and Schneider, N. (2023). Unified syntactic annotation of English in the CGEL framework. Proceedings of the 17th Linguistic Annotation Workshop (LAW-XVII), 220–234. https://people.cs.georgetown.edu/nschneid/p/cgeltrees.pdf
  12. Qi, P., Zhang, Y., Zhang, Y., Bolton, J., and Manning, C. D. (2020). Stanza: A Python natural language processing toolkit for many human languages. Association for Computational Linguistics (ACL) System Demonstrations. pdf, bib. https://arxiv.org/abs/2003.07082
  13. Geng, S., Josifoski, M., Peyrard, M., and West, R. (2023). Grammar-constrained decoding for structured NLP tasks without finetuning. Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP), 10932–10952. https://doi.org/10.18653/v1/2023.emnlp-main.674
  14. Kuhn, T. (2014). A survey and classification of controlled natural languages. Journal of Artificial Intelligence Research 46, 75–122. https://doi.org/10.1613/jair.3908

DATA: Tell me. Are you using a polymer-based neuro-relay to transmit the organic nerve impulses to the central processor in my positronic net? If that is the case, how have you solved the problem of increased signal degradation inherent to organosynthetic transmission across…

BORG QUEEN: Do you always talk this much?

DATA: Not always, but often.

BORG QUEEN: Why do you insist on utilising this primitive linguistic communication? Your android brain is capable of so much more.