Preservation Network · Naming System · v2.0

CORE — Celestial Object
Renaming Engine

Design specification: the mathematical and linguistic journey to give unique, human-sounding proper names to 55 million unnamed astronomical objects.

System: CORE v2.0 Pool: 422 roots · 11 binding phonemes Name space: 826,665,928 unique names Seed: 0xA57E4321 (fixed forever)

1. The Scale Problem

The International Astronomical Union has officially named fewer than 450 stars. Every other star, galaxy, pulsar, and black hole in every catalog humanity has ever compiled carries only a catalog designation — HD 189733, NGC 4889, PSR J0437−4715.

The Preservation Network holds:

Object typeCountAlready namedNeed CORE names
Stars (Milky Way)16,120,000~450~16,119,550
Galaxies22,431,182~1,000~22,430,000
Pulsars~3,300+~0~3,300
Black holes~millions~60millions
Total55,000,000+55,000,000+
Every one of these objects is real. It formed, evolved, and will eventually end. It deserves a name that a human being can say aloud.

The engineering challenge: generate 55 million or more names that are (a) globally unique, (b) pronounceable in any human language, (c) grand and memorable, and (d) deterministic — the same object always receives the same name regardless of when or where the engine runs.

2. Naming Philosophy

Multi-cultural roots

Historical star names draw on Arabic (Aldebaran — "the follower"), Greek (Arcturus — "bear guardian"), Latin (Vega — "swooping eagle"), and Sanskrit. CORE names must feel like they belong in this tradition without borrowing directly from it.

Root material is drawn from phonological patterns across Arabic, Sanskrit, Swahili, Nahuatl, Polynesian, Norse, Latin, and Greek — giving names a cross-cultural acoustic resonance rather than a single national sound.

The rule: no borrowed star prefixes

A name cannot begin with the same phoneme sequence as an existing named star. Regulina from Regulus, Altarina from Altair, Polarisa from Polaris — all forbidden. The names must stand alone.

Grand and light

The target register is the one real star names occupy: three to four syllables, open vowels, liquid consonants (L, R, M, N), a sense of weight without heaviness. Not Japanese. Not Latin scholarly text. Not computer-generated syllable strings.

3. The Design Journey — Five Iterations

Each iteration below solved the previous iteration's primary failure. The full sequence is documented here so future engineers understand why the final design is shaped the way it is.

01
4 × 2-char CV syllables — pool of 80
Structure: [CV][CV][CV][CV] → always 8 chars · Space: 80⁴ = 40,960,000

The first engine used sixteen consonant groups (b, d, g, h, j, k, l, m, n, r, s, t, v, w, y, z) each paired with five vowels giving 80 two-character syllables. Four syllables concatenated produced an 8-character name with no parsing ambiguity.

Failed: sounded Japanese Failed: space too small

Four of the sixteen consonant groups — h, j, w, y — are the core of Japanese CV phonology. Strings like Yatanusi, Wosuramu, Janohasi were indistinguishable from transliterated Japanese. Additionally, 40.96 million names < 55 million objects needed.

02
Redesigned 2-char pool — remove Japanese series
Pool: 90 syllables · Structure: [CV][CV][CV][CV] → 8 chars · Space: 90⁴ = 65,610,000

Removed h, j, w, y (20 syllables). Added c, f, p series plus vowel-initial syllables drawn from real star name openings: al, ar, el, or.

Failed: echoed real star names Failed: minimal headroom

The vowel-initial group was designed to evoke existing star names — which violated the core naming rule. Altarina, Arcaluna, Sirinala all felt like derivatives. 65.6 million names covers 55 million objects but leaves almost no room for growth.

03
3-char word roots — 3 positions → 9-char names
Structure: [CVC][CVC][CVC] → 9 chars · Space at N=382 roots: 55.8 million · At N=500: 125 million

Moving to 3-character roots (CVC patterns like vel, sor, mon, kar) immediately improved name quality. Three positions at 9 characters matched the Arcturus/Fomalhaut length. With 382 roots the space clears 55 million — just enough.

Names: good Covers 55M: barely Failed: no headroom, mechanical rhythm

Three same-weight positions produced names with a march-like rhythm: vel·sor·mon. No light connective phoneme between the heavy roots. With N=382 there's almost no headroom for catalog growth, and adding more roots requires curating hundreds more at consistent quality. A fourth element was needed — but not a fourth full root.

3-position space: N³ At N = 382: 382³ = 55,742,648 → just covers 55M At N = 500: 500³ = 125,000,000 → 125 million → For the star allocation alone (700M slots), 3 positions need N ≥ 888 roots. Too many to curate.
04
4 root positions — prefix-free mixed pool (2-char + 3-char)
Structure: [root][root][root][root] · variable length · Space at N=400: 25.6 billion

Adding a fourth root position reduced the pool requirement dramatically. For 826 million names: N⁴ ≥ 826,000,000 → N ≥ 170 roots — very achievable. Combining 2-char and 3-char roots in a prefix-free pool ensured unique parsing.

Covers 826M: yes, at N≥170 Names variable length: 8–12 chars Failed: mechanical — four heavy syllables

Four equal-weight root positions produced names with rigid, drumbeat rhythm. vel·sor·mi·bel — four hard syllables of similar weight, no natural breath in the middle. Real astronomical names have a light phoneme at their centre. This led to the binding phoneme insight of Iteration 5.

Binding phoneme in position 3 — the historical pattern
Structure: [root][root][vowel/diphthong][root] · Space at N=422 (deployed): 826,665,928

The breakthrough was recognising that the most beloved astronomical names already follow a four-part pattern with a short, open phoneme in the third position acting as a binding vowel. Position 3 is not a root — it is one of 11 vowels and diphthongs that give names their characteristic flow. This is not a design invention: it is an observation about how human languages naturally evolved these names over two millennia.

826 million unique names 15× headroom over current catalog Sounds astronomical — not generated

4. Final Architecture

Position 1
422
word roots
2–3 chars each
Position 2
422
word roots
2–3 chars each
Position 3
11
binding phonemes
vowels + diphthongs
Position 4
422
word roots
2–3 chars each

Positions 1, 2, and 4 draw from the same prefix-free pool of 422 curated word roots. Position 3 draws from a fixed set of 11 binding phonemes. Total name length is 7–11 characters, averaging approximately 9–10.

Root pool
422
45 two-char + 377 three-char
Binding phonemes
11
5 vowels + 6 diphthongs
Unique names
826.7M
422³ × 11
Headroom
15×
over 55M current catalog

5. The Binding Phoneme — Why It Works

Real star names, examined phonetically, reveal a recurring structural pattern: a heavier onset, a secondary syllable, a light open phoneme, and a closing syllable. The light phoneme in the middle — almost always a single vowel — is what makes the name flow rather than march.

Arc+t+u+rus → Arcturus "bear guardian" Arabic/Greek
Bel+a+·+trix → Belatrix "female warrior" Latin
Cass+i+o+peia → Cassiopeia Greek queen name
Can+o+·+pus → Canopus "helmsman" Greek
vel+sor+a+mon → Velsoramon CORE — original

The 11 binding phonemes

Position 3 allows five pure vowels and six classical diphthongs:

TypePhonemesExamples in real names
Pure vowelsa   e   i   o   uArcturus, Belatrix, Cassiopeia
Diphthongsae   ai   au   ia   io   oeCassiopeia, Pleiades, Hyperion

6. Name Space Mathematics

Total unique names = P₁ × P₂ × P₃ × P₄, where P₁ = P₂ = P₄ = root pool size and P₃ = 11.

Total = N³ × 11

At N = 300 roots: 300³ × 11 = 27,000,000 × 11 = 297,000,000 (297 million) At N = 400 roots: 400³ × 11 = 64,000,000 × 11 = 704,000,000 (704 million) At N = 422 roots: 422³ × 11 = 75,151,448 × 11 = 826,665,928 (826 million) ← deployed At N = 500 roots: 500³ × 11 = 125,000,000 × 11 = 1,375,000,000 (1.375 billion) → At N=422: 826 million names — 15× the current 55M catalog.
Root pool (N)Total spaceHeadroom over 55MVerdict
300297 million✗ star slice alone needs 700M
400704 million12.8×✓ minimum viable
422 (deployed)826 million15×✓ current pool
5001.375 billion25×✓ recommended for future

Prefix-free constraint

Positions 1, 2, and 4 draw from the same pool. For the bijection to hold — no two distinct (P1, P2, P3, P4) tuples producing the same name string — no pool entry may be a prefix of another. If ve (2-char) is in the pool, then vel, ven, ver (3-char entries starting with ve) are excluded. Validated at engine startup.

Why this matters: without the prefix-free constraint, vel + a + ri and ve + la + ri would both produce "Velari" — two different ID numbers mapping to the same name string. The prefix-free rule makes concatenation unambiguous; since names are only ever generated (never parsed back), this is sufficient.

Bijection — the uniqueness guarantee

A fixed seed (0xA57E4321) generates four permutation arrays over the pool. Each object's global rank maps through these permutations to exactly one (P1, P2, P3, P4) tuple, producing exactly one name. A scatter multiplier is applied first so that consecutive ranks produce phonetically diverse names — not a run of names with the same prefix.

# Core bijection — simplified
def id_to_name(global_rank):
    scattered = (MIX_A * global_rank) % TOTAL     # spread consecutive ranks
    idx = scattered

    p4 = idx % N;   idx //= N
    p3 = idx % 11;  idx //= 11                    # binding phoneme position
    p2 = idx % N;   idx //= N
    p1 = idx % N

    name = POOL[P1[p1]] + POOL[P2[p2]] + BINDING[P3[p3]] + POOL[P4[p4]]
    return name[0].upper() + name[1:]

7. The Root Pool

Roots are curated — not generated — from phonological material across 25 letter categories. Each category contributes approximately 12–20 roots: 2-char roots (usually 3 per consonant, vowels a/i/o) and 3-char roots for the remaining vowel slots.

Prefix-free allocation: within consonant B, the 2-char roots ba, bi, bo block all 3-char roots beginning with those pairs. The remaining vowel slots (be·, bu·, br·, bl·) are available for 3-char roots: bel, ber, bra, bri, etc. Each consonant contributes 3 two-char roots and up to 17 three-char roots.

Root categories

Category2-char rootsSample 3-char roots
Bba, bi, bobel, ber, bra, bre, bri, bul, bun, bla, ble
Cca, ci, cocel, cer, cra, cre, cul, cur, cla, cle
Dda, di, dodel, der, dra, dre, dul, dun, dva, dve
E (vowel-initial)ela, eli, ema, era, eri, eso, eve, eur
H (no 2-char)hel, her, hor, hal, han, hul, hun, hir
Kka, ki, kokel, ker, kha, khe, kra, kre, kul, kur
Ssa, si, sosel, ser, sha, she, sra, sre, sul, sur
Vva, vi, vovel, ver, vra, vre, vul, vur, vla, vle
X (no 2-char)xal, xel, xen, xil, xol, xan, xer, xur
Y (no 2-char)yel, yer, yul, yur, yal, yar, yoa, yra

8. Global Namespace — What Each Type Gets

Stars, galaxies, pulsars, and black holes live in separate database tables with separate ID sequences. To guarantee that no two objects of any type ever share a name, CORE assigns each type a global offset: a reserved, non-overlapping slice of the 826-million-name space.

Stars receive the overwhelming majority

Stars get 700 million slots — 84.7% of the entire name space. This is deliberate. CORE names Milky Way stars only. The stars of other galaxies number in the hundreds of trillions; even if every one were catalogued, naming them individually would be an undertaking of an entirely different order. The Milky Way itself contains an estimated 200–400 billion stars. 700 million slots covers the full realistic scope of future Gaia-era surveys with room to spare.

Stars 700M
Gal
Stars 700M (84.7%)
Galaxies 100M (12.1%)
Pulsars 10M (1.2%)
Black holes 10M (1.2%)
Other 6M (0.7%)
Object typeOffset startSlice% of spaceRationale
Stars0700,000,00084.7%Milky Way — present + all future surveys
Galaxies700,000,000100,000,00012.1%Current 22.4M + deep-field growth
Pulsars800,000,00010,000,0001.2%~3,300 known + future detections
Black holes810,000,00010,000,0001.2%Confirmed + stellar candidates
Other objects820,000,0006,000,0000.7%Neutron stars, white dwarfs, etc.
Reserved826,000,000665,928Rounding buffer to TOTAL
Total: 826,000,000 allocated + 665,928 reserved = 826,665,928 — the full name space is fully partitioned. Stars alone account for 84.7% of all available names. Galaxies at 100 million slots covers every galaxy the network holds (22.4M) with 4.5× headroom for future deep-field surveys.

Each object's global rank = its offset + its sorted position within its type. This rank feeds directly into the bijection. The resulting name is globally unique: no star and galaxy, however distant from each other in the sky or the database, will ever share a name.

Stability guarantee

The fixed seed (_SEED = 0xA57E4321) must never be changed. The scatter multiplier (_MIX_A = 316,227,767) is computed at startup from the pool size and is also stable as long as the pool is unchanged. Adding new roots to the pool would shift every name and must be treated as a breaking change requiring a full re-run across all tables.

9. Sample Names

The following are real output from the deployed CORE engine — not hand-crafted examples. Each name is the deterministic result of its object's global rank passing through the bijection.

Comparison to historical star names

Arcturus 4 syl
9 chars · IAU
Aldebaran 4 syl
9 chars · IAU
Fomalhaut 3 syl
9 chars · IAU
Thatenuba 4 syl
9 chars · CORE
Lerquliela 4 syl
10 chars · CORE
Shexulozi 4 syl
9 chars · CORE

Stars — actual engine output

Grumueaesha gru+mue+ae+sha
Veluloedua vel+ulo+e+dua
Shexulozi she+xu+lo+zi
Lerquliela ler+qul+ie+la
Tauvaaegla tau+vaa+e+gla
Yenpruiata yen+pru+ia+ta
Deakhuibur dea+khu+i+bur
Eloxunoezo elo+xu+no+e+zo

Galaxies — actual engine output

Thatenuba tha+te+nu+ba
Teafleasur tea+fle+a+sur
Evopuniko evo+pu+ni+ko
Gennulailo gen+nul+ai+lo
Fradiobre fra+di+o+bre
Werthaoero wer+tha+o+ero
Kirunioqui kir+uni+o+qui
Vuekeaigen vue+ke+ai+gen

Pulsars

Krimoeven kri+mo+e+ven
Soriaval sor+ia+·+val
Roniabul ro+ni+a+bul
Dalbikar dal+bi+·+kar

Black holes

Kelauron kel+au+·+ron
Moriakal mor+ia+·+kal
Brivoelar bri+vo+e+lar
Vunaisela vu+n+ai+sel+a

Every object in the known universe that humanity has catalogued now has a name a human being can say aloud — in any language, on any continent, in any century.