Waldek Hebisch <[EMAIL PROTECTED]> writes:

> Martin Rubey wrote:
> > 
> > Martin Rubey <[EMAIL PROTECTED]> writes:
> > 
> > > Waldek Hebisch <[EMAIL PROTECTED]> writes:
> > > 
> > > > I am now cleaning patch changing attributes to categories.  AFAICS
> > > > the following attributes are essentially unused:
> > > > 
> > > > leftUnitary
> > > > rightUnitary
> > > > NullSquare
> > > > JacobiIdentity
> > > > infinite
> > > > noetherian
> > > > central
> > > > unitsKnown
> > > > canonicalsClosed
> > > > canonical
> > > > 
> > > > By essentially unused I mean that they are only defined and not
> > > > used or are used only in its own definition or definition of
> > > > another essentially unused attribute.
> > > > 
> > > > Most of then look like mostly unimplemented.  Also, most of them
> > > > does not look really useful.  I am tempted to remove to first 7 of
> > > > them.  The last 3 look like they may be of some use so ATM it
> > > > is not clear what to do with them.
> > > 
> > > I agree.
> > 
> > Oops, sorry, I changed my mind.  I thought they would only appear in attreg,
> > but they don't: they document an attempt to encode more mathematical 
> > knowledge
> > in the algebra.
> > 
> > If it's not more work, please leave them in (replacing them with empty
> > categories).  Possibly one can use them at some point.
> >
> 
> My impression is that if you want to codify more mathematical knowledge,
> then it is better to start from scratch -- simply the information
> is _very_ incomplete and ad hoc.  For example the only noetherian
> rings are Integer and SingleInteger.  Also, arguably some attributes
> just duplicate what is already implied by categories domain.  For
> example the attribute JacobiIdentity really does not add information
> to LieAlgebra (point is that word JacobiIdentity does not add information,
> if we could add corresponding equation in machine usable form then we would
> gain).
> 
> Anyway, I do not have strong opinion either way, just thoght that
> removing them would make algebra a little more tidy.

OK, then remove them.

> > I do think, however, that the "canonical" attributes are either badly
> > documented or exported by mistake.  For example:
> > 
> >   canonicalUnitNormal
> >     ++ \spad{canonicalUnitNormal} is true if we can choose a canonical
> >     ++ representative for each class of associate elements, that is
> >     ++ \spad{associates?(a,b)} returns true if and only if 
> >     ++ \spad{unitCanonical(a) = unitCanonical(b)}.
> > 
> > 
> > and in Field (!) we have:
> > 
> >       canonicalUnitNormal  ++ either 0 or 1.
> >       canonicalsClosed     ++ since \spad{0*0=0}, \spad{1*1=1}
> > 
> > 
> > But this seems wrong to me, since EXPR INT is a Field (and I think this is
> > correct if we look at expressions as functions), but we cannot decide 
> > whether
> > something is identically zero.
> > 
> 
> Well, in Field we have:
> 
>   unitCanonical(x) == if zero? x then x else 1
>   ...
>   x / y == (zero? y => error "catdef: division by zero"; x * inv(y))
> 
> Now, if operations are supposed to return correct answers, than 
> Expression Integer is not a Field.  

Well, I thought that Field is "mathematical", and EXPR INT tries to be a
field...

> If operation just make "best effort" to be correct, but may return wrong
> result, than we need some extra logic to state when result is really supposed
> to be correct.

Exactly.  And I would have thought that canonicalUnitNormal is such "extra
logic", and since EXPR INT violates it, it shouldn't have it.  Do I
misunderstand?

> Now concering canonical: it has well established meaning in the
> literature, namely to each element has unique representation
> (in other words mathematical equality implies data structure equality).
> So if domain has canonical, then equality must be decidable and
> presumably our equality is supposed to give correct result.  In
> fact I would say that if we allow any incorrect operation in
> a domain which has canonical, than canonical would become
> meaningless.

Yes, we agree.  In fact, even canonical is implemented only very badly, at
least if HyperDoc is correct.  I would have thought that, for example, SUP R
should have canonical, if R has.

> One can think of canonicalUnitNormal as variant of canonical,
> than we should assert it only when zero testing gives
> correct answers.  Knowing if zero testing works probably
> needs extra attribute.

Yes, "zero? is correct" would be a prerequesite for canonicalUnitNormal.
 
> Coming back to our attributes: canonicalUnitNormal nicely illustates that
> most of attributes is ill-defined.  Namely, we have mathematical properties
> which are true or false regardless of our imperfect implementation and we
> have properties of implemention.  For example, building Lie algebra starting
> from matrices over Expression Integer will give us JacobiIdentity, but due to
> division by zero in actual computation Jacobi identity may be violated.

Yes, and I hate it.  This is (well, was...) "Axiom".

Martin


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/fricas-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to