Clear(); Print ("Beginning demo program: test_2_6.txt\n\n"); Print ("This demonstrates the use of the following procedures:\n"); Print (" AutImages( group, elements ) \n"); Print (" MaxValueOnSets( right_reg, aut_img, subset ) \n"); Print (" MaxValueOnTuples( right_reg, aut_img, subset ) \n"); Print (" ReduceSets( right_reg, aut_img, soln , printflag) \n"); Print (" ReduceTuples( right_reg, aut_img, partition, soln, printflag ) \n\n"); Sleep(5); # Let's test some automorphisms, now # Let's begin with C8, and the subset x + x^3 group := SmallGroup(8,1); subset := [2,5]; list := AutImages( group, Elements(group) ); right_reg := list[1]; aut_grp := list[2]; aut_img := list[3]; Print (" Okay, it's important to first capture the AutImages of\n"); Print ("groups that we use. Let's look at C8, with the subset\n"); Print ("x + x^3.\n\n"); Print (" group := SmallGroup(8,1);;\n"); Print (" subset := [2,5];;\n"); Print (" list := AutImages( group, Elements(group) );;\n"); Print (" right_reg := list[1];;\n"); Print (" aut_grp := list[2];;\n"); Print (" aut_img := list[3];;\n\n"); Sleep(8); max := MaxValueOnSets(right_reg, aut_img, subset); Print (" Now we can look at a maximal representative of 'subset'\n"); Print ("in its equivalence class.\n"); Print (" max := MaxValueOnSets(right_reg, aut_img, subset);\n\n"); Print (max, "\n\n"); Sleep(8); # Now let's compare some things that are shift equivalent # and some that are automorphically equivalent, and some # that are neither... shift_subset := [3,4]; # x^2 + x^4 aut_subset := [6,8]; # x^5 + x^7 ineq_subset := [3,7]; # x^2 + x^6 max_s := MaxValueOnSets(right_reg, aut_img, shift_subset); max_a := MaxValueOnSets(right_reg, aut_img, aut_subset); max_i := MaxValueOnSets(right_reg, aut_img, ineq_subset); Print (" Now let's compare some things that are shift equivalent\n"); Print ("and some that are automorphically equivalent, and some that\n"); Print ("are neither...\n\n"); Print (" shift_subset := [3,4];; # x^2 + x^4\n"); Print (" aut_subset := [6,8];; # x^5 + x^7\n"); Print (" ineq_subset := [3,7];; # x^2 + x^6\n\n"); Sleep(8); Print (" max_s := MaxValueOnSets(right_reg, aut_img, shift_subset);\n"); Print (max_s, "\n\n"); Sleep(3); Print (" max_a := MaxValueOnSets(right_reg, aut_img, aut_subset);\n"); Print (max_a, "\n\n"); Sleep(3); Print (" max_i := MaxValueOnSets(right_reg, aut_img, ineq_subset);\n"); Print (max_i, "\n\n\n"); Sleep(3); # Okay, same thing with tuples... subset := [2, 5, 5]; max := MaxValueOnTuples(right_reg, aut_img, subset); Print ("Let's try the same things with tuples:\n"); Print (" subset := [2, 5, 5];; # x + 2*x^3\n"); Print (" max := MaxValueOnTuples(right_reg, aut_img, subset)\n\n"); Print (max, "\n\n"); Sleep(5); # Now let's see the entire equivalence class ec := EquivalenceClass(right_reg, aut_img, subset); Print ("Now let's see the entire equivalence class:\n"); Print (" ec := EquivalenceClass(right_reg, aut_img, subset);\n\n"); Print (ec, "\n\n"); Sleep(5); # Okay, time to try to reduce some sets list := [ [2,5], [3,4], [6,8], [3,7] ]; reducedlist := ReduceSets( right_reg, aut_img, list, 0); Print ("Okay, time to try to reduce some sets.\n"); Print (" list := [ [2,5], [3,4], [6,8], [3,7] ];;\n"); Print (" reducedlist := ReduceSets( right_reg, aut_img, list, 0);\n\n"); Print (reducedlist, "\n\n"); Sleep(8); # Maybe now we can reduce some tuples? partition := [ [5,1], [6,2], [7,3], [8,4] ]; soln := [ [1,1,2], [2,2,3], [1,3,4] ]; rt := ReduceTuples(right_reg, aut_img, partition, soln, 0); Print ("Suppose now that I have a partition of C8:\n"); Print (" partition := [ [5,1], [6,2], [7,3], [8,4] ];;\n\n"); Sleep(3); Print (" These are actually cosets of the normal subgroup\n"); Print ("generated by x^2.\n"); Print (" So now my tuples are actually representative of cosets.\n"); Print ("However, the elements represent the index of the coset.\n"); Print ("That is, the element [1,1,2] means that we have two copies\n"); Print ("of the first coset, [5,1], and one copy of the second, [6,2].\n\n"); Sleep(8); Print (" soln := [ [1,1,2], [2,2,3], [1,3,4] ];;\n"); Print (" rt := ReduceTuples(right_reg, aut_img, partition, soln, 0);\n"); Print (rt, "\n\n");