Lean Seminar 2026
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Type synonyms
Mathlib, its missions and design considerations
One of Mathlib's aim is to unify different areas of mathematics into a
convenient mathematical library for formalising current research in mathematics.
Examples:
Fermat's Last Theorem.
Carleson's Project.
With this philosophy in mind, we explore some of the usages of typeclasses and the obstacles that might arise.
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Type synonyms
Typeclass use in Mathlib
In mathematics, it is often the case that objects have similar properties and behave in analogous ways.
Consider the structures Set, Finset, Subgroup, Submonoid, Flag and friends
These structures all share in common lemmas like:
example {S : Type*} {H K : Set S} : H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ H :=
S:Type u_1H:Set SK:Set S⊢ H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ HAll goals completed! 🐙example {S : Type*} {H K : Finset S} : H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ H :=
example {G : Type*} [Group G] {H K : Subgroup G} : H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ H :=
example {M : Type*} [Monoid M] {H K : Submonoid M} : H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ H :=
example {C : Type*} [LE C] {H K : Flag C} : H < K ↔ H ≤ K ∧ ∃ x ∈ K, x ∉ H :=
This is a lot of duplicated code.
Problem: Maintaining all these lemmas is tedious. If refactors happen, all these lemmas might need to be updated.
Solution: Recall one of the crowning jewels in Mathlib's design.
The Filter structure.
Among other things, the Filter abstraction reduced 512 lemmas involving compositions of limits into a single lemma
theorem Tendsto.comp {f : α → β} {g : β → γ} {x : Filter α} {y : Filter β} {z : Filter γ}
(hg : Tendsto g y z) (hf : Tendsto f x y) : Tendsto (g ∘ f) x z :=
Dealing with code duplication and capturing an essential pattern in mathematics.
Of course, Filter is a structure, not a typeclass. But we can do the same with typeclasses!
As you probably suspected, all of the structures:
Set, Finset, Subgroup, Submonoid, Flag and friends
look very SetLike 🤔
Indeed so! All structures have a registered SetLike instance,
so it suffices to prove the desired lemma once.
variable {A B : Type*} [SetLike A B] [PartialOrder A] [IsConcreteLE A B] {p q : A} in
theorem lt_iff_le_and_exists : p < q ↔ p ≤ q ∧ ∃ x ∈ q, x ∉ p := byA:Type u_1B:Type u_2inst✝²:SetLike A Binst✝¹:PartialOrder Ainst✝:IsConcreteLE A Bp:Aq:A⊢ p < q ↔ p ≤ q ∧ ∃ x ∈ q, x ∉ p
All goals completed! 🐙
Of course we don't register a SetLike instance on Set! Otherwise this would yield a cycle.
We can do the same for morphisms which extend the structures like the MonoidHom structure.
We can create classes like MonoidHomClass, MulHomClass which take the FunLike class
as a parameter.
To have lemmas like:
theorem map_mul [Mul M] [Mul N] [FunLike F M N] [MulHomClass F M N] (f : F) (x y : M) : f (x * y) = f x * f y :=
MulHomClass.map_mul f x y
theorem map_mul_eq_one [MulOne M] [MulOne N] [FunLike F M N] [MonoidHomClass F M N] (f : F) {a b : M} (h : a * b = 1) :
f a * f b = 1 := byM:Type u_1N:Type u_2F:Type u_3inst✝³:MulOne Minst✝²:MulOne Ninst✝¹:FunLike F M Ninst✝:MonoidHomClass F M Nf:Fa:Mb:Mh:a * b = 1⊢ f a * f b = 1
rw [← map_mul, h, map_one]All goals completed! 🐙
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Type synonyms
Optimising typeclass synthesis in Mathlib
Bundling vs. Unbundling
Indeed, typeclasses like SetLike, FunLike, EquivLike, MonoidHomClass
are extremely convenient and reduce a lot of code duplication.
However, challenges arise as Mathlib scales.
Mathlib must be fast.
Instance synthesis accounts for 10 to 25 percent of the build time for a typical Mathlib file.
Instance synthesis algorithm to fail, it must have explored the entire search space.
For instance, consider the following code snippet:
inductive P
inductive Q
example (p : P) : Q := pType mismatch
p
has type
P
but is expected to have type
Q
As expected this example results an error.
But what was surprising at the time, is that this took 250ms to fail.
At the time, classes like MulHomClass were set up in the following way:
class MulHomClass (F : Type*) (M N : outParam (Type*)) [Mul M] [Mul N] extends DFunLike F M fun _ => N where ...
When peaking under the hood to see what was taking so long, we see that after triggering a
typeclass search for CoeT P p Q.
Typeclass search goes crazy once it applies the FunLike.hasCoeToFun.
[tryResolve] ✅ CoeFun P fun x ↦ (a : ?m.146) → ?m.147 a ≟ CoeFun P fun x ↦ (a : ?m.146) → ?m.147 a [] new goal FunLike P _tc.2 _tc.3 ▼ [instances] #[@ZeroHomClass.toFunLike, @AddHomClass.toFunLike, @OneHomClass.toFunLike, @MulHomClass.toFunLike, @EmbeddingLike.toFunLike, @RelHomClass.toFunLike, @StarHomClass.toFunLike, @SMulHomClass.toFunLike, @TopHomClass.toFunLike, @BotHomClass.toFunLike, @SupHomClass.toFunLike, @InfHomClass.toFunLike, @NonnegHomClass.toFunLike, @SubadditiveHomClass.toFunLike, @SubmultiplicativeHomClass.toFunLike, @MulLEAddHomClass.toFunLike, @NonarchimedeanHomClass.toFunLike, @sSupHomClass.toFunLike, @sInfHomClass.toFunLike, @ContinuousMapClass.toFunLike, @LocallyBoundedMapClass.toFunLike, @SpectralMapClass.toFunLike, @DilationClass.toFunLike, @SlashInvariantFormClass.toFunLike]
The solution:
class MulHomClass (F : Type*) (M N : outParam Type*) [Mul M] [Mul N] [FunLike F M N] : Prop where
This refactor resulted in a 33 percent speed up for typeclass instance synthesis.
and an overall 19 percent decrease in build instructions.
In case you were left wondering
The code snippet shown before fails much faster:
#timetime: 8ms example (p : P) : Q := pType mismatch
p
has type
P
but is expected to have type
Q
Consider now the mathematical objects with varying levels of structure:
Mul < Semigroup < Monoid < Group
Preorder < PartialOrder < Lattice < LinearOrder
Last week, we saw that these hierarchies are set up through forgetful inheritance.
But how should these hierarchies interact?
Consider we have to synthesize a CommMonoid instance.
Let's think about two ways we could set up the interaction between the algebraic and order hierarchy:
Bundled | Semi-bundled |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This refactor partitioned the instance search space.
When trying to synthesize a CommMonoid instance.
Before, Lean would try infer this instance by searching through declarations like
NormedLinearOrderedField or NormedOrderedGroup.
Now, Lean will only go as far as NormedField and Group.
This decoupling yielded a 20% speedup to typeclass inference time.
Resulting in a 6% overall speedup to Mathlib.
But it does result in more verbose parameters.
Which raises the question:
Should the normed hierarchy be decoupled from the algebraic hierarchy?
And in general, when should one use a bundled or unbundled typeclass design?
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Type synonyms
Optimising typeclass synthesis in Mathlib
Priorities
As illustrated last week, many hierarchies present diamonds.

Diamonds are not always bad. But there are performance considerations to keep in mind.
Consider the toy example covered last week.
In code this corresponds to:
set_option linter.unusedVariables false
class Base (B : Type u) where
base : String
class LeftBranch (B : Type u) extends Base B
class RightBranch (B : Type u) extends Base B
class Diamond (B : Type u) extends LeftBranch B, RightBranch B
Let us define a type which has a Diamond instance
inductive D
instance : Diamond D where base := "base"
On the right hand, if we now ask the instance synthesis algorithm to infer that the type D with a Diamond instance
has the Base instance, we get the following path:
set_option trace.Meta.synthInstance true in
#synth Base D[Meta.synthInstance] ✅️ Base D
[Meta.synthInstance] ✅️ new goal Base D
- [Meta.synthInstance.instances] #[@LeftBranch.toBase, @RightBranch.toBase]
[Meta.synthInstance.apply] ✅️ apply @RightBranch.toBase to Base D
- [Meta.synthInstance.tryResolve] ✅️ Base D ≟ Base D
[Meta.synthInstance] ✅️ new goal RightBranch D
- [Meta.synthInstance.instances] #[@Diamond.toRightBranch]
[Meta.synthInstance.apply] ✅️ apply @Diamond.toRightBranch to RightBranch D
- [Meta.synthInstance.tryResolve] ✅️ RightBranch D ≟ RightBranch D
[Meta.synthInstance] ✅️ new goal Diamond D
- [Meta.synthInstance.instances] #[instDiamondD]
[Meta.synthInstance.apply] ✅️ apply instDiamondD to Diamond D
- [Meta.synthInstance.tryResolve] ✅️ Diamond D ≟ Diamond D
- [Meta.synthInstance.answer] ✅️ Diamond D
[Meta.synthInstance.resume] ✅️ propagating Diamond D to subgoal Diamond D of RightBranch D
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ RightBranch D
[Meta.synthInstance.resume] ✅️ propagating RightBranch D to subgoal RightBranch D of Base D
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ Base D
- [Meta.synthInstance] result instDiamondD.toRightBranch.toBase
instDiamondD.toRightBranch.toBase
On the left hand, if we now tweak the priority of the LeftBranch instance
instance (priority := high) {α : Type u} [LeftBranch α] : Base α := inferInstance
set_option trace.Meta.synthInstance true in
#synth Base D[Meta.synthInstance] ✅️ Base D
[Meta.synthInstance] ✅️ new goal Base D
- [Meta.synthInstance.instances] #[@LeftBranch.toBase, @RightBranch.toBase, @instBaseOfLeftBranch]
[Meta.synthInstance.apply] ✅️ apply @instBaseOfLeftBranch to Base D
- [Meta.synthInstance.tryResolve] ✅️ Base D ≟ Base D
[Meta.synthInstance] ✅️ new goal LeftBranch D
- [Meta.synthInstance.instances] #[@Diamond.toLeftBranch]
[Meta.synthInstance.apply] ✅️ apply @Diamond.toLeftBranch to LeftBranch D
- [Meta.synthInstance.tryResolve] ✅️ LeftBranch D ≟ LeftBranch D
[Meta.synthInstance] ✅️ new goal Diamond D
- [Meta.synthInstance.instances] #[instDiamondD]
[Meta.synthInstance.apply] ✅️ apply instDiamondD to Diamond D
- [Meta.synthInstance.tryResolve] ✅️ Diamond D ≟ Diamond D
- [Meta.synthInstance.answer] ✅️ Diamond D
[Meta.synthInstance.resume] ✅️ propagating Diamond D to subgoal Diamond D of LeftBranch D
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ LeftBranch D
[Meta.synthInstance.resume] ✅️ propagating LeftBranch D to subgoal LeftBranch D of Base D
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ Base D
- [Meta.synthInstance] result instBaseOfLeftBranch
instBaseOfLeftBranch
So far so good.
Our toy example was not too interesting.
But it does illustrate how priorities tell the instance synthesis algorithm to consider certain instances before others.
Consider the "random" definition found in Mathlib
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝²]
[Meta.synthInstance.apply] ✅️ apply inst✝² to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝²
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝²]
[Meta.synthInstance.apply] ✅️ apply inst✝² to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝²
[Meta.synthInstance] ✅️ Semiring Sᵐᵒᵖ
[Meta.synthInstance] ✅️ new goal Semiring Sᵐᵒᵖ
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @MulOpposite.instSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to Semiring Sᵐᵒᵖ
- [Meta.synthInstance.tryResolve] ❌️ Semiring Sᵐᵒᵖ ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @MulOpposite.instSemiring to Semiring Sᵐᵒᵖ
- [Meta.synthInstance.tryResolve] ✅️ Semiring Sᵐᵒᵖ ≟ Semiring Sᵐᵒᵖ
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Semiring Sᵐᵒᵖ
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring Sᵐᵒᵖ
- [Meta.synthInstance] result MulOpposite.instSemiring
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝³
def RestrictScalars.lsmul [Module S M[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁴
] : S →ₐ[R] Module.End R (RestrictScalars R S M)[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Semiring (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @Module.End.instSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Semiring (Module.End R (RestrictScalars R S M)) ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @Module.End.instSemiring to Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ✅️ Semiring (Module.End R (RestrictScalars R S M)) ≟ Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.answer] ✅️ Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance] result Module.End.instSemiring
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ Algebra R (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.instances] #[Module.End.instAlgebra, Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra R S
[Meta.synthInstance.apply] ❌️ apply Algebra.id to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra ?m.19 ?m.19
[Meta.synthInstance.apply] ✅️ apply Module.End.instAlgebra to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ✅️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra R (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S
M) to subgoal Module R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 4
[Meta.synthInstance] ✅️ new goal SMulCommClass R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@instSMulCommClass, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass R R (RestrictScalars R S M) ≟ SMulCommClass ?m.30 ?m.31 ?m.31
[Meta.synthInstance.apply] ✅️ apply smulCommClass_self to SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ SMulCommClass R R (RestrictScalars R S M) ≟ SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommMonoid R
- [Meta.synthInstance.instances] #[@CancelCommMonoid.toCommMonoid, @ESeminormedCommMonoid.toCommMonoid, @DivisionCommMonoid.toCommMonoid, @CommGroup.toCommMonoid, @CommMonoidWithZero.toCommMonoid, @CommSemiring.toCommMonoid, @CommRing.toCommMonoid]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommMonoid to CommMonoid R
- [Meta.synthInstance.tryResolve] ✅️ CommMonoid R ≟ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommRing R
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing R
- [Meta.synthInstance.tryResolve] ✅️ CommRing R ≟ CommRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toCommMonoid to CommMonoid R
- [Meta.synthInstance.tryResolve] ✅️ CommMonoid R ≟ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of CommMonoid R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating SMulCommClass R R
(RestrictScalars R S
M) to subgoal SMulCommClass R R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 5
[Meta.synthInstance] ✅️ new goal SMul R R
- [Meta.synthInstance.instances] #[@instSMulOfMul, @SemigroupAction.toSMul, @SMulZeroClass.toSMul, @Algebra.toSMul]
[Meta.synthInstance.apply] ✅️ apply @Algebra.toSMul to SMul R R
- [Meta.synthInstance.tryResolve] ✅️ SMul R R ≟ SMul R R
[Meta.synthInstance] ✅️ new goal Algebra R R
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R R
- [Meta.synthInstance.tryResolve] ❌️ Algebra R R ≟ Algebra R S
[Meta.synthInstance.apply] ✅️ apply Algebra.id to Algebra R R
[Meta.synthInstance.tryResolve] ✅️ Algebra R R ≟ Algebra R R
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
- [Meta.synthInstance.answer] ✅️ Algebra R R
[Meta.synthInstance.resume] ✅️ propagating Algebra R R to subgoal Algebra R R of SMul R R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ SMul R R
[Meta.synthInstance.resume] ✅️ propagating SMul R R to subgoal SMul R R of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 7
[Meta.synthInstance] ✅️ new goal IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.30 ?m.31 ?m.31
[Meta.synthInstance.apply] ❌️ apply RestrictScalars.isScalarTower to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.30 ?m.31 (RestrictScalars ?m.30 ?m.31 ?m.32)
[Meta.synthInstance.apply] ✅️ apply IsScalarTower.left to IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Monoid R
[Meta.synthInstance] ✅️ new goal Monoid R
- [Meta.synthInstance.instances] #[@LeftCancelMonoid.toMonoid, @RightCancelMonoid.toMonoid, @ESeminormedMonoid.toMonoid, @CommMonoid.toMonoid, @DivInvMonoid.toMonoid, @MonoidWithZero.toMonoid]
[Meta.synthInstance.apply] ✅️ apply @MonoidWithZero.toMonoid to Monoid R
- [Meta.synthInstance.tryResolve] ✅️ Monoid R ≟ Monoid R
[Meta.synthInstance] ✅️ new goal MonoidWithZero R
- [Meta.synthInstance.instances] #[@CommMonoidWithZero.toMonoidWithZero, @GroupWithZero.toMonoidWithZero, @Semiring.toMonoidWithZero]
[Meta.synthInstance.apply] ✅️ apply @Semiring.toMonoidWithZero to MonoidWithZero R
- [Meta.synthInstance.tryResolve] ✅️ MonoidWithZero R ≟ MonoidWithZero R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
[Meta.synthInstance.resume] ✅️ propagating Semiring R to subgoal Semiring R of MonoidWithZero R
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ MonoidWithZero R
[Meta.synthInstance.resume] ✅️ propagating MonoidWithZero R to subgoal MonoidWithZero R of Monoid R
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Monoid R
- [Meta.synthInstance] result inst✝⁴.toMonoidWithZero.toMonoid
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M (cached)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating IsScalarTower R R
(RestrictScalars R S
M) to subgoal IsScalarTower R R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 8
- [Meta.synthInstance.answer] ✅️ Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance] result Module.End.instAlgebra R R (RestrictScalars R S M)
:=
-- We use `RestrictScalars.moduleOrig` in the implementation,
-- but not in the type
letI : Module S (RestrictScalars R S M)[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
:= RestrictScalars.moduleOrig R S M[Meta.synthInstance] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶ (cached)
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ Module S M
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
- [Meta.synthInstance] result inst✝
Algebra.lsmul R R (RestrictScalars R S M)[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] 💥️ Semiring ?m.23
[Meta.synthInstance] ✅️ new goal Semiring ?m.23
- [Meta.synthInstance.instances] #[@SubsemiringClass.toSemiring, @Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @DomMulAct.instSemiringOfMulOpposite, Real.semiring, @instSemiringLex, Rat.semiring, @MulOpposite.instSemiring, @ULift.semiring, @AddOpposite.instSemiring, @Subsemiring.toSemiring, @Nonneg.semiring, NNReal.instSemiring, @DomAddAct.instSemiringOfAddOpposite, Int.instSemiring, @Module.End.instSemiring, instSemiringRestrictScalars, Nat.instSemiring, @MulActionHom.instSemiring, @AddMonoid.End.instSemiring, @OrderDual.instSemiring, @Prod.instSemiring, @WithTop.instSemiring, @Pi.semiring, inst✝⁶]
[Meta.synthInstance.apply] 💥️ apply inst✝⁶ to Semiring ?m.23
- [Meta.synthInstance.tryResolve] 💥️ Semiring ?m.23 ≟ Semiring S
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] 💥️ Algebra R ?m.23
[Meta.synthInstance] ✅️ new goal Algebra R ?m.23
- [Meta.synthInstance.instances] #[@ULift.algebra, Module.End.instAlgebra, RestrictScalars.algebra, @PUnit.algebra, Algebra.id, inst✝³]
[Meta.synthInstance.apply] 💥️ apply inst✝³ to Algebra R ?m.23
- [Meta.synthInstance.tryResolve] 💥️ Algebra R ?m.23 ≟ Algebra R S
[Meta.synthInstance] ✅️ Algebra R R
[Meta.synthInstance] ✅️ new goal Algebra R R
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R R
- [Meta.synthInstance.tryResolve] ❌️ Algebra R R ≟ Algebra R S
[Meta.synthInstance.apply] ✅️ apply Algebra.id to Algebra R R
- [Meta.synthInstance.tryResolve] ✅️ Algebra R R ≟ Algebra R R
- [Meta.synthInstance.answer] ✅️ Algebra R R
- [Meta.synthInstance] result Algebra.id R
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] 💥️ Module ?m.23 (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Subsemiring.instModuleSubtypeMem, @Algebra.toModule, @Semiring.toModule, @Semiring.toOppositeModule, RestrictScalars.module, RestrictScalars.opModule, @ULift.module, @Subsemiring.module, @Nonneg.instModule, @NNReal.instModuleOfReal, AddCommGroup.toIntModule, @Module.End.applyModule, @AddCommMonoid.toNatModule, @AddMonoid.End.applyModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ Module ?m.23 (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M (cached)
[Meta.synthInstance] 💥️ IsScalarTower R ?m.23 (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.op_right, @IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @Lex.instIsScalarTower', @IsScalarTower.opposite_mid, @ULift.isScalarTower', @Units.isScalarTower'_left, @Module.End.apply_isScalarTower, @OrderDual.instIsScalarTower_1, @IsScalarTower.right]
[Meta.synthInstance.apply] 💥️ apply @IsScalarTower.right to IsScalarTower R ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ IsScalarTower R ?m.23 (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance] ✅️ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ❌️ apply RestrictScalars.isScalarTower to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 (RestrictScalars ?m.37 ?m.38 ?m.39)
[Meta.synthInstance.apply] ✅️ apply IsScalarTower.left to IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Monoid R
[Meta.synthInstance] ✅️ new goal Monoid R
- [Meta.synthInstance.instances] #[@LeftCancelMonoid.toMonoid, @RightCancelMonoid.toMonoid, @ESeminormedMonoid.toMonoid, @CommMonoid.toMonoid, @DivInvMonoid.toMonoid, @MonoidWithZero.toMonoid]
[Meta.synthInstance.apply] ✅️ apply @MonoidWithZero.toMonoid to Monoid R
- [Meta.synthInstance.tryResolve] ✅️ Monoid R ≟ Monoid R
[Meta.synthInstance] ✅️ new goal MonoidWithZero R
- [Meta.synthInstance.instances] #[@CommMonoidWithZero.toMonoidWithZero, @GroupWithZero.toMonoidWithZero, @Semiring.toMonoidWithZero]
[Meta.synthInstance.apply] ✅️ apply @Semiring.toMonoidWithZero to MonoidWithZero R
- [Meta.synthInstance.tryResolve] ✅️ MonoidWithZero R ≟ MonoidWithZero R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
[Meta.synthInstance.resume] ✅️ propagating Semiring R to subgoal Semiring R of MonoidWithZero R
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ MonoidWithZero R
[Meta.synthInstance.resume] ✅️ propagating MonoidWithZero R to subgoal MonoidWithZero R of Monoid R
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Monoid R
- [Meta.synthInstance] result inst✝⁴.toMonoidWithZero.toMonoid
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance] result IsScalarTower.left R
[Meta.synthInstance] 💥️ SMulCommClass ?m.23 R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@SMulCommClass.op_left, @instSMulCommClass, @Submonoid.instSMulCommClassSubtypeMem, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Lex.instSMulCommClass, @Semigroup.opposite_smulCommClass, @Units.smulCommClass_left, @Subgroup.smulCommClass_left, @Subgroup.center.smulCommClass_left, @Subsemiring.smulCommClass_left, @Subsemiring.instSMulCommClassSubtypeMemCenter_1, @Subsemiring.center.smulCommClass_left, @Subring.center.smulCommClass_left, @Subring.instSMulCommClassSubtypeMemCenter_1, @Submonoid.smulCommClass_left, @Submonoid.instSMulCommClassSubtypeMemCenter, @Submonoid.center.smulCommClass_left, @NNReal.smulCommClass_left, @AddGroup.int_smulCommClass, @Module.End.apply_smulCommClass', @AlgEquiv.apply_smulCommClass', @PUnit.instSMulCommClass_1, @AddMonoid.nat_smulCommClass, @LinearEquiv.apply_smulCommClass', @OrderDual.instSMulCommClass, ConjAct.smulCommClass', ConjAct.unitsSMulCommClass', @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass ?m.23 R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] 💥️ apply ConjAct.unitsSMulCommClass' to SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ SMulCommClass ?m.23 R (RestrictScalars R S M) ≟ SMulCommClass (ConjAct ?m.38ˣ) ?m.37 ?m.38
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ✅️ apply this to Module S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
- [Meta.synthInstance.answer] ✅️ Module S (RestrictScalars R S M)
- [Meta.synthInstance] result this
[Meta.synthInstance] ✅️ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.isScalarTower to IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
[Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ Module S M
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
- [Meta.synthInstance] result inst✝
- [Meta.synthInstance.answer] ✅️ IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.isScalarTower R S M
[Meta.synthInstance] ✅️ SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@instSMulCommClass, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ❌️ apply smulCommClass_self to SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.37 ?m.38
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.to_smulCommClass to SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.39 ?m.42
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ❌️ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommSemiring S
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to CommSemiring S
- [Meta.synthInstance.tryResolve] ❌️ CommSemiring S ≟ CommSemiring R
[Meta.synthInstance.apply] ✅️ apply @Semifield.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal Semifield S
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield S
- [Meta.synthInstance.tryResolve] ✅️ Semifield S ≟ Semifield S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommRing S
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing S
- [Meta.synthInstance.tryResolve] ✅️ CommRing S ≟ CommRing S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
- [Meta.synthInstance] result <not-available>
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommSemiring S
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to CommSemiring S
- [Meta.synthInstance.tryResolve] ❌️ CommSemiring S ≟ CommSemiring R
[Meta.synthInstance.apply] ✅️ apply @Semifield.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal Semifield S
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield S
- [Meta.synthInstance.tryResolve] ✅️ Semifield S ≟ Semifield S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommRing S
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing S
- [Meta.synthInstance.tryResolve] ✅️ CommRing S ≟ CommRing S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
- [Meta.synthInstance] result <not-available>
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance.tryResolve] 41 more entries...
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance.apply] ✅️ apply @IsScalarTower.to_smulCommClass' to SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M (cached)
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ✅️ apply this to Module S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
- [Meta.synthInstance.answer] ✅️ Module S (RestrictScalars R S M)
- [Meta.synthInstance] result this
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower ?m.47 ?m.48 ?m.48
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.isScalarTower to IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
[Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶ (cached)
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵ (cached)
[Meta.synthInstance] ✅️ Module S M
- [Meta.synthInstance] result inst✝ (cached)
- [Meta.synthInstance.answer] ✅️ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating IsScalarTower R S
(RestrictScalars R S
M) to subgoal IsScalarTower R S (RestrictScalars R S M) of SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance] result IsScalarTower.to_smulCommClass'
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝²]
[Meta.synthInstance.apply] ✅️ apply inst✝² to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝²
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝²]
[Meta.synthInstance.apply] ✅️ apply inst✝² to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝²
[Meta.synthInstance] ✅️ Semiring Sᵐᵒᵖ
[Meta.synthInstance] ✅️ new goal Semiring Sᵐᵒᵖ
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @MulOpposite.instSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to Semiring Sᵐᵒᵖ
- [Meta.synthInstance.tryResolve] ❌️ Semiring Sᵐᵒᵖ ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @MulOpposite.instSemiring to Semiring Sᵐᵒᵖ
- [Meta.synthInstance.tryResolve] ✅️ Semiring Sᵐᵒᵖ ≟ Semiring Sᵐᵒᵖ
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Semiring Sᵐᵒᵖ
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring Sᵐᵒᵖ
- [Meta.synthInstance] result MulOpposite.instSemiring
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝³
def RestrictScalars.lsmul [Module S M[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁴
] : S →ₐ[R] Module.End R (RestrictScalars R S M)[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Semiring (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @Module.End.instSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Semiring (Module.End R (RestrictScalars R S M)) ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @Module.End.instSemiring to Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ✅️ Semiring (Module.End R (RestrictScalars R S M)) ≟ Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.answer] ✅️ Semiring (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance] result Module.End.instSemiring
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ Algebra R (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.instances] #[Module.End.instAlgebra, Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra R S
[Meta.synthInstance.apply] ❌️ apply Algebra.id to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ❌️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra ?m.19 ?m.19
[Meta.synthInstance.apply] ✅️ apply Module.End.instAlgebra to Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.tryResolve] ✅️ Algebra R (Module.End R (RestrictScalars R S M)) ≟ Algebra R (Module.End R (RestrictScalars R S M))
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S
M) to subgoal Module R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 4
[Meta.synthInstance] ✅️ new goal SMulCommClass R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@instSMulCommClass, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass R R (RestrictScalars R S M) ≟ SMulCommClass ?m.30 ?m.31 ?m.31
[Meta.synthInstance.apply] ✅️ apply smulCommClass_self to SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ SMulCommClass R R (RestrictScalars R S M) ≟ SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommMonoid R
- [Meta.synthInstance.instances] #[@CancelCommMonoid.toCommMonoid, @ESeminormedCommMonoid.toCommMonoid, @DivisionCommMonoid.toCommMonoid, @CommGroup.toCommMonoid, @CommMonoidWithZero.toCommMonoid, @CommSemiring.toCommMonoid, @CommRing.toCommMonoid]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommMonoid to CommMonoid R
- [Meta.synthInstance.tryResolve] ✅️ CommMonoid R ≟ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommRing R
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing R
- [Meta.synthInstance.tryResolve] ✅️ CommRing R ≟ CommRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toCommMonoid to CommMonoid R
- [Meta.synthInstance.tryResolve] ✅️ CommMonoid R ≟ CommMonoid R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of CommMonoid R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommMonoid R
- [Meta.synthInstance] result inst✝⁴.toCommMonoid (cached)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ SMulCommClass R R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating SMulCommClass R R
(RestrictScalars R S
M) to subgoal SMulCommClass R R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 5
[Meta.synthInstance] ✅️ new goal SMul R R
- [Meta.synthInstance.instances] #[@instSMulOfMul, @SemigroupAction.toSMul, @SMulZeroClass.toSMul, @Algebra.toSMul]
[Meta.synthInstance.apply] ✅️ apply @Algebra.toSMul to SMul R R
- [Meta.synthInstance.tryResolve] ✅️ SMul R R ≟ SMul R R
[Meta.synthInstance] ✅️ new goal Algebra R R
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R R
- [Meta.synthInstance.tryResolve] ❌️ Algebra R R ≟ Algebra R S
[Meta.synthInstance.apply] ✅️ apply Algebra.id to Algebra R R
[Meta.synthInstance.tryResolve] ✅️ Algebra R R ≟ Algebra R R
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
- [Meta.synthInstance.answer] ✅️ Algebra R R
[Meta.synthInstance.resume] ✅️ propagating Algebra R R to subgoal Algebra R R of SMul R R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ SMul R R
[Meta.synthInstance.resume] ✅️ propagating SMul R R to subgoal SMul R R of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 7
[Meta.synthInstance] ✅️ new goal IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.30 ?m.31 ?m.31
[Meta.synthInstance.apply] ❌️ apply RestrictScalars.isScalarTower to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.30 ?m.31 (RestrictScalars ?m.30 ?m.31 ?m.32)
[Meta.synthInstance.apply] ✅️ apply IsScalarTower.left to IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Monoid R
[Meta.synthInstance] ✅️ new goal Monoid R
- [Meta.synthInstance.instances] #[@LeftCancelMonoid.toMonoid, @RightCancelMonoid.toMonoid, @ESeminormedMonoid.toMonoid, @CommMonoid.toMonoid, @DivInvMonoid.toMonoid, @MonoidWithZero.toMonoid]
[Meta.synthInstance.apply] ✅️ apply @MonoidWithZero.toMonoid to Monoid R
- [Meta.synthInstance.tryResolve] ✅️ Monoid R ≟ Monoid R
[Meta.synthInstance] ✅️ new goal MonoidWithZero R
- [Meta.synthInstance.instances] #[@CommMonoidWithZero.toMonoidWithZero, @GroupWithZero.toMonoidWithZero, @Semiring.toMonoidWithZero]
[Meta.synthInstance.apply] ✅️ apply @Semiring.toMonoidWithZero to MonoidWithZero R
- [Meta.synthInstance.tryResolve] ✅️ MonoidWithZero R ≟ MonoidWithZero R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
[Meta.synthInstance.resume] ✅️ propagating Semiring R to subgoal Semiring R of MonoidWithZero R
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ MonoidWithZero R
[Meta.synthInstance.resume] ✅️ propagating MonoidWithZero R to subgoal MonoidWithZero R of Monoid R
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Monoid R
- [Meta.synthInstance] result inst✝⁴.toMonoidWithZero.toMonoid
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M (cached)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating IsScalarTower R R
(RestrictScalars R S
M) to subgoal IsScalarTower R R (RestrictScalars R S M) of Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance.resume] size: 8
- [Meta.synthInstance.answer] ✅️ Algebra R (Module.End R (RestrictScalars R S M))
- [Meta.synthInstance] result Module.End.instAlgebra R R (RestrictScalars R S M)
:=
-- We use `RestrictScalars.moduleOrig` in the implementation,
-- but not in the type
letI : Module S (RestrictScalars R S M)[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
:= RestrictScalars.moduleOrig R S M[Meta.synthInstance] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶ (cached)
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ Module S M
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝]
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
- [Meta.synthInstance] result inst✝
Algebra.lsmul R R (RestrictScalars R S M)[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] 💥️ Semiring ?m.23
[Meta.synthInstance] ✅️ new goal Semiring ?m.23
- [Meta.synthInstance.instances] #[@SubsemiringClass.toSemiring, @Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, @DomMulAct.instSemiringOfMulOpposite, Real.semiring, @instSemiringLex, Rat.semiring, @MulOpposite.instSemiring, @ULift.semiring, @AddOpposite.instSemiring, @Subsemiring.toSemiring, @Nonneg.semiring, NNReal.instSemiring, @DomAddAct.instSemiringOfAddOpposite, Int.instSemiring, @Module.End.instSemiring, instSemiringRestrictScalars, Nat.instSemiring, @MulActionHom.instSemiring, @AddMonoid.End.instSemiring, @OrderDual.instSemiring, @Prod.instSemiring, @WithTop.instSemiring, @Pi.semiring, inst✝⁶]
[Meta.synthInstance.apply] 💥️ apply inst✝⁶ to Semiring ?m.23
- [Meta.synthInstance.tryResolve] 💥️ Semiring ?m.23 ≟ Semiring S
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] 💥️ Algebra R ?m.23
[Meta.synthInstance] ✅️ new goal Algebra R ?m.23
- [Meta.synthInstance.instances] #[@ULift.algebra, Module.End.instAlgebra, RestrictScalars.algebra, @PUnit.algebra, Algebra.id, inst✝³]
[Meta.synthInstance.apply] 💥️ apply inst✝³ to Algebra R ?m.23
- [Meta.synthInstance.tryResolve] 💥️ Algebra R ?m.23 ≟ Algebra R S
[Meta.synthInstance] ✅️ Algebra R R
[Meta.synthInstance] ✅️ new goal Algebra R R
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ❌️ apply inst✝³ to Algebra R R
- [Meta.synthInstance.tryResolve] ❌️ Algebra R R ≟ Algebra R S
[Meta.synthInstance.apply] ✅️ apply Algebra.id to Algebra R R
- [Meta.synthInstance.tryResolve] ✅️ Algebra R R ≟ Algebra R R
- [Meta.synthInstance.answer] ✅️ Algebra R R
- [Meta.synthInstance] result Algebra.id R
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] 💥️ Module ?m.23 (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Subsemiring.instModuleSubtypeMem, @Algebra.toModule, @Semiring.toModule, @Semiring.toOppositeModule, RestrictScalars.module, RestrictScalars.opModule, @ULift.module, @Subsemiring.module, @Nonneg.instModule, @NNReal.instModuleOfReal, AddCommGroup.toIntModule, @Module.End.applyModule, @AddCommMonoid.toNatModule, @AddMonoid.End.applyModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ Module ?m.23 (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M (cached)
[Meta.synthInstance] 💥️ IsScalarTower R ?m.23 (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.op_right, @IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @Lex.instIsScalarTower', @IsScalarTower.opposite_mid, @ULift.isScalarTower', @Units.isScalarTower'_left, @Module.End.apply_isScalarTower, @OrderDual.instIsScalarTower_1, @IsScalarTower.right]
[Meta.synthInstance.apply] 💥️ apply @IsScalarTower.right to IsScalarTower R ?m.23 (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ IsScalarTower R ?m.23 (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance] ✅️ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ❌️ apply RestrictScalars.isScalarTower to IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 (RestrictScalars ?m.37 ?m.38 ?m.39)
[Meta.synthInstance.apply] ✅️ apply IsScalarTower.left to IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R R (RestrictScalars R S M) ≟ IsScalarTower R R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Monoid R
[Meta.synthInstance] ✅️ new goal Monoid R
- [Meta.synthInstance.instances] #[@LeftCancelMonoid.toMonoid, @RightCancelMonoid.toMonoid, @ESeminormedMonoid.toMonoid, @CommMonoid.toMonoid, @DivInvMonoid.toMonoid, @MonoidWithZero.toMonoid]
[Meta.synthInstance.apply] ✅️ apply @MonoidWithZero.toMonoid to Monoid R
- [Meta.synthInstance.tryResolve] ✅️ Monoid R ≟ Monoid R
[Meta.synthInstance] ✅️ new goal MonoidWithZero R
- [Meta.synthInstance.instances] #[@CommMonoidWithZero.toMonoidWithZero, @GroupWithZero.toMonoidWithZero, @Semiring.toMonoidWithZero]
[Meta.synthInstance.apply] ✅️ apply @Semiring.toMonoidWithZero to MonoidWithZero R
- [Meta.synthInstance.tryResolve] ✅️ MonoidWithZero R ≟ MonoidWithZero R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
[Meta.synthInstance.resume] ✅️ propagating Semiring R to subgoal Semiring R of MonoidWithZero R
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ MonoidWithZero R
[Meta.synthInstance.resume] ✅️ propagating MonoidWithZero R to subgoal MonoidWithZero R of Monoid R
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Monoid R
- [Meta.synthInstance] result inst✝⁴.toMonoidWithZero.toMonoid
[Meta.synthInstance] ✅️ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[Monoid.toMulAction, @MulDistribMulAction.toMulAction, @MulActionWithZero.toMulAction, @DistribMulAction.toMulAction]
[Meta.synthInstance.apply] ✅️ apply @DistribMulAction.toMulAction to MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ MulAction R (RestrictScalars R S M) ≟ MulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Module.toDistribMulAction, @MulSemiringAction.toDistribMulAction]
[Meta.synthInstance.apply] ✅️ apply @MulSemiringAction.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ no instances for MulSemiringAction R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Module.toDistribMulAction to DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ DistribMulAction R (RestrictScalars R S M) ≟ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Semiring R
[Meta.synthInstance] ✅️ new goal Semiring R
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ❌️ apply inst✝⁶ to Semiring R
- [Meta.synthInstance.tryResolve] ❌️ Semiring R ≟ Semiring S
[Meta.synthInstance.apply] ✅️ apply @DivisionSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal DivisionSemiring R
- [Meta.synthInstance.instances] #[@DivisionRing.toDivisionSemiring, @Semifield.toDivisionSemiring]
[Meta.synthInstance.apply] ✅️ apply @Semifield.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal Semifield R
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield R
- [Meta.synthInstance.tryResolve] ✅️ Semifield R ≟ Semifield R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @DivisionRing.toDivisionSemiring to DivisionSemiring R
- [Meta.synthInstance.tryResolve] ✅️ DivisionSemiring R ≟ DivisionSemiring R
[Meta.synthInstance] ✅️ new goal DivisionRing R
- [Meta.synthInstance.instances] #[@Field.toDivisionRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toDivisionRing to DivisionRing R
- [Meta.synthInstance.tryResolve] ✅️ DivisionRing R ≟ DivisionRing R
[Meta.synthInstance] ✅️ no instances for Field R
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommSemiring.toSemiring to Semiring R
- [Meta.synthInstance.tryResolve] ✅️ Semiring R ≟ Semiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
[Meta.synthInstance.resume] ✅️ propagating CommSemiring R to subgoal CommSemiring R of Semiring R
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ Semiring R
- [Meta.synthInstance] result inst✝⁴.toSemiring
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
[Meta.synthInstance] ✅️ new goal CommSemiring R
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ✅️ apply inst✝⁴ to CommSemiring R
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring R ≟ CommSemiring R
- [Meta.synthInstance.answer] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating Module R
(RestrictScalars R S M) to subgoal Module R (RestrictScalars R S M) of DistribMulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 4
- [Meta.synthInstance.answer] ✅️ DistribMulAction R (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating DistribMulAction R
(RestrictScalars R S
M) to subgoal DistribMulAction R (RestrictScalars R S M) of MulAction R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 5
- [Meta.synthInstance.answer] ✅️ MulAction R (RestrictScalars R S M)
- [Meta.synthInstance] result (RestrictScalars.module R S M).toMulAction
- [Meta.synthInstance.answer] ✅️ IsScalarTower R R (RestrictScalars R S M)
- [Meta.synthInstance] result IsScalarTower.left R
[Meta.synthInstance] 💥️ SMulCommClass ?m.23 R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@SMulCommClass.op_left, @instSMulCommClass, @Submonoid.instSMulCommClassSubtypeMem, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Lex.instSMulCommClass, @Semigroup.opposite_smulCommClass, @Units.smulCommClass_left, @Subgroup.smulCommClass_left, @Subgroup.center.smulCommClass_left, @Subsemiring.smulCommClass_left, @Subsemiring.instSMulCommClassSubtypeMemCenter_1, @Subsemiring.center.smulCommClass_left, @Subring.center.smulCommClass_left, @Subring.instSMulCommClassSubtypeMemCenter_1, @Submonoid.smulCommClass_left, @Submonoid.instSMulCommClassSubtypeMemCenter, @Submonoid.center.smulCommClass_left, @NNReal.smulCommClass_left, @AddGroup.int_smulCommClass, @Module.End.apply_smulCommClass', @AlgEquiv.apply_smulCommClass', @PUnit.instSMulCommClass_1, @AddMonoid.nat_smulCommClass, @LinearEquiv.apply_smulCommClass', @OrderDual.instSMulCommClass, ConjAct.smulCommClass', ConjAct.unitsSMulCommClass', @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass ?m.23 R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] 💥️ apply ConjAct.unitsSMulCommClass' to SMulCommClass ?m.23 R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] 💥️ SMulCommClass ?m.23 R (RestrictScalars R S M) ≟ SMulCommClass (ConjAct ?m.38ˣ) ?m.37 ?m.38
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ✅️ apply this to Module S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
- [Meta.synthInstance.answer] ✅️ Module S (RestrictScalars R S M)
- [Meta.synthInstance] result this
[Meta.synthInstance] ✅️ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.isScalarTower to IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
[Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵
[Meta.synthInstance] ✅️ Module S M
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
- [Meta.synthInstance] result inst✝
- [Meta.synthInstance.answer] ✅️ IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.isScalarTower R S M
[Meta.synthInstance] ✅️ SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@instSMulCommClass, @IsScalarTower.to_smulCommClass', @IsScalarTower.to_smulCommClass, smulCommClass_self, @Algebra.to_smulCommClass]
[Meta.synthInstance.apply] ❌️ apply @Algebra.to_smulCommClass to SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.38 ?m.38
[Meta.synthInstance.apply] ❌️ apply smulCommClass_self to SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.37 ?m.38
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.to_smulCommClass to SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ❌️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass ?m.37 ?m.39 ?m.42
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, instAddCommMonoidRestrictScalars, inst✝⁵]
[Meta.synthInstance.apply] ❌️ apply inst✝⁵ to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid M
[Meta.synthInstance.apply] ✅️ apply instAddCommMonoidRestrictScalars to AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid (RestrictScalars R S M) ≟ AddCommMonoid (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal AddCommMonoid M
- [Meta.synthInstance.instances] #[@AddCancelCommMonoid.toAddCommMonoid, @ESeminormedAddCommMonoid.toAddCommMonoid, @SubtractionCommMonoid.toAddCommMonoid, @AddCommGroup.toAddCommMonoid, @AddCommMonoidWithOne.toAddCommMonoid, @NonUnitalNonAssocSemiring.toAddCommMonoid, @LinearOrderedAddCommMonoidWithTop.toAddCommMonoid, @LinearOrderedAddCommGroupWithTop.toAddCommMonoid, inst✝⁵]
[Meta.synthInstance.apply] ✅️ apply inst✝⁵ to AddCommMonoid M
- [Meta.synthInstance.tryResolve] ✅️ AddCommMonoid M ≟ AddCommMonoid M
- [Meta.synthInstance.answer] ✅️ AddCommMonoid M
[Meta.synthInstance.resume] ✅️ propagating AddCommMonoid M to subgoal AddCommMonoid M of AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
- [Meta.synthInstance.answer] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M
[Meta.synthInstance] ❌️ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommSemiring S
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to CommSemiring S
- [Meta.synthInstance.tryResolve] ❌️ CommSemiring S ≟ CommSemiring R
[Meta.synthInstance.apply] ✅️ apply @Semifield.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal Semifield S
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield S
- [Meta.synthInstance.tryResolve] ✅️ Semifield S ≟ Semifield S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommRing S
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing S
- [Meta.synthInstance.tryResolve] ✅️ CommRing S ≟ CommRing S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
- [Meta.synthInstance] result <not-available>
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommSemiring S
- [Meta.synthInstance.instances] #[@CommRing.toCommSemiring, @Semifield.toCommSemiring, inst✝⁴]
[Meta.synthInstance.apply] ❌️ apply inst✝⁴ to CommSemiring S
- [Meta.synthInstance.tryResolve] ❌️ CommSemiring S ≟ CommSemiring R
[Meta.synthInstance.apply] ✅️ apply @Semifield.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal Semifield S
- [Meta.synthInstance.instances] #[@Field.toSemifield]
[Meta.synthInstance.apply] ✅️ apply @Field.toSemifield to Semifield S
- [Meta.synthInstance.tryResolve] ✅️ Semifield S ≟ Semifield S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @CommRing.toCommSemiring to CommSemiring S
- [Meta.synthInstance.tryResolve] ✅️ CommSemiring S ≟ CommSemiring S
[Meta.synthInstance] ✅️ new goal CommRing S
- [Meta.synthInstance.instances] #[@Field.toCommRing]
[Meta.synthInstance.apply] ✅️ apply @Field.toCommRing to CommRing S
- [Meta.synthInstance.tryResolve] ✅️ CommRing S ≟ CommRing S
[Meta.synthInstance] ✅️ no instances for Field S
- [Meta.synthInstance.instances] #[]
- [Meta.synthInstance] result <not-available>
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance.tryResolve] 41 more entries...
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] 💥️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] 💥️ apply this to Module S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] 💥️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance] ❌️ CommSemiring S
- [Meta.synthInstance] result <not-available> (cached)
[Meta.synthInstance.apply] ✅️ apply @IsScalarTower.to_smulCommClass' to SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ SMulCommClass S R (RestrictScalars R S M) ≟ SMulCommClass S R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ AddCommMonoid (RestrictScalars R S M)
- [Meta.synthInstance] result instAddCommMonoidRestrictScalars R S M (cached)
[Meta.synthInstance] ✅️ Semiring S
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶
[Meta.synthInstance] ✅️ Module S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ✅️ apply this to Module S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ✅️ Module S (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
- [Meta.synthInstance.answer] ✅️ Module S (RestrictScalars R S M)
- [Meta.synthInstance] result this
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ new goal Module R (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, RestrictScalars.module, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ❌️ apply inst✝ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ❌️ apply inst✝¹ to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module Sᵐᵒᵖ M
[Meta.synthInstance.apply] ❌️ apply inst✝² to Module R (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ Module R (RestrictScalars R S M) ≟ Module S M
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.module to Module R (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ Module R (RestrictScalars R S M) ≟ Module R (RestrictScalars R S M)
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ new goal Semiring S
- [Meta.synthInstance.instances] #[@Ring.toSemiring, @CommSemiring.toSemiring, @DivisionSemiring.toSemiring, inst✝⁶]
[Meta.synthInstance.apply] ✅️ apply inst✝⁶ to Semiring S
- [Meta.synthInstance.tryResolve] ✅️ Semiring S ≟ Semiring S
- [Meta.synthInstance.answer] ✅️ Semiring S
[Meta.synthInstance.resume] ✅️ propagating Semiring S to subgoal Semiring S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal Module S M
- [Meta.synthInstance.instances] #[@Algebra.toModule, @Semiring.toModule, inst✝², inst✝¹, inst✝, this]
[Meta.synthInstance.apply] ❌️ apply this to Module S M
- [Meta.synthInstance.tryResolve] ❌️ Module S M ≟ Module S (RestrictScalars R S M)
[Meta.synthInstance.apply] ✅️ apply inst✝ to Module S M
- [Meta.synthInstance.tryResolve] ✅️ Module S M ≟ Module S M
- [Meta.synthInstance.answer] ✅️ Module S M
[Meta.synthInstance.resume] ✅️ propagating Module S M to subgoal Module S M of Module R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 3
- [Meta.synthInstance.answer] ✅️ Module R (RestrictScalars R S M)
- [Meta.synthInstance] result RestrictScalars.module R S M
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
- [Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
- [Meta.synthInstance.answer] ✅️ Algebra R S
[Meta.synthInstance.resume] ✅️ propagating Algebra R S to subgoal Algebra R S of SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.instances] #[@IsScalarTower.of_algHom, @Semigroup.isScalarTower, IsScalarTower.left, RestrictScalars.isScalarTower, @IsScalarTower.right]
[Meta.synthInstance.apply] ❌️ apply @IsScalarTower.right to IsScalarTower R S (RestrictScalars R S M)
- [Meta.synthInstance.tryResolve] ❌️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower ?m.47 ?m.48 ?m.48
[Meta.synthInstance.apply] ✅️ apply RestrictScalars.isScalarTower to IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.tryResolve] ✅️ IsScalarTower R S (RestrictScalars R S M) ≟ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance] ✅️ Algebra R S
[Meta.synthInstance] ✅️ new goal Algebra R S
- [Meta.synthInstance.instances] #[Algebra.id, inst✝³]
[Meta.synthInstance.apply] ✅️ apply inst✝³ to Algebra R S
[Meta.synthInstance.tryResolve] ✅️ Algebra R S ≟ Algebra R S
[Meta.synthInstance] ✅️ CommSemiring R
- [Meta.synthInstance] result inst✝⁴ (cached)
[Meta.synthInstance] ✅️ Semiring S
- [Meta.synthInstance] result inst✝⁶ (cached)
- [Meta.synthInstance.answer] ✅️ Algebra R S
- [Meta.synthInstance] result inst✝³
[Meta.synthInstance] ✅️ AddCommMonoid M
- [Meta.synthInstance] result inst✝⁵ (cached)
[Meta.synthInstance] ✅️ Module S M
- [Meta.synthInstance] result inst✝ (cached)
- [Meta.synthInstance.answer] ✅️ IsScalarTower R S (RestrictScalars R S M)
[Meta.synthInstance.resume] ✅️ propagating IsScalarTower R S
(RestrictScalars R S
M) to subgoal IsScalarTower R S (RestrictScalars R S M) of SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance.resume] size: 2
- [Meta.synthInstance.answer] ✅️ SMulCommClass S R (RestrictScalars R S M)
- [Meta.synthInstance] result IsScalarTower.to_smulCommClass'
When we peek into the trace of the instance synthesis algorithm we keep seeing
Algebra.id
This is not by chance!
But first, let's do a loogle search.

The list indeed goes on.
As we saw, there are many instances of the from Algebra ?R ?S.
As anticipated, Algebra.id has a high priority.
Why?
If it is to fail, it generally fails fast.
If it is to be successful, it is almost surely the instance we want.
Dually, we can also set low priorities for instances which are most likely not going to succeed.
Considering that when searching for algebraic instances we often do not need to search for the Normed hierarchy.
We can set
attribute [instance 200] ESeminormedAddMonoid.toAddMonoid
To have the instance synthesis algorithm explore the Normed hierarchy last.
Summarising,
Set high priorities for instances that are cheap to fail
and are often what one wants, as seen with Algebra.id
Set low priorities for instances which are less likely to apply,
as seen with ESeminormedAddMonoid.toAddMonoid
However, there are rumours that the typeclass system will be redesigned in some way which will render priority twiddling obsolete.
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Type synonyms
Hazards of typeclass use
It is often the case that one deals with diamond like hierarchies when building up mathematical structures.
We saw this for example with the algebraic hierarchy.

If different paths are definitionally equal, this is not a problem.
However, in the following diamond:
It is easy to set up the typeclasses in such a way that a bad diamond is produced.
Consider synthesizing a TopologicalSpace instance on α × β, given two MetricSpace instances.
Consider the "natural" set up for the MetricSpace typeclass.
class BadMetricSpace (α : Type u) : Type u extends Dist α where
dist_self : ∀ x : α, dist x x = 0
dist_comm : ∀ x y : α, dist x y = dist y x
dist_triangle : ∀ x y z : α, dist x z ≤ dist x y + dist y z
eq_of_dist_eq_zero {x y : α} : dist x y = 0 → x = y
Consider the paths:
MetricSpace α → TopologicalSpace α → TopologicalSpace (α × β)
MetricSpace α → MetricSpace (α × β) → TopologicalSpace (α × β)
where d((a_1,b_1) , (a_2, b_2)) = d_{\alpha}(a_1, a_2) \sqcup d_{\beta}(b_1, b_2)
The two topologies are the same mathematically, but not definitionally.
This is a problem.
The fix.
Inspired by the algebraic hierarchy's forgetful inheritance.
A metric space contains both a distance, a topology, and a proof that the topology coincides with the one coming from the distance.
Furthermore, define the instance MetricSpace α × β with the supremum distance, the product topology and the proof that the topology induced by the metric
coincides with the product topology.
Both definitionally equal paths yield the product topology on the product space.
We set up PseudoMetricSpaces to contain a UniformSpace which in turn contains
a TopologicalSpace.
α:Sort u_1x:αy:αdist:α → α → ℝdist_self:∀ (x : α), dist x x = 0dist_comm:∀ (x y : α), dist x y = dist y xdist_triangle:∀ (x y z : α), dist x z ≤ dist x y + dist y z⊢ dist x y + dist y x = 2 * dist x yAll goals completed! 🐙class PseudoMetricSpace (α : Type u) : Type u extends Dist α where
dist_self : ∀ x : α, dist x x = 0
dist_comm : ∀ x y : α, dist x y = dist y x
dist_triangle : ∀ x y z : α, dist x z ≤ dist x y + dist y z
/-- Extended distance between two points -/
edist : α → α → ENNReal := fun x y => ENNReal.ofNNReal (.mk (dist x y) (dist_nonneg' _ ‹_› ‹_› ‹_›))
edist_dist : ∀ x y : α, edist x y = ENNReal.ofReal (dist x y) := by
intro x y; exact ENNReal.coe_nnreal_eq _
toUniformSpace : UniformSpace α := .ofDist dist dist_self dist_comm dist_triangle
uniformity_dist : 𝓤 α = ⨅ ε > 0, 𝓟 { p : α × α | dist p.1 p.2 < ε } := by intros; rfl
toBornology : Bornology α := Bornology.ofDist dist dist_comm dist_triangle
cobounded_sets : (Bornology.cobounded α).sets =
{ s | ∃ C : ℝ, ∀ x ∈ sᶜ, ∀ y ∈ sᶜ, dist x y ≤ C } := by intros; rfl
Mathlib, its missions and design considerations
Typeclass use in Mathlib
Optimising typeclass synthesis in Mathlib
Hazards of typeclass use
Registering multiple instances
Registering multiple instances
Typically, when deciding between whether a mathematical notion should be a class or
a structure.
The decision to make it a typeclass often comes down to recognizing whether:
We are dealing with a property on a type which we want to use implicitly → class
Or whether we are working with an object that belongs to a family of objects → structure
Think about Group and Subgroup:
We use Group when we want to work with properties of groups.
We use Subgroup when we want to talk about the Lattice of subgroups of a Group.
But what if:
We want to equip a same type with different properties?
Or, we want to explore the interactions between these properties?
In topology, we generally fix a specific topology.
But sometimes we want to reason about non-standard topologies on a type and even, their interactions.
def indiscreteTopology : TopologicalSpace ℕ := ⊤Definition `indiscreteTopology` of class type must be marked with `@[reducible]` or `@[implicit_reducible]`
def discreteTopology : TopologicalSpace ℕ := ⊥Definition `discreteTopology` of class type must be marked with `@[reducible]` or `@[implicit_reducible]`
example : ¬ IsOpen[indiscreteTopology] {1} := by⊢ ¬IsOpen {1}
intro contrcontr:IsOpen {1}⊢ False
have := TopologicalSpace.isOpen_top_iff {1}contr:IsOpen {1}this:IsOpen {1} ↔ {1} = ∅ ∨ {1} = univ⊢ False
simp only [singleton_ne_empty, singleton_ne_univ,
or_self, iff_false] at thiscontr:IsOpen {1}this:¬IsOpen {1}⊢ False
contradictionAll goals completed! 🐙
example : IsOpen[discreteTopology] {1} := by⊢ IsOpen {1}
exact trivialAll goals completed! 🐙
In a similar fashion, consider the natural numbers, ℕ.
One can use the usual ordering on the natural numbers.
example : (0 : ℕ) ≤ (1 : ℕ) := by⊢ 0 ≤ 1 decideAll goals completed! 🐙
But it is also possible to equip the same type with the dual order.
We do not want competing instances on a same type.
Solution: we use type synonyms such as OrderDual
with handy notation to differentiate between them.
example : (1 : ℕᵒᵈ) ≤ (0 : ℕᵒᵈ) := by⊢ 1 ≤ 0 decideAll goals completed! 🐙
Similarly, we can use type synonyms when using Group actions.
variable {G : Type*} [Group G]
/- Left action -/
example (g x : G) : g • x = g * x :=
rfl
open MulOpposite
/- Right action -/
example (g : Gᵐᵒᵖ) (x : G) : (g) • x = x * (unop g) := rfl
When working with typeclasses in Mathlib, think of the following things:
Typeclasses can be used to reduce code duplication and capture essential patterns in mathematics
as was seen with SetLike and MonoidHomClass.
But we have to be careful with how we (set up)/(declare) our typeclasses for optimisation reasons as was seen:
(Bundled/Unbundled) When integrating the algebra, order (, topology, normed, etc.) hierarchies
(Priorities) When registering instances like Algebra.id and ESeminormedAddMonoid.toAddMonoid
Furthermore, we have to watch out for bad diamonds like that encountered in the interaction between
TopologicalSpace, MetricSpace and Prod.
In this case we should stick as much as we can to forgetful inheritance when extending poorer typeclasses to richer typeclasses.
Finally, one should be aware of type synonyms like OrderDual, MulOpposite and IsOpen[ · ].
Anne Baanen et al. “Growing Mathlib: maintenance of a large scale mathematical library”.
Anne Baanen. “Use and Abuse of Instance Parameters in the Lean Mathematical Library”.
Eric Wieser. “Multiple-Inheritance Hazards in Dependently-Typed Algebraic Hierarchies”.