Opened 3 years ago

Last modified 2 years ago

#23310 new defect

BooleanPolynomialRings are finite but don't know it.

Reported by: msaaltink Owned by:
Priority: minor Milestone: sage-8.0
Component: algebra Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

sage: B.<a> = BooleanPolynomialRing()
sage: B.is_finite()
False

Yet B only has four elements: 0, 1, a, and 1+a.

Change History (3)

comment:1 Changed 3 years ago by msaaltink

We also have

sage: B.cardinality()
+Infinity

comment:2 Changed 3 years ago by tscrim

I suspect a large number of the problems come from the fact that BooleanPolynomialRing inherits from MPolynomialRing_generic, which makes (natural) assumptions that each variable is free. I'd guess there are probably a number of other methods that suffer from similar fates.

comment:3 Changed 2 years ago by msaaltink

There are a few more problems due to the inheritance. construction looks wrong

sage: B.<a> = BooleanPolynomialRing()
sage: F, Q = B.construction()
sage: F(Q)
Univariate Polynomial Ring in a over Finite Field of size 2 (using NTL)
sage: _ is B
False

as is the Krull dimension, which should be 0

sage: B.krull_dimension()
1

but other methods look OK.

There some errors in the categories B is placed in. For example

sage: B in IntegralDomains
True
sage: a * (1+a)
0

There are zero divisors, so B is certainly not an Integral Domain.

sage: B in PrincipalIdealDomains
True

It is true that all ideals of B are principal, but as it is not a domain it is not a PID.

Note: See TracTickets for help on using tickets.