Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  frobenius-extra-4ti2gap.gi   Sprache: Shell

 

#############################################################################
##
#W  frobenius-extra-4ti2gap.gi        Ignacio Ojeda <mdelgado@fc.up.pt>
#W                                    Carlos Jesús Moreno Ávila <camorenoa@alumnos.unex.es>
#W                                    Manuel Delgado <mdelgado@fc.up.pt>
#W                                    Pedro Garcia-Sanchez <pedro@ugr.es>
##
#Y  Copyright 2015-- Universidad de Extremadura and Universidad de Granada, Spain
#############################################################################

#############################################################################
##
#F  FrobeniusNumber(s)
##
##  Computes the Frobenius Number of the numerical semigroup <s>.
##
##  The definition of Frobenius Number can be found in
##  the book
##   - Rosales, J. C.; García-Sánchez, P. A. Numerical semigroups.
##     Developments in Mathematics, 20. Springer, New York, 2009.
##  The main algorithm used appears in
##   - Roune, B.H. The slice algorithm for irreducible decomposition of
##     monomial ideals.J. Symbolic Comput. 44 (2009), no. 4, 358–381.
##
##   REQUERIMENTS: 4ti2Interface
#############################################################################
InstallMethod(FrobeniusNumber,
    "method using 4ti2 for the calculaction of the Frobenius number",
    [IsNumericalSemigroup],60,
    function( S )
    local v, n, M, msm, MonomialIdeal, MaximalStandardMonomials,  BelongsToMonomialIdeal, MinimalGeneratingSystemOfMonomialIdeal, QuotientOfMonomialIdealByMonomial;

    Info(InfoNumSgps,2,"Using 4ti2gap for the calculation of the Frobenius number");
    MonomialIdeal := function(v)
        local n, I, M, E, upperbound, C, m, L, ap, i;
        n := Length(v);
        I := GroebnerBasis4ti2( [v], [v] );
        I := I{[1 .. Length(I)]}{[2 .. n]};
        M := [];
        for i in I do
          Add(M,List(i,x->Maximum(x,0)));
        od;
        return M;
    end;

    MinimalGeneratingSystemOfMonomialIdeal := function(M)
        return Filtered(M, m->not(BelongsToMonomialIdeal(Difference(M,[m]),m)));
    end;

    BelongsToMonomialIdeal := function(M,m)
        return ForAny(M, x->ForAll(m-x, y -> y>=0));
    end;

    QuotientOfMonomialIdealByMonomial := function(M,m)
        local n,quotient,f,g;
        n := Length(m);
        quotient := [];
        for f in M do
            g := List(f-m, x->Maximum(x,0));
            if IsZero(g) then
                return [g];
            fi;
            Add(quotient,g);
        od;
        return quotient;
    end;

    MaximalStandardMonomials := function(M,S,p,i,msm)
        local n, C, q, M1, S1,tr;

        tr:=function(v)
          return List(v-1, x->Maximum(x,0));
        end;
        n := Length(M[1]);
        M := MinimalGeneratingSystemOfMonomialIdeal(M);
        if ForAll(Sum(M), x->x=1) then
            Add(msm,p);
            return msm;
        fi;
        q:=First(M{[i..Length(M)]}, qq->not(IsZero(tr(qq)) or BelongsToMonomialIdeal(S,tr(qq))));
        if q<>fail then
          q:=tr(q);
          M1 := QuotientOfMonomialIdealByMonomial(M,q);
          S1 := QuotientOfMonomialIdealByMonomial(S,q);
          msm := MaximalStandardMonomials(M1,MinimalGeneratingSystemOfMonomialIdeal(S1),p+q,1,msm);
          Add(S,q);
          i:=i+1;
          msm := MaximalStandardMonomials(M,MinimalGeneratingSystemOfMonomialIdeal(S),p,i,msm);
          return msm;
        fi;
        return msm;
    end;

    v := MinimalGeneratingSystemOfNumericalSemigroup(S);
    n := Length(v);
    M := MonomialIdeal(v);
    msm := MaximalStandardMonomials(M,[],Zero([1 .. n-1]),1,[]);
    return Maximum(msm*v{[2 .. Length(v)]})-v[1]; #return maximum S-degree - v_1
end);

#############################################################################
##
#F  AperyList(s)
##
##  Computes the Apery set of the numerical semigroup <s> with respect to
##  the multiplicit of <s>
##
##  The definition of Apery set can be found in
##  the book
##   - Rosales, J. C.; García-Sánchez, P. A. Numerical semigroups.
##     Developments in Mathematics, 20. Springer, New York, 2009.
##  The main algorithm used appears in
##   - Roune, B.H. The slice algorithm for irreducible decomposition of
##     monomial ideals.J. Symbolic Comput. 44 (2009), no. 4, 358–381.
##
##   REQUERIMENTS: 4ti2Interface
#############################################################################

InstallMethod(AperyList,
    "method using 4ti2 for the calculaction of the Apery set",
    [IsNumericalSemigroup],60,
    function( S )
    local v, n, M, msm, c, L, MonomialIdeal, MaximalStandardMonomials, BelongsToMonomialIdeal, MinimalGeneratingSystemOfMonomialIdeal, QuotientOfMonomialIdealByMonomial, LatticePointsInBoxGivenByDiagonal;

    Info(InfoNumSgps,2,"Using 4ti2gap for the calculation of the Apery set");

    MonomialIdeal := function(v)
        local n, I, M, E, upperbound, C, m, L, ap, i;
        n := Length(v);
        I := GroebnerBasis4ti2([v], [v] );
        I := I{[1 .. Length(I)]}{[2 .. n]};
        M := [];
        for i in I do
          Add(M,List(i,x->Maximum(x,0)));
        od;
        return M;
    end;

    MinimalGeneratingSystemOfMonomialIdeal := function(M)
        return Filtered(M, m->not(BelongsToMonomialIdeal(Difference(M,[m]),m)));
    end;

    BelongsToMonomialIdeal := function(M,m)
        return ForAny(M, x->ForAll(m-x, y -> y>=0));
    end;

    QuotientOfMonomialIdealByMonomial := function(M,m)
        local n,quotient,f,g;
        n := Length(m);
        quotient := [];
        for f in M do
            g := List(f-m, x->Maximum(x,0));
            if IsZero(g) then
                return [g];
            fi;
            Add(quotient,g);
        od;
        return quotient;
    end;

    MaximalStandardMonomials := function(M,S,p,i,msm)
        local n, C, q, M1, S1,tr;

        tr:=function(v)
          return List(v-1, x->Maximum(x,0));
        end;
        n := Length(M[1]);
        M := MinimalGeneratingSystemOfMonomialIdeal(M);
        if ForAll(Sum(M), x->x=1) then
            Add(msm,p);
            return msm;
        fi;
        q:=First(M{[i..Length(M)]}, qq->not(IsZero(tr(qq)) or BelongsToMonomialIdeal(S,tr(qq))));
        if q<>fail then
          q:=tr(q);
          M1 := QuotientOfMonomialIdealByMonomial(M,q);
          S1 := QuotientOfMonomialIdealByMonomial(S,q);
          msm := MaximalStandardMonomials(M1,MinimalGeneratingSystemOfMonomialIdeal(S1),p+q,1,msm);
          Add(S,q);
          i:=i+1;
          msm := MaximalStandardMonomials(M,MinimalGeneratingSystemOfMonomialIdeal(S),p,i,msm);
          return msm;
        fi;
        return msm;
    end;

    LatticePointsInBoxGivenByDiagonal := function( lowerconer, uppercorner )
        local V,i;
        V := [];
        for i in [1 .. Length(lowerconer)] do
            Add(V,[lowerconer[i] .. uppercorner[i]]);
        od;
        return Cartesian(V);
    end;

    v := MinimalGeneratingSystemOfNumericalSemigroup(S);
    n := Length(v);
    M := MonomialIdeal(v);
    msm := MaximalStandardMonomials(M,[],Zero([1 .. n-1]),1,[]);
    L := [];
    for c in msm do
        L := Union(L,LatticePointsInBoxGivenByDiagonal(Zero([1 .. n-1]),c));
    od;
    L:= L*v{[2 .. Length(v)]};
    return List([0..v[1]-1], i->First(L, y->(y-i) mod v[1]=0));
end);

Messung V0.5 in Prozent
C=80 H=80 G=80

¤ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet am  2026-10-11) ¤

*© Formatika GbR, Deutschland






Entwurf

Ziele

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Ergonomie der
Schnittstellen

Diese beiden folgenden Angebotsgruppen bietet das Unternehmen

Angebot

Hier finden Sie eine Liste der Produkte des Unternehmens






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1128594
#Domains=1976912