Zulip Chat Archive
Stream: general
Topic: Why can't linarith do simple association here?
Sophia C (Jul 17 2024 at 02:38):
So, I'm playing around with Lean, and I'm trying to prove a simple theorem:
{z : ℕ} : 4*z + (4 - 1) = (4*z + 4) - 1
and I can't seem to do it with linarith alone.
Yury G. Kudryashov (Jul 17 2024 at 02:40):
Short answer: try omega. Long answer: probably, linarith doesn't split nat subtraction into cases.
Yury G. Kudryashov (Jul 17 2024 at 02:41):
You can also try to zify and see if it can push Nat.cast (_ - _) to Nat.cast _ - Nat.cast _.
Yury G. Kudryashov (Jul 17 2024 at 02:41):
The issue is that (2 - 3 : Nat) = 0 in Lean/Mathlib, so a + (b - c) = (a + b) - c requires c ≤ b.
James Sully (Jul 17 2024 at 14:23):
that one's true by rfl
Last updated: May 02 2025 at 03:31 UTC