Zulip Chat Archive
Stream: mathlib4
Topic: Adding an instance breaks `Mathlib.Tactic.Ring.Basic`
Christopher Hoskin (May 03 2024 at 06:50):
In https://github.com/leanprover-community/mathlib4/pull/12617 I'm trying to add an instance:
-- see Note [lower instance priority]
instance (priority := 100) CommSemiring.toNonUnitalNonAssocCommSemiring [CommSemiring α] :
NonUnitalNonAssocCommSemiring α :=
{ inferInstanceAs (CommMonoid α), inferInstanceAs (CommSemiring α) with }
This then breaks Mathlib.Tactic.Ring.Basic
:
[658/4453] Building Mathlib.Tactic.Ring.Basic
trace: .> LEAN_PATH=././.lake/packages/std/.lake/build/lib:././.lake/packages/Qq/.lake/build/lib:././.lake/packages/aesop/.lake/build/lib:././.lake/packages/proofwidgets/.lake/build/lib:././.lake/packages/Cli/.lake/build/lib:././.lake/packages/importGraph/.lake/build/lib:././.lake/build/lib LD_LIBRARY_PATH=././.lake/packages/std/.lake/build/lib:././.lake/packages/Qq/.lake/build/lib:././.lake/packages/aesop/.lake/build/lib:././.lake/packages/proofwidgets/.lake/build/lib:././.lake/packages/Cli/.lake/build/lib:././.lake/packages/importGraph/.lake/build/lib:././.lake/build/lib:/home/lean/.elan/toolchains/leanprover--lean4---v4.8.0-rc1/lib/lean:/home/lean/.elan/toolchains/leanprover--lean4---v4.8.0-rc1/lib:././.lake/build/lib /home/lean/.elan/toolchains/leanprover--lean4---v4.8.0-rc1/bin/lean -Dpp.unicode.fun=true -Dpp.proofs.withType=false -DautoImplicit=false -DrelaxedAutoImplicit=false ././././Mathlib/Tactic/Ring/Basic.lean -R ./././. -o ././.lake/build/lib/Mathlib/Tactic/Ring/Basic.olean -i ././.lake/build/lib/Mathlib/Tactic/Ring/Basic.ilean -c ././.lake/build/ir/Mathlib/Tactic/Ring/Basic.c --json
error: ././././Mathlib/Tactic/Ring/Basic.lean:584:25-584:27: application type mismatch
sub_pf «$pc» «$pd»
argument
«$pd»
has type
@HAdd.hAdd «$α» «$α» «$α»
(@instHAdd «$α»
(@Distrib.toAdd «$α»
(@NonUnitalNonAssocSemiring.toDistrib «$α» NonUnitalNonAssocCommSemiring.toNonUnitalNonAssocSemiring)))
«$a» «$_c» =
«$d» : Prop
but is expected to have type
@HAdd.hAdd «$α» «$α» «$α»
(@instHAdd «$α»
(@Distrib.toAdd «$α»
(@NonUnitalNonAssocSemiring.toDistrib «$α» NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring)))
«$a» «$_c» =
?m.108578 : Prop
error: Lean exited with code 1
I've not looked into meta programming in Mathlib yet, so I'm not sure how to proceed?
Or is my instance wrong in some way?
Thanks,
Christopher
Eric Wieser (May 03 2024 at 07:50):
I would guess a well-placed assertInstancesCommute
in the meta code will fix this
Eric Wieser (May 05 2024 at 08:03):
Ok, I fixed that issue in #12617 (it relates to issues with dependent types and Qq
, as quoted terms that are equal by definition are not equal in Qq) but now we have a worse one relating to CoeFun
not firing on linear maps
Last updated: May 02 2025 at 03:31 UTC