This method should of course always return ``True``, unless
this algebra was constructed with ``check_axioms=False`` and
- passed an invalid multiplication table.
+ passed an invalid Jordan or inner-product.
"""
# Used to check whether or not something is zero in an inexact
....: for j in range(n-1) ]
sage: actual == expected
True
+
"""
def __init__(self, B, **kwargs):
- if not B.is_positive_definite():
- raise ValueError("bilinear form is not positive-definite")
+ # The matrix "B" is supplied by the user in most cases,
+ # so it makes sense to check whether or not its positive-
+ # definite unless we are specifically asked not to...
+ if ("check_axioms" not in kwargs) or kwargs["check_axioms"]:
+ if not B.is_positive_definite():
+ raise ValueError("bilinear form is not positive-definite")
+
+ # However, all of the other data for this EJA is computed
+ # by us in manner that guarantees the axioms are
+ # satisfied. So, again, unless we are specifically asked to
+ # verify things, we'll skip the rest of the checks.
+ if "check_axioms" not in kwargs: kwargs["check_axioms"] = False
def inner_product(x,y):
return (y.T*B*x)[0,0]
xbar = x[1:,0]
y0 = y[0,0]
ybar = y[1:,0]
- z0 = (y.T*x)[0,0]
+ z0 = inner_product(y,x)
zbar = y0*xbar + x0*ybar
- return P([0] + zbar.list())
-
- # We know this is a valid EJA, but will double-check
- # if the user passes check_axioms=True.
- if "check_axioms" not in kwargs: kwargs["check_axioms"] = False
+ return P([z0] + zbar.list())
n = B.nrows()
column_basis = tuple( b.column() for b in FreeModule(ZZ, n).basis() )