Zulip Chat Archive

Stream: new members

Topic: Quotient.induction can infer motive but fails on application


Dexin Zhang (Aug 20 2024 at 13:59):

I encountered a strange "application type mismatch" error:

import Mathlib.Data.Quot

variable {α : Type u} {s : Setoid α} {p : Quotient s  Prop} {q : Quotient s  Prop}

-- OK
example : ( x, p x)   (x : α), p x
  | x, h => Quotient.inductionOn x (fun x h => x, h) h

-- application type mismatch
--   Quotient.inductionOn (motive := fun x => p x → q x → ∃ x, p ⟦x⟧ ∧ q ⟦x⟧) x (fun x h₁ h₂ => Exists.intro x ⟨h₁, h₂⟩) h₂
-- argument has type
--   q x
-- but function has type
--   p x → q x → ∃ x, p ⟦x⟧ ∧ q ⟦x⟧
example : ( (x : Quotient s), p x  q x)   (x : α), p x  q x
  | x, h₁, h₂ => Quotient.inductionOn x (fun x h₁ h₂ => x, h₁, h₂) h₁ h₂

Looks like Quotient.inductionOn successfully infers the motive, but strangely "forget" the h₁ argument. Is that an internal bug?


Last updated: May 02 2025 at 03:31 UTC