## Stream: new members

### Topic: Odd resolution of goal in natural numbers game

#### Michaël Maex (Nov 19 2021 at 22:57):

I'm a total newbie who's working their way through the natural numbers game.
During an attempt to solve level 4 of the advanced multiplication world I stumbled upon behaviour that struck me as odd and that I would like to understand.

The code looks like this

theorem mul_left_cancel (a b c : mynat) (ha : a ≠ 0) : a * b = a * c → b = c :=
begin
cases a,
exfalso,
apply ha,
refl,
revert b,
induction c with n hn,
intro b,
intro h,
rw mul_zero at h,
rw mul_eq_zero_iff at h,
cc,
intro b,
cases b,
intro hf,
exfalso,
rw mul_zero at hf,
end


After the exfalso the context looks like

2 goals
a : mynat,
ha : succ a ≠ 0,
n : mynat,
hn : ∀ (b : mynat), succ a * b = succ a * n → b = n,
hf : succ a * 0 = succ a * succ n
⊢ false

case mynat.succ
a : mynat,
ha : succ a ≠ 0,
n : mynat,
hn : ∀ (b : mynat), succ a * b = succ a * n → b = n,
b : mynat
⊢ succ a * succ b = succ a * succ n → succ b = succ n


After rw mul_zero at hf, the context suddenly looks like

case mynat.zero
a : mynat,
ha : succ a ≠ 0
⊢ ∀ (b : mynat), succ a * b = succ a * zero → b = zero


Not only did one goal disappear or get resolved in a very non-trivial way. The other goal changed in a way that I find very odd.
Does anyone see what's going on? I'd love to know

#### Kevin Buzzard (Nov 20 2021 at 00:05):

lol it's the line 71 column 18 bug in NNG :-) Hit enter a couple of times and sanity will be restored!

#### Kevin Buzzard (Nov 20 2021 at 00:07):

https://github.com/leanprover-community/lean/issues/468

#### Kevin Buzzard (Nov 20 2021 at 00:09):

This is a super-obscure bug whereby the actual goal is not correctly printed if the cursor is in a couple of extremely specific places. It is unlikely to ever be fixed in Lean 3 because we're moving to Lean 4 (and even if it was fixed in Lean 3 I'm unlikely to port the fix to NNG...)

Last updated: Dec 20 2023 at 11:08 UTC