English
Let M be a Left Cancel Monoid. If two lists L and L′ have the same length and all prefix products match, then L and L′ are equal.
Русский
Пусть M — левалокальноCancel моноид. Если два списка L и L′ имеют одинаковую длину и совпадают произведения префиксов на каждом шаге, то списки равны.
LaTeX
$$$L.length = L'.length \rightarrow (\forall i \le L.length, (L.take i).prod = (L'.take i).prod) \rightarrow L = L'$$
Lean4
@[to_additive]
theorem eq_of_prod_take_eq [LeftCancelMonoid M] {L L' : List M} (h : L.length = L'.length)
(h' : ∀ i ≤ L.length, (L.take i).prod = (L'.take i).prod) : L = L' :=
by
refine ext_get h fun i h₁ h₂ => ?_
have : (L.take (i + 1)).prod = (L'.take (i + 1)).prod := h' _ (Nat.succ_le_of_lt h₁)
rw [prod_take_succ L i h₁, prod_take_succ L' i h₂, h' i (le_of_lt h₁)] at this
convert mul_left_cancel this