Theorems / mh_numb_3b08d7

Mathlib held-out

Number theory · hard

Statement, exactly as the model and Lean see it
theorem lg_target {τ : ℂ} (hτ : 0 < τ.im) (n : ℤ) : ‖Complex.exp (↑Real.pi * Complex.I * ↑n ^ 2 * τ)‖ ≤ Real.exp (-Real.pi * τ.im) ^ n.natAbs := by
Mathlib declaration
norm_exp_mul_sq_le
Held-out module
Mathlib.NumberTheory.ModularForms.JacobiTheta.OneVariable
Banned modules (itself + downstream)
2
Reference proof premises (reachable / held-out)
65 / 0

Traces

Each configuration's full record: what was retrieved, what the model wrote, what Lean said back.

Not verified1 model calls · 1 Lean checks · $0.00097

Attempts

  1. sample 0 · round 0Syntax error37.4 s model time
    Proof
    ```lean
    intro n
    let τ' := Complex.I * τ
    let z := Complex.exp (↑Real.pi * τ')
    let z_mod := Complex.abs z
    have h1 : Complex.abs (Complex.exp (↑Real.pi * τ')) = Real.exp (Real.pi * Complex.im τ') :=
      Complex.abs_exp_real_im
    have h2 : Complex.im τ' = ↑n ^ 2 * τ.im :=
      by simp [τ', Complex.im, Complex.I, Real.pi, Complex.mul]
    have h3 : Real.exp (Real.pi * Complex.im τ') = Real.exp (Real.pi * ↑n ^ 2 * τ.im) :=
      by simp [h2]
    have h4 : Real.exp (Real.pi * ↑n ^ 2 * τ.im) = Real.exp (Real.pi * τ.im * ↑n ^ 2) :=
      by simp [Real.pi, Complex.im, τ']
    have h5 : Real.exp (Real.pi * τ.im * ↑n ^ 2) = Real.exp (Real.pi * τ.im) ^ ↑n.natAbs :=
      by simp [Real.exp_mul, Real.pow_zero, Real.pow_one, Real.pow_add, Real.pow_mul]
    have h6 : Real.exp (-Real.pi * τ.im) ^ n.natAbs = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.pow_mul]
    have h7 : Real.exp (Real.pi * τ.im) ^ ↑n.natAbs = Real.exp (Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_mul, Real.pow_mul]
    have h8 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by rw [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h9 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h10 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h11 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h12 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h13 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h14 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h15 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h16 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h17 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h18 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h19 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h20 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h21 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h22 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h23 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h24 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h25 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h26 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h27 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h28 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h29 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h30 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h31 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h32 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h33 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h34 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h35 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h36 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h37 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h38 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h39 : Real.exp (Real.pi * τ.im * ↑n.natAbs) = Real.exp (-Real.pi * τ.im * ↑n.natAbs) :=
      by simp [Real.exp_neg, Real.exp_mul, Real.neg_mul]
    have h40 : Real
    What Lean printed (this is all the model sees on repair)
    3:145: error: unsolved goals
    τ : ℂ
    hτ : 0 < τ.im
    n : ℤ
    ⊢ ‖Complex.exp (↑Real.pi * Complex.I * ↑n ^ 2 * τ)‖ ≤ Real.exp (-Real.pi * τ.im) ^ n.natAbs
    4:2: error: unexpected token '`'; expected command

Reference proof

Mathlib's own source for this declaration, shown for comparison. It may use lemmas the prover is not allowed to use.

theorem norm_exp_mul_sq_le {τ : ℂ} (hτ : 0 < τ.im) (n : ℤ) :
    ‖cexp (π * I * (n : ℂ) ^ 2 * τ)‖ ≤ rexp (-π * τ.im) ^ n.natAbs := by
  let y := rexp (-π * τ.im)
  have h : y < 1 := exp_lt_one_iff.mpr (mul_neg_of_neg_of_pos (neg_lt_zero.mpr pi_pos) hτ)
  refine (le_of_eq ?_).trans (?_ : y ^ n ^ 2 ≤ _)
  · rw [norm_exp]
    have : (π * I * n ^ 2 * τ : ℂ).re = -π * τ.im * (n : ℝ) ^ 2 := by
      rw [(by push_cast; ring : (π * I * n ^ 2 * τ : ℂ) = (π * n ^ 2 : ℝ) * (τ * I)),
        re_ofReal_mul, mul_I_re]
      ring
    obtain ⟨m, hm⟩ := Int.eq_ofNat_of_zero_le (sq_nonneg n)
    rw [this, exp_mul, ← Int.cast_pow, rpow_intCast, hm, zpow_natCast]
  · have : n ^ 2 = (n.natAbs ^ 2 :) := by rw [Nat.cast_pow, Int.natAbs_sq]
    rw [this, zpow_natCast]
    exact pow_le_pow_of_le_one (exp_pos _).le h.le ((sq n.natAbs).symm ▸ n.natAbs.le_mul_self)