Encyclopedia Cost Cost Trace Rational Exponent Six Exponentials Trace Input

ARTICLE 4 claims 3 theorems 1 model

Cost Trace Rational Exponent Six Exponentials Trace Input

A machine-checked library states a precise condition under which a real exponent must be rational, and proves the arithmetic steps around it.

The trace input

In number theory, the six exponentials theorem is a known result about when certain combinations of exponentials must be rational. The declaration SixExponentialsTraceInput is a formal statement of a specific corollary of that theorem, phrased in the language of the Recognition Science framework. It says: if a real number c has the property that for each of the bases 2, 3, and 5, the sum n^c + n^(-c) is a rational number, then c itself must be rational. The declaration states this as a hypothesis, an input to the framework's library, because the ambient collection of formal theorems does not yet include the six exponentials theorem itself.

The surrounding lemmas in the same file show what this input buys. One theorem proves that if a real number u greater than 1 has a rational trace (meaning u + u^(-1) is rational) and some positive power of u is rational, then u must be rational. Another proves that a positive rational exponent c with a rational trace at base 2 must be an integer, meaning its denominator is 1. Together with the six exponentials input, these establish that a positive real exponent whose traces at the small bases are rational is a positive integer. The framework's library records these as formal theorems, checked by a machine.

What the declaration does not claim is important. It does not assert that the six exponentials theorem is true; it merely imports that statement as a hypothesis for the theorems that follow. It does not claim that n^c itself is rational, only that the sum n^c + n^(-c) is rational. The file explicitly notes that this weakening is necessary, because the equation r + r^(-1) = 3 has no rational solution, even though a cost value of 1/2 at ratio 2 is perfectly rational. The golden ratio squared provides the real witness: its trace is exactly 3, showing that a rational trace does not force a rational character.

In Recognition Science, this input is part of the arithmetic core of a gauge classification. The framework models certain costs as traces of powers, and this declaration supplies the number-theoretic bridge that turns a rational trace condition into a statement about integer exponents. The theorem exponent_is_positive_integer then concludes that the exponent is a positive integer, not further restricted to odd values. The framework's library records this as a formal derivation, with the six exponentials theorem as an explicit, named assumption.

MODEL SixExponentialsTraceInput · IndisputableMonolith/Cost/TraceRationalExponent.lean
/-- The six exponentials input, in exactly the form the classification uses: if the trace
of `n^c` is rational at the three bases two, three and five, the exponent is rational.
This is a published corollary of the six exponentials theorem (Lang, Ramachandra) and is
stated as a hypothesis because the ambient library carries neither it nor
Gelfond--Schneider. -/
def SixExponentialsTraceInput : Prop :=
  ∀ c : ℝ, (∀ n : ℕ, 2 ≤ n → n ≤ 5 →
      ∃ t : ℚ, ((n : ℝ)) ^ c + (((n : ℝ)) ^ c)⁻¹ = (t : ℝ)) →
    ∃ r : ℚ, c = (r : ℝ)
THEOREM rat_of_trace_rat_of_pow_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean
rat_of_trace_rat_of_pow_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean:145
/-- **A rational trace plus any rational power forces rationality.** If `u > 1` has a
rational trace and some positive power of `u` is rational, then `u` is rational.

This is what makes the trace formulation tractable: a genuinely quadratic unit can never
have a rational power. -/
theorem rat_of_trace_rat_of_pow_rat {u : ℝ} (hu : 1 < u) {t : ℚ}
    (ht : u + u⁻¹ = (t : ℝ)) {q : ℕ} (hq : 1 ≤ q) {A : ℚ}
    (hA : u ^ q = (A : ℝ)) :
    ∃ r : ℚ, u = (r : ℝ) := by
  obtain ⟨a, b, ha, hb, hab⟩ := pow_eq_coords hu ht q hq
  have hbne' : ((b : ℝ)) ≠ 0 := by
    simpa using (ne_of_gt hb : b ≠ 0)
  have hval : (A : ℝ) = (a : ℝ) + (b : ℝ) * (u - u⁻¹) := by rw [← hA, hab]
  have hd : u - u⁻¹ = ((A : ℝ) - (a : ℝ)) / (b : ℝ) := by
    rw [eq_div_iff hbne']
    linear_combination -hval
  refine ⟨(t + (A - a) / b) / 2, ?_⟩
  push_cast
  rw [← hd, ← ht]
  ring
THEOREM int_of_rat_exponent_of_trace_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean
int_of_rat_exponent_of_trace_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean:168
/-- **A positive rational exponent with a rational trace is an integer.** If `c` is a
positive rational and `2^c + 2^(-c)` is rational, then `c` has denominator one.

Together with the six exponentials theorem, which rules out irrational `c`, this is the
whole exponent step of the gauge classification. Note what it never assumes: `2^c` is
not required to be rational, only its trace, which is exactly the weakening that
`no_rational_character_at_trace_three` shows to be necessary. -/
theorem int_of_rat_exponent_of_trace_rat {c : ℚ} (hc : 0 < c) {t : ℚ}
    (ht : (2 : ℝ) ^ (c : ℝ) + ((2 : ℝ) ^ (c : ℝ))⁻¹ = (t : ℝ)) :
    c.den = 1 := by
  haveI : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩
  have hu1 : 1 < (2 : ℝ) ^ (c : ℝ) := by
    have h0 : (2 : ℝ) ^ (0 : ℝ) < (2 : ℝ) ^ (c : ℝ) := by
      apply (Real.rpow_lt_rpow_left_iff (by norm_num)).mpr
      exact_mod_cast hc
    rwa [Real.rpow_zero] at h0
  have hnum : 0 < c.num := Rat.num_pos.mpr hc
  have hpR : ((c.num.toNat : ℕ) : ℝ) = ((c.num : ℤ) : ℝ) := by
    exact_mod_cast congrArg (fun z : ℤ => (z : ℝ)) (Int.toNat_of_nonneg (le_of_lt hnum))
  have hcq : (c : ℝ) * ((c.den : ℕ) : ℝ) = ((c.num.toNat : ℕ) : ℝ) := by
    rw [hpR]
    exact_mod_cast congrArg (fun x : ℚ => (x : ℝ)) (Rat.mul_den_eq_num c)
  have hpow : ((2 : ℝ) ^ (c : ℝ)) ^ (c.den) = (((2 : ℚ) ^ (c.num.toNat) : ℚ) : ℝ) := by
    rw [← Real.rpow_natCast ((2 : ℝ) ^ (c : ℝ)) c.den, ← Real.rpow_mul (by norm_num), hcq,
      Real.rpow_natCast]
    push_cast
    ring
  obtain ⟨r, hr⟩ := rat_of_trace_rat_of_pow_rat hu1 ht c.pos hpow
  have hrq : r ^ (c.den) = (2 : ℚ) ^ (c.num.toNat) := by
    have h : ((r ^ (c.den) : ℚ) : ℝ) = (((2 : ℚ) ^ (c.num.toNat) : ℚ) : ℝ) := by
      rw [← hpow, hr]; push_cast; ring
    exact_mod_cast h
  have hrne : r ≠ 0 := by
    intro h
    rw [h, zero_pow (by have := c.pos; omega : c.den ≠ 0)] at hrq
    have hp : (0 : ℚ) < (2 : ℚ) ^ (c.num.toNat) := by positivity
    rw [← hrq] at hp
    exact lt_irrefl _ hp
  have hv1 : padicValRat 2 (r ^ (c.den)) = (c.den : ℕ) * padicValRat 2 r :=
    padicValRat.pow hrne
  have hself : padicValRat 2 ((2 : ℚ)) = 1 := by
    have h := padicValRat.self (p := 2) (by norm_num)
    norm_num at h
    exact h
  have hv2 : padicValRat 2 ((2 : ℚ) ^ (c.num.toNat)) = (c.num.toNat : ℕ) * 1 := by
    rw [padicValRat.pow (by norm_num : (2 : ℚ) ≠ 0), hself]
  rw [hrq, hv2] at hv1
  have hdvd : c.den ∣ c.num.toNat := by
    have hz : ((c.den : ℕ) : ℤ) ∣ ((c.num.toNat : ℕ) : ℤ) :=
      ⟨padicValRat 2 r, by push_cast at hv1 ⊢; linarith⟩
    exact_mod_cast hz
  have hpabs : c.num.toNat = c.num.natAbs := by
    have h1 : ((c.num.toNat : ℕ) : ℤ) = c.num := Int.toNat_of_nonneg (le_of_lt hnum)
    have h2 : ((c.num.natAbs : ℕ) : ℤ) = c.num := Int.natAbs_of_nonneg (le_of_lt hnum)
    omega
  have hcop : Nat.gcd c.num.toNat c.den = 1 := by
    rw [hpabs]; exact c.reduced
  exact Nat.dvd_one.mp (hcop ▸ Nat.dvd_gcd hdvd dvd_rfl)
THEOREM exponent_is_positive_integer · IndisputableMonolith/Cost/TraceRationalExponent.lean
exponent_is_positive_integer · IndisputableMonolith/Cost/TraceRationalExponent.lean:242
/-- **The exponent is a positive integer.** Given the imported six exponentials input, a
positive real exponent whose traces at the small bases are rational is a positive integer.
It is not further restricted to the odd integers: both parities are inhabited, by
`Cost.GaugeOrbitFromRealCharacter.signedPowerNativeCost_sansAnchor`. This is the arithmetic
half of `GaugeOrbitIsSignedPowerFamily_of_sixExponentials`; the analytic half is Howe. -/
theorem exponent_is_positive_integer (hsix : SixExponentialsTraceInput)
    {c : ℝ} (hc : 0 < c)
    (htrace : ∀ n : ℕ, 2 ≤ n → n ≤ 5 →
      ∃ t : ℚ, ((n : ℝ)) ^ c + (((n : ℝ)) ^ c)⁻¹ = (t : ℝ)) :
    ∃ k : ℕ, 1 ≤ k ∧ c = (k : ℝ) := by
  obtain ⟨r, hr⟩ := hsix c htrace
  have hrpos : 0 < r := by
    have h : (0 : ℝ) < (r : ℝ) := hr ▸ hc
    exact_mod_cast h
  obtain ⟨t, ht⟩ := htrace 2 (by norm_num) (by norm_num)
  have ht' : (2 : ℝ) ^ ((r : ℚ) : ℝ) + ((2 : ℝ) ^ ((r : ℚ) : ℝ))⁻¹ = (t : ℝ) := by
    rw [← hr]
    norm_num at ht ⊢
    exact ht
  have hden : r.den = 1 := int_of_rat_exponent_of_trace_rat hrpos ht'
  have hnum : 0 < r.num := Rat.num_pos.mpr hrpos
  refine ⟨r.num.toNat, by omega, ?_⟩
  have hrn : ((r.num : ℤ) : ℚ) = r := by
    conv_rhs => rw [← Rat.num_div_den r]
    rw [hden]
    norm_num
  have hfin : ((r.num.toNat : ℕ) : ℚ) = r := by
    rw [show ((r.num.toNat : ℕ) : ℚ) = ((r.num.toNat : ℕ) : ℤ) by push_cast; ring,
      Int.toNat_of_nonneg (le_of_lt hnum)]
    exact hrn
  rw [hr]
  exact_mod_cast congrArg (fun x : ℚ => (x : ℝ)) hfin.symm

What this page does not claim

The six exponentials theorem is not proved in the framework's library; it is imported as a hypothesis. The declaration does not claim that n^c itself is rational, only that the sum n^c + n^(-c) is rational. The theorem does not restrict the exponent to odd integers; both parities are inhabited.

Verify this page

Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:

$ lake env lean IndisputableMonolith/Cost/TraceRationalExponent.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)

A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.

Derived articles

This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:

MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND