data.zmod.quotient
⟷
Mathlib.Data.ZMod.Quotient
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -47,8 +47,8 @@ namespace Int
#print Int.quotientZMultiplesNatEquivZMod /-
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
def quotientZMultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
- (quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
- quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
+ (quotientAddEquivOfEq (ZMod.ker_intCastAddHom _)).symm.trans <|
+ quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe intCast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZMultiplesNatEquivZMod
-/
@@ -62,9 +62,9 @@ def quotientZMultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃
#print Int.quotientSpanNatEquivZMod /-
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `zmod n`. -/
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
- (Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
+ (Ideal.quotEquivOfEq (ZMod.ker_intCastRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
- show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
+ show Function.RightInverse coe (Int.castRingHom (ZMod n)) from intCast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
-/
@@ -170,7 +170,7 @@ theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
(orbitZPowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
by
- rw [orbit_zpowers_equiv_symm_apply, ZMod.coe_int_cast]
+ rw [orbit_zpowers_equiv_symm_apply, ZMod.coe_intCast]
exact Subtype.ext (zpow_smul_mod_minimal_period _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZPowersEquiv_symm_apply'
-/
@@ -181,7 +181,7 @@ theorem AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α
(AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ :=
by
- rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_int_cast]
+ rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_intCast]
exact Subtype.ext (zsmul_vadd_mod_minimal_period _ _ k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-/
-import Data.Zmod.Basic
+import Data.ZMod.Basic
import GroupTheory.GroupAction.Quotient
import RingTheory.Int.Basic
import RingTheory.Ideal.QuotientOperations
@@ -90,7 +90,7 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
(ofBijective
(map _ (stabilizer (zmultiples a) b) (zmultiplesHom (zmultiples a) ⟨a, mem_zmultiples a⟩)
(by
- rw [zmultiples_le, mem_comap, mem_stabilizer_iff, zmultiplesHom_apply, coe_nat_zsmul,
+ rw [zmultiples_le, mem_comap, mem_stabilizer_iff, zmultiplesHom_apply, natCast_zsmul,
← vadd_iterate]
exact is_periodic_pt_minimal_period ((· +ᵥ ·) a) b))
⟨by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -223,7 +223,7 @@ variable {α : Type _} [Group α] (a : α)
theorem Nat.card_zpowers : orderOf a = Nat.card (zpowers a) :=
by
have := Nat.card_congr (MulAction.orbitZPowersEquiv a (1 : α))
- rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
+ rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
#align order_eq_card_zpowers' Nat.card_zpowersₓ
#align add_order_eq_card_zmultiples' Nat.card_zmultiplesₓ
@@ -233,7 +233,7 @@ variable {a}
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
- rw [← orderOf_pos_iff, Nat.card_zpowers] at h
+ rw [← orderOf_pos_iff, Nat.card_zpowers] at h
exact Nat.finite_of_card_ne_zero h.ne.symm
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -163,7 +163,7 @@ theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
(⟨a, mem_zpowers a⟩ : zpowers a) ^ (k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
-#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
+#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbitZMultiplesEquiv_symm_apply
-/
#print MulAction.orbitZPowersEquiv_symm_apply' /-
@@ -181,7 +181,7 @@ theorem AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α
(AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ :=
by
- rw [AddAction.orbit_zmultiples_equiv_symm_apply, ZMod.coe_int_cast]
+ rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zsmul_vadd_mod_minimal_period _ _ k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -44,19 +44,19 @@ variable (n : ℕ) {A R : Type _} [AddGroup A] [Ring R]
namespace Int
-#print Int.quotientZmultiplesNatEquivZMod /-
+#print Int.quotientZMultiplesNatEquivZMod /-
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
-def quotientZmultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
+def quotientZMultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
-#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZMod
+#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZMultiplesNatEquivZMod
-/
-#print Int.quotientZmultiplesEquivZMod /-
+#print Int.quotientZMultiplesEquivZMod /-
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
-def quotientZmultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
- (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZMod a.natAbs)
-#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZMod
+def quotientZMultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
+ (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZMultiplesNatEquivZMod a.natAbs)
+#align int.quotient_zmultiples_equiv_zmod Int.quotientZMultiplesEquivZMod
-/
#print Int.quotientSpanNatEquivZMod /-
@@ -100,7 +100,7 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
zsmul_vadd_eq_iff_minimal_period_dvd]
exact (eq_zero_iff _).mp hn, fun q =>
induction_on' q fun ⟨_, n, rfl⟩ => ⟨n, rfl⟩⟩).symm.trans
- (Int.quotientZmultiplesNatEquivZMod (minimalPeriod ((· +ᵥ ·) a) b))
+ (Int.quotientZMultiplesNatEquivZMod (minimalPeriod ((· +ᵥ ·) a) b))
#align add_action.zmultiples_quotient_stabilizer_equiv AddAction.zmultiplesQuotientStabilizerEquiv
-/
@@ -138,52 +138,52 @@ theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((·
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
-/
-#print MulAction.orbitZpowersEquiv /-
+#print MulAction.orbitZPowersEquiv /-
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimal_period ((•) a) b`. -/
-noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
+noncomputable def orbitZPowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
-#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
+#align mul_action.orbit_zpowers_equiv MulAction.orbitZPowersEquiv
-/
-#print AddAction.orbitZmultiplesEquiv /-
+#print AddAction.orbitZMultiplesEquiv /-
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimal_period ((+ᵥ) a) b`. -/
-noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α] (a : α) [AddAction α β]
+noncomputable def AddAction.orbitZMultiplesEquiv {α β : Type _} [AddGroup α] (a : α) [AddAction α β]
(b : β) : AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
(AddAction.orbitEquivQuotientStabilizer (zmultiples a) b).trans
(zmultiplesQuotientStabilizerEquiv a b).toEquiv
-#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquiv
+#align add_action.orbit_zmultiples_equiv AddAction.orbitZMultiplesEquiv
-/
attribute [to_additive orbit_zmultiples_equiv] orbit_zpowers_equiv
-#print MulAction.orbitZpowersEquiv_symm_apply /-
+#print MulAction.orbitZPowersEquiv_symm_apply /-
@[to_additive orbit_zmultiples_equiv_symm_apply]
-theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
- (orbitZpowersEquiv a b).symm k =
+theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
+ (orbitZPowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ (k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
-#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_apply
+#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
-/
-#print MulAction.orbitZpowersEquiv_symm_apply' /-
-theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
- (orbitZpowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
+#print MulAction.orbitZPowersEquiv_symm_apply' /-
+theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
+ (orbitZPowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
by
rw [orbit_zpowers_equiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zpow_smul_mod_minimal_period _ _ k)
-#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
+#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZPowersEquiv_symm_apply'
-/
-#print AddAction.orbitZmultiplesEquiv_symm_apply' /-
-theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
+#print AddAction.orbitZMultiplesEquiv_symm_apply' /-
+theorem AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
- (AddAction.orbitZmultiplesEquiv a b).symm k =
+ (AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ :=
by
rw [AddAction.orbit_zmultiples_equiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zsmul_vadd_mod_minimal_period _ _ k)
-#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'
+#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
-/
attribute [to_additive orbit_zmultiples_equiv_symm_apply'] orbit_zpowers_equiv_symm_apply'
@@ -222,7 +222,7 @@ variable {α : Type _} [Group α] (a : α)
@[to_additive Nat.card_zmultiples "See also `add_order_eq_card_zmultiples`."]
theorem Nat.card_zpowers : orderOf a = Nat.card (zpowers a) :=
by
- have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
+ have := Nat.card_congr (MulAction.orbitZPowersEquiv a (1 : α))
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
#align order_eq_card_zpowers' Nat.card_zpowersₓ
#align add_order_eq_card_zmultiples' Nat.card_zmultiplesₓ
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -218,16 +218,14 @@ open Subgroup
variable {α : Type _} [Group α] (a : α)
-#print order_eq_card_zpowers' /-
/-- See also `order_eq_card_zpowers`. -/
-@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
-theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
+@[to_additive Nat.card_zmultiples "See also `add_order_eq_card_zmultiples`."]
+theorem Nat.card_zpowers : orderOf a = Nat.card (zpowers a) :=
by
have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
-#align order_eq_card_zpowers' order_eq_card_zpowers'
-#align add_order_eq_card_zmultiples' add_order_eq_card_zmultiples'
--/
+#align order_eq_card_zpowers' Nat.card_zpowersₓ
+#align add_order_eq_card_zmultiples' Nat.card_zmultiplesₓ
variable {a}
@@ -235,7 +233,7 @@ variable {a}
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
- rw [← orderOf_pos_iff, order_eq_card_zpowers'] at h
+ rw [← orderOf_pos_iff, Nat.card_zpowers] at h
exact Nat.finite_of_card_ne_zero h.ne.symm
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-/
-import Mathbin.Data.Zmod.Basic
-import Mathbin.GroupTheory.GroupAction.Quotient
-import Mathbin.RingTheory.Int.Basic
-import Mathbin.RingTheory.Ideal.QuotientOperations
+import Data.Zmod.Basic
+import GroupTheory.GroupAction.Quotient
+import RingTheory.Int.Basic
+import RingTheory.Ideal.QuotientOperations
#align_import data.zmod.quotient from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-
-! This file was ported from Lean 3 source module data.zmod.quotient
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Zmod.Basic
import Mathbin.GroupTheory.GroupAction.Quotient
import Mathbin.RingTheory.Int.Basic
import Mathbin.RingTheory.Ideal.QuotientOperations
+#align_import data.zmod.quotient from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
/-!
# `zmod n` and quotient groups / rings
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -47,28 +47,36 @@ variable (n : ℕ) {A R : Type _} [AddGroup A] [Ring R]
namespace Int
+#print Int.quotientZmultiplesNatEquivZMod /-
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
def quotientZmultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZMod
+-/
+#print Int.quotientZmultiplesEquivZMod /-
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
def quotientZmultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
(quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZMod a.natAbs)
#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZMod
+-/
+#print Int.quotientSpanNatEquivZMod /-
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `zmod n`. -/
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
(Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
+-/
+#print Int.quotientSpanEquivZMod /-
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `zmod a.nat_abs`. -/
def quotientSpanEquivZMod (a : ℤ) : ℤ ⧸ Ideal.span ({a} : Set ℤ) ≃+* ZMod a.natAbs :=
(Ideal.quotEquivOfEq (span_natAbs a)).symm.trans (quotientSpanNatEquivZMod a.natAbs)
#align int.quotient_span_equiv_zmod Int.quotientSpanEquivZMod
+-/
end Int
@@ -133,20 +141,25 @@ theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((·
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
-/
+#print MulAction.orbitZpowersEquiv /-
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimal_period ((•) a) b`. -/
noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
+-/
+#print AddAction.orbitZmultiplesEquiv /-
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimal_period ((+ᵥ) a) b`. -/
noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α] (a : α) [AddAction α β]
(b : β) : AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
(AddAction.orbitEquivQuotientStabilizer (zmultiples a) b).trans
(zmultiplesQuotientStabilizerEquiv a b).toEquiv
#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquiv
+-/
attribute [to_additive orbit_zmultiples_equiv] orbit_zpowers_equiv
+#print MulAction.orbitZpowersEquiv_symm_apply /-
@[to_additive orbit_zmultiples_equiv_symm_apply]
theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
(orbitZpowersEquiv a b).symm k =
@@ -154,14 +167,18 @@ theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
rfl
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
+-/
+#print MulAction.orbitZpowersEquiv_symm_apply' /-
theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
(orbitZpowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
by
rw [orbit_zpowers_equiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zpow_smul_mod_minimal_period _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
+-/
+#print AddAction.orbitZmultiplesEquiv_symm_apply' /-
theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZmultiplesEquiv a b).symm k =
@@ -170,16 +187,20 @@ theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α
rw [AddAction.orbit_zmultiples_equiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zsmul_vadd_mod_minimal_period _ _ k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'
+-/
attribute [to_additive orbit_zmultiples_equiv_symm_apply'] orbit_zpowers_equiv_symm_apply'
+#print MulAction.minimalPeriod_eq_card /-
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
minimalPeriod ((· • ·) a) b = Fintype.card (orbit (zpowers a) b) := by
rw [← Fintype.ofEquiv_card (orbit_zpowers_equiv a b), ZMod.card]
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
#align add_action.minimal_period_eq_card AddAction.minimalPeriod_eq_card
+-/
+#print MulAction.minimalPeriod_pos /-
@[to_additive]
instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
NeZero <| minimalPeriod ((· • ·) a) b :=
@@ -190,6 +211,7 @@ instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
exact Fintype.card_ne_zero⟩
#align mul_action.minimal_period_pos MulAction.minimalPeriod_pos
#align add_action.minimal_period_pos AddAction.minimalPeriod_pos
+-/
end MulAction
@@ -199,6 +221,7 @@ open Subgroup
variable {α : Type _} [Group α] (a : α)
+#print order_eq_card_zpowers' /-
/-- See also `order_eq_card_zpowers`. -/
@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
@@ -207,9 +230,11 @@ theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
#align order_eq_card_zpowers' order_eq_card_zpowers'
#align add_order_eq_card_zmultiples' add_order_eq_card_zmultiples'
+-/
variable {a}
+#print IsOfFinOrder.finite_zpowers /-
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
@@ -217,6 +242,7 @@ theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :
exact Nat.finite_of_card_ne_zero h.ne.symm
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
+-/
end Group
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -204,7 +204,7 @@ variable {α : Type _} [Group α] (a : α)
theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
by
have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
- rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
+ rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
#align order_eq_card_zpowers' order_eq_card_zpowers'
#align add_order_eq_card_zmultiples' add_order_eq_card_zmultiples'
@@ -213,7 +213,7 @@ variable {a}
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
- rw [← orderOf_pos_iff, order_eq_card_zpowers'] at h
+ rw [← orderOf_pos_iff, order_eq_card_zpowers'] at h
exact Nat.finite_of_card_ne_zero h.ne.symm
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -47,35 +47,17 @@ variable (n : ℕ) {A R : Type _} [AddGroup A] [Ring R]
namespace Int
-/- warning: int.quotient_zmultiples_nat_equiv_zmod -> Int.quotientZmultiplesNatEquivZMod is a dubious translation:
-lean 3 declaration is
- forall (n : Nat), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (ZMod n) (AddZeroClass.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.addGroup (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)) (Int.quotientZmultiplesNatEquivZMod._proof_1 n)))))) (Distrib.toHasAdd.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))
-but is expected to have type
- forall (n : Nat), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (ZMod n) (AddZeroClass.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.instAddGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n)) (AddSubgroup.normal_of_comm.{0} Int Int.instAddCommGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n)))))))) (Distrib.toAdd.{0} (ZMod n) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod n) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))))))
-Case conversion may be inaccurate. Consider using '#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZModₓ'. -/
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
def quotientZmultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZMod
-/- warning: int.quotient_zmultiples_equiv_zmod -> Int.quotientZmultiplesEquivZMod is a dubious translation:
-lean 3 declaration is
- forall (a : Int), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (ZMod (Int.natAbs a)) (AddZeroClass.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.addGroup (AddSubgroup.zmultiples.{0} Int Int.addGroup a) (Int.quotientZmultiplesEquivZMod._proof_1 a)))))) (Distrib.toHasAdd.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))
-but is expected to have type
- forall (a : Int), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (ZMod (Int.natAbs a)) (AddZeroClass.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.instAddGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a) (AddSubgroup.normal_of_comm.{0} Int Int.instAddCommGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a))))))) (Distrib.toAdd.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))))))
-Case conversion may be inaccurate. Consider using '#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZModₓ'. -/
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
def quotientZmultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
(quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZMod a.natAbs)
#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZMod
-/- warning: int.quotient_span_nat_equiv_zmod -> Int.quotientSpanNatEquivZMod is a dubious translation:
-lean 3 declaration is
- forall (n : Nat), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing)) (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (ZMod n) (Distrib.toHasMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))))) (Distrib.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))))) (Distrib.toHasMul.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))) (Distrib.toHasAdd.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))
-but is expected to have type
- forall (n : Nat), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (ZMod n) (NonUnitalNonAssocRing.toMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))))))) (NonUnitalNonAssocRing.toMul.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))) (Distrib.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonUnitalNonAssocSemiring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))))))))) (Distrib.toAdd.{0} (ZMod n) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod n) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))))))
-Case conversion may be inaccurate. Consider using '#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZModₓ'. -/
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `zmod n`. -/
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
(Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
@@ -83,12 +65,6 @@ def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
-/- warning: int.quotient_span_equiv_zmod -> Int.quotientSpanEquivZMod is a dubious translation:
-lean 3 declaration is
- forall (a : Int), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing)) (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (ZMod (Int.natAbs a)) (Distrib.toHasMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a)))))) (Distrib.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a)))))) (Distrib.toHasMul.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))) (Distrib.toHasAdd.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))
-but is expected to have type
- forall (a : Int), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))))))) (NonUnitalNonAssocRing.toMul.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))) (Distrib.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonUnitalNonAssocSemiring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))))))))) (Distrib.toAdd.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))))))
-Case conversion may be inaccurate. Consider using '#align int.quotient_span_equiv_zmod Int.quotientSpanEquivZModₓ'. -/
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `zmod a.nat_abs`. -/
def quotientSpanEquivZMod (a : ℤ) : ℤ ⧸ Ideal.span ({a} : Set ℤ) ≃+* ZMod a.natAbs :=
(Ideal.quotEquivOfEq (span_natAbs a)).symm.trans (quotientSpanNatEquivZMod a.natAbs)
@@ -157,23 +133,11 @@ theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((·
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
-/
-/- warning: mul_action.orbit_zpowers_equiv -> MulAction.orbitZpowersEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β), Equiv.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β), Equiv.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b))
-Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquivₓ'. -/
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimal_period ((•) a) b`. -/
noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
-/- warning: add_action.orbit_zmultiples_equiv -> AddAction.orbitZmultiplesEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β), Equiv.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β), Equiv.{succ u2, 1} (Set.Elem.{u2} β (AddAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u1} α (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u1, u2, u2} α β β (instHVAdd.{u1, u2} α β (AddAction.toVAdd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b))
-Case conversion may be inaccurate. Consider using '#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquivₓ'. -/
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimal_period ((+ᵥ) a) b`. -/
noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α] (a : α) [AddAction α β]
(b : β) : AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
@@ -183,9 +147,6 @@ noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α]
attribute [to_additive orbit_zmultiples_equiv] orbit_zpowers_equiv
-/- warning: mul_action.orbit_zpowers_equiv_symm_apply -> MulAction.orbitZpowersEquiv_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_applyₓ'. -/
@[to_additive orbit_zmultiples_equiv_symm_apply]
theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
(orbitZpowersEquiv a b).symm k =
@@ -194,9 +155,6 @@ theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
-/- warning: mul_action.orbit_zpowers_equiv_symm_apply' -> MulAction.orbitZpowersEquiv_symm_apply' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'ₓ'. -/
theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
(orbitZpowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
by
@@ -204,9 +162,6 @@ theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
exact Subtype.ext (zpow_smul_mod_minimal_period _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
-/- warning: add_action.orbit_zmultiples_equiv_symm_apply' -> AddAction.orbitZmultiplesEquiv_symm_apply' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'ₓ'. -/
theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZmultiplesEquiv a b).symm k =
@@ -218,12 +173,6 @@ theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α
attribute [to_additive orbit_zmultiples_equiv_symm_apply'] orbit_zpowers_equiv_symm_apply'
-/- warning: mul_action.minimal_period_eq_card -> MulAction.minimalPeriod_eq_card is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], Eq.{1} Nat (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _inst_5)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Fintype.{u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], Eq.{1} Nat (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.2180 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.2182 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.2180 x._@.Mathlib.Data.ZMod.Quotient._hyg.2182) a) b) (Fintype.card.{u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _inst_5)
-Case conversion may be inaccurate. Consider using '#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_cardₓ'. -/
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
minimalPeriod ((· • ·) a) b = Fintype.card (orbit (zpowers a) b) := by
@@ -231,12 +180,6 @@ theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
#align add_action.minimal_period_eq_card AddAction.minimalPeriod_eq_card
-/- warning: mul_action.minimal_period_pos -> MulAction.minimalPeriod_pos is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Finite.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], NeZero.{0} Nat Nat.hasZero (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Finite.{succ u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], NeZero.{0} Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.2287 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.2289 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.2287 x._@.Mathlib.Data.ZMod.Quotient._hyg.2289) a) b)
-Case conversion may be inaccurate. Consider using '#align mul_action.minimal_period_pos MulAction.minimalPeriod_posₓ'. -/
@[to_additive]
instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
NeZero <| minimalPeriod ((· • ·) a) b :=
@@ -256,12 +199,6 @@ open Subgroup
variable {α : Type _} [Group α] (a : α)
-/- warning: order_eq_card_zpowers' -> order_eq_card_zpowers' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] (a : α), Eq.{1} Nat (orderOf.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] (a : α), Eq.{1} Nat (orderOf.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) (Nat.card.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))))
-Case conversion may be inaccurate. Consider using '#align order_eq_card_zpowers' order_eq_card_zpowers'ₓ'. -/
/-- See also `order_eq_card_zpowers`. -/
@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
@@ -273,12 +210,6 @@ theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
variable {a}
-/- warning: is_of_fin_order.finite_zpowers -> IsOfFinOrder.finite_zpowers is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] {a : α}, (IsOfFinOrder.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) -> (Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] {a : α}, (IsOfFinOrder.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) -> (Finite.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))))
-Case conversion may be inaccurate. Consider using '#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowersₓ'. -/
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
! This file was ported from Lean 3 source module data.zmod.quotient
-! leanprover-community/mathlib commit da420a8c6dd5bdfb85c4ced85c34388f633bc6ff
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.RingTheory.Ideal.QuotientOperations
/-!
# `zmod n` and quotient groups / rings
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file relates `zmod n` to the quotient group
`quotient_add_group.quotient (add_subgroup.zmultiples n)` and to the quotient ring
`(ideal.span {n}).quotient`.
@@ -181,10 +184,7 @@ noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α]
attribute [to_additive orbit_zmultiples_equiv] orbit_zpowers_equiv
/- warning: mul_action.orbit_zpowers_equiv_symm_apply -> MulAction.orbitZpowersEquiv_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) k) (SMul.smul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (MulAction.toHasSmul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (MulAction.orbit.mulAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (HasLiftT.mk.{1, 1} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (CoeTCₓ.coe.{1, 1} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (ZMod.hasCoeT.{0} Int (AddCommGroupWithOne.toAddGroupWithOne.{0} Int (Ring.toAddCommGroupWithOne.{0} Int Int.ring)) (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)))) k)) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1854 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 x._@.Mathlib.Data.ZMod.Quotient._hyg.1854) a) b)), Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (FunLike.coe.{succ u2, 1, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) k) (HSMul.hSMul.{u1, u2, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (instHSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (MulAction.toSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (MulAction.instMulActionElemOrbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) (ZMod.cast.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt) (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1854 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 x._@.Mathlib.Data.ZMod.Quotient._hyg.1854) a) b) k)) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+<too large>
Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_applyₓ'. -/
@[to_additive orbit_zmultiples_equiv_symm_apply]
theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
@@ -195,10 +195,7 @@ theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
/- warning: mul_action.orbit_zpowers_equiv_symm_apply' -> MulAction.orbitZpowersEquiv_symm_apply' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : Int), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (HasLiftT.mk.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (CoeTCₓ.coe.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (Int.castCoe.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (AddGroupWithOne.toHasIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (AddCommGroupWithOne.toAddGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (Ring.toAddCommGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b))))))))) k)) (SMul.smul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (MulAction.toHasSmul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (MulAction.orbit.mulAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) k) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (FunLike.coe.{succ u2, 1, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (HSMul.hSMul.{u1, u2, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (instHSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (MulAction.toSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (MulAction.instMulActionElemOrbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) k) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+<too large>
Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'ₓ'. -/
theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
(orbitZpowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
@@ -208,10 +205,7 @@ theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
/- warning: add_action.orbit_zmultiples_equiv_symm_apply' -> AddAction.orbitZmultiplesEquiv_symm_apply' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β) (k : Int), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddAction.orbitZmultiplesEquiv.{u1, u2} α β _inst_5 a _inst_6 b)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (HasLiftT.mk.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (CoeTCₓ.coe.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (Int.castCoe.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddGroupWithOne.toHasIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddCommGroupWithOne.toAddGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (Ring.toAddCommGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b))))))))) k)) (VAdd.vadd.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (AddAction.toHasVadd.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddAction.orbit.addAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (SMul.smul.{0, u1} Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (AddSubgroup.zsmul.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) k (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a)) a (AddSubgroup.mem_zmultiples.{u1} α _inst_5 a))) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) b (AddAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_5 : AddGroup.{u2} α] (a : α) [_inst_6 : AddAction.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5))] (b : β) (k : Int), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (FunLike.coe.{succ u1, 1, succ u1} (Equiv.{1, succ u1} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u1} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (Equiv.symm.{succ u1, 1} (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (AddAction.orbitZmultiplesEquiv.{u2, u1} α β _inst_5 a _inst_6 b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (HVAdd.hVAdd.{u2, u1, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (instHVAdd.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (AddAction.toVAdd.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddAction.instAddActionElemOrbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (HSMul.hSMul.{0, u2, u2} Int (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (instHSMul.{0, u2} Int (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.zsmul.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) k (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a)) a (AddSubgroup.mem_zmultiples.{u2} α _inst_5 a))) (Subtype.mk.{succ u1} β (fun (x : β) => Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) b (AddAction.mem_orbit_self.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)))
+<too large>
Case conversion may be inaccurate. Consider using '#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'ₓ'. -/
theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ef95945cd48c932c9e034872bd25c3c220d9c946
@@ -44,28 +44,52 @@ variable (n : ℕ) {A R : Type _} [AddGroup A] [Ring R]
namespace Int
+/- warning: int.quotient_zmultiples_nat_equiv_zmod -> Int.quotientZmultiplesNatEquivZMod is a dubious translation:
+lean 3 declaration is
+ forall (n : Nat), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (ZMod n) (AddZeroClass.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.addGroup (AddSubgroup.zmultiples.{0} Int Int.addGroup ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)) (Int.quotientZmultiplesNatEquivZMod._proof_1 n)))))) (Distrib.toHasAdd.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))
+but is expected to have type
+ forall (n : Nat), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (ZMod n) (AddZeroClass.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n))) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.instAddGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n)) (AddSubgroup.normal_of_comm.{0} Int Int.instAddCommGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt (Nat.cast.{0} Int instNatCastInt n)))))))) (Distrib.toAdd.{0} (ZMod n) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod n) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))))))
+Case conversion may be inaccurate. Consider using '#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZModₓ'. -/
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
-def quotientZmultiplesNatEquivZmod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
+def quotientZmultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
-#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZmod
-
+#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZMod
+
+/- warning: int.quotient_zmultiples_equiv_zmod -> Int.quotientZmultiplesEquivZMod is a dubious translation:
+lean 3 declaration is
+ forall (a : Int), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (ZMod (Int.natAbs a)) (AddZeroClass.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.addGroup) (quotientAddGroup.Subgroup.hasQuotient.{0} Int Int.addGroup) (AddSubgroup.zmultiples.{0} Int Int.addGroup a)) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.addGroup (AddSubgroup.zmultiples.{0} Int Int.addGroup a) (Int.quotientZmultiplesEquivZMod._proof_1 a)))))) (Distrib.toHasAdd.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))
+but is expected to have type
+ forall (a : Int), AddEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (ZMod (Int.natAbs a)) (AddZeroClass.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (AddMonoid.toAddZeroClass.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (SubNegMonoid.toAddMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (AddGroup.toSubNegMonoid.{0} (HasQuotient.Quotient.{0, 0} Int (AddSubgroup.{0} Int Int.instAddGroupInt) (QuotientAddGroup.instHasQuotientAddSubgroup.{0} Int Int.instAddGroupInt) (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a)) (QuotientAddGroup.Quotient.addGroup.{0} Int Int.instAddGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a) (AddSubgroup.normal_of_comm.{0} Int Int.instAddCommGroupInt (AddSubgroup.zmultiples.{0} Int Int.instAddGroupInt a))))))) (Distrib.toAdd.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))))))
+Case conversion may be inaccurate. Consider using '#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZModₓ'. -/
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
-def quotientZmultiplesEquivZmod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
- (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZmod a.natAbs)
-#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZmod
-
+def quotientZmultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
+ (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZMod a.natAbs)
+#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZMod
+
+/- warning: int.quotient_span_nat_equiv_zmod -> Int.quotientSpanNatEquivZMod is a dubious translation:
+lean 3 declaration is
+ forall (n : Nat), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing)) (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (ZMod n) (Distrib.toHasMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))))) (Distrib.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n)))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Nat Int (HasLiftT.mk.{1, 1} Nat Int (CoeTCₓ.coe.{1, 1} Nat Int (coeBase.{1, 1} Nat Int Int.hasCoe))) n))))))) (Distrib.toHasMul.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))) (Distrib.toHasAdd.{0} (ZMod n) (Ring.toDistrib.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))
+but is expected to have type
+ forall (n : Nat), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (ZMod n) (NonUnitalNonAssocRing.toMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))))))) (NonUnitalNonAssocRing.toMul.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n))))) (Distrib.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonUnitalNonAssocSemiring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) (Nat.cast.{0} Int instNatCastInt n)))))))))) (Distrib.toAdd.{0} (ZMod n) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod n) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod n) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod n) (Ring.toNonAssocRing.{0} (ZMod n) (CommRing.toRing.{0} (ZMod n) (ZMod.commRing n)))))))
+Case conversion may be inaccurate. Consider using '#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZModₓ'. -/
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `zmod n`. -/
-def quotientSpanNatEquivZmod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
+def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
(Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
-#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZmod
-
+#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
+
+/- warning: int.quotient_span_equiv_zmod -> Int.quotientSpanEquivZMod is a dubious translation:
+lean 3 declaration is
+ forall (a : Int), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing)) (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (ZMod (Int.natAbs a)) (Distrib.toHasMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a)))))) (Distrib.toHasAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int (Ring.toSemiring.{0} Int (CommRing.toRing.{0} Int Int.commRing))) (Ideal.hasQuotient.{0} Int Int.commRing) (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.commRing (Ideal.span.{0} Int Int.semiring (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.hasSingleton.{0} Int) a)))))) (Distrib.toHasMul.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))) (Distrib.toHasAdd.{0} (ZMod (Int.natAbs a)) (Ring.toDistrib.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))
+but is expected to have type
+ forall (a : Int), RingEquiv.{0, 0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toMul.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))))))) (NonUnitalNonAssocRing.toMul.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a)))))) (Distrib.toAdd.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonUnitalNonAssocSemiring.toDistrib.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (NonAssocRing.toNonUnitalNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ring.toNonAssocRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (CommRing.toRing.{0} (HasQuotient.Quotient.{0, 0} Int (Ideal.{0} Int Int.instSemiringInt) (Ideal.instHasQuotientIdealToSemiringToCommSemiring.{0} Int Int.instCommRingInt) (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))) (Ideal.Quotient.commRing.{0} Int Int.instCommRingInt (Ideal.span.{0} Int Int.instSemiringInt (Singleton.singleton.{0, 0} Int (Set.{0} Int) (Set.instSingletonSet.{0} Int) a))))))))) (Distrib.toAdd.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocSemiring.toDistrib.{0} (ZMod (Int.natAbs a)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{0} (ZMod (Int.natAbs a)) (NonAssocRing.toNonUnitalNonAssocRing.{0} (ZMod (Int.natAbs a)) (Ring.toNonAssocRing.{0} (ZMod (Int.natAbs a)) (CommRing.toRing.{0} (ZMod (Int.natAbs a)) (ZMod.commRing (Int.natAbs a))))))))
+Case conversion may be inaccurate. Consider using '#align int.quotient_span_equiv_zmod Int.quotientSpanEquivZModₓ'. -/
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `zmod a.nat_abs`. -/
-def quotientSpanEquivZmod (a : ℤ) : ℤ ⧸ Ideal.span ({a} : Set ℤ) ≃+* ZMod a.natAbs :=
- (Ideal.quotEquivOfEq (span_natAbs a)).symm.trans (quotientSpanNatEquivZmod a.natAbs)
-#align int.quotient_span_equiv_zmod Int.quotientSpanEquivZmod
+def quotientSpanEquivZMod (a : ℤ) : ℤ ⧸ Ideal.span ({a} : Set ℤ) ≃+* ZMod a.natAbs :=
+ (Ideal.quotEquivOfEq (span_natAbs a)).symm.trans (quotientSpanNatEquivZMod a.natAbs)
+#align int.quotient_span_equiv_zmod Int.quotientSpanEquivZMod
end Int
@@ -75,6 +99,7 @@ open AddSubgroup AddMonoidHom AddEquiv Function
variable {α β : Type _} [AddGroup α] (a : α) [AddAction α β] (b : β)
+#print AddAction.zmultiplesQuotientStabilizerEquiv /-
/-- The quotient `(ℤ ∙ a) ⧸ (stabilizer b)` is cyclic of order `minimal_period ((+ᵥ) a) b`. -/
noncomputable def zmultiplesQuotientStabilizerEquiv :
zmultiples a ⧸ stabilizer (zmultiples a) b ≃+ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
@@ -91,14 +116,17 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
zsmul_vadd_eq_iff_minimal_period_dvd]
exact (eq_zero_iff _).mp hn, fun q =>
induction_on' q fun ⟨_, n, rfl⟩ => ⟨n, rfl⟩⟩).symm.trans
- (Int.quotientZmultiplesNatEquivZmod (minimalPeriod ((· +ᵥ ·) a) b))
+ (Int.quotientZmultiplesNatEquivZMod (minimalPeriod ((· +ᵥ ·) a) b))
#align add_action.zmultiples_quotient_stabilizer_equiv AddAction.zmultiplesQuotientStabilizerEquiv
+-/
+#print AddAction.zmultiplesQuotientStabilizerEquiv_symm_apply /-
theorem zmultiplesQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((· +ᵥ ·) a) b)) :
(zmultiplesQuotientStabilizerEquiv a b).symm n =
(n : ℤ) • (⟨a, mem_zmultiples a⟩ : zmultiples a) :=
rfl
#align add_action.zmultiples_quotient_stabilizer_equiv_symm_apply AddAction.zmultiplesQuotientStabilizerEquiv_symm_apply
+-/
end AddAction
@@ -110,23 +138,39 @@ variable {α β : Type _} [Group α] (a : α) [MulAction α β] (b : β)
attribute [local semireducible] MulOpposite
+#print MulAction.zpowersQuotientStabilizerEquiv /-
/-- The quotient `(a ^ ℤ) ⧸ (stabilizer b)` is cyclic of order `minimal_period ((•) a) b`. -/
noncomputable def zpowersQuotientStabilizerEquiv :
zpowers a ⧸ stabilizer (zpowers a) b ≃* Multiplicative (ZMod (minimalPeriod ((· • ·) a) b)) :=
let f := zmultiplesQuotientStabilizerEquiv (Additive.ofMul a) b
⟨f.toFun, f.invFun, f.left_inv, f.right_inv, f.map_add'⟩
#align mul_action.zpowers_quotient_stabilizer_equiv MulAction.zpowersQuotientStabilizerEquiv
+-/
+#print MulAction.zpowersQuotientStabilizerEquiv_symm_apply /-
theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((· • ·) a) b)) :
(zpowersQuotientStabilizerEquiv a b).symm n = (⟨a, mem_zpowers a⟩ : zpowers a) ^ (n : ℤ) :=
rfl
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
+-/
+/- warning: mul_action.orbit_zpowers_equiv -> MulAction.orbitZpowersEquiv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β), Equiv.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β), Equiv.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b))
+Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquivₓ'. -/
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimal_period ((•) a) b`. -/
noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
+/- warning: add_action.orbit_zmultiples_equiv -> AddAction.orbitZmultiplesEquiv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β), Equiv.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β), Equiv.{succ u2, 1} (Set.Elem.{u2} β (AddAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.instMembership.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u1} α (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u1, u2, u2} α β β (instHVAdd.{u1, u2} α β (AddAction.toVAdd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b))
+Case conversion may be inaccurate. Consider using '#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquivₓ'. -/
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimal_period ((+ᵥ) a) b`. -/
noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α] (a : α) [AddAction α β]
(b : β) : AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
@@ -136,6 +180,12 @@ noncomputable def AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α]
attribute [to_additive orbit_zmultiples_equiv] orbit_zpowers_equiv
+/- warning: mul_action.orbit_zpowers_equiv_symm_apply -> MulAction.orbitZpowersEquiv_symm_apply is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) k) (SMul.smul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (MulAction.toHasSmul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (MulAction.orbit.mulAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (HasLiftT.mk.{1, 1} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (CoeTCₓ.coe.{1, 1} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) Int (ZMod.hasCoeT.{0} Int (AddCommGroupWithOne.toAddGroupWithOne.{0} Int (Ring.toAddCommGroupWithOne.{0} Int Int.ring)) (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)))) k)) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1854 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 x._@.Mathlib.Data.ZMod.Quotient._hyg.1854) a) b)), Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (FunLike.coe.{succ u2, 1, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) k) (HSMul.hSMul.{u1, u2, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (instHSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (MulAction.toSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) k) (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (MulAction.instMulActionElemOrbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) (ZMod.cast.{0} Int (Ring.toAddGroupWithOne.{0} Int Int.instRingInt) (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1854 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1852 x._@.Mathlib.Data.ZMod.Quotient._hyg.1854) a) b) k)) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_applyₓ'. -/
@[to_additive orbit_zmultiples_equiv_symm_apply]
theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
(orbitZpowersEquiv a b).symm k =
@@ -144,6 +194,12 @@ theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
+/- warning: mul_action.orbit_zpowers_equiv_symm_apply' -> MulAction.orbitZpowersEquiv_symm_apply' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : Int), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (HasLiftT.mk.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (CoeTCₓ.coe.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (Int.castCoe.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (AddGroupWithOne.toHasIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (AddCommGroupWithOne.toAddGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (Ring.toAddCommGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b))))))))) k)) (SMul.smul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (MulAction.toHasSmul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (MulAction.orbit.mulAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) k) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) (k : Int), Eq.{succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (FunLike.coe.{succ u2, 1, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (Equiv.symm.{succ u2, 1} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (MulAction.orbitZpowersEquiv.{u1, u2} α β _inst_3 a _inst_4 b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (HSMul.hSMul.{u1, u2, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (instHSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (MulAction.toSMul.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) => Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1710 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1708 x._@.Mathlib.Data.ZMod.Quotient._hyg.1710) a) b)))) k)) (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (MulAction.instMulActionElemOrbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))) (HPow.hPow.{u1, 0, u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) (instHPow.{u1, 0} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) Int (Subgroup.zpow.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subtype.mk.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a)) a (Subgroup.mem_zpowers.{u1} α _inst_3 a)) k) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) b (MulAction.mem_orbit_self.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)))
+Case conversion may be inaccurate. Consider using '#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'ₓ'. -/
theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
(orbitZpowersEquiv a b).symm k = (⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ :=
by
@@ -151,6 +207,12 @@ theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
exact Subtype.ext (zpow_smul_mod_minimal_period _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
+/- warning: add_action.orbit_zmultiples_equiv_symm_apply' -> AddAction.orbitZmultiplesEquiv_symm_apply' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : AddGroup.{u1} α] (a : α) [_inst_6 : AddAction.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5))] (b : β) (k : Int), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (coeFn.{succ u2, succ u2} (Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (fun (_x : Equiv.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) => (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) -> (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (Equiv.hasCoeToFun.{1, succ u2} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b))) (Equiv.symm.{succ u2, 1} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddAction.orbitZmultiplesEquiv.{u1, u2} α β _inst_5 a _inst_6 b)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (HasLiftT.mk.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (CoeTCₓ.coe.{1, 1} Int (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (Int.castCoe.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddGroupWithOne.toHasIntCast.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (AddCommGroupWithOne.toAddGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (Ring.toAddCommGroupWithOne.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b)) (ZMod.commRing (Function.minimalPeriod.{u2} β (VAdd.vadd.{u1, u2} α β (AddAction.toHasVadd.{u1, u2} α β (SubNegMonoid.toAddMonoid.{u1} α (AddGroup.toSubNegMonoid.{u1} α _inst_5)) _inst_6) a) b))))))))) k)) (VAdd.vadd.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (AddAction.toHasVadd.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddAction.orbit.addAction.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) (SMul.smul.{0, u1} Int (Subtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a))) (AddSubgroup.zsmul.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) k (Subtype.mk.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (AddSubgroup.{u1} α _inst_5) (SetLike.hasMem.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) x (AddSubgroup.zmultiples.{u1} α _inst_5 a)) a (AddSubgroup.mem_zmultiples.{u1} α _inst_5 a))) (Subtype.mk.{succ u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (AddAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)) b (AddAction.mem_orbit_self.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) β (SubNegMonoid.toAddMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddGroup.toSubNegMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (AddSubgroup.{u1} α _inst_5) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (AddSubgroup.{u1} α _inst_5) α (AddSubgroup.setLike.{u1} α _inst_5)) (AddSubgroup.zmultiples.{u1} α _inst_5 a)) (AddSubgroup.toAddGroup.{u1} α _inst_5 (AddSubgroup.zmultiples.{u1} α _inst_5 a)))) (AddSubgroup.addAction.{u1, u2} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u1} α _inst_5 a)) b)))
+but is expected to have type
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_5 : AddGroup.{u2} α] (a : α) [_inst_6 : AddAction.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5))] (b : β) (k : Int), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (FunLike.coe.{succ u1, 1, succ u1} (Equiv.{1, succ u1} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (fun (_x : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) _x) (Equiv.instFunLikeEquiv.{1, succ u1} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (Equiv.symm.{succ u1, 1} (Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (AddAction.orbitZmultiplesEquiv.{u2, u1} α β _inst_5 a _inst_6 b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (HVAdd.hVAdd.{u2, u1, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (instHVAdd.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (AddAction.toVAdd.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) => Set.Elem.{u1} β (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) (Int.cast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (Ring.toIntCast.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (CommRing.toRing.{0} (ZMod (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)) (ZMod.commRing (Function.minimalPeriod.{u1} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.1790 : β) => HVAdd.hVAdd.{u2, u1, u1} α β β (instHVAdd.{u2, u1} α β (AddAction.toVAdd.{u2, u1} α β (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) _inst_6)) x._@.Mathlib.Data.ZMod.Quotient._hyg.1788 x._@.Mathlib.Data.ZMod.Quotient._hyg.1790) a) b)))) k)) (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddAction.instAddActionElemOrbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b))) (HSMul.hSMul.{0, u2, u2} Int (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (instHSMul.{0, u2} Int (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.zsmul.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) k (Subtype.mk.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a)) a (AddSubgroup.mem_zmultiples.{u2} α _inst_5 a))) (Subtype.mk.{succ u1} β (fun (x : β) => Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) x (AddAction.orbit.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)) b (AddAction.mem_orbit_self.{u2, u1} (Subtype.{succ u2} α (fun (x : α) => Membership.mem.{u2, u2} α (AddSubgroup.{u2} α _inst_5) (SetLike.instMembership.{u2, u2} (AddSubgroup.{u2} α _inst_5) α (AddSubgroup.instSetLikeAddSubgroup.{u2} α _inst_5)) x (AddSubgroup.zmultiples.{u2} α _inst_5 a))) β (AddSubmonoid.toAddMonoid.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α _inst_5)) (AddSubgroup.toAddSubmonoid.{u2} α _inst_5 (AddSubgroup.zmultiples.{u2} α _inst_5 a))) (AddSubgroup.instAddActionSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupToAddMonoidToAddMonoidToSubNegAddMonoidToAddSubmonoid.{u2, u1} α _inst_5 β _inst_6 (AddSubgroup.zmultiples.{u2} α _inst_5 a)) b)))
+Case conversion may be inaccurate. Consider using '#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'ₓ'. -/
theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZmultiplesEquiv a b).symm k =
@@ -162,13 +224,25 @@ theorem AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α
attribute [to_additive orbit_zmultiples_equiv_symm_apply'] orbit_zpowers_equiv_symm_apply'
+/- warning: mul_action.minimal_period_eq_card -> MulAction.minimalPeriod_eq_card is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], Eq.{1} Nat (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _inst_5)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Fintype.{u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], Eq.{1} Nat (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.2180 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.2182 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.2180 x._@.Mathlib.Data.ZMod.Quotient._hyg.2182) a) b) (Fintype.card.{u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b)) _inst_5)
+Case conversion may be inaccurate. Consider using '#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_cardₓ'. -/
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
minimalPeriod ((· • ·) a) b = Fintype.card (orbit (zpowers a) b) := by
rw [← Fintype.ofEquiv_card (orbit_zpowers_equiv a b), ZMod.card]
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
-#align add_action.minimal_period_eq_card AddAction.minimal_period_eq_card
-
+#align add_action.minimal_period_eq_card AddAction.minimalPeriod_eq_card
+
+/- warning: mul_action.minimal_period_pos -> MulAction.minimalPeriod_pos is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Finite.{succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (MulAction.orbit.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) β (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)) (Subgroup.toGroup.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a)))) (Subgroup.mulAction.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], NeZero.{0} Nat Nat.hasZero (Function.minimalPeriod.{u2} β (SMul.smul.{u1, u2} α β (MulAction.toHasSmul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4) a) b)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_3 : Group.{u1} α] (a : α) [_inst_4 : MulAction.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3))] (b : β) [_inst_5 : Finite.{succ u2} (Set.Elem.{u2} β (MulAction.orbit.{u1, u2} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))) β (Submonoid.toMonoid.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) (Subgroup.toSubmonoid.{u1} α _inst_3 (Subgroup.zpowers.{u1} α _inst_3 a))) (Subgroup.instMulActionSubtypeMemSubgroupInstMembershipInstSetLikeSubgroupToMonoidToMonoidToDivInvMonoidToSubmonoid.{u1, u2} α _inst_3 β _inst_4 (Subgroup.zpowers.{u1} α _inst_3 a)) b))], NeZero.{0} Nat (LinearOrderedCommMonoidWithZero.toZero.{0} Nat Nat.linearOrderedCommMonoidWithZero) (Function.minimalPeriod.{u2} β ((fun (x._@.Mathlib.Data.ZMod.Quotient._hyg.2287 : α) (x._@.Mathlib.Data.ZMod.Quotient._hyg.2289 : β) => HSMul.hSMul.{u1, u2, u2} α β β (instHSMul.{u1, u2} α β (MulAction.toSMul.{u1, u2} α β (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) _inst_4)) x._@.Mathlib.Data.ZMod.Quotient._hyg.2287 x._@.Mathlib.Data.ZMod.Quotient._hyg.2289) a) b)
+Case conversion may be inaccurate. Consider using '#align mul_action.minimal_period_pos MulAction.minimalPeriod_posₓ'. -/
@[to_additive]
instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
NeZero <| minimalPeriod ((· • ·) a) b :=
@@ -178,7 +252,7 @@ instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
rw [minimal_period_eq_card]
exact Fintype.card_ne_zero⟩
#align mul_action.minimal_period_pos MulAction.minimalPeriod_pos
-#align add_action.minimal_period_pos AddAction.minimal_period_pos
+#align add_action.minimal_period_pos AddAction.minimalPeriod_pos
end MulAction
@@ -188,6 +262,12 @@ open Subgroup
variable {α : Type _} [Group α] (a : α)
+/- warning: order_eq_card_zpowers' -> order_eq_card_zpowers' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] (a : α), Eq.{1} Nat (orderOf.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] (a : α), Eq.{1} Nat (orderOf.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) (Nat.card.{u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))))
+Case conversion may be inaccurate. Consider using '#align order_eq_card_zpowers' order_eq_card_zpowers'ₓ'. -/
/-- See also `order_eq_card_zpowers`. -/
@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
@@ -199,6 +279,12 @@ theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
variable {a}
+/- warning: is_of_fin_order.finite_zpowers -> IsOfFinOrder.finite_zpowers is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] {a : α}, (IsOfFinOrder.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) -> (Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} α _inst_3) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.setLike.{u1} α _inst_3)) (Subgroup.zpowers.{u1} α _inst_3 a)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_3 : Group.{u1} α] {a : α}, (IsOfFinOrder.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α _inst_3)) a) -> (Finite.{succ u1} (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Subgroup.{u1} α _inst_3) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} α _inst_3) α (Subgroup.instSetLikeSubgroup.{u1} α _inst_3)) x (Subgroup.zpowers.{u1} α _inst_3 a))))
+Case conversion may be inaccurate. Consider using '#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowersₓ'. -/
@[to_additive IsOfFinAddOrder.finite_zmultiples]
theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/17ad94b4953419f3e3ce3e77da3239c62d1d09f0
@@ -193,7 +193,7 @@ variable {α : Type _} [Group α] (a : α)
theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) :=
by
have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
- rwa [Nat.card_zMod, orbit_subgroup_one_eq_self, eq_comm] at this
+ rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
#align order_eq_card_zpowers' order_eq_card_zpowers'
#align add_order_eq_card_zmultiples' add_order_eq_card_zmultiples'
mathlib commit https://github.com/leanprover-community/mathlib/commit/02ba8949f486ebecf93fe7460f1ed0564b5e442c
@@ -47,7 +47,7 @@ namespace Int
/-- `ℤ` modulo multiples of `n : ℕ` is `zmod n`. -/
def quotientZmultiplesNatEquivZmod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
- quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zMod_cast
+ quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) coe int_cast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZmod
/-- `ℤ` modulo multiples of `a : ℤ` is `zmod a.nat_abs`. -/
@@ -59,7 +59,7 @@ def quotientZmultiplesEquivZmod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃
def quotientSpanNatEquivZmod : ℤ ⧸ Ideal.span {↑n} ≃+* ZMod n :=
(Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
- show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zMod_cast
+ show Function.RightInverse coe (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZmod
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `zmod a.nat_abs`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/f24cc2891c0e328f0ee8c57387103aa462c44b5e
@@ -4,13 +4,14 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
! This file was ported from Lean 3 source module data.zmod.quotient
-! leanprover-community/mathlib commit d8ac338019a0b33162d0e09cd823cae696a718f8
+! leanprover-community/mathlib commit da420a8c6dd5bdfb85c4ced85c34388f633bc6ff
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Data.Zmod.Basic
import Mathbin.GroupTheory.GroupAction.Quotient
import Mathbin.RingTheory.Int.Basic
+import Mathbin.RingTheory.Ideal.QuotientOperations
/-!
# `zmod n` and quotient groups / rings
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
deprecated
attributeWhy these changes?
@@ -153,8 +153,9 @@ theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
rfl
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbitZMultiplesEquiv_symm_apply
-/- 2024-02-21 -/ @[deprecated] alias _root_.AddAction.orbit_zmultiples_equiv_symm_apply :=
- orbitZMultiplesEquiv_symm_apply
+
+@[deprecated] -- 2024-02-21
+alias _root_.AddAction.orbit_zmultiples_equiv_symm_apply := orbitZMultiplesEquiv_symm_apply
theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
(orbitZPowersEquiv a b).symm k =
nat_cast
/int_cast
/rat_cast
to natCast
/intCast
/ratCast
(#11486)
Now that I am defining NNRat.cast
, I want a definitive answer to this naming issue. Plenty of lemmas in mathlib already use natCast
/intCast
/ratCast
over nat_cast
/int_cast
/rat_cast
, and this matches with the general expectation that underscore-separated name parts correspond to a single declaration.
@@ -41,8 +41,8 @@ namespace Int
/-- `ℤ` modulo multiples of `n : ℕ` is `ZMod n`. -/
def quotientZMultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
- (quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
- quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) cast int_cast_zmod_cast
+ (quotientAddEquivOfEq (ZMod.ker_intCastAddHom _)).symm.trans <|
+ quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) cast intCast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZMultiplesNatEquivZMod
/-- `ℤ` modulo multiples of `a : ℤ` is `ZMod a.nat_abs`. -/
@@ -52,9 +52,9 @@ def quotientZMultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `ZMod n`. -/
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {(n : ℤ)} ≃+* ZMod n :=
- (Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
+ (Ideal.quotEquivOfEq (ZMod.ker_intCastRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
- show Function.RightInverse ZMod.cast (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
+ show Function.RightInverse ZMod.cast (Int.castRingHom (ZMod n)) from intCast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `ZMod a.nat_abs`. -/
@@ -159,7 +159,7 @@ theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
(orbitZPowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ := by
- rw [orbitZPowersEquiv_symm_apply, ZMod.coe_int_cast]
+ rw [orbitZPowersEquiv_symm_apply, ZMod.coe_intCast]
exact Subtype.ext (zpow_smul_mod_minimalPeriod _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZPowersEquiv_symm_apply'
@@ -167,7 +167,7 @@ theorem _root_.AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type*} [AddGr
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ := by
- rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_int_cast]
+ rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_intCast]
-- Porting note: times out without `a b` explicit
exact Subtype.ext (zsmul_vadd_mod_minimalPeriod a b k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
zpow_coe_nat
to zpow_natCast
(#11528)
... and add a deprecated alias for the old name. This is mostly just me discovering the power of F2
@@ -92,7 +92,7 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
(ofBijective
(map _ (stabilizer (zmultiples a) b) (zmultiplesHom (zmultiples a) ⟨a, mem_zmultiples a⟩)
(by
- rw [zmultiples_le, mem_comap, mem_stabilizer_iff, zmultiplesHom_apply, coe_nat_zsmul]
+ rw [zmultiples_le, mem_comap, mem_stabilizer_iff, zmultiplesHom_apply, natCast_zsmul]
simp_rw [← vadd_iterate]
exact isPeriodicPt_minimalPeriod (a +ᵥ ·) b))
⟨by
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -168,7 +168,7 @@ theorem _root_.AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type*} [AddGr
(AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ := by
rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_int_cast]
- -- porting note: times out without `a b` explicit
+ -- Porting note: times out without `a b` explicit
exact Subtype.ext (zsmul_vadd_mod_minimalPeriod a b k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
@@ -178,7 +178,7 @@ attribute [to_additive existing]
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
minimalPeriod (a • ·) b = Fintype.card (orbit (zpowers a) b) := by
- -- porting note: added `(_)` to find `Fintype` by unification
+ -- Porting note: added `(_)` to find `Fintype` by unification
rw [← Fintype.ofEquiv_card (orbitZPowersEquiv a b), @ZMod.card _ (_)]
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
#align add_action.minimal_period_eq_card AddAction.minimalPeriod_eq_card
@@ -144,15 +144,17 @@ noncomputable def _root_.AddAction.orbitZMultiplesEquiv {α β : Type*} [AddGrou
(zmultiplesQuotientStabilizerEquiv a b).toEquiv
#align add_action.orbit_zmultiples_equiv AddAction.orbitZMultiplesEquiv
-attribute [to_additive existing AddAction.orbitZMultiplesEquiv] orbitZPowersEquiv
+attribute [to_additive existing] orbitZPowersEquiv
-@[to_additive orbit_zmultiples_equiv_symm_apply]
+@[to_additive]
theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
(orbitZPowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ (cast k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
-#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
+#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbitZMultiplesEquiv_symm_apply
+/- 2024-02-21 -/ @[deprecated] alias _root_.AddAction.orbit_zmultiples_equiv_symm_apply :=
+ orbitZMultiplesEquiv_symm_apply
theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
(orbitZPowersEquiv a b).symm k =
@@ -165,12 +167,12 @@ theorem _root_.AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type*} [AddGr
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ := by
- rw [AddAction.orbit_zmultiples_equiv_symm_apply, ZMod.coe_int_cast]
+ rw [AddAction.orbitZMultiplesEquiv_symm_apply, ZMod.coe_int_cast]
-- porting note: times out without `a b` explicit
exact Subtype.ext (zsmul_vadd_mod_minimalPeriod a b k)
#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
-attribute [to_additive existing AddAction.orbitZMultiplesEquiv_symm_apply']
+attribute [to_additive existing]
orbitZPowersEquiv_symm_apply'
@[to_additive]
@@ -201,7 +203,7 @@ open Subgroup
variable {α : Type*} [Group α] (a : α)
/-- See also `Fintype.card_zpowers`. -/
-@[to_additive (attr := simp) Nat.card_zmultiples "See also `Fintype.card_zmultiples`."]
+@[to_additive (attr := simp) "See also `Fintype.card_zmultiples`."]
theorem Nat.card_zpowers : Nat.card (zpowers a) = orderOf a := by
have := Nat.card_congr (MulAction.orbitZPowersEquiv a (1 : α))
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self] at this
@@ -210,15 +212,15 @@ theorem Nat.card_zpowers : Nat.card (zpowers a) = orderOf a := by
variable {a}
-@[to_additive (attr := simp) finite_zmultiples]
+@[to_additive (attr := simp)]
lemma finite_zpowers : (zpowers a : Set α).Finite ↔ IsOfFinOrder a := by
simp only [← orderOf_pos_iff, ← Nat.card_zpowers, Nat.card_pos_iff, ← SetLike.coe_sort_coe,
nonempty_coe_sort, Nat.card_pos_iff, Set.finite_coe_iff, Subgroup.coe_nonempty, true_and]
-@[to_additive (attr := simp) infinite_zmultiples]
+@[to_additive (attr := simp)]
lemma infinite_zpowers : (zpowers a : Set α).Infinite ↔ ¬IsOfFinOrder a := finite_zpowers.not
-@[to_additive IsOfFinAddOrder.finite_zmultiples]
+@[to_additive]
protected alias ⟨_, IsOfFinOrder.finite_zpowers⟩ := finite_zpowers
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
Algebra.GroupPower.Lemmas
(#9411)
Algebra.GroupPower.Lemmas
used to be a big bag of lemmas that made it there on the criterion that they needed "more imports". This was completely untrue, as all lemmas could be moved to earlier files in PRs:
There are several reasons for this:
Algebra.GroupPower.Lemmas
Int
and Nat
lemmas which let us shortcircuit the part of the algebraic order hierarchy on which the corresponding general lemmas restThis PR finishes the job by moving the last few lemmas out of Algebra.GroupPower.Lemmas
, which is therefore deleted.
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-/
import Mathlib.Algebra.Group.Equiv.TypeTags
-import Mathlib.Algebra.GroupPower.Lemmas
import Mathlib.Data.ZMod.Basic
import Mathlib.GroupTheory.GroupAction.Quotient
import Mathlib.RingTheory.Ideal.QuotientOperations
Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Vierkantor <vierkantor@vierkantor.com>
@@ -43,7 +43,7 @@ namespace Int
/-- `ℤ` modulo multiples of `n : ℕ` is `ZMod n`. -/
def quotientZMultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
- quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) (↑) int_cast_zmod_cast
+ quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) cast int_cast_zmod_cast
#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZMultiplesNatEquivZMod
/-- `ℤ` modulo multiples of `a : ℤ` is `ZMod a.nat_abs`. -/
@@ -55,7 +55,7 @@ def quotientZMultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {(n : ℤ)} ≃+* ZMod n :=
(Ideal.quotEquivOfEq (ZMod.ker_int_castRingHom _)).symm.trans <|
RingHom.quotientKerEquivOfRightInverse <|
- show Function.RightInverse (↑) (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
+ show Function.RightInverse ZMod.cast (Int.castRingHom (ZMod n)) from int_cast_zmod_cast
#align int.quotient_span_nat_equiv_zmod Int.quotientSpanNatEquivZMod
/-- `ℤ` modulo the ideal generated by `a : ℤ` is `ZMod a.nat_abs`. -/
@@ -108,7 +108,7 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
theorem zmultiplesQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a +ᵥ ·) b)) :
(zmultiplesQuotientStabilizerEquiv a b).symm n =
- (n : ℤ) • (⟨a, mem_zmultiples a⟩ : zmultiples a) :=
+ (cast n : ℤ) • (⟨a, mem_zmultiples a⟩ : zmultiples a) :=
rfl
#align add_action.zmultiples_quotient_stabilizer_equiv_symm_apply AddAction.zmultiplesQuotientStabilizerEquiv_symm_apply
@@ -128,7 +128,7 @@ noncomputable def zpowersQuotientStabilizerEquiv :
#align mul_action.zpowers_quotient_stabilizer_equiv MulAction.zpowersQuotientStabilizerEquiv
theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a • ·) b)) :
- (zpowersQuotientStabilizerEquiv a b).symm n = (⟨a, mem_zpowers a⟩ : zpowers a) ^ (n : ℤ) :=
+ (zpowersQuotientStabilizerEquiv a b).symm n = (⟨a, mem_zpowers a⟩ : zpowers a) ^ (cast n : ℤ) :=
rfl
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
@@ -150,7 +150,7 @@ attribute [to_additive existing AddAction.orbitZMultiplesEquiv] orbitZPowersEqui
@[to_additive orbit_zmultiples_equiv_symm_apply]
theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
(orbitZPowersEquiv a b).symm k =
- (⟨a, mem_zpowers a⟩ : zpowers a) ^ (k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
+ (⟨a, mem_zpowers a⟩ : zpowers a) ^ (cast k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-/
import Mathlib.Algebra.Group.Equiv.TypeTags
+import Mathlib.Algebra.GroupPower.Lemmas
import Mathlib.Data.ZMod.Basic
import Mathlib.GroupTheory.GroupAction.Quotient
import Mathlib.RingTheory.Ideal.QuotientOperations
Pairwise
wherever possible (#9236)
Performed with a regex search for ∀ (.) (.), \1 ≠ \2 →
, and a few variants to catch implicit binders and explicit types.
I have deliberately avoided trying to make the analogous Set.Pairwise
transformation (or any Pairwise (foo on bar)
transformations) in this PR, to keep the diff small.
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
@@ -70,9 +70,9 @@ open BigOperators Ideal
/-- The **Chinese remainder theorem**, elementary version for `ZMod`. See also
`Mathlib.Data.ZMod.Basic` for versions involving only two numbers. -/
def ZMod.prodEquivPi {ι : Type*} [Fintype ι] (a : ι → ℕ)
- (coprime : ∀ i j, i ≠ j → Nat.Coprime (a i) (a j)) : ZMod (∏ i, a i) ≃+* ∀ i, ZMod (a i) :=
- have : ∀ (i j : ι), i ≠ j → IsCoprime (span {(a i : ℤ)}) (span {(a j : ℤ)}) :=
- fun i j h ↦ (isCoprime_span_singleton_iff _ _).mpr ((coprime i j h).cast (R := ℤ))
+ (coprime : Pairwise fun i j => Nat.Coprime (a i) (a j)) : ZMod (∏ i, a i) ≃+* ∀ i, ZMod (a i) :=
+ have : Pairwise fun i j => IsCoprime (span {(a i : ℤ)}) (span {(a j : ℤ)}) :=
+ fun _i _j h ↦ (isCoprime_span_singleton_iff _ _).mpr ((coprime h).cast (R := ℤ))
Int.quotientSpanNatEquivZMod _ |>.symm.trans <|
quotEquivOfEq (iInf_span_singleton_natCast (R := ℤ) coprime) |>.symm.trans <|
quotientInfRingEquivPiQuotient _ this |>.trans <|
Nsmul
-> NSMul
, Zpow
-> ZPow
, etc (#9067)
Normalising to naming convention rule number 6.
@@ -20,7 +20,7 @@ This file relates `ZMod n` to the quotient group
## Main definitions
- - `ZMod.quotientZmultiplesNatEquivZMod` and `ZMod.quotientZmultiplesEquivZMod`:
+ - `ZMod.quotientZMultiplesNatEquivZMod` and `ZMod.quotientZMultiplesEquivZMod`:
`ZMod n` is the group quotient of `ℤ` by `n ℤ := AddSubgroup.zmultiples (n)`,
(where `n : ℕ` and `n : ℤ` respectively)
- `ZMod.quotient_span_nat_equiv_zmod` and `ZMod.quotientSpanEquivZMod `:
@@ -40,15 +40,15 @@ variable (n : ℕ) {A R : Type*} [AddGroup A] [Ring R]
namespace Int
/-- `ℤ` modulo multiples of `n : ℕ` is `ZMod n`. -/
-def quotientZmultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
+def quotientZMultiplesNatEquivZMod : ℤ ⧸ AddSubgroup.zmultiples (n : ℤ) ≃+ ZMod n :=
(quotientAddEquivOfEq (ZMod.ker_int_castAddHom _)).symm.trans <|
quotientKerEquivOfRightInverse (Int.castAddHom (ZMod n)) (↑) int_cast_zmod_cast
-#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZmultiplesNatEquivZMod
+#align int.quotient_zmultiples_nat_equiv_zmod Int.quotientZMultiplesNatEquivZMod
/-- `ℤ` modulo multiples of `a : ℤ` is `ZMod a.nat_abs`. -/
-def quotientZmultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
- (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZmultiplesNatEquivZMod a.natAbs)
-#align int.quotient_zmultiples_equiv_zmod Int.quotientZmultiplesEquivZMod
+def quotientZMultiplesEquivZMod (a : ℤ) : ℤ ⧸ AddSubgroup.zmultiples a ≃+ ZMod a.natAbs :=
+ (quotientAddEquivOfEq (zmultiples_natAbs a)).symm.trans (quotientZMultiplesNatEquivZMod a.natAbs)
+#align int.quotient_zmultiples_equiv_zmod Int.quotientZMultiplesEquivZMod
/-- `ℤ` modulo the ideal generated by `n : ℕ` is `ZMod n`. -/
def quotientSpanNatEquivZMod : ℤ ⧸ Ideal.span {(n : ℤ)} ≃+* ZMod n :=
@@ -102,7 +102,7 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
zsmul_vadd_eq_iff_minimalPeriod_dvd]
exact (eq_zero_iff _).mp hn, fun q =>
induction_on' q fun ⟨_, n, rfl⟩ => ⟨n, rfl⟩⟩).symm.trans
- (Int.quotientZmultiplesNatEquivZMod (minimalPeriod (a +ᵥ ·) b))
+ (Int.quotientZMultiplesNatEquivZMod (minimalPeriod (a +ᵥ ·) b))
#align add_action.zmultiples_quotient_stabilizer_equiv AddAction.zmultiplesQuotientStabilizerEquiv
theorem zmultiplesQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a +ᵥ ·) b)) :
@@ -132,52 +132,52 @@ theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimalPeriod ((•) a) b`. -/
-noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod (a • ·) b) :=
+noncomputable def orbitZPowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod (a • ·) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
-#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
+#align mul_action.orbit_zpowers_equiv MulAction.orbitZPowersEquiv
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimalPeriod (a +ᵥ ·) b`. -/
-noncomputable def _root_.AddAction.orbitZmultiplesEquiv {α β : Type*} [AddGroup α] (a : α)
+noncomputable def _root_.AddAction.orbitZMultiplesEquiv {α β : Type*} [AddGroup α] (a : α)
[AddAction α β] (b : β) :
AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod (a +ᵥ ·) b) :=
(AddAction.orbitEquivQuotientStabilizer (zmultiples a) b).trans
(zmultiplesQuotientStabilizerEquiv a b).toEquiv
-#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquiv
+#align add_action.orbit_zmultiples_equiv AddAction.orbitZMultiplesEquiv
-attribute [to_additive existing AddAction.orbitZmultiplesEquiv] orbitZpowersEquiv
+attribute [to_additive existing AddAction.orbitZMultiplesEquiv] orbitZPowersEquiv
@[to_additive orbit_zmultiples_equiv_symm_apply]
-theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
- (orbitZpowersEquiv a b).symm k =
+theorem orbitZPowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
+ (orbitZPowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ (k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
-#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZpowersEquiv_symm_apply
+#align mul_action.orbit_zpowers_equiv_symm_apply MulAction.orbitZPowersEquiv_symm_apply
#align add_action.orbit_zmultiples_equiv_symm_apply AddAction.orbit_zmultiples_equiv_symm_apply
-theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
- (orbitZpowersEquiv a b).symm k =
+theorem orbitZPowersEquiv_symm_apply' (k : ℤ) :
+ (orbitZPowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ k • ⟨b, mem_orbit_self b⟩ := by
- rw [orbitZpowersEquiv_symm_apply, ZMod.coe_int_cast]
+ rw [orbitZPowersEquiv_symm_apply, ZMod.coe_int_cast]
exact Subtype.ext (zpow_smul_mod_minimalPeriod _ _ k)
-#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
+#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZPowersEquiv_symm_apply'
-theorem _root_.AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type*} [AddGroup α] (a : α)
+theorem _root_.AddAction.orbitZMultiplesEquiv_symm_apply' {α β : Type*} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
- (AddAction.orbitZmultiplesEquiv a b).symm k =
+ (AddAction.orbitZMultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ := by
rw [AddAction.orbit_zmultiples_equiv_symm_apply, ZMod.coe_int_cast]
-- porting note: times out without `a b` explicit
exact Subtype.ext (zsmul_vadd_mod_minimalPeriod a b k)
-#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZmultiplesEquiv_symm_apply'
+#align add_action.orbit_zmultiples_equiv_symm_apply' AddAction.orbitZMultiplesEquiv_symm_apply'
-attribute [to_additive existing AddAction.orbitZmultiplesEquiv_symm_apply']
- orbitZpowersEquiv_symm_apply'
+attribute [to_additive existing AddAction.orbitZMultiplesEquiv_symm_apply']
+ orbitZPowersEquiv_symm_apply'
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
minimalPeriod (a • ·) b = Fintype.card (orbit (zpowers a) b) := by
-- porting note: added `(_)` to find `Fintype` by unification
- rw [← Fintype.ofEquiv_card (orbitZpowersEquiv a b), @ZMod.card _ (_)]
+ rw [← Fintype.ofEquiv_card (orbitZPowersEquiv a b), @ZMod.card _ (_)]
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
#align add_action.minimal_period_eq_card AddAction.minimalPeriod_eq_card
@@ -203,7 +203,7 @@ variable {α : Type*} [Group α] (a : α)
/-- See also `Fintype.card_zpowers`. -/
@[to_additive (attr := simp) Nat.card_zmultiples "See also `Fintype.card_zmultiples`."]
theorem Nat.card_zpowers : Nat.card (zpowers a) = orderOf a := by
- have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
+ have := Nat.card_congr (MulAction.orbitZPowersEquiv a (1 : α))
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self] at this
#align order_eq_card_zpowers' Nat.card_zpowersₓ
#align add_order_eq_card_zmultiples' Nat.card_zmultiplesₓ
(· op ·) a
by (a op ·)
(#8843)
I used the regex \(\(· (.) ·\) (.)\)
, replacing with ($2 $1 ·)
.
@@ -86,15 +86,15 @@ open AddSubgroup AddMonoidHom AddEquiv Function
variable {α β : Type*} [AddGroup α] (a : α) [AddAction α β] (b : β)
-/-- The quotient `(ℤ ∙ a) ⧸ (stabilizer b)` is cyclic of order `minimalPeriod ((+ᵥ) a) b`. -/
+/-- The quotient `(ℤ ∙ a) ⧸ (stabilizer b)` is cyclic of order `minimalPeriod (a +ᵥ ·) b`. -/
noncomputable def zmultiplesQuotientStabilizerEquiv :
- zmultiples a ⧸ stabilizer (zmultiples a) b ≃+ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
+ zmultiples a ⧸ stabilizer (zmultiples a) b ≃+ ZMod (minimalPeriod (a +ᵥ ·) b) :=
(ofBijective
(map _ (stabilizer (zmultiples a) b) (zmultiplesHom (zmultiples a) ⟨a, mem_zmultiples a⟩)
(by
rw [zmultiples_le, mem_comap, mem_stabilizer_iff, zmultiplesHom_apply, coe_nat_zsmul]
simp_rw [← vadd_iterate]
- exact isPeriodicPt_minimalPeriod ((· +ᵥ ·) a) b))
+ exact isPeriodicPt_minimalPeriod (a +ᵥ ·) b))
⟨by
rw [← ker_eq_bot_iff, eq_bot_iff]
refine' fun q => induction_on' q fun n hn => _
@@ -102,10 +102,10 @@ noncomputable def zmultiplesQuotientStabilizerEquiv :
zsmul_vadd_eq_iff_minimalPeriod_dvd]
exact (eq_zero_iff _).mp hn, fun q =>
induction_on' q fun ⟨_, n, rfl⟩ => ⟨n, rfl⟩⟩).symm.trans
- (Int.quotientZmultiplesNatEquivZMod (minimalPeriod ((· +ᵥ ·) a) b))
+ (Int.quotientZmultiplesNatEquivZMod (minimalPeriod (a +ᵥ ·) b))
#align add_action.zmultiples_quotient_stabilizer_equiv AddAction.zmultiplesQuotientStabilizerEquiv
-theorem zmultiplesQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((· +ᵥ ·) a) b)) :
+theorem zmultiplesQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a +ᵥ ·) b)) :
(zmultiplesQuotientStabilizerEquiv a b).symm n =
(n : ℤ) • (⟨a, mem_zmultiples a⟩ : zmultiples a) :=
rfl
@@ -121,25 +121,25 @@ variable {α β : Type*} [Group α] (a : α) [MulAction α β] (b : β)
/-- The quotient `(a ^ ℤ) ⧸ (stabilizer b)` is cyclic of order `minimalPeriod ((•) a) b`. -/
noncomputable def zpowersQuotientStabilizerEquiv :
- zpowers a ⧸ stabilizer (zpowers a) b ≃* Multiplicative (ZMod (minimalPeriod ((· • ·) a) b)) :=
+ zpowers a ⧸ stabilizer (zpowers a) b ≃* Multiplicative (ZMod (minimalPeriod (a • ·) b)) :=
letI f := zmultiplesQuotientStabilizerEquiv (Additive.ofMul a) b
AddEquiv.toMultiplicative f
#align mul_action.zpowers_quotient_stabilizer_equiv MulAction.zpowersQuotientStabilizerEquiv
-theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod ((· • ·) a) b)) :
+theorem zpowersQuotientStabilizerEquiv_symm_apply (n : ZMod (minimalPeriod (a • ·) b)) :
(zpowersQuotientStabilizerEquiv a b).symm n = (⟨a, mem_zpowers a⟩ : zpowers a) ^ (n : ℤ) :=
rfl
#align mul_action.zpowers_quotient_stabilizer_equiv_symm_apply MulAction.zpowersQuotientStabilizerEquiv_symm_apply
/-- The orbit `(a ^ ℤ) • b` is a cycle of order `minimalPeriod ((•) a) b`. -/
-noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod ((· • ·) a) b) :=
+noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPeriod (a • ·) b) :=
(orbitEquivQuotientStabilizer _ b).trans (zpowersQuotientStabilizerEquiv a b).toEquiv
#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
-/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimalPeriod ((+ᵥ) a) b`. -/
+/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimalPeriod (a +ᵥ ·) b`. -/
noncomputable def _root_.AddAction.orbitZmultiplesEquiv {α β : Type*} [AddGroup α] (a : α)
[AddAction α β] (b : β) :
- AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
+ AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod (a +ᵥ ·) b) :=
(AddAction.orbitEquivQuotientStabilizer (zmultiples a) b).trans
(zmultiplesQuotientStabilizerEquiv a b).toEquiv
#align add_action.orbit_zmultiples_equiv AddAction.orbitZmultiplesEquiv
@@ -147,7 +147,7 @@ noncomputable def _root_.AddAction.orbitZmultiplesEquiv {α β : Type*} [AddGrou
attribute [to_additive existing AddAction.orbitZmultiplesEquiv] orbitZpowersEquiv
@[to_additive orbit_zmultiples_equiv_symm_apply]
-theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod ((· • ·) a) b)) :
+theorem orbitZpowersEquiv_symm_apply (k : ZMod (minimalPeriod (a • ·) b)) :
(orbitZpowersEquiv a b).symm k =
(⟨a, mem_zpowers a⟩ : zpowers a) ^ (k : ℤ) • ⟨b, mem_orbit_self b⟩ :=
rfl
@@ -175,7 +175,7 @@ attribute [to_additive existing AddAction.orbitZmultiplesEquiv_symm_apply']
@[to_additive]
theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
- minimalPeriod ((· • ·) a) b = Fintype.card (orbit (zpowers a) b) := by
+ minimalPeriod (a • ·) b = Fintype.card (orbit (zpowers a) b) := by
-- porting note: added `(_)` to find `Fintype` by unification
rw [← Fintype.ofEquiv_card (orbitZpowersEquiv a b), @ZMod.card _ (_)]
#align mul_action.minimal_period_eq_card MulAction.minimalPeriod_eq_card
@@ -183,7 +183,7 @@ theorem minimalPeriod_eq_card [Fintype (orbit (zpowers a) b)] :
@[to_additive]
instance minimalPeriod_pos [Finite <| orbit (zpowers a) b] :
- NeZero <| minimalPeriod ((· • ·) a) b :=
+ NeZero <| minimalPeriod (a • ·) b :=
⟨by
cases nonempty_fintype (orbit (zpowers a) b)
haveI : Nonempty (orbit (zpowers a) b) := (orbit_nonempty b).to_subtype
This PR define Monoid.minOrder α
, the minimum order of an element of the monoid α
. This is also the minimum size of a nontrivial subgroup.
@@ -201,7 +201,7 @@ open Subgroup
variable {α : Type*} [Group α] (a : α)
/-- See also `Fintype.card_zpowers`. -/
-@[to_additive Nat.card_zmultiples "See also `Fintype.card_zmultiples`."]
+@[to_additive (attr := simp) Nat.card_zmultiples "See also `Fintype.card_zmultiples`."]
theorem Nat.card_zpowers : Nat.card (zpowers a) = orderOf a := by
have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
rwa [Nat.card_zmod, orbit_subgroup_one_eq_self] at this
The cardinality of a subgroup is greater than the order of any of its elements.
Rename
order_eq_card_zpowers
→ Fintype.card_zpowers
order_eq_card_zpowers'
→ Nat.card_zpowers
(and turn it around to match Nat.card_subgroupPowers
)Submonoid.powers_subset
→ Submonoid.powers_le
orderOf_dvd_card_univ
→ orderOf_dvd_card
orderOf_subgroup
→ Subgroup.orderOf
Subgroup.nonempty
→ Subgroup.coe_nonempty
@@ -33,10 +33,7 @@ This file relates `ZMod n` to the quotient group
zmod, quotient group, quotient ring, ideal quotient
-/
-
-open QuotientAddGroup
-
-open ZMod
+open QuotientAddGroup Set ZMod
variable (n : ℕ) {A R : Type*} [AddGroup A] [Ring R]
@@ -203,20 +200,26 @@ open Subgroup
variable {α : Type*} [Group α] (a : α)
-/-- See also `orderOf_eq_card_zpowers`. -/
-@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
-theorem order_eq_card_zpowers' : orderOf a = Nat.card (zpowers a) := by
+/-- See also `Fintype.card_zpowers`. -/
+@[to_additive Nat.card_zmultiples "See also `Fintype.card_zmultiples`."]
+theorem Nat.card_zpowers : Nat.card (zpowers a) = orderOf a := by
have := Nat.card_congr (MulAction.orbitZpowersEquiv a (1 : α))
- rwa [Nat.card_zmod, orbit_subgroup_one_eq_self, eq_comm] at this
-#align order_eq_card_zpowers' order_eq_card_zpowers'
-#align add_order_eq_card_zmultiples' add_order_eq_card_zmultiples'
+ rwa [Nat.card_zmod, orbit_subgroup_one_eq_self] at this
+#align order_eq_card_zpowers' Nat.card_zpowersₓ
+#align add_order_eq_card_zmultiples' Nat.card_zmultiplesₓ
variable {a}
+@[to_additive (attr := simp) finite_zmultiples]
+lemma finite_zpowers : (zpowers a : Set α).Finite ↔ IsOfFinOrder a := by
+ simp only [← orderOf_pos_iff, ← Nat.card_zpowers, Nat.card_pos_iff, ← SetLike.coe_sort_coe,
+ nonempty_coe_sort, Nat.card_pos_iff, Set.finite_coe_iff, Subgroup.coe_nonempty, true_and]
+
+@[to_additive (attr := simp) infinite_zmultiples]
+lemma infinite_zpowers : (zpowers a : Set α).Infinite ↔ ¬IsOfFinOrder a := finite_zpowers.not
+
@[to_additive IsOfFinAddOrder.finite_zmultiples]
-theorem IsOfFinOrder.finite_zpowers (h : IsOfFinOrder a) : Finite <| zpowers a := by
- rw [← orderOf_pos_iff, order_eq_card_zpowers'] at h
- exact Nat.finite_of_card_ne_zero h.ne.symm
+protected alias ⟨_, IsOfFinOrder.finite_zpowers⟩ := finite_zpowers
#align is_of_fin_order.finite_zpowers IsOfFinOrder.finite_zpowers
#align is_of_fin_add_order.finite_zmultiples IsOfFinAddOrder.finite_zmultiples
Hom
and file name (#8095)
I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom
folder so that e.g. Mathlib.Algebra.Hom.Ring
becomes Mathlib.Algebra.Ring.Hom
and Mathlib.Algebra.Hom.NonUnitalAlg
becomes Mathlib.Algebra.Algebra.NonUnitalHom
.
While fixing the imports I went ahead and sorted them for good luck.
The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean
Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60
@@ -3,11 +3,11 @@ Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-/
+import Mathlib.Algebra.Group.Equiv.TypeTags
import Mathlib.Data.ZMod.Basic
import Mathlib.GroupTheory.GroupAction.Quotient
-import Mathlib.RingTheory.Int.Basic
import Mathlib.RingTheory.Ideal.QuotientOperations
-import Mathlib.Algebra.Hom.Equiv.TypeTags
+import Mathlib.RingTheory.Int.Basic
#align_import data.zmod.quotient from "leanprover-community/mathlib"@"da420a8c6dd5bdfb85c4ced85c34388f633bc6ff"
@@ -67,6 +67,22 @@ def quotientSpanEquivZMod (a : ℤ) : ℤ ⧸ Ideal.span ({a} : Set ℤ) ≃+* Z
end Int
+noncomputable section ChineseRemainder
+open BigOperators Ideal
+
+/-- The **Chinese remainder theorem**, elementary version for `ZMod`. See also
+`Mathlib.Data.ZMod.Basic` for versions involving only two numbers. -/
+def ZMod.prodEquivPi {ι : Type*} [Fintype ι] (a : ι → ℕ)
+ (coprime : ∀ i j, i ≠ j → Nat.Coprime (a i) (a j)) : ZMod (∏ i, a i) ≃+* ∀ i, ZMod (a i) :=
+ have : ∀ (i j : ι), i ≠ j → IsCoprime (span {(a i : ℤ)}) (span {(a j : ℤ)}) :=
+ fun i j h ↦ (isCoprime_span_singleton_iff _ _).mpr ((coprime i j h).cast (R := ℤ))
+ Int.quotientSpanNatEquivZMod _ |>.symm.trans <|
+ quotEquivOfEq (iInf_span_singleton_natCast (R := ℤ) coprime) |>.symm.trans <|
+ quotientInfRingEquivPiQuotient _ this |>.trans <|
+ RingEquiv.piCongrRight fun i ↦ Int.quotientSpanNatEquivZMod (a i)
+
+end ChineseRemainder
+
namespace AddAction
open AddSubgroup AddMonoidHom AddEquiv Function
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -38,7 +38,7 @@ open QuotientAddGroup
open ZMod
-variable (n : ℕ) {A R : Type _} [AddGroup A] [Ring R]
+variable (n : ℕ) {A R : Type*} [AddGroup A] [Ring R]
namespace Int
@@ -71,7 +71,7 @@ namespace AddAction
open AddSubgroup AddMonoidHom AddEquiv Function
-variable {α β : Type _} [AddGroup α] (a : α) [AddAction α β] (b : β)
+variable {α β : Type*} [AddGroup α] (a : α) [AddAction α β] (b : β)
/-- The quotient `(ℤ ∙ a) ⧸ (stabilizer b)` is cyclic of order `minimalPeriod ((+ᵥ) a) b`. -/
noncomputable def zmultiplesQuotientStabilizerEquiv :
@@ -104,7 +104,7 @@ namespace MulAction
open AddAction Subgroup AddSubgroup Function
-variable {α β : Type _} [Group α] (a : α) [MulAction α β] (b : β)
+variable {α β : Type*} [Group α] (a : α) [MulAction α β] (b : β)
/-- The quotient `(a ^ ℤ) ⧸ (stabilizer b)` is cyclic of order `minimalPeriod ((•) a) b`. -/
noncomputable def zpowersQuotientStabilizerEquiv :
@@ -124,7 +124,7 @@ noncomputable def orbitZpowersEquiv : orbit (zpowers a) b ≃ ZMod (minimalPerio
#align mul_action.orbit_zpowers_equiv MulAction.orbitZpowersEquiv
/-- The orbit `(ℤ • a) +ᵥ b` is a cycle of order `minimalPeriod ((+ᵥ) a) b`. -/
-noncomputable def _root_.AddAction.orbitZmultiplesEquiv {α β : Type _} [AddGroup α] (a : α)
+noncomputable def _root_.AddAction.orbitZmultiplesEquiv {α β : Type*} [AddGroup α] (a : α)
[AddAction α β] (b : β) :
AddAction.orbit (zmultiples a) b ≃ ZMod (minimalPeriod ((· +ᵥ ·) a) b) :=
(AddAction.orbitEquivQuotientStabilizer (zmultiples a) b).trans
@@ -148,7 +148,7 @@ theorem orbitZpowersEquiv_symm_apply' (k : ℤ) :
exact Subtype.ext (zpow_smul_mod_minimalPeriod _ _ k)
#align mul_action.orbit_zpowers_equiv_symm_apply' MulAction.orbitZpowersEquiv_symm_apply'
-theorem _root_.AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type _} [AddGroup α] (a : α)
+theorem _root_.AddAction.orbitZmultiplesEquiv_symm_apply' {α β : Type*} [AddGroup α] (a : α)
[AddAction α β] (b : β) (k : ℤ) :
(AddAction.orbitZmultiplesEquiv a b).symm k =
k • (⟨a, mem_zmultiples a⟩ : zmultiples a) +ᵥ ⟨b, AddAction.mem_orbit_self b⟩ := by
@@ -185,7 +185,7 @@ section Group
open Subgroup
-variable {α : Type _} [Group α] (a : α)
+variable {α : Type*} [Group α] (a : α)
/-- See also `orderOf_eq_card_zpowers`. -/
@[to_additive add_order_eq_card_zmultiples' "See also `add_order_eq_card_zmultiples`."]
@@ -2,11 +2,6 @@
Copyright (c) 2021 Anne Baanen. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Anne Baanen
-
-! This file was ported from Lean 3 source module data.zmod.quotient
-! leanprover-community/mathlib commit da420a8c6dd5bdfb85c4ced85c34388f633bc6ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.ZMod.Basic
import Mathlib.GroupTheory.GroupAction.Quotient
@@ -14,6 +9,8 @@ import Mathlib.RingTheory.Int.Basic
import Mathlib.RingTheory.Ideal.QuotientOperations
import Mathlib.Algebra.Hom.Equiv.TypeTags
+#align_import data.zmod.quotient from "leanprover-community/mathlib"@"da420a8c6dd5bdfb85c4ced85c34388f633bc6ff"
+
/-!
# `ZMod n` and quotient groups / rings
The unported dependencies are