group_theory.commensurable
⟷
Mathlib.GroupTheory.Commensurable
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2021 Chris Birkbeck. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Chris Birkbeck
-/
-import Mathbin.GroupTheory.Index
-import Mathbin.GroupTheory.Subgroup.Pointwise
-import Mathbin.GroupTheory.GroupAction.ConjAct
+import GroupTheory.Index
+import GroupTheory.Subgroup.Pointwise
+import GroupTheory.GroupAction.ConjAct
#align_import group_theory.commensurable from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -113,7 +113,7 @@ def commensurator' (H : Subgroup G) : Subgroup (ConjAct G)
where
carrier := {g : ConjAct G | Commensurable (g • H) H}
one_mem' := by rw [Set.mem_setOf_eq, one_smul]
- mul_mem' a b ha hb := by
+ hMul_mem' a b ha hb := by
rw [Set.mem_setOf_eq, mul_smul]
exact trans ((commensurable_conj a).mp hb) ha
inv_mem' a ha := by rwa [Set.mem_setOf_eq, comm, ← commensurable_inv]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2021 Chris Birkbeck. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Chris Birkbeck
-
-! This file was ported from Lean 3 source module group_theory.commensurable
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.GroupTheory.Index
import Mathbin.GroupTheory.Subgroup.Pointwise
import Mathbin.GroupTheory.GroupAction.ConjAct
+#align_import group_theory.commensurable from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
/-!
# Commensurability for subgroups
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -81,6 +81,7 @@ theorem equivalence : Equivalence (@Commensurable G _) :=
#align commensurable.equivalence Commensurable.equivalence
-/
+#print Commensurable.quotConjEquiv /-
/-- Equivalence of `K/H ⊓ K` with `gKg⁻¹/gHg⁻¹ ⊓ gKg⁻¹`-/
def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
K ⧸ H.subgroupOf K ≃ (g • K).1 ⧸ (g • H).subgroupOf (g • K) :=
@@ -92,16 +93,21 @@ def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
Subgroup.equivSMul_apply_coe]
exact subgroup.smul_mem_pointwise_smul_iff.symm
#align commensurable.quot_conj_equiv Commensurable.quotConjEquiv
+-/
+#print Commensurable.commensurable_conj /-
theorem commensurable_conj {H K : Subgroup G} (g : ConjAct G) :
Commensurable H K ↔ Commensurable (g • H) (g • K) :=
and_congr (not_iff_not.mpr (Eq.congr_left (Cardinal.toNat_congr (quotConjEquiv H K g))))
(not_iff_not.mpr (Eq.congr_left (Cardinal.toNat_congr (quotConjEquiv K H g))))
#align commensurable.commensurable_conj Commensurable.commensurable_conj
+-/
+#print Commensurable.commensurable_inv /-
theorem commensurable_inv (H : Subgroup G) (g : ConjAct G) :
Commensurable (g • H) H ↔ Commensurable H (g⁻¹ • H) := by rw [commensurable_conj, inv_smul_smul]
#align commensurable.commensurable_inv Commensurable.commensurable_inv
+-/
#print Commensurable.commensurator' /-
/-- For `H` a subgroup of `G`, this is the subgroup of all elements `g : conj_aut G`
@@ -125,17 +131,21 @@ def commensurator (H : Subgroup G) : Subgroup G :=
#align commensurable.commensurator Commensurable.commensurator
-/
+#print Commensurable.commensurator'_mem_iff /-
@[simp]
theorem commensurator'_mem_iff (H : Subgroup G) (g : ConjAct G) :
g ∈ commensurator' H ↔ Commensurable (g • H) H :=
Iff.rfl
#align commensurable.commensurator'_mem_iff Commensurable.commensurator'_mem_iff
+-/
+#print Commensurable.commensurator_mem_iff /-
@[simp]
theorem commensurator_mem_iff (H : Subgroup G) (g : G) :
g ∈ commensurator H ↔ Commensurable (ConjAct.toConjAct g • H) H :=
Iff.rfl
#align commensurable.commensurator_mem_iff Commensurable.commensurator_mem_iff
+-/
#print Commensurable.eq /-
theorem eq {H K : Subgroup G} (hk : Commensurable H K) : commensurator H = commensurator K :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -108,7 +108,7 @@ theorem commensurable_inv (H : Subgroup G) (g : ConjAct G) :
such that `commensurable (g • H) H` -/
def commensurator' (H : Subgroup G) : Subgroup (ConjAct G)
where
- carrier := { g : ConjAct G | Commensurable (g • H) H }
+ carrier := {g : ConjAct G | Commensurable (g • H) H}
one_mem' := by rw [Set.mem_setOf_eq, one_smul]
mul_mem' a b ha hb := by
rw [Set.mem_setOf_eq, mul_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -46,7 +46,7 @@ def Commensurable (H K : Subgroup G) : Prop :=
namespace Commensurable
-open Pointwise
+open scoped Pointwise
#print Commensurable.refl /-
@[refl]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -81,9 +81,6 @@ theorem equivalence : Equivalence (@Commensurable G _) :=
#align commensurable.equivalence Commensurable.equivalence
-/
-/- warning: commensurable.quot_conj_equiv -> Commensurable.quotConjEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align commensurable.quot_conj_equiv Commensurable.quotConjEquivₓ'. -/
/-- Equivalence of `K/H ⊓ K` with `gKg⁻¹/gHg⁻¹ ⊓ gKg⁻¹`-/
def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
K ⧸ H.subgroupOf K ≃ (g • K).1 ⧸ (g • H).subgroupOf (g • K) :=
@@ -96,24 +93,12 @@ def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
exact subgroup.smul_mem_pointwise_smul_iff.symm
#align commensurable.quot_conj_equiv Commensurable.quotConjEquiv
-/- warning: commensurable.commensurable_conj -> Commensurable.commensurable_conj is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (g : ConjAct.{u1} G), Iff (Commensurable.{u1} G _inst_1 H K) (Commensurable.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g H) (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Subgroup.{u1} G _inst_1} {K : Subgroup.{u1} G _inst_1} (g : ConjAct.{u1} G), Iff (Commensurable.{u1} G _inst_1 H K) (Commensurable.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g H) (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K))
-Case conversion may be inaccurate. Consider using '#align commensurable.commensurable_conj Commensurable.commensurable_conjₓ'. -/
theorem commensurable_conj {H K : Subgroup G} (g : ConjAct G) :
Commensurable H K ↔ Commensurable (g • H) (g • K) :=
and_congr (not_iff_not.mpr (Eq.congr_left (Cardinal.toNat_congr (quotConjEquiv H K g))))
(not_iff_not.mpr (Eq.congr_left (Cardinal.toNat_congr (quotConjEquiv K H g))))
#align commensurable.commensurable_conj Commensurable.commensurable_conj
-/- warning: commensurable.commensurable_inv -> Commensurable.commensurable_inv is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Iff (Commensurable.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g H) H) (Commensurable.{u1} G _inst_1 H (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) (Inv.inv.{u1} (ConjAct.{u1} G) (DivInvMonoid.toHasInv.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) g) H))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Iff (Commensurable.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g H) H) (Commensurable.{u1} G _inst_1 H (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) (Inv.inv.{u1} (ConjAct.{u1} G) (InvOneClass.toInv.{u1} (ConjAct.{u1} G) (DivInvOneMonoid.toInvOneClass.{u1} (ConjAct.{u1} G) (DivisionMonoid.toDivInvOneMonoid.{u1} (ConjAct.{u1} G) (Group.toDivisionMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instGroupConjAct.{u1} G _inst_1))))) g) H))
-Case conversion may be inaccurate. Consider using '#align commensurable.commensurable_inv Commensurable.commensurable_invₓ'. -/
theorem commensurable_inv (H : Subgroup G) (g : ConjAct G) :
Commensurable (g • H) H ↔ Commensurable H (g⁻¹ • H) := by rw [commensurable_conj, inv_smul_smul]
#align commensurable.commensurable_inv Commensurable.commensurable_inv
@@ -140,24 +125,12 @@ def commensurator (H : Subgroup G) : Subgroup G :=
#align commensurable.commensurator Commensurable.commensurator
-/
-/- warning: commensurable.commensurator'_mem_iff -> Commensurable.commensurator'_mem_iff is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Iff (Membership.Mem.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} (ConjAct.{u1} G) (ConjAct.group.{u1} G _inst_1)) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} (ConjAct.{u1} G) (ConjAct.group.{u1} G _inst_1)) (ConjAct.{u1} G) (Subgroup.setLike.{u1} (ConjAct.{u1} G) (ConjAct.group.{u1} G _inst_1))) g (Commensurable.commensurator'.{u1} G _inst_1 H)) (Commensurable.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g H) H)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Iff (Membership.mem.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} (ConjAct.{u1} G) (ConjAct.instGroupConjAct.{u1} G _inst_1)) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (ConjAct.{u1} G) (ConjAct.instGroupConjAct.{u1} G _inst_1)) (ConjAct.{u1} G) (Subgroup.instSetLikeSubgroup.{u1} (ConjAct.{u1} G) (ConjAct.instGroupConjAct.{u1} G _inst_1))) g (Commensurable.commensurator'.{u1} G _inst_1 H)) (Commensurable.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g H) H)
-Case conversion may be inaccurate. Consider using '#align commensurable.commensurator'_mem_iff Commensurable.commensurator'_mem_iffₓ'. -/
@[simp]
theorem commensurator'_mem_iff (H : Subgroup G) (g : ConjAct G) :
g ∈ commensurator' H ↔ Commensurable (g • H) H :=
Iff.rfl
#align commensurable.commensurator'_mem_iff Commensurable.commensurator'_mem_iff
-/- warning: commensurable.commensurator_mem_iff -> Commensurable.commensurator_mem_iff is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : G), Iff (Membership.Mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.hasMem.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) g (Commensurable.commensurator.{u1} G _inst_1 H)) (Commensurable.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) (coeFn.{succ u1, succ u1} (MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (fun (_x : MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) => G -> (ConjAct.{u1} G)) (MulEquiv.hasCoeToFun.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (ConjAct.toConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g) H) H)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (g : G), Iff (Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) g (Commensurable.commensurator.{u1} G _inst_1 H)) (Commensurable.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) G _inst_1 (DivInvMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) g) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => ConjAct.{u1} G) _x) (EmbeddingLike.toFunLike.{succ u1, succ u1, succ u1} (MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) G (ConjAct.{u1} G) (EquivLike.toEmbeddingLike.{succ u1, succ u1, succ u1} (MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) G (ConjAct.{u1} G) (MulEquivClass.toEquivLike.{u1, u1, u1} (MulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u1} G (ConjAct.{u1} G) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (ConjAct.{u1} G) (Monoid.toMulOneClass.{u1} (ConjAct.{u1} G) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))))))) (ConjAct.toConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)) g) H) H)
-Case conversion may be inaccurate. Consider using '#align commensurable.commensurator_mem_iff Commensurable.commensurator_mem_iffₓ'. -/
@[simp]
theorem commensurator_mem_iff (H : Subgroup G) (g : G) :
g ∈ commensurator H ↔ Commensurable (ConjAct.toConjAct g • H) H :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -89,7 +89,7 @@ def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
K ⧸ H.subgroupOf K ≃ (g • K).1 ⧸ (g • H).subgroupOf (g • K) :=
Quotient.congr (K.equivSMul g).toEquiv fun a b =>
by
- dsimp
+ dsimp;
rw [← Quotient.eq'', ← Quotient.eq'', QuotientGroup.eq', QuotientGroup.eq',
Subgroup.mem_subgroupOf, Subgroup.mem_subgroupOf, ← MulEquiv.map_inv, ← MulEquiv.map_mul,
Subgroup.equivSMul_apply_coe]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -82,10 +82,7 @@ theorem equivalence : Equivalence (@Commensurable G _) :=
-/
/- warning: commensurable.quot_conj_equiv -> Commensurable.quotConjEquiv is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Equiv.{succ u1, succ u1} (HasQuotient.Quotient.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) K) (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (QuotientGroup.Subgroup.hasQuotient.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) K) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (HasQuotient.Quotient.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (Subgroup.carrier.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K))) (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K)) (Subgroup.toGroup.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K))) (QuotientGroup.Subgroup.hasQuotient.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K)) (Subgroup.toGroup.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K))) (Subgroup.subgroupOf.{u1} G _inst_1 (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g H) (SMul.smul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toHasSmul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.divInvMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.mulDistribMulAction.{u1} G _inst_1))) g K)))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (H : Subgroup.{u1} G _inst_1) (K : Subgroup.{u1} G _inst_1) (g : ConjAct.{u1} G), Equiv.{succ u1, succ u1} (HasQuotient.Quotient.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x K)) (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (QuotientGroup.instHasQuotientSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x K)) (Subgroup.toGroup.{u1} G _inst_1 K)) (Subgroup.subgroupOf.{u1} G _inst_1 H K)) (HasQuotient.Quotient.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) G (Submonoid.instSetLikeSubmonoid.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))))) x (Subgroup.toSubmonoid.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K)))) (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K))) (Subgroup.toGroup.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K))) (QuotientGroup.instHasQuotientSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K))) (Subgroup.toGroup.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K))) (Subgroup.subgroupOf.{u1} G _inst_1 (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g H) (HSMul.hSMul.{u1, u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (instHSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (MulAction.toSMul.{u1, u1} (ConjAct.{u1} G) (Subgroup.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.pointwiseMulAction.{u1, u1} (ConjAct.{u1} G) G _inst_1 (DivInvMonoid.toMonoid.{u1} (ConjAct.{u1} G) (ConjAct.instDivInvMonoidConjAct.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (ConjAct.instMulDistribMulActionConjActToMonoidInstDivInvMonoidConjActToDivInvMonoid.{u1} G _inst_1)))) g K)))
+<too large>
Case conversion may be inaccurate. Consider using '#align commensurable.quot_conj_equiv Commensurable.quotConjEquivₓ'. -/
/-- Equivalence of `K/H ⊓ K` with `gKg⁻¹/gHg⁻¹ ⊓ gKg⁻¹`-/
def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/da3fc4a33ff6bc75f077f691dc94c217b8d41559
@@ -90,12 +90,12 @@ Case conversion may be inaccurate. Consider using '#align commensurable.quot_con
/-- Equivalence of `K/H ⊓ K` with `gKg⁻¹/gHg⁻¹ ⊓ gKg⁻¹`-/
def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
K ⧸ H.subgroupOf K ≃ (g • K).1 ⧸ (g • H).subgroupOf (g • K) :=
- Quotient.congr (K.equivSmul g).toEquiv fun a b =>
+ Quotient.congr (K.equivSMul g).toEquiv fun a b =>
by
dsimp
rw [← Quotient.eq'', ← Quotient.eq'', QuotientGroup.eq', QuotientGroup.eq',
Subgroup.mem_subgroupOf, Subgroup.mem_subgroupOf, ← MulEquiv.map_inv, ← MulEquiv.map_mul,
- Subgroup.equivSmul_apply_coe]
+ Subgroup.equivSMul_apply_coe]
exact subgroup.smul_mem_pointwise_smul_iff.symm
#align commensurable.quot_conj_equiv Commensurable.quotConjEquiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -29,7 +29,7 @@ the map `G → (conjAct G)` to obtain our commensurator as a subgroup of `G`.
-/
-variable {G : Type _} [Group G]
+variable {G : Type*} [Group G]
/-- Two subgroups `H K` of `G` are commensurable if `H ⊓ K` has finite index in both `H` and `K` -/
def Commensurable (H K : Subgroup G) : Prop :=
@@ -2,16 +2,13 @@
Copyright (c) 2021 Chris Birkbeck. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Chris Birkbeck
-
-! This file was ported from Lean 3 source module group_theory.commensurable
-! leanprover-community/mathlib commit 48085f140e684306f9e7da907cd5932056d1aded
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.GroupTheory.Index
import Mathlib.GroupTheory.Subgroup.Pointwise
import Mathlib.GroupTheory.GroupAction.ConjAct
+#align_import group_theory.commensurable from "leanprover-community/mathlib"@"48085f140e684306f9e7da907cd5932056d1aded"
+
/-!
# Commensurability for subgroups
@@ -21,7 +21,7 @@ of `G`.
## Main definitions
-* `Commensurable`: defines commensurability for two subgroups `H`, `K` of `G`
+* `Commensurable`: defines commensurability for two subgroups `H`, `K` of `G`
* `commensurator`: defines the commensurator of a subgroup `H` of `G`.
## Implementation details
@@ -67,11 +67,11 @@ theorem equivalence : Equivalence (@Commensurable G _) :=
/-- Equivalence of `K/H ⊓ K` with `gKg⁻¹/gHg⁻¹ ⊓ gKg⁻¹`-/
def quotConjEquiv (H K : Subgroup G) (g : ConjAct G) :
K ⧸ H.subgroupOf K ≃ (g • K).1 ⧸ (g • H).subgroupOf (g • K) :=
- Quotient.congr (K.equivSmul g).toEquiv fun a b => by
+ Quotient.congr (K.equivSMul g).toEquiv fun a b => by
dsimp
rw [← Quotient.eq'', ← Quotient.eq'', QuotientGroup.eq', QuotientGroup.eq',
Subgroup.mem_subgroupOf, Subgroup.mem_subgroupOf, ← MulEquiv.map_inv, ← MulEquiv.map_mul,
- Subgroup.equivSmul_apply_coe]
+ Subgroup.equivSMul_apply_coe]
exact Subgroup.smul_mem_pointwise_smul_iff.symm
#align commensurable.quot_conj_equiv Commensurable.quotConjEquiv
@@ -91,7 +91,8 @@ def commensurator' (H : Subgroup G) : Subgroup (ConjAct G) where
carrier := { g : ConjAct G | Commensurable (g • H) H }
one_mem' := by rw [Set.mem_setOf_eq, one_smul]
mul_mem' ha hb := by
- rw [Set.mem_setOf_eq, mul_smul]; exact trans ((commensurable_conj _).mp hb) ha
+ rw [Set.mem_setOf_eq, mul_smul]
+ exact trans ((commensurable_conj _).mp hb) ha
inv_mem' _ := by rwa [Set.mem_setOf_eq, comm, ← commensurable_inv]
#align commensurable.commensurator' Commensurable.commensurator'
The unported dependencies are