theorem
Hex.PermGroup.LeftTransversal.count
{n : Nat}
{G H : Group n}
(t : LeftTransversal G H)
(h : H.IsSubgroup G)
:
theorem
Hex.PermGroup.LeftTransversal.disjoint
{n : Nat}
{G H : Group n}
(t : LeftTransversal G H)
{i j : Fin t.reps.size}
(hne : i ≠ j)
(p : Perm n)
:
Distinct stored cosets share no permutation, even if H is not normal.
theorem
Hex.PermGroup.Group.exists_transversal
{n : Nat}
(G H : Group n)
:
Nonempty (LeftTransversal G H)
theorem
Hex.PermGroup.Group.coset_count
{n : Nat}
(G H : Group n)
(h : H.IsSubgroup G)
(c : Action.Orbit G (LeftCoset H))
(hc : Action.Orbit.Valid (Action.leftCosets G H) (LeftCoset.mk H (Perm.id n)) c)
:
theorem
Hex.PermGroup.Group.cosetLimit_false
{n : Nat}
(G H : Group n)
(h : H.IsSubgroup G)
(e : (Action.leftCosets G H).OrbitLimit (LeftCoset.mk H (Perm.id n)) (G.index H h))
:
def
Hex.PermGroup.Group.leftTransversal
{n : Nat}
(G H : Group n)
(h : H.IsSubgroup G)
:
LeftTransversal G H
Traverse the coset orbit with precisely the known index as capacity. The public wrapper checks the caller's cap before invoking this helper.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Hex.PermGroup.Group.leftCosetsCapped
{n : Nat}
(cap : Nat)
(G H : Group n)
(h : H.IsSubgroup G)
:
Except SizeLimit (LeftTransversal G H)
Complete deterministic left transversal, or an exact size-limit result before allocation. The representatives need not be canonical across inputs.
Equations
- Hex.PermGroup.Group.leftCosetsCapped cap G H h = if G.index H h ≤ cap then Except.ok (G.leftTransversal H h) else Except.error { required := G.index H h, capacity := cap }
Instances For
theorem
Hex.PermGroup.Group.leftCosetsCapped_ok
{n : Nat}
(cap : Nat)
(G H : Group n)
(h : H.IsSubgroup G)
:
theorem
Hex.PermGroup.Group.leftCosetsCapped_error
{n : Nat}
(cap : Nat)
(G H : Group n)
(h : H.IsSubgroup G)
:
leftCosetsCapped cap G H h = Except.error { required := G.index H h, capacity := cap } ↔ cap < G.index H h