Changeset 75def9 in git


Ignore:
Timestamp:
Apr 18, 2018, 6:11:34 PM (6 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
458174a01ed388fe1f5bcb6624bc7f13f0223860
Parents:
fba1c3965fbbe8b7c8b52cb5e07338d93c09aab483789eef751cc6cbd6f5106c113ccb43c6af36b0
Message:
Merge branch 'spielwiese' into stable
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • Makefile.am

    rfba1c39 r75def9  
    2020        if test -e $(srcdir)/doc/doc.tbz2; then\
    2121          (cat ${top_srcdir}/doc/doc.tbz2| (cd $(DESTDIR)$(datadir)/singular; tar jxf -));\
    22            -mkdir $(DESTDIR)$(datadir)/info;\
    23            -mkdir $(DESTDIR)$(datadir)/doc;\
     22           mkdir $(DESTDIR)$(datadir)/info;\
     23           mkdir $(DESTDIR)$(datadir)/doc;\
    2424           mv  $(DESTDIR)$(datadir)/singular/singular.hlp  $(DESTDIR)$(datadir)/info/.;\
    2525           mv  $(DESTDIR)$(datadir)/singular/singular.idx  $(DESTDIR)$(datadir)/doc/.;\
  • Singular/LIB/fpaprops.lib

    r83789ee r75def9  
    1818
    1919PROCEDURES:
    20   lpNoetherian(<GB>);     check whether A/<GB> is (left/right) noetherian
     20  lpNoetherian(<GB>);     check whether A/<LM(GB)> is (left/right) Noetherian
    2121  lpIsSemiPrime(<GB>);    check whether A/<LM(GB)> is semi prime
    2222  lpIsPrime(<GB>);        check whether A/<LM(GB)> is prime
     
    3333"USAGE: lpNoetherian(G); G an ideal in a Letterplace ring
    3434RETURN: int
    35 @*      0 not noetherian
    36 @*      1 left noetherian
    37 @*      2 right noetherian
    38 @*      3 noetherian
    39 PURPOSE: Check whether A/<G> is (left/right) noetherian
     35@*      0 not Noetherian
     36@*      1 left Noetherian
     37@*      2 right Noetherian
     38@*      3 Noetherian
     39@*      4 weak Noetherian
     40PURPOSE: Check whether the monomial algebra A/<LM(G)> is (left/right) noetherian
    4041ASSUME: - basering is a Letterplace ring
    4142@*      - G is a Groebner basis
     43THEORY: lpNoetherian works with the monomial algebra A/<LM(G)>.
     44If it gives an affirmative answer for one of the properties, then it
     45holds for both A/<LM(G)> and A/<G>. However, a negative answer applies
     46only to A/<LM(G)> and not necessarily to A/<G>.
     47NOTE: Weak Noetherian means that two-sided ideals in A/<LM(G)> satisfy
     48the acc (ascending chain condition).
    4249"
    4350{
     
    9198  intvec visited;
    9299  visited[ncols(UG)] = 0;
    93   int inFlag, outFlag;
     100  int inFlag, outFlag, inOutFlag;
    94101  for (int v = 1; v <= ncols(UG) && (inFlag + outFlag) != 3; v++) {
    95     int inOutFlags = inOrOutCommingEdgeInCycle(UG, v, visited, 0);
     102    int inOutFlags = inOutCommingEdgesInCycles(UG, v, visited, 0);
    96103    if (inOutFlags == 1) {
    97104      inFlag = 1;
    98105    }
    99106    if (inOutFlags == 2) {
    100       outFlag = 2;
     107      outFlag = 1;
    101108    }
    102109    if (inOutFlags == 3) {
    103110      inFlag = 1;
    104       outFlag = 2;
     111      outFlag = 1;
     112    }
     113    if (inOutFlags == 4) {
     114      inOutFlag = 1;
     115    }
     116    if (inOutFlags == 5) {
     117      inFlag = 1;
     118      inOutFlag = 1;
     119    }
     120    if (inOutFlags == 6) {
     121      outFlag = 1;
     122      inOutFlag = 1;
     123    }
     124    if (inOutFlags == 7) {
     125      inFlag = 1;
     126      outFlag = 1;
     127      inOutFlag = 1;
    105128    }
    106129    kill inOutFlags;
    107130  } kill v;
    108   return (3 - inFlag - outFlag);
     131  int noetherian = 3 - 1*inFlag - 2*outFlag;
     132  if (noetherian == 0) {
     133    return (4 - 4*inOutFlag); // weak noetherian
     134  }
     135  return (noetherian);
    109136}
    110137example
     
    118145}
    119146
    120 static proc inOrOutCommingEdgeInCycle(intmat G, int v, intvec visited, intvec path) {
     147static proc inOutCommingEdgesInCycles(intmat G, int v, intvec visited, intvec path) {
    121148  // Mark the current vertex as visited
    122149  visited[v] = 1;
     
    129156  }
    130157
    131   int inFlag, outFlag;
     158  int inFlag, outFlag, inOutFlag;
    132159
    133160  for (int w = 1; w <= ncols(G) && (inFlag + outFlag) != 3; w++) {
    134161    if (G[v,w] == 1) {
    135       if (visited[w] == 1) {
    136         // new cycle
    137         if (v == w) {
     162      if (visited[w] == 1) { // new cycle
     163        int tmpInFlag;
     164        int tmpOutFlag;
     165        if (v == w) { // cycle is a loop
    138166          for (int u = 1; u <= ncols(G); u++) {
    139167            if (G[v,u] && u != v) {
    140               outFlag = 2;
     168              outFlag = 1;
     169              tmpOutFlag = 1;
    141170            }
    142171            if (G[u,v] && u != v) {
    143172              inFlag = 1;
     173              tmpInFlag = 1;
    144174            }
    145175          } kill u;
     
    151181                if (path[i] != v) {
    152182                  if (u != path[i+1]) { // and u is not the next element in the cycle
    153                     outFlag = 2;
     183                    outFlag = 1;
     184                    tmpOutFlag = 1;
    154185                  }
    155186                } else {
    156187                  if (u != w) {
    157                     outFlag = 2;
     188                    outFlag = 1;
     189                    tmpOutFlag = 1;
    158190                  }
    159191                }
     
    163195                  if (u != path[i-1]) { // and u is not the previous element in the cylce
    164196                    inFlag = 1;
     197                    tmpInFlag = 1;
    165198                  }
    166199                } else {
    167200                  if (u != v) {
    168201                    inFlag = 1;
     202                    tmpInFlag = 1;
    169203                  }
    170204                }
     
    176210          } kill i;
    177211        }
     212        if (tmpInFlag > 0 && tmpOutFlag > 0) {
     213          // there are both in and outcomming edges in this cycle
     214          inOutFlag = 1;
     215        }
     216        kill tmpInFlag;
     217        kill tmpOutFlag;
    178218      } else {
    179         int inOutFlags = inOrOutCommingEdgeInCycle(G, w, visited, path);
     219        int inOutFlags = inOutCommingEdgesInCycles(G, w, visited, path);
    180220        if (inOutFlags == 1) {
    181221          inFlag = 1;
    182222        }
    183223        if (inOutFlags == 2) {
    184           outFlag = 2;
     224          outFlag = 1;
    185225        }
    186226        if (inOutFlags == 3) {
    187227          inFlag = 1;
    188           outFlag = 2;
     228          outFlag = 1;
     229        }
     230        if (inOutFlags == 4) {
     231          inOutFlag = 1;
     232        }
     233        if (inOutFlags == 5) {
     234          inFlag = 1;
     235          inOutFlag = 1;
     236        }
     237        if (inOutFlags == 6) {
     238          outFlag = 1;
     239          inOutFlag = 1;
     240        }
     241        if (inOutFlags == 7) {
     242          inFlag = 1;
     243          outFlag = 1;
     244          inOutFlag = 1;
    189245        }
    190246        kill inOutFlags;
     
    193249  } kill w;
    194250
    195   return (inFlag + outFlag);
     251  return (1*inFlag + 2*outFlag + 4*inOutFlag);
    196252}
    197253
     
    202258ASSUME: - basering is a Letterplace ring
    203259      - G is a Groebner basis
     260THEORY: lpIsSemiPrime works with the monomial algebra A/<LM(G)>.
     261A positive answer holds for both A/<LM(G)> and A/<G>, while
     262a negative answer applies only to A/<LM(G)> and not necessarily to
     263A/<G>.
    204264"
    205265{
     
    303363ASSUME: - basering is a Letterplace ring
    304364      - G is a Groebner basis
     365THEORY: lpIsPrime works with the monomial algebra A/<LM(G)>.
     366A positive answer holds for both A/<LM(G)> and A/<G>, while
     367a negative answer applies only to A/<LM(G)> and not necessarily to A/<G>.
    305368"
    306369{
  • Singular/iparith.cc

    rfba1c39 r75def9  
    47144714    return TRUE;
    47154715  }
     4716  if (rField_is_numeric(currRing))
     4717    WarnS("groebner base computations with inexact coefficients can not be trusted due to rounding errors");
    47164718  intvec *w=(intvec *)atGet(u,"isHomog",INTVEC_CMD);
    47174719  // tHomog hom=testHomog;
     
    48204822static BOOLEAN jjSTD(leftv res, leftv v)
    48214823{
     4824  if (rField_is_numeric(currRing))
     4825    WarnS("groebner base computations with inexact coefficients can not be trusted due to rounding errors");
    48224826  ideal result;
    48234827  ideal v_id=(ideal)v->Data();
  • Tst/Short/bug_solve.res.gz.uu

    rfba1c39 r75def9  
    11begin 640 bug_solve.res.gz
    2 M'XL(")<F5UH"`V)U9U]S;VQV92YR97,`G5/+;MLP$+SK*P9!@4B)+$=R[*8R
    3 MHD/;BX&@!>P`/01Q0$N4O:A,&B)E2_GZDK0CIX]3>>%J'[,[0^WB\>OL&X`X
    4 MP\/L,RZTTE%%JXNIMSA%D@S&^4*"M!],/7LCR[!JUB]*5GL>"7Z(E&:ZKQAE
    5 MZ.W;",,A7")*6:,FL58XD-X@E]M=Q5OD9=2GCZ/C&$?DWP>99*X:->[?:D/X
    6 M;=@%(8K=.>]C!BHXJS`SB;[?#L;!57<=3X+A*`G1+9-!NQP-QE?M(+XY5]UE
    7 M*'B)^;UK[<\,U1^L%J9ABI+E6M;TRC1)@2WKC(<J[RE^3CU3ZNZ)LQ)C#>*)
    8 MYXRW4-R';CW/J''I6EPBKSG3O`!SO$*0P&%#^<8X*E(:B^\/D"5$LUWQ6L'7
    9 M&]Z+9B`:.XT*+"(I*#,A+R+[]2C!\IPK!5OAH`S,7Y4A=+?C\*ET>8)M.>8X
    10 M,`6F%*T%+RR8EBY:<]W4`GM6-3QPU-Q17+LWF4_MM-/SNW_*_HS]EUPGN/@F
    11 M,S!VG%SRLJ2<N-`J-5.QZHF>_1.W]`X%K4D;:JPHR+(TO\&;,QCZM$RN8Z?8
    12 M452KRYX9;5,DUGLZJTKF/^U2&+^L"^YH5+MW&>>3.N&4-5MT_P!)WH-\Z1G%
    13 9YR6)D\BMF%VB1OEQ,/W@_0(@Z:JTF`,`````
     2M'XL("`U/UUH"`V)U9U]S;VQV92YR97,`G5-=;]HP%'W/KSBJ)C6A$)I06`=J
     3M'K:](%6;!)7V4)7*26[`6K"1[4#HKY]M*+"/I_G%U_?C^)QKW_G3U^DW`$F&
     4MQ^EG7!EMXIKG5Y-@?HRD&:SSE0MNPF@2N!U9AKQ9OFI9;RD6M(NU8>94,<AP
     5MLN]B]/OPB:BD@N)BJ;'C9H5"KC<UM2BJ^)0^C`\T#LB_$QEEOAH*#^^U781M
     6M=Q]U46[.>1\S\))8C:E-#,.V-XPZ^YMD%/4':1?[1=IK%X/>L-/VDMMSU7V&
     7MDBK,'OS5X=1*M<0['2R5I%R00LXT^8L;*Y9+<93!!;6L,#9"5<4+3L)H%$Q`
     8M2(.<8%2C#94H&VM+*-F(TLD@I:32P0^FA#V.45D0J?B;Q\::[:V'U\%S\C(.
     9M+#^_C[R56JN7C`)OO(>24^@N<,ROO8YK%(J8NY[YYG4M7>Q6O%A91\VUP?S[
     10M(V0%T:QS4AJA6='I92Q$XY5&#I%K:,N0RMB=GB1849#6<!4>RL+\5=F%V6\(
     11M(:]\GF!KP@P[IL&TYDM!I0.S?7%11:91`EM6-Q1Y:7YI,O[A9Q/'=G+^7)^R
     12M/V/_U:XC7'*;61A'Y_(IQY85JY_Y2WC4-KY'R9?<6&FL++E3:?_:NS/JAWR1
     13MWB2^8X>FNKYLF>WM&*GS'E=>R^*GFSSKEZHD+Z/>7&2<U]@W3CNSQ?X?(.DE
     14=R)>3HN0\B4D:^SEVD]KH,(DF'X)?*.E(T_T#````
    1415`
    1516end
  • Tst/Short/bug_solve.stat

    rfba1c39 r75def9  
    1 1 >> tst_memory_0 :: 1515660951:4104, 64 bit:4.1.0:x86_64-Linux:nepomuck:195744
    2 1 >> tst_memory_1 :: 1515660951:4104, 64 bit:4.1.0:x86_64-Linux:nepomuck:2215936
    3 1 >> tst_memory_2 :: 1515660951:4104, 64 bit:4.1.0:x86_64-Linux:nepomuck:2215936
    4 1 >> tst_timer_1 :: 1515660951:4104, 64 bit:4.1.0:x86_64-Linux:nepomuck:4
     11 >> tst_memory_0 :: 1524059917:4110, 64 bit:4.1.1:x86_64-Linux:nepomuck:195744
     21 >> tst_memory_1 :: 1524059917:4110, 64 bit:4.1.1:x86_64-Linux:nepomuck:2215936
     31 >> tst_memory_2 :: 1524059917:4110, 64 bit:4.1.1:x86_64-Linux:nepomuck:2215936
     41 >> tst_timer_1 :: 1524059917:4110, 64 bit:4.1.1:x86_64-Linux:nepomuck:4
Note: See TracChangeset for help on using the changeset viewer.