Explores dimensional emergence in discrete spacetime, suggesting new inflationary mechanisms.
This manuscript presents the computational culmination of the Information-Topological Register Model (Mass-Gap Cosmology), validating the emergence of macroscopic three-dimensional spacetime and cosmological inflation from a strictly discrete, one-dimensional binary network. By scaling the network to the thermodynamic limit (N = 300,000 nodes), we demonstrate a fundamental spatial dichotomy: a pure vacuum network exhibits fractal roughness with a spectral dimension of Ds ≈ 2.92, whereas the introduction of a 10% matter fraction intrinsically curves the local space, raising the macroscopic dimension to Ds ≈ 3.06 via scale-invariant topological gravity. Furthermore, by translating topological node degrees into local density fluctuations, we extract the primordial power spectrum P(k) using Fast Fourier Transforms (FFT). While the pure topological base model inherently generates a perfectly scale-invariant Harrison-Zel'dovich spectrum (ns ≈ 1.0), we introduce a deterministic mechanism for inflation: Topological Slow-Roll. By implementing an exponential topological friction term — analogous to the cosmological e-fold expansion — the scale invariance is organically broken. The highly non-linear response of the discrete manifold naturally generates the red-tilted primordial spectrum (ns < 1) observed by the Planck satellite. Appendix: Python Simulation Code import numpy as np from numba import njit import time import matplotlib.pyplot as plt # ========================================== # HYPER-PARAMETER (Mass-Gap Universum, N=300.000) # ========================================== N_INITIAL = 300000 # Gigantisches Test-Universum (45 Milliarden Kombis) MATTER_FRACTION = 0.10 # 10% Materie - Gravitation ist aktiv! MAX_NODES = 300000 MAX_EDGES = 35_000_000 TICKS = 30_000_000 GRAVITY_MULTIPLIER = 50.0 # ========================================== # C-KERN 1: ON-THE-FLY GENESIS # ========================================== @njit def genesis_equilibrium(num_nodes, bit, gravity_mult): edges_u = np.zeros(MAX_EDGES, dtype=np.int32) edges_v = np.zeros(MAX_EDGES, dtype=np.int32) edge_count = 0 for u in range(num_nodes): for v in range(u + 1, num_nodes): dist = v - u dist = min(dist, num_nodes - dist) if dist < 1.0: dist = 1.0 survival_prob = 1.0 / (dist ** 1.666) if bit[u] == 1 and bit[v] == 1: survival_prob *= gravity_mult if survival_prob > 1.0: survival_prob = 1.0 if np.random.rand() < survival_prob: edges_u[edge_count] = u edges_v[edge_count] = v edge_count += 1 return edges_u, edges_v, edge_count # ========================================== # C-KERN 2: REINE KINEMATIK # ========================================== @njit def kinematic_loop(ticks, num_nodes, bit, left, right): for t in range(ticks): A = np.random.randint(0, num_nodes) if bit[A] == 1: B = left[A] if np.random.rand() < 0.5 else right[A] if bit[B] == 0: A_L = left[A] A_R = right[A] B_L = left[B] B_R = right[B] if right[A] == B: right[A_L] = B left[B] = A_L left[B_R] = A right[A] = B_R right[B] = A left[A] = B elif left[A] == B: right[B_L] = A left[A] = B_L left[A_R] = B right[B] = A_R right[A] = B left[B] = A return num_nodes # ========================================== # DAS TOPOLOGISCHE OBSERVATORIUM # ========================================== @njit def measure_spectral_dimension(num_nodes, num_edges, left, right, edges_u, edges_v, bit): degree = np.ones(num_nodes, dtype=np.int32) * 2 for i in range(num_edges): degree[edges_u[i]] += 1 degree[edges_v[i]] += 1 offset = np.zeros(num_nodes + 1, dtype=np.int32) for i in range(num_nodes): offset[i+1] = offset[i] + degree[i] adjacency = np.zeros(offset[num_nodes], dtype=np.int32) current_idx = np.zeros(num_nodes, dtype=np.int32) for i in range(num_nodes): pos = offset[i] + current_idx[i] adjacency[pos] = left[i] current_idx[i] += 1 pos = offset[i] + current_idx[i] adjacency[pos] = right[i] current_idx[i] += 1 for i in range(num_edges): u = edges_u[i] v = edges_v[i] pos_u = offset[u] + current_idx[u] adjacency[pos_u] = v current_idx[u] += 1 pos_v = offset[v] + current_idx[v] adjacency[pos_v] = u current_idx[v] += 1 n_walkers = 200000 walk_steps = 600 vacuum_nodes = np.where(bit[:num_nodes] == 0)[0] if len(vacuum_nodes) == 0: return np.zeros(walk_steps) returns = np.zeros(walk_steps, dtype=np.float64) for w in range(n_walkers): start_node = np.random.choice(vacuum_nodes) current_node = start_node for t in range(walk_steps): start_idx = offset[current_node] end_idx = offset[current_node + 1] num_neighbors = end_idx - start_idx chosen_neighbor_idx = start_idx + np.random.randint(0, num_neighbors) current_node = adjacency[chosen_neighbor_idx] if current_node == start_node: returns[t] += 1.0 return returns / n_walkers # ========================================== # KONTROLL-RAUM # ========================================== def run_topological_universe(): print(f"Initialisiere lebendiges Universum (N={N_INITIAL:,})...") bit = np.zeros(MAX_NODES, dtype=np.int8) left = np.zeros(MAX_NODES, dtype=np.int32) right = np.zeros(MAX_NODES, dtype=np.int32) num_nodes = N_INITIAL for i in range(N_INITIAL): bit[i] = 1 if np.random.rand() < MATTER_FRACTION else 0 left[i] = (i - 1) % N_INITIAL right[i] = (i + 1) % N_INITIAL print(f"Zünde Genesis (45 Milliarden Quanten-Kombinationen berechnen)...") start_time = time.time() edges_u, edges_v, num_edges = genesis_equilibrium(num_nodes, bit, GRAVITY_MULTIPLIER) inf_time = time.time() - start_time print(f"-> Genesis beendet in {inf_time:.2f} Sekunden. Kanten: {num_edges:,}") print(f"Aktiviere Kinematik...") start_time = time.time() final_nodes = kinematic_loop(TICKS, num_nodes, bit, left, right) therm_time = time.time() - start_time print(f"-> Kinematik beendet in {therm_time:.2f} Sekunden.") print("Starte Observatorium (200.000 Wanderer)...") P_t = measure_spectral_dimension(final_nodes, num_edges, left, right, edges_u, edges_v, bit) valid = P_t > 0 t = np.arange(1, len(P_t) + 1) t_valid = t[valid] P_valid = P_t[valid] log_t = np.log(t_valid) log_P = np.log(P_valid) fit_mask = (t_valid > 50) & (log_P > -11.5) if np.sum(fit_mask) > 5: m, c = np.polyfit(log_t[fit_mask], log_P[fit_mask], 1) D_s = -2 * m else: D_s = 0.0 m, c = 0, 0 print(f"=======================================") print(f" GEMESSENE SPEKTRALDIMENSION: D_s = {D_s:.4f}") print(f"=======================================") plt.figure(figsize=(10, 6)) plt.plot(log_t, log_P, 'b.', label=r'Return Probability ln P(t)', alpha=0.6) if np.sum(fit_mask) > 5: plt.plot(log_t[fit_mask], m * log_t[fit_mask] + c, 'r-', linewidth=2, label=f'Fit (Steigung \≈ -Dₛ/2:.3f \⇒ Dₛ \≈ Dₛ:.2f)') plt.title(f'Emergenz der Dimension (Mass-Gap 10% Materie, N={N_INITIAL})') plt.xlabel('Log(Schritte t)') plt.ylabel('Log(Return Probability P(t))') plt.legend() plt.grid(True, linestyle='--') plt.show() if __name__ == "__main__": run_topological_universe()
No takes yet. Share an insight, caveat, or question.
Nicolas Köllmer (2026) studied this question.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: