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
/-- **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
/-- **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
/-- **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:
- What is the full statement of the six exponentials theorem in classical number theory?
- How does the rational trace condition relate to the framework's definition of cost?
- What role does the golden ratio play in the trace equation r + r^(-1) = 3?
- What does the gauge classification use the integer exponent result for?
- Is the six exponentials theorem itself proved anywhere in the framework's library?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
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 : ℝ)The declaration SixExponentialsTraceInput states that if for each base 2, 3, and 5 the sum n^c + n^(-c) is rational, then c is rational. SixExponentialsTraceInput · IndisputableMonolith/Cost/TraceRationalExponent.leanTHEOREM rat_of_trace_rat_of_pow_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean
/-- **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] ringA theorem proves that if u > 1 has a rational trace and some positive power of u is rational, then u is rational. rat_of_trace_rat_of_pow_rat · IndisputableMonolith/Cost/TraceRationalExponent.leanTHEOREM int_of_rat_exponent_of_trace_rat · IndisputableMonolith/Cost/TraceRationalExponent.lean
/-- **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)A theorem proves that a positive rational exponent with a rational trace at base 2 is an integer. int_of_rat_exponent_of_trace_rat · IndisputableMonolith/Cost/TraceRationalExponent.leanTHEOREM exponent_is_positive_integer · IndisputableMonolith/Cost/TraceRationalExponent.lean
/-- **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.symmGiven the six exponentials input, a positive real exponent with rational traces at bases 2, 3, and 5 is a positive integer. exponent_is_positive_integer · IndisputableMonolith/Cost/TraceRationalExponent.lean