diff --git a/src/Lean/Meta/Constructions/NoConfusion.lean b/src/Lean/Meta/Constructions/NoConfusion.lean index 167f9067e2..02c2583ab3 100644 --- a/src/Lean/Meta/Constructions/NoConfusion.lean +++ b/src/Lean/Meta/Constructions/NoConfusion.lean @@ -243,9 +243,10 @@ def mkNoConfusionCtors (declName : Name) : MetaM Unit := do -- computation that `noConfusionType h` is equal to `$kType → P` let kType ← mkNoConfusionCtorArg ctor P let kType := kType.beta (xs ++ fields1 ++ fields2) - withLocalDeclD `k kType fun k => + withLocalDeclD `k kType fun k => do let e := mkConst noConfusionName (v :: us) let e := mkAppN e (xs ++ indices ++ #[P, ctor1, ctor2, h, k]) + let e ← mkExpectedTypeHint e P mkLambdaFVars (xs ++ #[P] ++ ys ++ #[h, k]) e let name := ctor.str "noConfusion" addDecl (.defnDecl (← mkDefinitionValInferringUnsafe diff --git a/tests/bench/big_beq.lean b/tests/bench/big_beq.lean index fc61b808a7..2da165f636 100644 --- a/tests/bench/big_beq.lean +++ b/tests/bench/big_beq.lean @@ -33,7 +33,7 @@ def testGenImpl: CommandElab := fun stx => do -- Create constant case definitions `(inductive $t:ident (α : Type) : Type where $cons:ctor* - deriving BEq + deriving instance BEq for $t:ident ) elabCommand idecl | _ => diff --git a/tests/lean/run/noConfusionCtors.lean b/tests/lean/run/noConfusionCtors.lean index 0eb94585b3..26535aa173 100644 --- a/tests/lean/run/noConfusionCtors.lean +++ b/tests/lean/run/noConfusionCtors.lean @@ -82,7 +82,7 @@ info: @[reducible] def Tmₛ.app.noConfusion.{u_1, u} : (P : Sort u_1) → {A : T → Tyₛ} → (a : Tmₛ (Tyₛ.SPi T A)) → (arg : T) → (a' : Tmₛ (Tyₛ.SPi T A)) → a.app arg = a'.app arg → (T = T → A ≍ A → a ≍ a' → arg ≍ arg → P) → P := -fun P {T} {A} a arg a' h k => Tmₛ.noConfusion h k +fun P {T} {A} a arg a' h k => id (Tmₛ.noConfusion h k) -/ #guard_msgs in #print Tmₛ.app.noConfusion