Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#96 closed bug (fixed)

NF removes zeroes (at least in super commutative rings)

Reported by: Simon King Owned by: Oleksandr
Priority: major Milestone: Release 3-1-0
Component: dontKnow Version:
Keywords: NF, zero ideal Cc:

Description

I think the following behaviour of the CVS version is a bug:

> LIB "ncall.lib";
...
> ring r = 3,(a,b,c,d),wp(1,1,2,2);
> def R = SuperCommutative(1,2);
> setring R;
> ideal I = ab,b;
> NF(I*b,0);
// ** _ is no standard basis
_[1]=0

Correct output would be

> NF(I*b,0);
// ** _ is no standard basis
_[1]=0
_[2]=0

Change History (6)

comment:1 Changed 14 years ago by Simon King

It is even worse:

> NF(ideal(0,a,0,0,0),std(b));
_[1]=a

I am sure that this behaviour breaks a lot of code!

comment:2 Changed 14 years ago by hannes

Owner: changed from hannes to Oleksandr

comment:3 Changed 14 years ago by Oleksandr

Status: newassigned

Thanks.

This seems to happen in SCA only...

comment:4 Changed 14 years ago by Oleksandr

Resolution: fixed
Status: assignedclosed

The point is that for SCA one has to kill all zero-squares in input explicitly before starting real computations in NF/std/syz/interreduce etc, thus there may appear zeroes, skipping which is usually welcomed by std/syz/interreduce. Alas, not by NF... Fixed.

comment:5 Changed 14 years ago by hannes

Not true: NF, syz cannot live with omitted entries. All others (std, interred): omitted entries are tolerated, but not needed

  • this simply adds an additional memory reallocation:

=> id_KillSquares should never call idSkipZeroes

comment:6 Changed 14 years ago by Oleksandr

Ok, i changed id_KillSquares so that by default it will not call idSkipZeroes.

Note: See TracTickets for help on using tickets.