Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 89ece14

Browse files
rwbartonmergify[bot]
authored andcommitted
fix(data/mv_polynomial): generalize equivs to comm_semiring (#1621)
This apparently makes the elaborator's job a lot easier, and reduces the compile time of the whole module by a factor of 3.
1 parent 8a45d98 commit 89ece14

File tree

1 file changed

+3
-21
lines changed

1 file changed

+3
-21
lines changed

src/data/mv_polynomial.lean

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -972,9 +972,7 @@ instance rename.is_ring_hom
972972

973973
section equiv
974974

975-
variables (α) [comm_ring α]
976-
977-
set_option class.instance_max_depth 40
975+
variables (α) [comm_semiring α]
978976

979977
/-- The ring isomorphism between multivariable polynomials in no variables and the ground ring. -/
980978
def pempty_ring_equiv : mv_polynomial pempty α ≃+* α :=
@@ -1018,7 +1016,7 @@ def ring_equiv_of_equiv (e : β ≃ γ) : mv_polynomial β α ≃+* mv_polynomia
10181016
map_add' := rename_add e }
10191017

10201018
/-- The ring isomorphism between multivariable polynomials induced by a ring isomorphism of the ground ring. -/
1021-
def ring_equiv_congr [comm_ring γ] (e : α ≃+* γ) : mv_polynomial β α ≃+* mv_polynomial β γ :=
1019+
def ring_equiv_congr [comm_semiring γ] (e : α ≃+* γ) : mv_polynomial β α ≃+* mv_polynomial β γ :=
10221020
{ to_fun := map e,
10231021
inv_fun := map e.symm,
10241022
left_inv := assume p,
@@ -1035,9 +1033,6 @@ def ring_equiv_congr [comm_ring γ] (e : α ≃+* γ) : mv_polynomial β α ≃+
10351033
section
10361034
variables (β γ δ)
10371035

1038-
instance ring_on_sum : ring (mv_polynomial (β ⊕ γ) α) := by apply_instance
1039-
instance ring_on_iter : ring (mv_polynomial β (mv_polynomial γ α)) := by apply_instance
1040-
10411036
/--
10421037
The function from multivariable polynomials in a sum of two types,
10431038
to multivariable polynomials in one of the types,
@@ -1074,13 +1069,9 @@ See `sum_ring_equiv` for the ring isomorphism.
10741069
def iter_to_sum : mv_polynomial β (mv_polynomial γ α) → mv_polynomial (β ⊕ γ) α :=
10751070
eval₂ (eval₂ C (X ∘ sum.inr)) (X ∘ sum.inl)
10761071

1077-
section
1078-
10791072
instance is_semiring_hom_iter_to_sum : is_semiring_hom (iter_to_sum α β γ) :=
10801073
eval₂.is_semiring_hom _ _
10811074

1082-
end
1083-
10841075
lemma iter_to_sum_C_C (a : α) : iter_to_sum α β γ (C (C a)) = C a :=
10851076
eq.trans (eval₂_C _ _ (C a)) (eval₂_C _ _ _)
10861077

@@ -1091,7 +1082,7 @@ lemma iter_to_sum_C_X (c : γ) : iter_to_sum α β γ (C (X c)) = X (sum.inr c)
10911082
eq.trans (eval₂_C _ _ (X c)) (eval₂_X _ _ _)
10921083

10931084
/-- A helper function for `sum_ring_equiv`. -/
1094-
def mv_polynomial_equiv_mv_polynomial [comm_ring δ]
1085+
def mv_polynomial_equiv_mv_polynomial [comm_semiring δ]
10951086
(f : mv_polynomial β α → mv_polynomial γ δ) (hf : is_semiring_hom f)
10961087
(g : mv_polynomial γ δ → mv_polynomial β α) (hg : is_semiring_hom g)
10971088
(hfgC : ∀a, f (g (C a)) = C a)
@@ -1136,15 +1127,6 @@ begin
11361127
{ apply mv_polynomial.is_semiring_hom_iter_to_sum α β γ }
11371128
end
11381129

1139-
instance option_ring : ring (mv_polynomial (option β) α) :=
1140-
mv_polynomial.ring
1141-
1142-
instance polynomial_ring : ring (polynomial (mv_polynomial β α)) :=
1143-
@comm_ring.to_ring _ polynomial.comm_ring
1144-
1145-
instance polynomial_ring2 : ring (mv_polynomial β (polynomial α)) :=
1146-
by apply_instance
1147-
11481130
/--
11491131
The ring isomorphism between multivariable polynomials in `option β` and
11501132
polynomials with coefficients in `mv_polynomial β α`.

0 commit comments

Comments
 (0)