Paper-grounded theory for the in-memory dictionary structures that the
docs/theory/scdawg/ suffix-automaton series does not already cover: DAWG
minimization, the double-array trie, and the two optimizations the mutable backends lean on (Bloom
pre-filtering and bit-parallel child scanning). It is the theoretical companion to the
implementation guides and the
in-memory architecture. Notation follows
docs/notation.md.
The theory corpus is split by structure. This cluster fills the gaps for the volatile family:
| Structure | Theory |
|---|---|
| Suffix automaton / CDAWG / SCDAWG | theory/scdawg/ (its own 7-part series) |
| Adaptive Radix Tree (persistent) | theory/disk-tries/ |
| DAWG minimization (Daciuk MADFA + signature hashing) | 01-dawg-minimization.md |
| Double-array trie (Aoe / Yata BASE·CHECK) | 02-double-array-tries.md |
| Bloom filters (probabilistic membership) | 03-bloom-filters.md |
Bit-parallel child scan (PathMap's ByteMask) | 04-bit-parallel-child-scan.md |
u64 signature per node.Two of these docs correct a common over-claim. The Bloom filter and any "SIMD child scan" are often
described as if they were on every hot path; in libdictenstein they are not. The DAWG read path
is an exact wait-free traversal that consults no Bloom filter (the with_config capacity argument is
vestigial), and the volatile tree contains no SIMD at all — the only SIMD in the crate is the
persistent ART Node16 byte scan. These docs state the theory and where the code actually uses it.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |