Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/repndecomp/lib/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 12.8.2025 mit Größe 1 kB image not shown  

Quelle  groupsum.gi   Sprache: unbekannt

 
InstallGlobalFunction( GroupSumBSGS, function(G, summand)
    local H, n, chain, groups, m, sum, i, cosets, iso, zero, g, S, right_reps;

    # stab chain computation only works on permutation groups
    iso := IsomorphismPermGroup(G);
    H := Image(iso, G);
    chain := StabChain(H);
    groups := ListStabChain(chain);

    # groups[i] is the stabiliser of the first i-1 points, so
    # groups[1] is H and so on. We start with the last groups[]
    # element, which we have to sum naively, then move to the larger
    # group and so on
    m := Length(groups)-1;

    groups := List([1..m], i -> GroupStabChain(groups[i]));

    # summand(g) might be huge to store in memory, recall the whole
    # point of this is to save memory, so only store one image at most
    zero := Zero(summand(One(G)));

    # We must sum G_m naively, this should be cheap (it's the
    # stabiliser of a "large" set so should be "small")
    sum := Sum(groups[m], g -> summand(PreImage(iso, g)));

    for i in [m-1,m-2..1] do
        # `sum` is the sum for G_{i+1}

        right_reps := RightTransversal(groups[i], groups[i+1]);
        sum := Sum(right_reps, r -> sum * summand(PreImage(iso, r)));

        # now `sum` is the sum for G_i
    od;

    return sum;
end );

[ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet)  ]