# getIsos -- all isomorphisms between two matroids

## Synopsis

• Usage:
getIsos(M, N)
• Inputs:
• M, ,
• N, ,
• Outputs:
• a list, of all isomorphisms between M and N

## Description

This method computes all isomorphisms between M and N: in particular, this method returns an empty list iff M and N are not isomorphic.

To compute only a single isomorphism, use isomorphism. To test if two matroids are isomorphic, use areIsomorphic.

To save space, the isomorphisms are given as lists (as opposed to hash tables). One way to interpret the output of this method is: given two isomorphic matroids, this method returns a permutation representation of the automorphism group of that matroid, inside the symmetric group on the ground set.

 i1 : M = matroid({a,b,c},{{a,b},{a,c}}) o1 = a "matroid" of rank 2 on 3 elements o1 : Matroid i2 : U23 = uniformMatroid(2,3) o2 = a "matroid" of rank 2 on 3 elements o2 : Matroid i3 : getIsos(M, U23) -- not isomorphic o3 = {} o3 : List i4 : getIsos(M, M) o4 = {{0, 1, 2}, {0, 2, 1}} o4 : List i5 : getIsos(U23, U23) -- the full symmetric group S3 o5 = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0}} o5 : List

We can verify that the Fano matroid (the projective plane over the field of two elements) has automorphism group of order 168, and give a permutation representation for this nonabelian simple group (= PGL(3, F_2)) inside the symmetric group S_7:

 i6 : F7 = specificMatroid "fano" o6 = a "matroid" of rank 3 on 7 elements o6 : Matroid i7 : time autF7 = getIsos(F7, F7); -- used 0.0680217 seconds i8 : #autF7 o8 = 168