Liking cljdoc? Tell your friends :D

Documentation Index

Complete documentation for liblevenshtein-rust v4.0.0-rc.4 — Levenshtein and related (phonetic, time-series) automata for error-tolerant search over strings and byte arrays, with several trie/DAWG dictionaries, fuzzy maps, and fuzzy caches.

Last Updated: 2026-08-24 · Version: 4.0.0-rc.4

Documentation map: the nine sections of this documentation set.


How this documentation is organized

The set is grouped into nine sections, from first-contact tutorials through deep theory, formal proofs, and the project's scientific research record. The main README is the canonical, quality-reference overview; this index maps everything else.

Document conventions

  • Math is written as MathJax LaTeX, never as Unicode literals. Inline math is a backtick code span whose content is dollar-delimited — `$\mathcal{O}(\lvert W\rvert)$` renders as $\mathcal{O}(\lvert W\rvert)$ — and display math is a fenced block whose info-string is math. We never use bare dollar-delimited math (dollars without the enclosing backticks): GitHub's CommonMark pass strips backslash escapes before MathJax parses them. Cardinality and absolute-value bars are \lvert … \rvert; a literal ASCII | is reserved for Markdown table delimiters and code. Genuine algorithm listings stay as fenced pseudocode (literate form); only standalone formulae, recurrences, and inference rules become math blocks.
  • Diagrams live under diagrams/ as text source + a committed SVG, fully coloured per a shared legend; docs embed the SVG.
  • Citations link to DOIs where one exists.

Living vs. Historical — the rule that bounds edits

A document is LIVING if it describes the current behaviour, API, theory, or architecture of liblevenshtein v4.0.0-rc.4 — something you would consult to use or extend the library today. A document is HISTORICAL if it is a dated record of how we got here: a scientific ledger, hypothesis log, experiment record, phase/session/completion report, or benchmark dump. Per the project's append-only scientific-method practice, HISTORICAL documents are never rewritten or "cleaned up" — only indexed and cross-linked. When in doubt, a doc whose path carries a date, phase, hypothesis, or session name is HISTORICAL.


1 · Getting Started

2 · Concepts & Theory

  • Lazy vs. Eager Automata — the central idea: a query lazily simulates a parameterized Levenshtein automaton, it is not a precompiled universal DFA.
  • Levenshtein-automata theory — the Schulz–Mihov method, glossary, and code-to-paper mapping (theory home; also cross-linked from the glossary).
  • Algorithm layer 02 — Levenshtein automata — the position/subsumption model, with diagrams.
  • Edit-distance classification — the alignment/script boundary, four implementation classes, metricity-versus-pruning distinction, and placement checklist for future measures.
  • Snapshot semantics — the cursor laws S1-S6 as display math, the $\mathcal{O}(1)$-capture argument from path-copied revisions, the partial-persistence classification (Driscoll; Okasaki), and the law ↔ formal-model ↔ test correspondence table.
  • Theory — disk-trie and SCDAWG theory pointers (backend internals now live in libdictenstein).
  • Specialized theory: universal automata · weighted automata · bimachines.

3 · Architecture

4 · User Guide

5 · Developer Guide

6 · Algorithm Reference

7 · Formal Verification

  • Verification — the formal-proof artifacts. FORMAL_VERIFICATION_MANIFEST.tsv is the declared source of truth for trusted/partial/legacy status; see INDEX and README_FORMAL_GATES. The trusted CostMonoid island combines Rocq, Verus, cross-solver SMT, and property tests; the tree also holds the remaining Rocq and TLA+ models.
  • Formal-verification writeups — the parallel markdown proof exposition and findings (defers to the manifest for canonical status).

8 · Research & Scientific Ledgers — historical, append-only (indexed, not edited)

The project keeps an append-only scientific record. These are preserved as written; they are indexed and cross-linked but never rewritten.

9 · Diagrams


Glossary


Navigation: ← Main README · User Guide · Developer Guide · Algorithm Reference · Diagrams

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close