Canonical representatives of an arbitrary mathematical equivalence relation. This proof-side construction does not enter the executable block algorithm.
Equations
- Hex.PermGroup.Partition.ofSetoid r = Hex.PermGroup.Partition.ofValues (Hex.Vector.ofFn' fun (x : Fin n) => ⟦x⟧)
Instances For
theorem
Hex.PermGroup.Blocks.class_isBlock
{M : Type u_1}
{X : Type u_2}
[_root_.Group M]
[MulAction M X]
(r : Setoid X)
(hr : ∀ (g : M) (x y : X), r x y ↔ r (g • x) (g • y))
(a : X)
:
MulAction.IsBlock M {x : X | r a x}
An invariant equivalence class is a block in Mathlib's translate-or-disjoint sense, without assuming that the action is transitive.
def
Hex.PermGroup.Blocks.translateSetoid
{M : Type u_1}
{X : Type u_2}
[_root_.Group M]
[MulAction M X]
(B : Set X)
:
Setoid X
Indistinguishability by all translates of a subset is an invariant equivalence relation. For a block, all its points are indistinguishable.
Equations
Instances For
theorem
Hex.PermGroup.Blocks.translate_invariant
{M : Type u_1}
{X : Type u_2}
[_root_.Group M]
[MulAction M X]
(B : Set X)
(g : M)
(x y : X)
:
theorem
Hex.PermGroup.Partition.blockSystem
{n : ℕ}
(p : Partition n)
{G : Group n}
(hp : p.IsInvariant G)
:
Classes of an invariant partition form a Mathlib block system, also for intransitive actions and unequal class sizes.
Mathlib's preprimitivity admits degenerate degrees; the executable primitive convention retains the explicit degree-at-least-two condition.