Clear(); Print ("Beginning demo program: test_2_4.txt\n\n"); Print ("This demonstrates the use of the following procedures:\n"); Print (" SubgroupIncidenceMatrix( order, group_id ) \n"); Print (" MaxChains( mat, allchains ) \n"); Print (" MaxSubgroupChains( mat, subgroup ) \n\n"); Sleep(5); # let's create some chains of subgroups # Begin with the dihedral group on 8 elements mat := SubgroupIncidenceMatrix(8, 3); Print (" Let's create some chains of subgroups. Remember that the\n"); Print ("dihedral group on 8 elements is SmallGroup(8,3). So...\n"); Print (" mat := SubgroupIncidenceMatrix(8,3);\n\n"); PrintArray (mat); Print ("\n\n"); Sleep(10); Print (" This is a partial ordering showing which normal subgroups\n"); Print ("are within others. Remember: Rows are strictly contained in\n"); Print ("columns. Thus NormalSubgroup 1, which is trivial, is in\n"); Print ("every normal subgroup except itself.\n\n\n"); Sleep(10); chains := MaxChains( mat ); Print ("So what are the longest chains of subgroups?\n"); Print (" chains := MaxChains( mat );\n\n"); Print (chains, "\n\n"); Sleep(8); # so the chain [1,2,3,6] is saying: # n[1] < n[2] < n[3] < n[6] g := SmallGroup(8,3); n := NormalSubgroups(g); Print (" g := SmallGroup(8,3);;\n"); Print (" n := NormalSubgroups( group );;\n\n"); Print ("So the chain [1,2,3,6] is saying:\n"); Print (" n[1] < n[2] < n[3] < n[6] \n\n"); Sleep(5); Print ("n[1] < n[2]?\n", IsSubgroup(n[2], n[1]), "\n"); Print ("n[2] < n[3]?\n", IsSubgroup(n[3], n[2]), "\n"); Print ("n[3] < n[6]?\n", IsSubgroup(n[6], n[3]), "\n\n"); Sleep(8); # And let's find out what chains have the derived subgroup # in them. mychains := MaxSubgroupChains( mat, 2 ); Print ("Let's find which maximal chains contain the derived subgroup.\n"); Print ("We happen to know that the derived subgroup is the second\n"); Print ("normal subgroup.\n"); Print (" mychains := MaxSubgroupChains( mat, 2 );\n\n"); Print (mychains, "\n\n");