coxeter_automaton/example.py
2023-01-04 22:52:21 +01:00

33 lines
1.0 KiB
Python
Executable File

#!/usr/bin/python
import coxeter_automaton
from pprint import pprint
# the (3, 3, 3) triangle group; or equivalently, the
# equilateral triangle tiling of the Euclidean plane
coxeter_matrix = [[1, 3, 3],
[3, 1, 3],
[3, 3, 1]]
# (2, 3, infinity) triangle group; 0 stands for infinity
# coxeter_matrix = [[1, 0, 3],
# [0, 1, 2],
# [3, 2, 1]]
# coxeter_matrix = [[1, 2, 0, 0, 0, 2],
# [2, 1, 2, 0, 0, 0],
# [0, 2, 1, 2, 0, 0],
# [0, 0, 2, 1, 2, 0],
# [0, 0, 0, 2, 1, 2],
# [2, 0, 0, 0, 2, 1]]
graph = coxeter_automaton.generate_automaton_coxeter_matrix(coxeter_matrix, lex_reduced = False)
graph_shortlex = coxeter_automaton.generate_automaton_coxeter_matrix(coxeter_matrix, lex_reduced = True)
pprint(graph)
# group = coxeter_automaton.enumerate_group(graph, graph_shortlex, 10)
# for each group element g and generator a, print index of a*g
# print([[l.id if l else None for l in g.left] for g in group])