Zulip Chat Archive

Stream: new members

Topic: spot the difference


Kenny Lau (Jan 11 2019 at 12:28):

invalid type ascription, term has type
  @function.injective.{1 1} (pre_von_Neumann n) (pre_von_Neumann m)
    (@nat.le_rec_on.{1} (λ (n : nat), pre_von_Neumann n) (λ (n : nat), @pre_von_Neumann.next n) n m H)
but is expected to have type
  @function.injective.{1 1} (pre_von_Neumann n) (pre_von_Neumann m)
    (@nat.le_rec_on.{1} pre_von_Neumann (λ (n : nat), @pre_von_Neumann.next n) n m H)

state:
n m : nat,
H : @has_le.le.{0} nat nat.has_le n m
 @function.injective.{1 1} (pre_von_Neumann n) (pre_von_Neumann m)
    (@nat.le_rec_on.{1} pre_von_Neumann (λ (n : nat), @pre_von_Neumann.next n) n m H)

Johan Commelin (Jan 11 2019 at 12:30):

Ouch... that must hurt. (λ (n : nat), pre_von_Neumann n) ought to be defeq to pre_von_Neumann.

Kenny Lau (Jan 11 2019 at 12:32):

ok convert [...]; ext; refl worked

Kenny Lau (Jan 11 2019 at 12:36):

@Sebastian Ullrich will this be fixed in Lean 4?

Kenny Lau (Jan 11 2019 at 12:55):

MWE:

def A :   Type
| nat.zero     := empty
| (nat.succ n) := A n  empty

example : A = λ n, A n := rfl -- fails

@Mario Carneiro

Kevin Buzzard (Jan 11 2019 at 15:20):

"Probably a bug", says Sebastian


Last updated: Dec 20 2023 at 11:08 UTC