1 | initial version |
Unfortunately, if you start defining your groups the "normal" way with groups.misc.AdditiveCyclic
, you will not find a way to construct subgroups (at least i did not find any subgroup
method or similar). So, you will have to use permuation groups (they can compute subgroups) wich is already a workaround.
So, let me suggest to work directly with this basic property of cyclic groups:
$\langle i \rangle \subseteq \langle j \rangle$ in $\mathbb{Z}_n$ if, and only if, $gcd(j,n) | gcd(i,n)$ (where $|$ stands for "divides").
Hence, the following code should do the trick:
def gr(n):
G = Graph(n)
for i in range(n):
for j in range(i+1,n):
a,b = gcd(i,n), gcd(j,n)
if (a.divides(b) or b.divides(a)) and a != b:
G.add_edge(i,j)
return G
Then, you can do:
gr(4).plot()