Remarkable Representations
For a finite group G, a representation is a homomorphism rho: G -> GL(V) for some vector space V. The dimension dim rho = dim V. The fundamental theorem of representation theory relates dimensions...
Problem Statement
This archive keeps the full statement, math, and original media on the page.
In this problem we consider triangles drawn on a hexagonal lattice, where each lattice point in the plane has six neighbouring points equally spaced around it, all distance \(1\) away.
We call a triangle
-
All three vertices and its
incentre lie on lattice points. -
At least of its angles if \(60^\circ \)

Above are four examples of remarkable triangles, with \(60^\circ \) angles illustrated in red. Triangles A and B have inradius \(1\); C has inradius \(\sqrt [3]{3}\); D has inradius \(2\).
Define \(T(r)\) o be the number of remarkable triangles with inradius \(\leq r\). Rotations and reflections, such as triangles A and B above, are counted separately; however direct translations are not. That is, the same triangle drawn in different positions of the lattice is only counted once.
You are give \(T(0.5) = 2\), \(T(2) = 44\) and \(T(10) = 1302\).
Find \(T(10^6)\).
Problem 883: Remarkable Representations
Mathematical Analysis
Theorem 1 (Sum of Squares)
For any finite group with irreducible representations :
Proof. Consider the regular representation . By Maschke’s theorem, decomposes into irreducibles: . Taking dimensions: .
Theorem 2 (Number of Irreducibles)
= number of conjugacy classes of .
Proof. The center of the group algebra has dimension equal to the number of conjugacy classes, and also equal to since the Wedderburn decomposition gives simple summands.
Theorem 3 (Orthogonality Relations)
For irreducible characters :
Theorem 4 (Divisibility)
for each irreducible representation.
Concrete Examples
Cyclic Group
All irreducible representations are 1-dimensional: for .
Check: .
Symmetric Group
, conjugacy classes: . So .
Dimensions: .
Check: .
The character table:
| (trivial) | 1 | 1 | 1 |
| (sign) | 1 | 1 | |
| (standard) | 2 | 0 |
Symmetric Group
, conjugacy classes. Dimensions: .
Check: .
Dihedral Group ( odd)
, conjugacy classes. Dimensions: two 1-dimensional, of dimension 2.
Check: .
Verification Table
| Group | | Dimensions | | Match | |:—|:-:|:—|:-:|:-:| | | 4 | 1,1,1,1 | 4 | Yes | | | 6 | 1,1,2 | 6 | Yes | | | 8 | 1,1,1,1,2 | 8 | Yes | | | 8 | 1,1,1,1,2 | 8 | Yes | | | 12 | 1,1,1,3 | 12 | Yes | | | 24 | 1,1,2,3,3 | 24 | Yes |
Finding All Solutions to
This is equivalent to representing as a sum of perfect squares where each .
Burnside’s Lemma Connection
The number of orbits of a group acting on a set :
This uses the character of the permutation representation, connecting representation theory to counting problems.
Schur Orthogonality (Column Version)
where is the conjugacy class of and means and are conjugate.
Complexity Analysis
| Operation | Time |
|---|---|
| Compute character table | where = conjugacy classes |
| Verify sum of squares | |
| Burnside orbit counting | $O( |
Answer
Code
Each problem page includes the exact C++ and Python source files from the local archive.
/*
* Problem 883: Remarkable Representations
* sum(dim rho_i)^2 = |G| for irreducible representations.
*/
#include <bits/stdc++.h>
using namespace std;
bool verify(int order, vector<int> dims) {
int s = 0;
for (int d : dims) { s += d * d; if (order % d != 0) return false; }
return s == order;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// Known groups
cout << "=== Sum of Squares ===" << endl;
struct Group { string name; int order; vector<int> dims; };
vector<Group> groups = {
{"Z/4", 4, {1,1,1,1}},
{"S_3", 6, {1,1,2}},
{"D_4", 8, {1,1,1,1,2}},
{"Q_8", 8, {1,1,1,1,2}},
{"A_4", 12, {1,1,1,3}},
{"S_4", 24, {1,1,2,3,3}},
{"S_5", 120, {1,1,4,4,5,5,6}},
};
for (auto& g : groups) {
int s = 0;
for (int d : g.dims) s += d * d;
bool ok = verify(g.order, g.dims);
cout << g.name << ": |G|=" << g.order << ", sum=" << s
<< (ok ? " OK" : " FAIL") << endl;
assert(ok);
}
// Dihedral groups
cout << "\n=== Dihedral Groups ===" << endl;
for (int n = 3; n <= 10; n++) {
int order = 2 * n;
vector<int> dims;
if (n % 2 == 1) {
dims = {1, 1};
for (int i = 0; i < (n - 1) / 2; i++) dims.push_back(2);
} else {
dims = {1, 1, 1, 1};
for (int i = 0; i < (n - 2) / 2; i++) dims.push_back(2);
}
int s = 0;
for (int d : dims) s += d * d;
cout << "D_" << n << ": |D|=" << order << ", sum=" << s
<< (s == order ? " OK" : " FAIL") << endl;
assert(s == order);
}
cout << "\nAnswer: sum d_i^2 = |G| (verified for all test groups)" << endl;
return 0;
}
"""
Problem 883: Remarkable Representations
Sum of squares of irreducible representation dimensions equals group order.
"""
from math import gcd
from itertools import product
def verify_sum_of_squares(group_order, dims):
"""Verify sum(d^2) = |G| and each d divides |G|."""
s = sum(d * d for d in dims)
divides = all(group_order % d == 0 for d in dims)
return s == group_order and divides
def cyclic_dims(n):
"""Cyclic group Z/nZ: n representations, all 1-dimensional."""
return [1] * n
def symmetric_dims(n):
"""Known irreducible dimensions for S_n."""
known = {
1: [1], 2: [1, 1], 3: [1, 1, 2],
4: [1, 1, 2, 3, 3], 5: [1, 1, 4, 4, 5, 5, 6]
}
return known.get(n, None)
def dihedral_dims(n):
"""Dihedral group D_n of order 2n."""
if n % 2 == 1: # odd n
return [1, 1] + [2] * ((n - 1) // 2)
else: # even n
return [1, 1, 1, 1] + [2] * ((n - 2) // 2)
def factorials():
return {1: 1, 2: 2, 3: 6, 4: 24, 5: 120, 6: 720}
def find_dim_partitions(n, max_d=None):
"""Find all ways to write n as sum of squares d_i^2 where d_i | n."""
if max_d is None:
max_d = n
divisors = [d for d in range(1, n + 1) if n % d == 0 and d <= max_d]
results = []
def backtrack(remaining, min_d, current):
if remaining == 0:
results.append(tuple(current))
return
for d in divisors:
if d >= min_d and d * d <= remaining:
backtrack(remaining - d * d, d, current + [d])
backtrack(n, 1, [])
return results
# --- Verification ---
print("=== Sum of Squares Verification ===")
groups = [
("Z/4", 4, cyclic_dims(4)),
("Z/6", 6, cyclic_dims(6)),
("S_3", 6, [1, 1, 2]),
("D_4", 8, dihedral_dims(4)),
("Q_8", 8, [1, 1, 1, 1, 2]),
("A_4", 12, [1, 1, 1, 3]),
("S_4", 24, [1, 1, 2, 3, 3]),
]
for name, order, dims in groups:
ok = verify_sum_of_squares(order, dims)
s = sum(d*d for d in dims)
print(f" {name:>4}: |G|={order:>3}, dims={dims}, sum={s}, {'OK' if ok else 'FAIL'}")
assert ok
print("\n=== Dihedral Groups ===")
for n in range(3, 11):
dims = dihedral_dims(n)
order = 2 * n
ok = verify_sum_of_squares(order, dims)
print(f" D_{n}: |D|={order}, dims={dims}, sum={sum(d*d for d in dims)}, {'OK' if ok else 'FAIL'}")
assert ok
print("\n=== Dimension Partitions of 12 ===")
parts = find_dim_partitions(12)
for p in parts:
print(f" {p}: sum of squares = {sum(d*d for d in p)}")
answer = sum(d*d for d in [1, 1, 2, 3, 3])
print(f"\nAnswer: S_4 dimension sum = {answer} = |S_4| = 24")
# --- 4-Panel Visualization ---