# Model dictionary — notation shared by text, code and tables Code: `src/agi_ge/`. Every symbol below appears with the same name in the code (`params.py`, `production.py`, `transition.py`, `households.py`) and in the LaTeX macros of `paper/`. Time is discrete and annual; t = 0 is 2026. All quantities are real, in units of the 2026 final good unless stated. ## 1. Tasks and skills (Restrepo block, `tasks.py`) | Symbol | Code | Meaning | Units | |---|---|---|---| | i ∈ B = {1,…,n_B} | `tasks.bottleneck` | bottleneck task classes (default n_B = 4) | — | | a ∈ A | `tasks.accessory` | accessory task classes entering output linearly (default 2) | — | | s ∈ {L, H} | `skills` | permanent skill of workers; Ω(L) = {1,2,a_L}, Ω(H) = {3,4,a_H} (a partition) | — | | H_s | `H[s]` | inelastic labor supply of skill s (efficiency units) | workers | | L_i | `L[i]` | labor employed in task i | workers | | Q_i | `Q[i]` | compute services used in task i | compute units | | α_{i,t} | `alpha[i,t]` | compute needed to replicate one worker in task i; ∞ = not automatable yet | compute / worker | | X_i = L_i + Q_i/α_{i,t} | `X[i]` | task output (eq. 1 of Restrepo) | worker-equivalents | | X_B = (Σ_i ν_i X_i^{ρ_B})^{1/ρ_B} | `XB` | bottleneck composite, σ_B = 1/(1−ρ_B) < 1 | — | | CEU(s) = max_{i∈Ω(s)} α_i | `ceu[s]` | compute-equivalent units of skill s (Restrepo p. 7) | compute / worker | | w_s | `w[s]` | wage of skill s | goods / worker | | A_t | `A` | price of one unit of compute services | goods / compute unit | A compute unit is normalized so that the terminal α of task 1 equals one: one unit of installed compute capacity replaces one task-1 worker once AGI is reached (α_1^∞ = 1). ## 2. Final goods, scarce complements, energy (`production.py`) | Symbol | Code | Meaning | |---|---|---| | K^N_t | `KN` | structures and machinery (reproducible, price 1, δ_N) | | T | `T` | production land (fixed) | | E^Y_t | `EY` | energy used in final production | | V = (ν_N K_N^{ρ_N} + (1−ν_N) X_B^{ρ_N})^{1/ρ_N} | `V` | task–structures nest, σ_N = 1/(1−ρ_N) | | G = (ν_T T^{ρ_T} + ν_E E_Y^{ρ_T} + ν_V V^{ρ_T})^{1/ρ_T} | `G` | top nest with scarce physical inputs, σ_T = 1/(1−ρ_T) | | Y_t = Z_t (G + Σ_a γ_a X_a) | `Y` | gross output of final goods; Z_t = Z_0 (1+g_Z)^t non-AI technical progress | | R^N_t, R^T_t, P^E_t | `RN`,`RT`,`PE` | rental of structures, land rent, energy price = Z × marginal products | | K^Q_t | `KQ` | installed compute capacity (capital), productive at t, bought at t−1 at price p^Q_{t−1} | | p^Q_t = p^Q_0 max{e^{−g_p t}, p̄^Q/p^Q_0} | `pQ` | price of one unit of capacity (Moore-type decline, optional floor) | | ε_t = ε_0 max{e^{−g_ε t}, ε̄/ε_0} | `eps` | energy per unit of compute service (Koomey-type decline, optional floor) | | u_t ∈ (0,1] | `util` | utilization of compute capacity (below one only if A_t < ε_t P^E_t) | | Q_t = u_t K^Q_t | `Qtot` | compute services supplied | | E_t = Z^E (K^E_t)^{1−η} (R^E)^{η} | `E` | energy output; K^E energy capital (price 1, δ_E), R^E fixed resource with share η | | E_t = ε_t Q_t + E^Y_t | — | energy market clearing | | R^E_t = (1−η) P^E E/K^E ; rent_R = η P^E E | `RE`,`rentR` | energy-capital rental and resource rent | | K^H_t, T^H | `KH`,`TH` | housing structures (price 1, δ_H) and residential land | | H^S = (K^H)^{1−ν_H} (T^H)^{ν_H} | `HS` | housing services | | R^H_t | `RH` | rent per unit of housing services; θ_H = expenditure share on housing | | GDP_t = Y_t + R^H_t H^S_t | `GDP` | value added (energy and compute services are intermediate) | Income identity (tested in `tests/test_accounting.py`): GDP = Σ_s w_s H_s + R^N K^N + R^T T + (A − εP^E) u K^Q + R^E K^E + rent_R + R^H H^S (housing split into (1−ν_H) R^H H^S to structures and ν_H R^H H^S to residential land). Profits are zero under perfect competition; with the AI-monopoly scenario the markup wedge (μ−1)·cost is a separate profit line. ## 3. Capital accumulation and asset prices (`transition.py`) For each capital type k ∈ {N, Q, E, H} with purchase price p^k_t (p^N = p^E = p^H = 1), depreciation δ_k and adjustment-cost parameter φ_k, x^k_t = I^k_t/K^k_t: K^k_{t+1} = (1−δ_k) K^k_t + I^k_t; adjustment cost p^k_t (φ_k/2)(x^k_t − δ_k)^2 K^k_t; q^k_t = p^k_t [1 + φ_k (x^k_t − δ_k)] (Tobin's marginal q = average q, Hayashi); Euler: q^k_t (1 + r_{t+1}) = R^k_{t+1} + p^k_{t+1}[φ_k(x^k_{t+1}−δ_k)x^k_{t+1} − (φ_k/2)(x^k_{t+1}−δ_k)^2] + (1−δ_k) q^k_{t+1}, with R^Q_t ≡ u_t(A_t − ε_t P^E_t) the net rental of compute capacity. Land: P^T_t (1+r_{t+1}) = R^T_{t+1} + P^T_{t+1}; same for residential land. Equity value of sector k (ex-dividend) V^k_t = q^k_t K^k_{t+1}; net payout D^k_t = R^k_t K^k_t − p^k_t I^k_t − adj. cost (negative = net issuance); price–payout ratio V^k_t / D^k_t; market-to-replacement-cost = q^k_t / p^k_t. Aggregate wealth W_t = Σ_k V^k_t + P^T_t T + P^{TH}_t T^H (= household net worth; there is no government debt in the baseline). ## 4. Households Two-class (`transition.py`): capitalists (mass μ_K, no labor income, own all claims) with u = (c^{1−θ_H} h^{θ_H})^{1−γ}/(1−γ), Euler (x_{t+1}/x_t)^γ (P_{t+1}/P_t)^{1−γ} = β(1+r_{t+1}) where x = expenditure and P_t ∝ (R^H_t)^{θ_H} the ideal price index; workers of skill s consume w_s H_s + transfers − taxes (hand-to-mouth). Heterogeneous agents (`households.py`): households (skill s, discount type β_j, productivity e_t Markov) choose assets a_{t+1} ≥ 0 earning r_{t+1}; income w_s e_t + transfers; one composite asset = claim on the aggregate fund. ## 5. Government (policy scenarios) τ_T land-value tax, τ_K tax on capital income, τ_Q tax on compute rental income; citizen capital fund holding a share θ_F of all equity and paying its net payout equally to all households; balanced budget each period. ## 6. Scenario primitives A scenario is a tuple of paths {α_{i,t}}, {p^Q_t}, {ε_t}, {Z_t}, policy parameters and preference/technology constants; see `scenarios.py` and `results/scenarios/*.json`.