Zulip Chat Archive

Stream: general

Topic: How to handle 'Multipliable' statements produced by tprod


Zhu (Nov 28 2024 at 19:52):

Hi.
I'm currently working on proving something with an infinite product in Lean4 like this:

import Mathlib


example (a : ) (ha : 0 < a  a < 1) :
    ∏' n, (1 - a ^ (2 ^ (n + 1))) / (1 - a ^ (2 ^ n)) = 1 / (1 - a ^ (2 ^ 0)) := by
  simp only [div_eq_mul_inv]
  rw [tprod_mul, mul_comm]
  rw [tprod_eq_zero_mul']
  rw [mul_assoc,  tprod_mul]
  have :  b, (1 - a ^ 2 ^ (b + 1))⁻¹ * (1 - a ^ 2 ^ (b + 1)) = 1 := by
    intro b
    rw [inv_mul_cancel₀]
    apply sub_ne_zero_of_ne
    symm
    -- this part is annoying too, but I think I can fix it..
    sorry
  . simp [this]

  -- I'm comfused about the rest of these 'Multipliable' statements.
  . show Multipliable fun b => (1 - a ^ 2 ^ (b + 1))⁻¹
    sorry
  . show Multipliable fun b => 1 - a ^ 2 ^ (b + 1)
    sorry
  . sorry
  . sorry
  . sorry

Specifically, I'm stuck on the part where I need to handle the 'Multipliable' statements. I'm not sure how to proceed with those. Any insights or advice would be helpful.

Eric Wieser (Nov 28 2024 at 20:28):

I would recommend starting your proof with apply HasProd.tprod_eq so that the Multipliable goals never appear

Zhu (Nov 29 2024 at 01:16):

Thanks, I'll give that a try.


Last updated: May 02 2025 at 03:31 UTC