Zulip Chat Archive
Stream: new members
Topic: Adding instances to Algebra/Order/Kleene.lean
Nick Decroos (Jul 11 2024 at 22:17):
I am trying to define instances for AddOpposite
, MulOpposite
, ULift
, Subsemiring
, Subring
and Subalgebra
here. (These instances were specified in a TODO in that file.)
I have this code now (I'm omitting the instance statements that raised no problems).
-- Add these imports to file
import Mathlib.Algebra.Ring.Subring.Basic
import Mathlib.Algebra.Algebra.Subalgebra.Basic
namespace Subring
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (Subring α) := sorry
instance [IdemCommSemiring α] : IdemCommSemiring (Subring α) := sorry
instance [KleeneAlgebra α] : KleeneAlgebra (Subring α) := sorry
end Subring
namespace Subalgebra
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (Subalgebra α) := sorry
instance [IdemCommSemiring α] : IdemCommSemiring (Subalgebra α) := sorry
instance [KleeneAlgebra α] : KleeneAlgebra (Subalgebra α) := sorry
end Subalgebra
For Subring
, I get the error
failed to synthesize
Ring α
use `set_option diagnostics true` to get diagnostic information
For Subalgebra
, I get the error message that a build cycle is detected.
`c:\Users\desti\.elan\toolchains\leanprover--lean4---v4.10.0-rc1\bin\lake.exe setup-file C:/Users/desti/OneDrive/Documenten/mathlib4/Mathlib/Algebra/Order/Kleene.lean Init Mathlib.Algebra.Order.Monoid.Canonical.Defs Mathlib.Algebra.Ring.Pi Mathlib.Algebra.Ring.InjSurj Mathlib.Tactic.Monotonicity.Attr Mathlib.Algebra.Ring.Prod Mathlib.Algebra.Order.Monoid.Canonical.Defs Mathlib.Algebra.Ring.Subsemiring.Basic Mathlib.Algebra.Ring.Subring.Basic Mathlib.Algebra.Algebra.Subalgebra.Basic --no-build` failed:
stderr:
✖ [1014/1066] Running Mathlib.Algebra.Order.Kleene
error: build cycle detected:
+Mathlib.Algebra.Algebra.Subalgebra.Basic:olean
+Mathlib.Algebra.Order.Kleene:deps
+Mathlib.Algebra.Order.Kleene:leanArts
+Mathlib.Algebra.Order.Kleene:olean
+Mathlib.Algebra.Algebra.Operations:deps
+Mathlib.Algebra.Algebra.Operations:leanArts
+Mathlib.Algebra.Algebra.Operations:olean
+Mathlib.Algebra.Algebra.Subalgebra.Basic:deps
+Mathlib.Algebra.Algebra.Subalgebra.Basic:leanArts
+Mathlib.Algebra.Algebra.Subalgebra.Basic:olean
✖ [1056/1066] Running Mathlib.Data.Set.Semiring
error: .\.\.\.\Mathlib\Data\Set\Semiring.lean: bad import 'Mathlib.Algebra.Order.Kleene'
✖ [1058/1066] Running Mathlib.Algebra.Algebra.Operations
error: .\.\.\.\Mathlib\Algebra\Algebra\Operations.lean: bad import 'Mathlib.Algebra.Order.Kleene'
error: .\.\.\.\Mathlib\Algebra\Algebra\Operations.lean: bad import 'Mathlib.Data.Set.Semiring'
✖ [1059/1066] Running Mathlib.Algebra.Algebra.Subalgebra.Basic
error: .\.\.\.\Mathlib\Algebra\Algebra\Subalgebra\Basic.lean: bad import 'Mathlib.Algebra.Algebra.Operations'
✖ [1060/1066] Running imports (C:/Users/desti/OneDrive/Documenten/mathlib4/Mathlib/Algebra/Order/Kleene.lean)
error: C:/Users/desti/OneDrive/Documenten/mathlib4/Mathlib/Algebra/Order/Kleene.lean: bad import 'Mathlib.Algebra.Algebra.Subalgebra.Basic'
Some builds logged failures:
- Mathlib.Algebra.Order.Kleene
- Mathlib.Data.Set.Semiring
- Mathlib.Algebra.Algebra.Operations
- Mathlib.Algebra.Algebra.Subalgebra.Basic
- imports (C:/Users/desti/OneDrive/Documenten/mathlib4/Mathlib/Algebra/Order/Kleene.lean)
error: build failed
Eric Wieser (Jul 11 2024 at 22:50):
Did you mean
instance [IdemCommSemiring α] (S : Subring α) : IdemCommSemiring S := sorry
instead of
instance [IdemCommSemiring α] : IdemCommSemiring (Subring α) := sorry
?
Nick Decroos (Jul 12 2024 at 11:01):
Eric Wieser
Thanks for the feedback. Yes, I actually meant the first definition. So I guess I should change it for all definitions?
Nick Decroos (Jul 12 2024 at 11:32):
I now have this code at the moment:
namespace AddOpposite
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (AddOpposite α) := sorry
instance [IdemCommSemiring α] : IdemCommSemiring (AddOpposite α) := sorry
instance [KleeneAlgebra α] : KleeneAlgebra (AddOpposite α) := sorry
end AddOpposite
namespace MulOpposite
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (MulOpposite α) := sorry
instance [IdemCommSemiring α] : IdemCommSemiring (MulOpposite α) := sorry
instance [KleeneAlgebra α] : KleeneAlgebra (MulOpposite α) := sorry
end MulOpposite
namespace ULift
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (ULift α) := sorry
instance [IdemCommSemiring α] : IdemCommSemiring (ULift α) := sorry
instance [KleeneAlgebra α] : KleeneAlgebra (ULift α) := sorry
end ULift
namespace Subsemiring
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (Subsemiring α) := sorry
instance [IdemCommSemiring α] (S : Subsemiring α) : IdemCommSemiring S := sorry
instance [KleeneAlgebra α] (S : Subsemiring α) : KleeneAlgebra S := sorry
end Subsemiring
namespace Subring
instance instIdemSemiring [IdemSemiring α] [Ring α] : IdemSemiring (Subring α) := sorry
instance [IdemCommSemiring α] [S : Ring α] (S : Subring α) : IdemCommSemiring S := sorry
instance [KleeneAlgebra α] [S : Ring α] (S : Subring α) : KleeneAlgebra S := sorry
end Subring
/-
namespace Subalgebra
instance instIdemSemiring [IdemSemiring α] : IdemSemiring (Subalgebra α) := sorry
instance [IdemCommSemiring α] (S : Subalgebra α) : IdemCommSemiring S := sorry
instance [KleeneAlgebra α] (S : Subalgebra α) : KleeneAlgebra S := sorry
end Subalgebra
-/
Eric Wieser (Jul 12 2024 at 11:46):
The approach here is going to be to define Function.Injective.idemCommSemiring
etc
Nick Decroos (Jul 12 2024 at 12:02):
Eric Wieser said:
The approach here is going to be to define
Function.Injective.idemCommSemiring
etc
I'm sorry, I don't know how to implement this approach, and why it should work. Can you explain this?
Last updated: May 02 2025 at 03:31 UTC