From MAILER-DAEMON Fri Oct 02 04:29:12 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1MtdVn-0005r6-SU
for mharc-axiom-developer@gnu.org; Fri, 02 Oct 2009 04:29:11 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1MtdVl-0005qS-3o
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 04:29:09 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1MtdVe-0005ob-VR
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 04:29:07 -0400
Received: from [199.232.76.173] (port=39820 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1MtdVe-0005oS-R2
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 04:29:02 -0400
Received: from mx20.gnu.org ([199.232.41.8]:45158)
by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.60) (envelope-from )
id 1MtdVe-0000tl-1y
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 04:29:02 -0400
Received: from mailrelay.tu-graz.ac.at ([129.27.2.202]
helo=mailrelay.tugraz.at) by mx20.gnu.org with esmtp (Exim 4.60)
(envelope-from )
id 1MtdVP-0006Mo-J3
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 04:28:47 -0400
Received: from mail.math.tu-graz.ac.at (mail.math.tu-graz.ac.at
[129.27.148.83]) (authenticated bits=0)
by mailrelay1.tugraz.at (8.14.3/8.14.3) with ESMTP id n928SK4b008257
(version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO);
Fri, 2 Oct 2009 10:28:20 +0200 (CEST)
X-DKIM: Sendmail DKIM Filter v2.8.3 mailrelay1.tugraz.at n928SK4b008257
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tu-graz.ac.at;
s=mailrelay; t=1254472102; i=@finanz.math.tu-graz.ac.at;
bh=myMfq7Dgvud5xCCyMU8rZ947ig1uwFHm5PXQLuw1qJA=;
h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:
MIME-Version:Content-Type;
b=aIqvRpbwvxTHfcNfUcT/DPxNot52eAky0IAIgGgFxc5nfO9J0o19Q0jd5kegmwiwf
V+n0ZlaxHt8EduWiZxHyPWV3UccrUnUr9fJK1kMh+ko9q4pBGgnU7CeAkKsR/Kj0JZ
9vyGiwMZxU+PXEryKahEeXDSWGBGljsDnKNxP32M=
Received: from schlumpf.math.tu-graz.ac.at ([129.27.150.29]:51439)
by mail.math.tu-graz.ac.at with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.69) (envelope-from )
id 1MtdUy-0001nz-Ll; Fri, 02 Oct 2009 10:28:20 +0200
Received: from lehner (helo=localhost)
by schlumpf.math.tu-graz.ac.at with local-esmtp (Exim 4.69)
(envelope-from )
id 1MtdUy-0006qT-El; Fri, 02 Oct 2009 10:28:20 +0200
Date: Fri, 2 Oct 2009 10:28:20 +0200 (CEST)
From: Franz Lehner
To: Tim Daly
Subject: Re: [Axiom-developer] hyperdoc on the web
In-Reply-To: <4AC1275B.1070607@axiom-developer.org>
Message-ID:
References: <4AC1018C.8070801@hemmecke.de>
<4AC11B30.4010103@axiom-developer.org> <4AC12510.3@hemmecke.de>
<4AC1275B.1070607@axiom-developer.org>
User-Agent: Alpine 1.10 (DEB 962 2008-03-14)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-Previous-Spam-Scanner:
X-Previous-Spam-Score:
X-Previous-Spam-Tests:
X-SA-Exim-Connect-IP: 129.27.150.29
X-SA-Exim-Mail-From: lehner@finanz.math.tu-graz.ac.at
X-SA-Exim-Scanned: No (on mail.math.tu-graz.ac.at);
SAEximRunCond expanded to false
X-TUG-Backscatter-control: TA5uzSQbnlj5AZYy0g49yQ
X-Spam-Scanner: SpamAssassin 3.002005
X-Spam-Score-relay: 0.0
X-Scanned-By: MIMEDefang 2.65 on 129.27.10.18
X-detected-operating-system: by mx20.gnu.org: Solaris 10 (beta)
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
seldom 2.4 (older, 4)
Cc: fricas-devel ,
axiom-dev
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 02 Oct 2009 08:29:09 -0000
On Mon, 28 Sep 2009, Tim Daly wrote:
>> Hmm, I was specifically asking for a URL for domains, categories, packages,
>> functions etc. so that one could just cut&paste a URL into a mailing-list
>> posting.
...
> There is no particular reason why that couldn't be done.
What exactly needs to be done to get a static HTML tree
(like
http://www.axiom-developer.org/axiom-website/hyperdoc/rootpage.xhtml
but with filled rather than empty pages:)
of the hyperdoc pages?
regards,
Franz
From MAILER-DAEMON Fri Oct 02 12:47:49 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1MtlIL-0003Ja-JT
for mharc-axiom-developer@gnu.org; Fri, 02 Oct 2009 12:47:49 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1MtlII-0003FA-2e
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 12:47:46 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1MtlIA-00037V-OG
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 12:47:43 -0400
Received: from [199.232.76.173] (port=53081 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1MtlIA-00037K-LR
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 12:47:38 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:59123
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1MtlIA-00009l-AL
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 12:47:38 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n92GlE8a008187;
Fri, 2 Oct 2009 11:47:15 -0500
Message-ID: <4AC62E06.7040009@axiom-developer.org>
Date: Fri, 02 Oct 2009 12:44:54 -0400
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Franz Lehner
Subject: Re: [Axiom-developer] hyperdoc on the web
References: <4AC1018C.8070801@hemmecke.de>
<4AC11B30.4010103@axiom-developer.org> <4AC12510.3@hemmecke.de>
<4AC1275B.1070607@axiom-developer.org>
In-Reply-To:
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: fricas-devel ,
axiom-dev
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 02 Oct 2009 16:47:46 -0000
Franz Lehner wrote:
> On Mon, 28 Sep 2009, Tim Daly wrote:
>>> Hmm, I was specifically asking for a URL for domains, categories,
>>> packages, functions etc. so that one could just cut&paste a URL into
>>> a mailing-list posting.
> ...
>> There is no particular reason why that couldn't be done.
> What exactly needs to be done to get a static HTML tree
> (like
> http://www.axiom-developer.org/axiom-website/hyperdoc/rootpage.xhtml
> but with filled rather than empty pages:)
> of the hyperdoc pages?
>
> regards,
> Franz
>
Most of those pages are translated from the hypertex pages.
There are additional pages on the website that are not in hypertex.
Some of the pages are dynamically generated so it would require
a working Axiom behind the server. I did create a version of these
dynamic pages using the asq function (a standalone C program that
is part of Axiom) to do the database query.
I am moving the Axiom server to a local machine so I may look into
setting up a running Axiom behind those pages.
Tim
From MAILER-DAEMON Fri Oct 02 15:31:07 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1MtnqN-0003UK-Ln
for mharc-axiom-developer@gnu.org; Fri, 02 Oct 2009 15:31:07 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1MtnqL-0003Th-Sb
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 15:31:05 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1MtnqH-0003SK-Bn
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 15:31:05 -0400
Received: from [199.232.76.173] (port=34429 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1MtnqH-0003SH-5e
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 15:31:01 -0400
Received: from onyx.nurealm.net ([199.45.155.21]:36349 helo=onyx)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1MtnqG-0000Nc-RT
for axiom-developer@nongnu.org; Fri, 02 Oct 2009 15:31:01 -0400
Received: by onyx (Postfix, from userid 500)
id 8DB6F843C6; Fri, 2 Oct 2009 13:29:29 -0600 (MDT)
Received: from onyx.nurealm.net (localhost [127.0.0.1])
by onyx (Postfix) with ESMTP id 89706842FD
for ; Fri, 2 Oct 2009 13:29:29 -0600 (MDT)
To: axiom-developer@nongnu.org
Date: Fri, 02 Oct 2009 13:29:29 -0600
From: James
Message-Id: <20091002192929.8DB6F843C6@onyx>
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 1)
Subject: [Axiom-developer] "empty list" results, inverse trig substitutions,
"Floats" in "solve"
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: james@nurealm.net
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 02 Oct 2009 19:31:06 -0000
I'm new to axiom, using it for calculations. There seems to be odd behaviour
when using "solve" on a list of equations. This is with the most recent axiom
binary package, Version Axiom (May 2009), on Ubuntu 8.10 "intrepid". For
instance:
(8) -> solve([a=3+x,b=1-x,x=2],[a,b])
...
(8) []
Type: List List Equation Fraction Polynomial Integer
So, the answer is "the empty list"?! That's not very useful, and seems not
correct either. What am I missing here?
Then instead:
(9) -> solve([a=3+x,b=1-x,x=2],[a,b,x])
(9) ->
(9) [[a= 5,b= - 1,x= 2]]
Type: List List Equation Fraction Polynomial Integer
That works. Why?
Similarly, axiom seems confused about finding substitutions. For instance:
(12) -> solve([ tan(bt)=(a*r)/(s*(r-d)), x=100*cos(bt), y=d*sin(bt)],[x,y,bt])
(12) ->
(12) [[]]
Type: List List Equation Expression Integer
Here, "the empty list" again - why?
If, instead, I "spell it out" for axiom, by taking the arctan instead, then
(13) -> solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y,bt])
(13) ->
(13)
[
(100r - 100d)s a d r
[x= ----------------------------, y= ----------------------------,
+-------------------------+ +-------------------------+
| 2 2 2 2 2 | 2 2 2 2 2
\|(r - 2d r + d )s + a r \|(r - 2d r + d )s + a r
a r
bt= atan(--------)]
(r - d)s
]
Type: List List Equation Expression Integer
Axiom doesn't know about substituting inverse trig functions by itself?
But then, again,
(14) -> solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y])
(14) ->
(14) [[]]
Type: List List Equation Expression Integer
Arrrrgh! Ok, why is that again, returning "the empty list" when using "solve"
with the truncated list of variables?
On anther topic, "Floats" in "solve", where this works, mixing integers and
floats:
(16) -> solve([a=3+x,b=1-x,x=2.0],[a,b,x])
...
(16) [[a= 5.0,b= - 1.0,x= 2.0]]
Type: List List Equation Fraction Polynomial Float
and this works:
(17) -> solve([a=3+x,b=1-x,x=2],0.001)
...
(17) [[x= 2.0,a= 5.0,b= - 1.0]]
Type: List List Equation Polynomial Float
doing this, using "x=2.0" instead of "x=2":
(18) -> solve([a=3+x,b=1-x,x=2.0],0.001)
...
There are 20 exposed and 3 unexposed library operations named solve
having 2 argument(s) but none was determined to be applicable.
...
Cannot find a definition or applicable library operation named solve
with argument type(s)
List Equation Polynomial Float
Float
Arrrrgh! - the dreaded "none was determined to be applicable"!
Does that make sense, that?
Thanks in advance for any clues! Are these bugs?
James
From MAILER-DAEMON Sat Oct 03 14:21:22 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1Mu9EQ-0007DC-Ac
for mharc-axiom-developer@gnu.org; Sat, 03 Oct 2009 14:21:22 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1Mu9EO-00079E-EM
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:21:20 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1Mu9EJ-00070m-Cr
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:21:19 -0400
Received: from [199.232.76.173] (port=55872 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1Mu9EJ-00070Z-8i
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:21:15 -0400
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:48149
helo=cgate.sci.ccny.cuny.edu)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1Mu9EI-0000fB-T9
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:21:15 -0400
Received: from [96.232.48.110] (account )
by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
with HTTP id 18320813; Sat, 03 Oct 2009 14:20:56 -0400
From: "William Sit"
Subject: Re: [Axiom-developer] "empty list" results, inverse trig
substitutions, "Floats" in "solve"
To: james@nurealm.net,axiom-developer@nongnu.org
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Sat, 03 Oct 2009 14:20:56 -0400
Message-ID:
In-Reply-To: <20091002192929.8DB6F843C6@onyx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by monty-python.gnu.org: NetCache Data OnTap 5.x
Cc:
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sat, 03 Oct 2009 18:21:20 -0000
Hi James:
When you ask Axiom to solve
solve([a=3+x,b=1-x,x=2],[a,b])
I believe (note, this is an educated guess, but simple
problems in Axiom can often have deep reasons, so much so
it is difficult to understand whether things are bugs or
features) that x is treated as a parameter, or as lying in
the coefficient domain (usually an integral domain). All
polynomial equations are converted into polynomial ideals
over the coefficient domain before using the solver. Thus
an equation like x=2 is converted to x-2 (=0), but x-2 is
a non-zero element of the coefficient domain when x is an
indeterminate. To solve the equation in a,b, the
coefficient domain is extended to its field of fractions,
and x-2 is therefore a unit in the polynomial ring with a,
b as indeterminates. The polynomial ideal is then a unit
ideal, hence there is no solution.
Of course, this is not what the user wants. The user wants
to solve for a,b,x but just wants the projected part a, b
of the solution. However, the "equation" x=2 does not
involve a or b. If it is replaced by one that does,
provided it forms a consistent system in the variables a,
b with the rest (thus no single equation in x alone should
be resulted through elimination), then the system will
solved.
solve([a=b+x,b=a-x,x=a-3],[a,b])
[[a= x + 3,b= 3]]
If x is intended to be solved (not a parameter), then it
should be considered as an indeterminate like a, b.
Otherwise, if it is intended to substitute x with a value
like 2, then it should be done after the system in a, b
has been solved.
By distinguishing the two cases when the variables to be
solved is [a,b] or [a,b,x], Axiom allows the user to
indicate his intention.
I can't do much with the tan problem, since we have:
solve([tan(b) = a],[b])
>> Error detected within library code:
No identity element for reduce of empty list using
operation
append
(You mileage may differ, since I am using a very old
version of Axiom).
This is clearly a bug, for the old version.
William
On Fri, 02 Oct 2009 13:29:29 -0600
James wrote:
>I'm new to axiom, using it for calculations. There seems
>to be odd behaviour
>when using "solve" on a list of equations. This is with
>the most recent axiom
>binary package, Version Axiom (May 2009), on Ubuntu 8.10
>"intrepid". For
>instance:
>
> (8) -> solve([a=3+x,b=1-x,x=2],[a,b])
> ...
> (8) []
> Type: List List Equation
>Fraction Polynomial Integer
>
>So, the answer is "the empty list"?! That's not very
>useful, and seems not
>correct either. What am I missing here?
>
>Then instead:
>
> (9) -> solve([a=3+x,b=1-x,x=2],[a,b,x])
> (9) ->
> (9) [[a= 5,b= - 1,x= 2]]
> Type: List List Equation
>Fraction Polynomial Integer
>
>That works. Why?
>
>Similarly, axiom seems confused about finding
>substitutions. For instance:
>
> (12) -> solve([ tan(bt)=(a*r)/(s*(r-d)), x=100*cos(bt),
>y=d*sin(bt)],[x,y,bt])
> (12) ->
> (12) [[]]
> Type: List List
>Equation Expression Integer
>
>Here, "the empty list" again - why?
>
>If, instead, I "spell it out" for axiom, by taking the
>arctan instead, then
>
> (13) ->
>solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y,bt])
> (13) ->
> (13)
> [
> (100r - 100d)s a
>d r
> [x= ----------------------------, y=
>----------------------------,
> +-------------------------+
> +-------------------------+
> | 2 2 2 2 2 | 2
> 2 2 2 2
> \|(r - 2d r + d )s + a r \|(r - 2d r
>+ d )s + a r
> a r
> bt= atan(--------)]
> (r - d)s
> ]
> Type: List List
>Equation Expression Integer
>
>Axiom doesn't know about substituting inverse trig
>functions by itself?
>
>But then, again,
>
> (14) ->
>solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y])
> (14) ->
> (14) [[]]
> Type: List List
>Equation Expression Integer
>
>Arrrrgh! Ok, why is that again, returning "the empty
>list" when using "solve"
>with the truncated list of variables?
>
>
>On anther topic, "Floats" in "solve", where this works,
>mixing integers and
>floats:
>
> (16) -> solve([a=3+x,b=1-x,x=2.0],[a,b,x])
> ...
> (16) [[a= 5.0,b= - 1.0,x= 2.0]]
> Type: List List Equation
>Fraction Polynomial Float
>
>and this works:
>
> (17) -> solve([a=3+x,b=1-x,x=2],0.001)
> ...
> (17) [[x= 2.0,a= 5.0,b= - 1.0]]
> Type: List List
>Equation Polynomial Float
>
>
>doing this, using "x=2.0" instead of "x=2":
>
> (18) -> solve([a=3+x,b=1-x,x=2.0],0.001)
> ...
> There are 20 exposed and 3 unexposed library
>operations named solve
> having 2 argument(s) but none was determined to be
>applicable.
> ...
> Cannot find a definition or applicable library
>operation named solve
> with argument type(s)
> List Equation Polynomial Float
> Float
>
>
>Arrrrgh! - the dreaded "none was determined to be
>applicable"!
>Does that make sense, that?
>
>
>Thanks in advance for any clues! Are these bugs?
>
>
>James
>
>
>
>_______________________________________________
>Axiom-developer mailing list
>Axiom-developer@nongnu.org
>http://lists.nongnu.org/mailman/listinfo/axiom-developer
William Sit, Professor Emeritus
Mathematics, City College of New York
Office: R6/202C Tel: 212-650-5179
Home Page: http://scisun.sci.ccny.cuny.edu/~wyscc/
From MAILER-DAEMON Sat Oct 03 14:57:26 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1Mu9nK-0003Wc-32
for mharc-axiom-developer@gnu.org; Sat, 03 Oct 2009 14:57:26 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1Mu9nH-0003Sn-0G
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:57:23 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1Mu9nC-0003Ne-FY
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:57:22 -0400
Received: from [199.232.76.173] (port=52495 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1Mu9nC-0003NS-4m
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:57:18 -0400
Received: from mail-yx0-f173.google.com ([209.85.210.173]:39271)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1Mu9nB-0005Xz-QE
for axiom-developer@nongnu.org; Sat, 03 Oct 2009 14:57:17 -0400
Received: by yxe3 with SMTP id 3so1918386yxe.4
for ; Sat, 03 Oct 2009 11:57:15 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.150.25.5 with SMTP id 5mr6750889yby.295.1254596235808; Sat, 03
Oct 2009 11:57:15 -0700 (PDT)
In-Reply-To:
References: <20091002192929.8DB6F843C6@onyx>
Date: Sat, 3 Oct 2009 14:57:15 -0400
Message-ID:
Subject: Re: [Axiom-developer] "empty list" results, inverse trig
substitutions, "Floats" in "solve"
From: Bill Page
To: William Sit
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sat, 03 Oct 2009 18:57:23 -0000
On Sat, Oct 3, 2009 at 2:20 PM, William Sit wrote:
>
> I can't do much with the tan problem, since we have:
>
> solve([tan(b) = a],[b])
>>>
>>> Error detected within library code:
>
> No identity element for reduce of empty list using operation
> append
>
> (You mileage may differ, since I am using a very old version of Axiom).
>
> This is clearly a bug, for the old version.
>
Both Axiom (February 2009) and OpenAxiom (current) return
(1) -> solve([tan(b) = a],[b])
(1) []
Type: List List Equation Expression Integer
But FriCAS gives:
wspage@debian:~$ fricas -nox
FriCAS (AXIOM fork) Computer Algebra System
Version: FriCAS 2009-09-17
Timestamp: Wednesday September 30, 2009 at 22:17:16
-----------------------------------------------------------------------------
Issue )copyright to view copyright notices.
Issue )summary for a summary of useful system commands.
Issue )quit to leave FriCAS and return to shell.
-----------------------------------------------------------------------------
(1) ->
(1) -> solve([tan(b) = a],[b])
(1) [[b= 0]]
Type: List(List(Equation(Expression(Integer))))
(2) ->
Regards,
Bill Page.
From MAILER-DAEMON Sun Oct 04 13:02:21 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1MuUTV-0008E5-58
for mharc-axiom-developer@gnu.org; Sun, 04 Oct 2009 13:02:21 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1MuUTT-0008Dq-Gn
for axiom-developer@nongnu.org; Sun, 04 Oct 2009 13:02:19 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1MuUTO-0008Cx-6S
for axiom-developer@nongnu.org; Sun, 04 Oct 2009 13:02:18 -0400
Received: from [199.232.76.173] (port=53906 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1MuUTO-0008Cu-2c
for axiom-developer@nongnu.org; Sun, 04 Oct 2009 13:02:14 -0400
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:49586
helo=cgate.sci.ccny.cuny.edu)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1MuUTN-0002HG-Bl
for axiom-developer@nongnu.org; Sun, 04 Oct 2009 13:02:13 -0400
Received: from [96.232.52.232] (account )
by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
with HTTP id 18323635; Sun, 04 Oct 2009 13:02:10 -0400
From: "William Sit"
Subject: Re: [Axiom-developer] "empty list" results, inverse trig
substitutions, "Floats" in "solve"
To: james@nurealm.net,axiom-developer@nongnu.org
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Sun, 04 Oct 2009 13:02:10 -0400
Message-ID:
In-Reply-To: <20091002192929.8DB6F843C6@onyx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by monty-python.gnu.org: NetCache Data OnTap 5.x
Cc:
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sun, 04 Oct 2009 17:02:19 -0000
Hi James:
solve([a=3+x,b=1-x,x=2.0],0.001)
is an "incorrectly" constructed command. The "solve"
function that was applicable in
solve([a=3+x,b=1-x,x=2],0.001)
is available for the domain List Equation Fraction
Polynomial Integer (from the package FLOATRP) but is not
available when Integer is replaced by Float.
According to documentation from FLOATRP, "solve(leq, eps)"
finds all the real solutions of the system leq of
equations of *rational* functions with respect to all the
variables appearing in lp [sic:leq], with precision eps.
Thus, despite the package is called with FLOATRP(FLOAT),
the leq must be from List equation Fraction Polynomial
Integer. I think the reason is that the package uses
Groebner basis. See numsolve.spad for source: the
restriction is given near the top, in package
InnerNumericFloatingSolver (K specifies the coefficient
field of the input polynomials and must be either Fraction
Integer or Complex(Fraction Integer).
William
On Fri, 02 Oct 2009 13:29:29 -0600
James wrote:
>I'm new to axiom, using it for calculations. There seems
>to be odd behaviour
>when using "solve" on a list of equations. This is with
>the most recent axiom
>binary package, Version Axiom (May 2009), on Ubuntu 8.10
>"intrepid". For
>instance:
>
> (8) -> solve([a=3+x,b=1-x,x=2],[a,b])
> ...
> (8) []
> Type: List List Equation
>Fraction Polynomial Integer
>
>So, the answer is "the empty list"?! That's not very
>useful, and seems not
>correct either. What am I missing here?
>
>Then instead:
>
> (9) -> solve([a=3+x,b=1-x,x=2],[a,b,x])
> (9) ->
> (9) [[a= 5,b= - 1,x= 2]]
> Type: List List Equation
>Fraction Polynomial Integer
>
>That works. Why?
>
>Similarly, axiom seems confused about finding
>substitutions. For instance:
>
> (12) -> solve([ tan(bt)=(a*r)/(s*(r-d)), x=100*cos(bt),
>y=d*sin(bt)],[x,y,bt])
> (12) ->
> (12) [[]]
> Type: List List
>Equation Expression Integer
>
>Here, "the empty list" again - why?
>
>If, instead, I "spell it out" for axiom, by taking the
>arctan instead, then
>
> (13) ->
>solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y,bt])
> (13) ->
> (13)
> [
> (100r - 100d)s a
>d r
> [x= ----------------------------, y=
>----------------------------,
> +-------------------------+
> +-------------------------+
> | 2 2 2 2 2 | 2
> 2 2 2 2
> \|(r - 2d r + d )s + a r \|(r - 2d r
>+ d )s + a r
> a r
> bt= atan(--------)]
> (r - d)s
> ]
> Type: List List
>Equation Expression Integer
>
>Axiom doesn't know about substituting inverse trig
>functions by itself?
>
>But then, again,
>
> (14) ->
>solve([bt=atan((a*r)/(s*(r-d))),x=100*cos(bt),y=d*sin(bt)],[x,y])
> (14) ->
> (14) [[]]
> Type: List List
>Equation Expression Integer
>
>Arrrrgh! Ok, why is that again, returning "the empty
>list" when using "solve"
>with the truncated list of variables?
>
>
>On anther topic, "Floats" in "solve", where this works,
>mixing integers and
>floats:
>
> (16) -> solve([a=3+x,b=1-x,x=2.0],[a,b,x])
> ...
> (16) [[a= 5.0,b= - 1.0,x= 2.0]]
> Type: List List Equation
>Fraction Polynomial Float
>
>and this works:
>
> (17) -> solve([a=3+x,b=1-x,x=2],0.001)
> ...
> (17) [[x= 2.0,a= 5.0,b= - 1.0]]
> Type: List List
>Equation Polynomial Float
>
>
>doing this, using "x=2.0" instead of "x=2":
>
> (18) -> solve([a=3+x,b=1-x,x=2.0],0.001)
> ...
> There are 20 exposed and 3 unexposed library
>operations named solve
> having 2 argument(s) but none was determined to be
>applicable.
> ...
> Cannot find a definition or applicable library
>operation named solve
> with argument type(s)
> List Equation Polynomial Float
> Float
>
>
>Arrrrgh! - the dreaded "none was determined to be
>applicable"!
>Does that make sense, that?
>
>
>Thanks in advance for any clues! Are these bugs?
>
>
>James
>
>
>
>_______________________________________________
>Axiom-developer mailing list
>Axiom-developer@nongnu.org
>http://lists.nongnu.org/mailman/listinfo/axiom-developer
William Sit, Professor Emeritus
Mathematics, City College of New York
Office: R6/202C Tel: 212-650-5179
Home Page: http://scisun.sci.ccny.cuny.edu/~wyscc/
From MAILER-DAEMON Fri Oct 16 11:23:39 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1MyoeY-0006fE-Vf
for mharc-axiom-developer@gnu.org; Fri, 16 Oct 2009 11:23:39 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1MyoeW-0006b6-5K
for axiom-developer@nongnu.org; Fri, 16 Oct 2009 11:23:36 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1MyoeQ-0006T9-3J
for axiom-developer@nongnu.org; Fri, 16 Oct 2009 11:23:34 -0400
Received: from [199.232.76.173] (port=55618 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1MyoeP-0006Su-Tj
for axiom-developer@nongnu.org; Fri, 16 Oct 2009 11:23:29 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:47451
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1MyoeP-0007Mn-Ie
for axiom-developer@nongnu.org; Fri, 16 Oct 2009 11:23:29 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n9GFNI8a018204;
Fri, 16 Oct 2009 10:23:19 -0500
Message-ID: <4AD88F16.6010706@axiom-developer.org>
Date: Fri, 16 Oct 2009 11:19:50 -0400
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: William Stein , daly@axiom-developer.org,
Axiom-Developer , sage-devel@googlegroups.com
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc:
Subject: [Axiom-developer] Axiom trademark and ethics
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 16 Oct 2009 15:23:36 -0000
> Hi,
>
> I looked at http://www.uspto.gov/teas/e-TEAS/index.html where one can
>
> search for trademarks, file a trademark application, etc. It looks
> like it costs $325. I think filing an application for "SageMath"
> would be an appropriate use of Sage foundation funds.
>
> There is a search form here:
> http://tess2.uspto.gov/bin/gate.exe?f=tess&state=4001:pj0t1h.1.1
>
> I've only ever heard of trademarking math software in the context of
> Tim Daly remarking that "Axiom" is his registered trademark, so I
> searched Axiom first and found 103 hits -- the first I clicked on was
> for Axiom: "Providing Christian evangelistic and ministerial services
> directed towards athletes, athletic coaches and those whom they
> influence, in the sport of skateboarding". I tried searching "Axiom
> and software" (and similar searches) but couldn't find anything about
> the Axiom math software (I just thought it would be a good example).
>
> There are at least 359 registered trademarks that contain the word
> "Sage" in them. Searching for just "Sage" and software yields just 5
> or so, including
>
> http://tess2.uspto.gov/bin/showfield?f=doc&state=4001:pj0t1h.13.29
>
> which is the one for the accounting software. Their description is:
> "Computer software for use in managing accounting and business
> information, retrieving accounting and business information, viewing
> accounting and business information, managing contacts and performing
> accounting functions in the fields of business management, information
> services, and research systems; computer software for use in
> electronic commerce to allow users to perform electronic business
> transactions via a global computer network, electronic mail, Internet
> website hosting, Internet website development, and Internet access;
> and accompanying user manual documentation for use with all of the
> above. "
>
> If there were a problem trademarking the name Sage, it would I guess
> be most likely to be because of the accounting software.
>
> The word "SageMath" does not have any entries at all in the trademark database.
>
> The point of this email is to discuss:
>
> (1) Should we trademark SageMath (pretty obvious "yes")?
>
> (2) Should we also trademark Sage in the context of math software,
> if possible?
>
> (3) Is there somebody who like "legal stuff" who is willing to help
> out with the application? Because I'm not such a person.
>
> I'm not in a hurry, but think it's about time to start moving this
> process forward.
I am not a lawyer but I DID speak to a lawyer about the Axiom
trademark. The issue of a trademark is to make sure that the
mark implies the particular product named. So the trademark is
used to identify a particular product and to protect the
reputation of that product. You do not want someone posting
bugs about "Sage" that do not apply to your software, thereby
possibly damaging the Sage reputation. Since the GPL2 allows
all of your code to be cloned, the name IS the project.
Trademarks in the United States (I have no idea how this works
in the rest of the world...) can be obtained in two ways
(according to a trademark lawyer). You can "register" a trademark
or you can use the mark in an exclusive manner for 7 years and
obtain a "common law trademark". Axiom has been unregistered
since NAG dropped the registration in 2000. It has been used in
a computer algebra sense to apply to this project since that time.
Legally, then, I am the common law holder of the Axiom trademark
as it applies to Computer Algebra software (there are, as you have
noticed, hundreds of 'Axiom' trademarks in different areas).
In either case, in order to keep a trademark, you need to defend
against any and all infringing uses of the mark or you might lose it.
You also need to keep the mark current with active use, which Axiom
does. Keeping or losing a trademark does not depend on registration.
Registration makes it easier to show that you are the holder but
you can still lose the mark if it is not actively defended.
My campaign with Sage to stop using the name "Axiom" as a command
to invoke Fricas was part of the necessary defense of the mark.
The Axiom BSD license is copyright-based and allows forking the code
but not use of the name.
Trademark is a different area of intellectual property law and
nothing in the GPL2 or BSD license allows infringing of a trademark.
You'll have the same problems when defending "Sage".
I have sent you notes about the use of "Sage" in the area
of mathematics when I have found other math software using the
same name. If another math software project uses the same name
you would have to show that you were using it first. Even then
you might not be able to be able to defend the name.
If you want a trademark you will need a unique name in the field
of use and you will need to defend it. Registration is little
more than publicly stating ownership but it is not required.
I hated consulting a real, live lawyer. It costs me time and
money I'd rather not have spent. But at this point I am reasonably
certain that I will win a trademark case.
Open source software developers all think they know the law and
every mailing list on every project seems to have the same debates
without really speaking to an expert. Yet we would laugh at lawyers
who had opinions on programming issues.
If you are going to try for a trademark (registered or common law)
talk to a lawyer first.
Rather than have the usual opinion-flamefest about trademarks and all
of the usual legal-issue-opinion-noise this will generate, you might
consider having a debate about a new project name, like "SageMath"
instead of "Sage". Your project name IS your project and you want to be
able to build (or damage) your reputation as you see fit. The last
thing you need is bug reports from some other project.
Note that except where it applies to the Axiom trademark where I have
legal advice, my opinions on trademark law are worthless.
On a related but independent topic there is the ethical issue of using
a project name. If some other math software project has been using that
name (eg "Sage") and there is a possible point of confusion then you have a
responsibility to act ethically, that is, to not do anything that would
deliberately cause confusion with another persons reputation. In fact,
you have an ethical obligation to fix any confusion that arises. For me,
ethics trumps legal issues so it is more important to "do the right thing"
because it is right than because it follows the law.
Tim
From MAILER-DAEMON Wed Oct 28 14:17:26 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3D5K-000056-Ef
for mharc-axiom-developer@gnu.org; Wed, 28 Oct 2009 14:17:26 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3D5J-0008WB-4N
for axiom-developer@nongnu.org; Wed, 28 Oct 2009 14:17:25 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3D5E-0008TZ-1w
for axiom-developer@nongnu.org; Wed, 28 Oct 2009 14:17:24 -0400
Received: from [199.232.76.173] (port=33437 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N3D5D-0008TU-SP
for axiom-developer@nongnu.org; Wed, 28 Oct 2009 14:17:19 -0400
Received: from mail-yw0-f142.google.com ([209.85.211.142]:39905)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N3D5D-0000qY-Gz
for axiom-developer@nongnu.org; Wed, 28 Oct 2009 14:17:19 -0400
Received: by ywh6 with SMTP id 6so1515640ywh.4
for ; Wed, 28 Oct 2009 11:17:18 -0700 (PDT)
MIME-Version: 1.0
Path: k17g2000yqh.googlegroups.com!not-for-mail
Newsgroups: sci.math.symbolic
Date: Wed, 28 Oct 2009 11:17:18 -0700 (PDT)
Complaints-To: groups-abuse@google.com
Injection-Info: k17g2000yqh.googlegroups.com; posting-host=72.23.235.203;
posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
References: <46d5e5c2-ae92-40bf-b7ed-fc635fb2e979@v30g2000yqm.googlegroups.com>
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5)
Gecko/2008120122 Firefox/3.0.5,gzip(gfe),gzip(gfe)
Received: by 10.150.87.2 with SMTP id k2mt3454257ybb.6.1256753838221; Wed, 28
Oct 2009 11:17:18 -0700 (PDT)
Message-ID: <88384c8c-ed33-4175-b507-cc6021bf83e9@k17g2000yqh.googlegroups.com>
From: TimDaly
To: axiom-developer@nongnu.org
Cc: axiom-developer@nongnu.org
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Subject: [Axiom-developer] Re: Why Did Mathematica Win?
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Wed, 28 Oct 2009 18:17:25 -0000
On Oct 28, 12:32=A0pm, Mark Lawton wrote:
> There was plenty of maths software around before 1988, when
> Mathematica was released - so why did Mathematica become so dominant?
> Didn't the older software run on DOS (perhaps the other programs were
> too big to run on a 1980s PC - but if so, then they should have built
> "light" versions)? Perhaps they were too specialised? Was Mathematica
> the first to implement a GUI (graphical user interface)?
>
> What was it that allowed a start-up to beat rival software that had
> been around for over 20 years?
Axiom was known as Scratchpad at the time and started around 1971 at
IBM
Research. Scratchpad was research software and was freely available.
I sent out magnetic tapes of the sources.
We were not trying to make a commercial product. We were trying to
understand the relationship between mathematics and computers since
computational mathematics was a very new field.
We did try to market Axiom through IBM sales but the sales department
had programs that checked the required documentation to make sure it
was readable "at the 8th grade level". Clearly this was not possible.
Axiom ran on DOS, but only in my office. The DOS version was never
released. This included the X front-end graphics and help systems.
Axiom was released as a commercial product due to a drop in funding,
both from government sources and IBM directly. We eventually sold the
rights to the Numerical Algorithms Group. Axiom was one of "the big 3"
(Mathematica, Maple, and Axiom) at the time.
Axiom was withdrawn from the market in 2000 and released as open
source.
Axiom is extremely strongly typed, allowing overload selection not
only
by the operand types but also by the return type. This is not yet
widely
available in most languages. It is built around an algebra core and
assumes
you know what mathematical concepts like "Ring" mean. The learning
curve
is rather steep because you need both a strong computational
background
and a strong math background. That is, you are a computational
mathematician.
From MAILER-DAEMON Thu Oct 29 14:13:20 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3ZUu-000537-8X
for mharc-axiom-developer@gnu.org; Thu, 29 Oct 2009 14:13:20 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3ZUs-00050e-2o
for axiom-developer@nongnu.org; Thu, 29 Oct 2009 14:13:18 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3ZUm-0004z1-Va
for axiom-developer@nongnu.org; Thu, 29 Oct 2009 14:13:17 -0400
Received: from [199.232.76.173] (port=53214 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43)
id 1N3ZUm-0004yv-Rg; Thu, 29 Oct 2009 14:13:12 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:32988
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from )
id 1N3ZUm-00038g-5f; Thu, 29 Oct 2009 14:13:12 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n9TID58a014404;
Thu, 29 Oct 2009 12:13:05 -0600
Message-ID: <4AE9DA72.1080001@axiom-developer.org>
Date: Thu, 29 Oct 2009 13:09:54 -0500
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker
References: <200910291042.24547.ax87438@martinb.com> <4AE97F89.3020604@hemmecke.de>
<200910291725.14554.ax87438@martinb.com>
In-Reply-To: <200910291725.14554.ax87438@martinb.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: axiom-developer@nongnu.org, axiom-mail@nongnu.org
Subject: [Axiom-developer] Re: [Axiom-mail] finding source code
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Thu, 29 Oct 2009 18:13:18 -0000
Martin Baker wrote:
>> May I ask how you found out about Axiom? What version did you
>> actually install on your computer?
>>
>
> Ralf,
>
> I have been looking for an open source computer algebra system for some time
> although I did not try any, I came across Axiom in lists of such systems but I
> did not try it because (for some reason) I was put off when it said that it
> was based on LISP.
>
> Having tried it now it works well and it seems very good (I wish I had done so
> earlier). At first sight the user language reminds me a bit of 'Scala' in that
> the type is given after the variable if required, also the way that brackets
> can sometimes be omitted for what looks to me like function calls.
>
> I loaded the binary from this page:
> http://www.axiom-developer.org/axiom-website/download.html
> (suse,May2009)
>
> I recorded what I did on my web page here:
> http://www.euclideanspace.com/maths/standards/program/
>
> As you can see the program seems to work except the draw function which seems
> to fail with:
>
>
>>> System error:
>>>
> Unknown bfd format
>
> The only other problem is capturing the output to put on a web page, you can
> see what I mean about 2/3 of the way down this screen:
>
> http://www.euclideanspace.com/maths/algebra/equations/polynomial/cubic/
>
> Apart from being too big for the page, not all the LaTeX seemed to be
> recognised (I cut and pasted from Axiom to Lyx and then did a screen shot).
>
> So, that's my experience so far, apart from these small problems it looks like
> a very useful program.
>
> Martin
>
>
> _______________________________________________
> Axiom-mail mailing list
> Axiom-mail@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-mail
>
>
Martin,
It appears that you have an interest in documenting the use of mathematics.
Axiom is being rewritten into literate form, which means that the source
code
is now taken directly from the books, such as bookvol10.3 which contains the
sources for the Axiom domains.
You may also find interesting examples in several places in Axiom.
1) EXAMPLES OF FUNCTION CALLS
First, there is documentation of example code use. You can type
)display operation makeprod
and you will see the "Mappings" and some example code. In the case
of the "makeprod" function the example will look like:
Examples of makeprod from Product
f:(x:INT):INT +-> 3*x
g:(x:INT):INT +-> x^3
h(x:INT):Product(INT,INT) == makeprod(f x,g x)
h(3)
This gives you sample input for the makeprod command.
2) FUNCTIONS FROM A DOMAIN
You have also expressed an interest in Quaternions. You can see
what functions are available for Quaternions by typing
)show Quaternion
which gives the output shown below.
3) HELP FUNCTION
For some domains you can also type
)help Quaternion
and see a help page for that domain with the output shown below.
Axiom is in the process of documenting all of the code. If you
would like to help, either with examples or with explanations of
areas like Quaternions that would be greatly appreciated.
4) INPUT FILES
The directory $AXIOM/input contains a large number of files
which can be read into Axiom and executed. There are examples
of quite a few domains.
5) HYPERDOC
Clearly you cannot get hyperdoc running. I am not sure what
the problem might be but if you send me email we can discuss
it further.
Tim Daly
Elder of the Internet
AXIOM Computer Algebra System
Version: Axiom (September 2009)
Timestamp: Thursday October 29, 2009 at 06:43:59
-----------------------------------------------------------------------------
Issue )copyright to view copyright notices.
Issue )summary for a summary of useful system commands.
Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------
Re-reading compress.daase Re-reading interp.daase
Re-reading operation.daase
Re-reading category.daase
Re-reading browse.daase
(1) ->
(1) -> )display operation makeprod
There is one unexposed function called makeprod :
[1] (D1,D2) -> Product(D1,D2) from Product(D1,D2)
if D1 has SETCAT and D2 has SETCAT
Examples of makeprod from Product
f:=(x:INT):INT +-> 3*x
g:=(x:INT):INT +-> x^3
h(x:INT):Product(INT,INT) == makeprod(f x, g x)
h(3)
(1) -> )show Quaternion
Quaternion R: CommutativeRing is a domain constructor
Abbreviation for Quaternion is QUAT
This constructor is exposed in this frame.
Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for QUAT
------------------------------- Operations --------------------------------
?*? : (R,%) -> % ?*? : (%,R) -> %
?*? : (%,%) -> % ?*? : (Integer,%) -> %
?*? : (PositiveInteger,%) -> % ?**? : (%,PositiveInteger) -> %
?+? : (%,%) -> % ?-? : (%,%) -> %
-? : % -> % ?=? : (%,%) -> Boolean
D : (%,(R -> R)) -> % D : % -> % if R has DIFRING
1 : () -> % 0 : () -> %
?^? : (%,PositiveInteger) -> % abs : % -> R if R has RNS
coerce : R -> % coerce : Integer -> %
coerce : % -> OutputForm conjugate : % -> %
hash : % -> SingleInteger imagI : % -> R
imagJ : % -> R imagK : % -> R
inv : % -> % if R has FIELD latex : % -> String
map : ((R -> R),%) -> % norm : % -> R
one? : % -> Boolean quatern : (R,R,R,R) -> %
real : % -> R recip : % -> Union(%,"failed")
retract : % -> R sample : () -> %
zero? : % -> Boolean ?~=? : (%,%) -> Boolean
?*? : (Fraction Integer,%) -> % if R has FIELD
?*? : (%,Fraction Integer) -> % if R has FIELD
?*? : (NonNegativeInteger,%) -> %
?**? : (%,Integer) -> % if R has FIELD
?**? : (%,NonNegativeInteger) -> %
? Boolean if R has ORDSET
?<=? : (%,%) -> Boolean if R has ORDSET
?>? : (%,%) -> Boolean if R has ORDSET
?>=? : (%,%) -> Boolean if R has ORDSET
D : (%,(R -> R),NonNegativeInteger) -> %
D : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,List Symbol) -> % if R has PDRING SYMBOL
D : (%,Symbol) -> % if R has PDRING SYMBOL
D : (%,NonNegativeInteger) -> % if R has DIFRING
?^? : (%,Integer) -> % if R has FIELD
?^? : (%,NonNegativeInteger) -> %
characteristic : () -> NonNegativeInteger
charthRoot : % -> Union(%,"failed") if R has CHARNZ
coerce : Fraction Integer -> % if R has FIELD or R has RETRACT FRAC INT
convert : % -> InputForm if R has KONVERT INFORM
differentiate : (%,(R -> R)) -> %
differentiate : (%,(R -> R),NonNegativeInteger) -> %
differentiate : (%,List Symbol,List NonNegativeInteger) -> % if R has
PDRING SYMBOL
differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,List Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
differentiate : % -> % if R has DIFRING
?.? : (%,R) -> % if R has ELTAB(R,R)
eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Symbol,List R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Equation R) -> % if R has EVALAB R
eval : (%,Equation R) -> % if R has EVALAB R
eval : (%,R,R) -> % if R has EVALAB R
eval : (%,List R,List R) -> % if R has EVALAB R
max : (%,%) -> % if R has ORDSET
min : (%,%) -> % if R has ORDSET
rational : % -> Fraction Integer if R has INS
rational? : % -> Boolean if R has INS
rationalIfCan : % -> Union(Fraction Integer,"failed") if R has INS
reducedSystem : Matrix % -> Matrix R
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix R,vec: Vector R)
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix Integer,vec:
Vector Integer) if R has LINEXP INT
reducedSystem : Matrix % -> Matrix Integer if R has LINEXP INT
retract : % -> Fraction Integer if R has RETRACT FRAC INT
retract : % -> Integer if R has RETRACT INT
retractIfCan : % -> Union(R,"failed")
retractIfCan : % -> Union(Fraction Integer,"failed") if R has RETRACT
FRAC INT
retractIfCan : % -> Union(Integer,"failed") if R has RETRACT INT
subtractIfCan : (%,%) -> Union(%,"failed")
(1) -> )help Quaternion
====================================================================
Quaternion examples
====================================================================
The domain constructor Quaternion implements quaternions over
commutative rings.
The basic operation for creating quaternions is quatern. This is a
quaternion over the rational numbers.
q := quatern(2/11,-8,3/4,1)
2 3
-- - 8i + - j + k
11 4
Type: Quaternion Fraction Integer
The four arguments are the real part, the i imaginary part, the j
imaginary part, and the k imaginary part, respectively.
[real q, imagI q, imagJ q, imagK q]
2 3
[--,- 8,-,1]
11 4
Type: List Fraction Integer
Because q is over the rationals (and nonzero), you can invert it.
inv q
352 15488 484 1936
------ + ------ i - ----- j - ------ k
126993 126993 42331 126993
Type: Quaternion Fraction Integer
The usual arithmetic (ring) operations are available
q^6
2029490709319345 48251690851 144755072553 48251690851
- ---------------- - ----------- i + ------------ j + ----------- k
7256313856 1288408 41229056 10307264
Type: Quaternion Fraction Integer
r := quatern(-2,3,23/9,-89); q + r
20 119
- -- - 5i + --- j - 88k
11 36
Type: Quaternion Fraction Integer
In general, multiplication is not commutative.
q * r - r * q
2495 817
- ---- i - 1418j - --- k
18 18
Type: Quaternion Fraction Integer
There are no predefined constants for the imaginary i, j, and k parts,
but you can easily define them.
i:=quatern(0,1,0,0)
i
Type: Quaternion Integer
j:=quatern(0,0,1,0)
j
Type: Quaternion Integer
k:=quatern(0,0,0,1)
k
Type: Quaternion Integer
These satisfy the normal identities.
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]
2 3
[- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
11 4
Type: List Quaternion Fraction Integer
The norm is the quaternion times its conjugate.
norm q
126993
------
1936
Type: Fraction Integer
conjugate q
2 3
-- + 8i - - j - k
11 4
Type: Quaternion Fraction Integer
q * %
126993
------
1936
Type: Quaternion Fraction Integer
See Also:
o )help Octonion
o )help Complex
o )help CliffordAlgebra
o )show Quaternion
(1) -> )sys cat int/input/Quaternion.output
Starts dribbling to Quaternion.output (2009/10/29, 7:36:17).
)set message test on
)set message auto off
)clear all
--S 1 of 13
q := quatern(2/11,-8,3/4,1)
2 3
(1) -- - 8i + - j + k
11 4
Type: Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (1) -- - 8i + - j + k
--R 11 4
--R Type: Quaternion Fraction
Integer
--E 1
--S 2 of 13
[real q, imagI q, imagJ q, imagK q]
2 3
(2) [--,- 8,-,1]
11 4
Type: List Fraction
Integer
--R
--R
--R 2 3
--R (2) [--,- 8,-,1]
--R 11 4
--R Type: List Fraction
Integer
--E 2
--S 3 of 13
inv q
352 15488 484 1936
(3) ------ + ------ i - ----- j - ------ k
126993 126993 42331 126993
Type: Quaternion Fraction
Integer
--R
--R
--R 352 15488 484 1936
--R (3) ------ + ------ i - ----- j - ------ k
--R 126993 126993 42331 126993
--R Type: Quaternion Fraction
Integer
--E 3
--S 4 of 13
q^6
2029490709319345 48251690851 144755072553 48251690851
(4) - ---------------- - ----------- i + ------------ j + ----------- k
7256313856 1288408 41229056 10307264
Type: Quaternion Fraction
Integer
--R
--R
--R 2029490709319345 48251690851 144755072553 48251690851
--R (4) - ---------------- - ----------- i + ------------ j +
----------- k
--R 7256313856 1288408 41229056 10307264
--R Type: Quaternion Fraction
Integer
--E 4
--S 5 of 13
r := quatern(-2,3,23/9,-89); q + r
20 119
(5) - -- - 5i + --- j - 88k
11 36
Type: Quaternion Fraction
Integer
--R
--R
--R 20 119
--R (5) - -- - 5i + --- j - 88k
--R 11 36
--R Type: Quaternion Fraction
Integer
--E 5
--S 6 of 13
q * r - r * q
2495 817
(6) - ---- i - 1418j - --- k
18 18
Type: Quaternion Fraction
Integer
--R
--R
--R 2495 817
--R (6) - ---- i - 1418j - --- k
--R 18 18
--R Type: Quaternion Fraction
Integer
--E 6
--S 7 of 13
i:=quatern(0,1,0,0)
(7) i
Type: Quaternion
Integer
--R
--R
--R (7) i
--R Type: Quaternion
Integer
--E 7
--S 8 of 13
j:=quatern(0,0,1,0)
(8) j
Type: Quaternion
Integer
--R
--R
--R (8) j
--R Type: Quaternion
Integer
--E 8
--S 9 of 13
k:=quatern(0,0,0,1)
(9) k
Type: Quaternion
Integer
--R
--R
--R (9) k
--R Type: Quaternion
Integer
--E 9
--S 10 of 13
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]
2 3
(10) [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
11 4
Type: List Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (10) [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
--R 11 4
--R Type: List Quaternion Fraction
Integer
--E 10
--S 11 of 13
norm q
126993
(11) ------
1936
Type: Fraction
Integer
--R
--R
--R 126993
--R (11) ------
--R 1936
--R Type: Fraction
Integer
--E 11
--S 12 of 13
conjugate q
2 3
(12) -- + 8i - - j - k
11 4
Type: Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (12) -- + 8i - - j - k
--R 11 4
--R Type: Quaternion Fraction
Integer
--E 12
--S 13 of 13
q * %
126993
(13) ------
1936
Type: Quaternion Fraction
Integer
--R
--R
--R 126993
--R (13) ------
--R 1936
--R Type: Quaternion Fraction
Integer
--E 13
)spool
(1) ->
AXIOM Computer Algebra System
Version: Axiom (September 2009)
Timestamp: Thursday October 29, 2009 at 06:43:59
-----------------------------------------------------------------------------
Issue )copyright to view copyright notices.
Issue )summary for a summary of useful system commands.
Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------
Re-reading compress.daase Re-reading interp.daase
Re-reading operation.daase
Re-reading category.daase
Re-reading browse.daase
(1) ->
(1) -> )display operation makeprod
There is one unexposed function called makeprod :
[1] (D1,D2) -> Product(D1,D2) from Product(D1,D2)
if D1 has SETCAT and D2 has SETCAT
Examples of makeprod from Product
f:=(x:INT):INT +-> 3*x
g:=(x:INT):INT +-> x^3
h(x:INT):Product(INT,INT) == makeprod(f x, g x)
h(3)
(1) -> )show Quaternion
Quaternion R: CommutativeRing is a domain constructor
Abbreviation for Quaternion is QUAT
This constructor is exposed in this frame.
Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for QUAT
------------------------------- Operations --------------------------------
?*? : (R,%) -> % ?*? : (%,R) -> %
?*? : (%,%) -> % ?*? : (Integer,%) -> %
?*? : (PositiveInteger,%) -> % ?**? : (%,PositiveInteger) -> %
?+? : (%,%) -> % ?-? : (%,%) -> %
-? : % -> % ?=? : (%,%) -> Boolean
D : (%,(R -> R)) -> % D : % -> % if R has DIFRING
1 : () -> % 0 : () -> %
?^? : (%,PositiveInteger) -> % abs : % -> R if R has RNS
coerce : R -> % coerce : Integer -> %
coerce : % -> OutputForm conjugate : % -> %
hash : % -> SingleInteger imagI : % -> R
imagJ : % -> R imagK : % -> R
inv : % -> % if R has FIELD latex : % -> String
map : ((R -> R),%) -> % norm : % -> R
one? : % -> Boolean quatern : (R,R,R,R) -> %
real : % -> R recip : % -> Union(%,"failed")
retract : % -> R sample : () -> %
zero? : % -> Boolean ?~=? : (%,%) -> Boolean
?*? : (Fraction Integer,%) -> % if R has FIELD
?*? : (%,Fraction Integer) -> % if R has FIELD
?*? : (NonNegativeInteger,%) -> %
?**? : (%,Integer) -> % if R has FIELD
?**? : (%,NonNegativeInteger) -> %
? Boolean if R has ORDSET
?<=? : (%,%) -> Boolean if R has ORDSET
?>? : (%,%) -> Boolean if R has ORDSET
?>=? : (%,%) -> Boolean if R has ORDSET
D : (%,(R -> R),NonNegativeInteger) -> %
D : (%,List Symbol,List NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
D : (%,List Symbol) -> % if R has PDRING SYMBOL
D : (%,Symbol) -> % if R has PDRING SYMBOL
D : (%,NonNegativeInteger) -> % if R has DIFRING
?^? : (%,Integer) -> % if R has FIELD
?^? : (%,NonNegativeInteger) -> %
characteristic : () -> NonNegativeInteger
charthRoot : % -> Union(%,"failed") if R has CHARNZ
coerce : Fraction Integer -> % if R has FIELD or R has RETRACT FRAC INT
convert : % -> InputForm if R has KONVERT INFORM
differentiate : (%,(R -> R)) -> %
differentiate : (%,(R -> R),NonNegativeInteger) -> %
differentiate : (%,List Symbol,List NonNegativeInteger) -> % if R has
PDRING SYMBOL
differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING SYMBOL
differentiate : (%,List Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,Symbol) -> % if R has PDRING SYMBOL
differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
differentiate : % -> % if R has DIFRING
?.? : (%,R) -> % if R has ELTAB(R,R)
eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Symbol,List R) -> % if R has IEVALAB(SYMBOL,R)
eval : (%,List Equation R) -> % if R has EVALAB R
eval : (%,Equation R) -> % if R has EVALAB R
eval : (%,R,R) -> % if R has EVALAB R
eval : (%,List R,List R) -> % if R has EVALAB R
max : (%,%) -> % if R has ORDSET
min : (%,%) -> % if R has ORDSET
rational : % -> Fraction Integer if R has INS
rational? : % -> Boolean if R has INS
rationalIfCan : % -> Union(Fraction Integer,"failed") if R has INS
reducedSystem : Matrix % -> Matrix R
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix R,vec: Vector R)
reducedSystem : (Matrix %,Vector %) -> Record(mat: Matrix Integer,vec:
Vector Integer) if R has LINEXP INT
reducedSystem : Matrix % -> Matrix Integer if R has LINEXP INT
retract : % -> Fraction Integer if R has RETRACT FRAC INT
retract : % -> Integer if R has RETRACT INT
retractIfCan : % -> Union(R,"failed")
retractIfCan : % -> Union(Fraction Integer,"failed") if R has RETRACT
FRAC INT
retractIfCan : % -> Union(Integer,"failed") if R has RETRACT INT
subtractIfCan : (%,%) -> Union(%,"failed")
(1) -> )help Quaternion
====================================================================
Quaternion examples
====================================================================
The domain constructor Quaternion implements quaternions over
commutative rings.
The basic operation for creating quaternions is quatern. This is a
quaternion over the rational numbers.
q := quatern(2/11,-8,3/4,1)
2 3
-- - 8i + - j + k
11 4
Type: Quaternion Fraction Integer
The four arguments are the real part, the i imaginary part, the j
imaginary part, and the k imaginary part, respectively.
[real q, imagI q, imagJ q, imagK q]
2 3
[--,- 8,-,1]
11 4
Type: List Fraction Integer
Because q is over the rationals (and nonzero), you can invert it.
inv q
352 15488 484 1936
------ + ------ i - ----- j - ------ k
126993 126993 42331 126993
Type: Quaternion Fraction Integer
The usual arithmetic (ring) operations are available
q^6
2029490709319345 48251690851 144755072553 48251690851
- ---------------- - ----------- i + ------------ j + ----------- k
7256313856 1288408 41229056 10307264
Type: Quaternion Fraction Integer
r := quatern(-2,3,23/9,-89); q + r
20 119
- -- - 5i + --- j - 88k
11 36
Type: Quaternion Fraction Integer
In general, multiplication is not commutative.
q * r - r * q
2495 817
- ---- i - 1418j - --- k
18 18
Type: Quaternion Fraction Integer
There are no predefined constants for the imaginary i, j, and k parts,
but you can easily define them.
i:=quatern(0,1,0,0)
i
Type: Quaternion Integer
j:=quatern(0,0,1,0)
j
Type: Quaternion Integer
k:=quatern(0,0,0,1)
k
Type: Quaternion Integer
These satisfy the normal identities.
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]
2 3
[- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
11 4
Type: List Quaternion Fraction Integer
The norm is the quaternion times its conjugate.
norm q
126993
------
1936
Type: Fraction Integer
conjugate q
2 3
-- + 8i - - j - k
11 4
Type: Quaternion Fraction Integer
q * %
126993
------
1936
Type: Quaternion Fraction Integer
See Also:
o )help Octonion
o )help Complex
o )help CliffordAlgebra
o )show Quaternion
(1) -> )sys cat int/input/Quaternion.output
Starts dribbling to Quaternion.output (2009/10/29, 7:36:17).
)set message test on
)set message auto off
)clear all
--S 1 of 13
q := quatern(2/11,-8,3/4,1)
2 3
(1) -- - 8i + - j + k
11 4
Type: Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (1) -- - 8i + - j + k
--R 11 4
--R Type: Quaternion Fraction
Integer
--E 1
--S 2 of 13
[real q, imagI q, imagJ q, imagK q]
2 3
(2) [--,- 8,-,1]
11 4
Type: List Fraction
Integer
--R
--R
--R 2 3
--R (2) [--,- 8,-,1]
--R 11 4
--R Type: List Fraction
Integer
--E 2
--S 3 of 13
inv q
352 15488 484 1936
(3) ------ + ------ i - ----- j - ------ k
126993 126993 42331 126993
Type: Quaternion Fraction
Integer
--R
--R
--R 352 15488 484 1936
--R (3) ------ + ------ i - ----- j - ------ k
--R 126993 126993 42331 126993
--R Type: Quaternion Fraction
Integer
--E 3
--S 4 of 13
q^6
2029490709319345 48251690851 144755072553 48251690851
(4) - ---------------- - ----------- i + ------------ j + ----------- k
7256313856 1288408 41229056 10307264
Type: Quaternion Fraction
Integer
--R
--R
--R 2029490709319345 48251690851 144755072553 48251690851
--R (4) - ---------------- - ----------- i + ------------ j +
----------- k
--R 7256313856 1288408 41229056 10307264
--R Type: Quaternion Fraction
Integer
--E 4
--S 5 of 13
r := quatern(-2,3,23/9,-89); q + r
20 119
(5) - -- - 5i + --- j - 88k
11 36
Type: Quaternion Fraction
Integer
--R
--R
--R 20 119
--R (5) - -- - 5i + --- j - 88k
--R 11 36
--R Type: Quaternion Fraction
Integer
--E 5
--S 6 of 13
q * r - r * q
2495 817
(6) - ---- i - 1418j - --- k
18 18
Type: Quaternion Fraction
Integer
--R
--R
--R 2495 817
--R (6) - ---- i - 1418j - --- k
--R 18 18
--R Type: Quaternion Fraction
Integer
--E 6
--S 7 of 13
i:=quatern(0,1,0,0)
(7) i
Type: Quaternion
Integer
--R
--R
--R (7) i
--R Type: Quaternion
Integer
--E 7
--S 8 of 13
j:=quatern(0,0,1,0)
(8) j
Type: Quaternion
Integer
--R
--R
--R (8) j
--R Type: Quaternion
Integer
--E 8
--S 9 of 13
k:=quatern(0,0,0,1)
(9) k
Type: Quaternion
Integer
--R
--R
--R (9) k
--R Type: Quaternion
Integer
--E 9
--S 10 of 13
[i*i, j*j, k*k, i*j, j*k, k*i, q*i]
2 3
(10) [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
11 4
Type: List Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (10) [- 1,- 1,- 1,k,i,j,8 + -- i + j - - k]
--R 11 4
--R Type: List Quaternion Fraction
Integer
--E 10
--S 11 of 13
norm q
126993
(11) ------
1936
Type: Fraction
Integer
--R
--R
--R 126993
--R (11) ------
--R 1936
--R Type: Fraction
Integer
--E 11
--S 12 of 13
conjugate q
2 3
(12) -- + 8i - - j - k
11 4
Type: Quaternion Fraction
Integer
--R
--R
--R 2 3
--R (12) -- + 8i - - j - k
--R 11 4
--R Type: Quaternion Fraction
Integer
--E 12
--S 13 of 13
q * %
126993
(13) ------
1936
Type: Quaternion Fraction
Integer
--R
--R
--R 126993
--R (13) ------
--R 1936
--R Type: Quaternion Fraction
Integer
--E 13
)spool
(1) ->
From MAILER-DAEMON Fri Oct 30 08:26:25 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3qYi-0003TX-NV
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 08:26:24 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3qYg-0003Sb-GG
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 08:26:22 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3qYb-0003Po-9a
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 08:26:22 -0400
Received: from [199.232.76.173] (port=53603 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N3qYb-0003Ph-4o
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 08:26:17 -0400
Received: from mail-bw0-f212.google.com ([209.85.218.212]:52621)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N3qYa-0003Dz-JD
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 08:26:16 -0400
Received: by bwz4 with SMTP id 4so3859399bwz.2
for ; Fri, 30 Oct 2009 05:26:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlemail.com; s=gamma;
h=domainkey-signature:mime-version:received:in-reply-to:references
:date:message-id:subject:from:to:content-type
:content-transfer-encoding;
bh=vBZeK+k0ms1VdCbpf8915mgq4DGlWyaeGyv+j298CUw=;
b=DiA7IRUzwDPSZW+IF5byz32hE5mHZ0lat1mOZj3PNh80TXn1/TUz/JS8rAUrCwOdVg
zGirxYWgcIzMZYjmBQJEKH9tJde3S9AO5lxSIHgArei6QXig/oAkacOIqjdodmKWVm8p
EYq/ZJOzWwNLODI2DQpg6Y6zh1SXEJJK+VmSo=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:content-type:content-transfer-encoding;
b=Ew8qw6gvAgn87nneIN2jytbberKdNhfymHCzFXLkxXIWU3qmZu/ll43kDXj6gT1ZrS
EiGhOFWoJ8/m7xPLKzTjTs+iU7xbv8P7NR9whIFqGMywSZLN04ZT1+xVRlxsZr4v+YJk
Cb1ibc7JjZh79LkuMDDZW2+nn388XIvCKwY1k=
MIME-Version: 1.0
Received: by 10.204.10.135 with SMTP id p7mr1098574bkp.69.1256905574490; Fri,
30 Oct 2009 05:26:14 -0700 (PDT)
In-Reply-To: <200910301121.02806.ax87438@martinb.com>
References: <200910291042.24547.ax87438@martinb.com>
<200910291647.03906.ax87438@martinb.com>
<275293a60910291110r189db6dao633483d991611830@mail.gmail.com>
<200910301121.02806.ax87438@martinb.com>
Date: Fri, 30 Oct 2009 12:26:14 +0000
Message-ID: <275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
From: Bertfried Fauser
To: Martin Baker ,
axiom-devel
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc:
Subject: [Axiom-developer] Re: [Axiom-mail] finding source code
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 12:26:22 -0000
Hi Martin,
> So yes, I am interested, but I don't know how much I could do.
OK, I got this disclaimer, anybody states it :-))
> As I say, I don't have a rigorous mathematical background,
No worries, most things with Clifford algebras are easy.
Clifford and Grassmann bases:
Mathematically its sound to start with the Grassmann algebra, you have
the following ingrediences:
V an n-dim vector space
/\ : V x V ... x V --> /\^n V the unital, associative antisymmetric
exterior product or Grassmann or wedge product (all sysnonyms)
Due to antisymmetry you have for ever v in V that v/\v=3D0, however,
if w<>\alpha v then w/\v is a _new_ element of the algebra. Choosing
a (any) basis {ei}_i in V allows you to construct 2^n many basis elements.
Hence the algebra relations for a grassmann algebra is
Grassmann: v/\v =3D0 for all v \in V
<=3D> ei/\ej =3D -ej/\ei (by setting v=3Dei+ej) and using ei/\ei=
=3D0 etc)
You have (n over 0) 0-vectors (the scalars of the base field times
identity of the algebra)
You have (n over 1) 1-vectors, that are the images of the base vectors
ei in the alegbra,
often these immages are not distingusihed from ther orignal basis
verctor life.
You have (n over 2) 2-vectors (bi-vectors) of type ei/\ej ij
but add ei^2=3DQ(ei) =3D ei^t G ei (last expression is matrix
dot product, ei^t row
vector)
This set of rules _implies_ that the matrix G of the bilinear form Q
is diagonal in the
basis {ei}_i, we want a more general setting allowing any basis of V
to be used. This
is most easily done using a construction from Chevalley:
Let \gamma : V ----> (End /\V ~=3D) CL(V,G) (again G~=3DQ) be a map
which injects the space V into the Clifford algebra CL(V,G)
We define \gamma with values in the endomorphisms of the grassmann algebra
build over V as follows (=B0 =3D clifford product):
\gamma(1) =3D 1=B0
\gamma(ei) =3D Ei=B0 =3D Ei/\ + Ei _|
where Ei _| Ej :=3D Ei^t G Ej for Ei in (the image of) V
_| is called contraction, one sees that the Clifford product has two
parts, the exterior part and the contraction part which depends on G.
If G=3D0 the the Clifford algebra becomes a Grassmann algebra.
Furthermore do we see that the Clifford algebra has a basis out of Grassman=
n
elements. GL(V,G) ~=3D /\V as vector spaces (not als algebras)
lets proceed with gamma:
\gamma(ei/\ej) =3D (Ei /\ Ej)=B0 =3D (Ei =B0 Ej)=B0 - (Ei _| Ej)=B0
=3D (Ei =B0 Ej)=B0 - (E_i^t G Ej) 1=B0
ect in a recursive way. This allows to construct the clifford product in
in terms of a Grassmann basis and to obtain the general multiplication
u1/\.../\uk =B0 v1/\../\vl =3D many terms of degree k+l to abs(k-l)
For your example we have
[ 0 1 ]
G : =3D [ 1 0 ]
which gives (I switch back to ei for Clifford and Grassmann)
e1 =B0 e1 =3D e1/\e1 + e1^t G e1 =3D 0
e1 =B0 e2 =3D e1/\e2 + e1^t G e2 =3D e1/\e2 + 1 (note this is no longer h=
omogeneous)
(e1 =B0
e2 has degree 0 and degree 2 parts)
e2 =B0 e1 =3D e2/\e1 + e2^t G e1 =3D -e1/\e2 + 1
e2 =B0 e2 =3D e2/\e2 + e2^t G e2 =3D 0
A bit more complicated is:
e1 =B0 (e1/\e2) =3D e1/\e1/\e2 + e1_| (e1/\e2) first term is zero due to =
e1/\e1=3D0
the second term need some thought, the bilinear form G acts only on VxV,
now we need to know how it acts on elements of V/\V, this is done by demand=
ing
that _| is a (graded) derivation
e1 =B0 (e1/\e2) =3D (e1 _| e1) /\e2 + (-1)^(degree(e1)*degree(e1)) e1/\(e1=
_| e2)
^^^^^^^^ zero (-1)^1*1
^^^^^^^one
=3D -e1
similarly we get
e2 =B0 (e1/\e2) =3D e2
(e1/\e2) =B0 e1 is obtained by rewriting e1/\e2 =3D e1=B0e2 - e1_|e2 and
applying the needed
simplifications, .....
> In other words the two bases are the same when the inner product is in it=
s
> diagonal form but when the bases are rotated the outer product rotated wi=
th it
> only in the case of Grassmann basis but not in the case of the Clifford b=
asis?
No, not really. you may address a grassmann algebra as a special
clifford algebra
with Q=3D0 (mathematically a bit sloppy but helpful)
The point is that you need to watch what kind of product you use to
generate your
algebra. Grassmann uses /\, but Clifford has two choices, =B0 and /\.
geometry needs
the /\basis but AXIOM uses the =B0 basis and assumes that the quadratic for=
m is
diagonal in the basis of generators (AFAIK).
1=3D1, ei =3D ei of course
ei/\ej =3D/=3D ei=B0ej =3D ei/\ej + ei^t G e_j
ei/\ej/\ek =3D/=3D ei=B0ej=B0ek =3D ei=B0(ej/\ek + ej^t G e_k)
=3D ei/\ej/\ek + ei^t G e_j ek - ek ei^t G ek +
ej ei^t G ek
If you write in AXIOM ei*ej, you get ei=B0ej and not ei/\ej + ei^t G ej et=
c...
> I need to think more about your comments about projective space and confo=
rmal
> model (It takes me some time to absorb these things)
I think in the works you mentioned, these things should be described,
otherwise look
on the arXiv for work of John Seelig, and Joan Lasenby....
> the purposes of Axiom, the code would need to be completely general and n=
ot
> otpimised for particular geometries?
That's not really true. You _just_ need a Clifford algebra, the
geometry comes as
a sort of interpretation of the objects (elements) in the algebra.
What would be needed
is the following [Hence a clifford algebra is not geometric, its the
interpretation]
1) a grassmann basis for the clifford algebra
2) the exteriorn /\ product, contraction _| and a proper clifford product =
=B0
3) some device to generate matrices out of clifford numbers and vice versa
4) possibly a clifford solver which allows to type in equations in
clifford variables
so that you get a solution set, eg: X a generic element in CL(V,Q), find=
all
X with (X^2=3D) X=B0X =3D X
That's almost all one needs (without spinors)
Ciao
BF.
--=20
% PD Dr Bertfried Fauser
% Research Fellow, School of Computer Science, Univ. of Birmingham
% Honorary Associate, University of Tasmania
% Privat Docent: University of Konstanz, Physics Dept
% contact |-> URL : http://clifford.physik.uni-konstanz.de/~fauser/
% Phone : +49 1520 9874517
From MAILER-DAEMON Fri Oct 30 11:12:49 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3t9l-0001av-Fm
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 11:12:49 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3t9j-0001YL-J3
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 11:12:47 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3t9f-0001SN-Og
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 11:12:47 -0400
Received: from [199.232.76.173] (port=58220 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N3t9f-0001S3-H0
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 11:12:43 -0400
Received: from mail-pz0-f188.google.com ([209.85.222.188]:59774)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N3t9f-0000tj-6M
for Axiom-developer@nongnu.org; Fri, 30 Oct 2009 11:12:43 -0400
Received: by pzk26 with SMTP id 26so1961851pzk.4
for ; Fri, 30 Oct 2009 08:12:40 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.142.202.9 with SMTP id z9mr150991wff.166.1256915560531; Fri,
30 Oct 2009 08:12:40 -0700 (PDT)
In-Reply-To: <275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
References: <200910291042.24547.ax87438@martinb.com>
<200910291647.03906.ax87438@martinb.com>
<275293a60910291110r189db6dao633483d991611830@mail.gmail.com>
<200910301121.02806.ax87438@martinb.com>
<275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
Date: Fri, 30 Oct 2009 11:12:40 -0400
Message-ID:
Subject: Re: [Axiom-developer] Re: [Axiom-mail] finding source code
From: Bill Page
To: Bertfried Fauser
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: Martin Baker ,
axiom-devel
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 15:12:47 -0000
Bertfried,
I think it's great to have this quick introduction - especially when
it also references what is currently implemented in Axiom and what
might be done in the future. I hope that we can eventually have a
tutorial including actual Axiom code. If you start to develop
something like that I would be very glad to help add it to the
axiom-wiki.newsynthesis.org web site!
On Fri, Oct 30, 2009 at 8:26 AM, Bertfried Fauser wrote:
> Hi Martin,
>
>> So yes, I am interested, but I don't know how much I could do.
>
> OK, I got this disclaimer, anybody states it :-))
>
>> As I say, I don't have a rigorous mathematical background,
>
> No worries, most things with Clifford algebras are easy.
>
> Clifford and Grassmann bases:
>
> Mathematically its sound to start with the Grassmann algebra, you have
> the following ingrediences:
>
> V an n-dim vector space
> /\ : V x V ... x V --> /\^n V =A0the unital, associative antisymmetric
> =A0 exterior product or Grassmann or wedge product (all sysnonyms)
>
> ...
Although I think your somewhat more formal approach is very important
in the context of Axiom, you might also be interested in the more
applied approach presented by John Browne here:
http://sites.google.com/site/grassmannalgebra/bookandpackageversions
"This Grassmann algebra project has been a part-time project dating
from my doctoral thesis in the area in 1978. In October 2001 I
published an incomplete book draft "Grassmann Algebra: Exploring
applications of extended vector algebra with Mathematica" on my
university home page. The computations in this draft were done with
early versions of Mathematica and draft versions of the
GrassmannAlgebra package. ..."
John also makes his Mathematica code available online. It would be
great to have this kind of package available in Axiom.
Regards,
Bill Page.
From MAILER-DAEMON Fri Oct 30 15:51:50 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3xVl-0003Op-2B
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 15:51:49 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3xVh-0003L1-Q0
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 15:51:45 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3xVa-0003F5-MT
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 15:51:42 -0400
Received: from [199.232.76.173] (port=40192 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N3xVa-0003Ep-GH
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 15:51:38 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:57749
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1N3xVX-00047U-VD
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 15:51:36 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n9UJpL8a023909;
Fri, 30 Oct 2009 13:51:22 -0600
Message-ID: <4AEB42FC.1040407@axiom-developer.org>
Date: Fri, 30 Oct 2009 14:48:12 -0500
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: lehner@bayou.uni-linz.ac.at, daly ,
Axiom-Developer
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc:
Subject: [Axiom-developer] Examples on functions
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 19:51:46 -0000
Franz,
> 2. On the download page for release 1.0.8 there is a tarball containing
> examples. Where should they go to make them visible to )help ?
If you put a flat text file in $AXIOM/doc/spadhelp, for example,
create a file called $AXIOM/doc/spadhelp/foo.help then you can say
)help foo
and it will type out the contents of that file. I have created
about 300 help files (which will also work in Fricas).
If you create new help files I would be happy to add them.
> 3. What is a canonical place to put examples?
> In Axiom (TM) there are some examples shown after the )display command,
> which can be quite instructive.
> I would like to prepare some examples for tensor as well.
In Axiom you can add examples to any function. The examples are just
a special syntax in the comments for a function. So if you have a
function called
foo: % -> %
++ foo(x) returns x
then you can write an example by adding "++X" comments (that is,
the ++ comment followed immediately by an "X" character so you write:
foo: % -> %
++ foo(x) returns x
++
++X foo(3)
Fricas could add this functionality easily but I'm not part of that
effort so someone will have to pick up the change from Axiom and
add it to Fricas.
On another topic, Axiom algebra is integrating the regression test
files with the algebra sources. If you generate new code I beg you
to write as many tests as you can, especially including a test for
each function. It is very painful for me to try to track Fricas
algebra because all I ever see is the final code with no test
cases, documentation, examples, or pointers to literature. This
makes it very difficult for me (or anyone, actually) to figure
out how to use new algebra.
Tim
Elder of the Internet
From MAILER-DAEMON Fri Oct 30 17:46:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N3zJ4-00016p-Su
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 17:46:50 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N3zJ3-00016f-Dj
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 17:46:49 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N3zIy-00015a-3a
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 17:46:48 -0400
Received: from [199.232.76.173] (port=44535 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N3zIx-00015U-Jt
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 17:46:43 -0400
Received: from mail-bw0-f212.google.com ([209.85.218.212]:62593)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N3zIx-0004bS-7c
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 17:46:43 -0400
Received: by bwz4 with SMTP id 4so4440323bwz.2
for ; Fri, 30 Oct 2009 14:46:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlemail.com; s=gamma;
h=domainkey-signature:mime-version:sender:received:in-reply-to
:references:date:x-google-sender-auth:message-id:subject:from:to:cc
:content-type; bh=LYosSL4cSj5/0jLWMIcTWfCFyTc09tV9Pfy3fQs/ScI=;
b=uq7mFzxmBnYzJSbix52coul7XY2WbUcIgTvAr2ejaN02fqNmB68lK1Qv7X8BOO2xk7
OGlFLIBcl/L1/CqKA73WIrDws4iEWFEtQMWT2nOdLDkvexHUcjhxk1dN2xX/cmGWuUSg
rm12Q0IPEvSz9Kf/M78wmtVEtCu/4OXVTj1Ws=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma;
h=mime-version:sender:in-reply-to:references:date
:x-google-sender-auth:message-id:subject:from:to:cc:content-type;
b=mpuEQzQy/UXAzvfacllDwyt6+J4SbqX6sLn8O/eKiZqzYFt9HUxRFsgZgrjczhJkvS
LnTcXDmqsAUmhpkcOA5ovp6sMqGZQOFkmX/4JsJ9W8D/vSsWtxVeJKj+Nk1NZJw1IaeE
9L/tavu3y6aGecILm2vm9zKRbN1ZL220mJEhE=
MIME-Version: 1.0
Sender: bertfried.fauser@googlemail.com
Received: by 10.204.10.7 with SMTP id n7mr1567736bkn.68.1256939202100; Fri, 30
Oct 2009 14:46:42 -0700 (PDT)
In-Reply-To: <4AEB42FC.1040407@axiom-developer.org>
References: <4AEB42FC.1040407@axiom-developer.org>
Date: Fri, 30 Oct 2009 21:46:42 +0000
X-Google-Sender-Auth: 5078b5a2a30decdb
Message-ID: <275293a60910301446l87b8ed1k53402a906517738d@mail.gmail.com>
Subject: Re: [Axiom-developer] Examples on functions
From: Bertfried Fauser
To: Tim Daly
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: Axiom-Developer , lehner@bayou.uni-linz.ac.at
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 21:46:49 -0000
Dear Tim,
> On another topic, Axiom algebra is integrating the regression test
> files with the algebra sources. If you generate new code I beg you
> to write as many tests as you can, especially including a test for
> each function.
I try to comply with this rule (ralf also asked for documentation) for
the symmetric
functions and hope they make their way into AXIOM(TM) too.
However a fully documeted code is out of my working power, there is just far too
much to say about symmetric functions.
You saw possibly the mail of Martin on Clifford algebras. I have tried
to test some
Clifford issues in FriCAS (no AXIOM(TM) on my computer currently) but
that should
be identical. FriCAS is assuming that the quadratic form is diagonal,
that is very bad.
Perhaps I will find time to improve that. I tried to put up a sandbox
on newsynthesis,
but I possibyl forgot my user paseword there, since the system didn't
let me create
a new sandbox
Ciao
BF.
--
% PD Dr Bertfried Fauser
% Research Fellow, School of Computer Science, Univ. of Birmingham
% Honorary Associate, University of Tasmania
% Privat Docent: University of Konstanz, Physics Dept
% contact |-> URL : http://clifford.physik.uni-konstanz.de/~fauser/
% Phone : +49 1520 9874517
From MAILER-DAEMON Fri Oct 30 18:45:48 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N40E8-0007YO-DJ
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 18:45:48 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N40E6-0007XZ-96
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 18:45:46 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N40E1-0007Vr-81
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 18:45:45 -0400
Received: from [199.232.76.173] (port=51294 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N40E0-0007Vj-UD
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 18:45:40 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:39680
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1N40E0-0003si-67
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 18:45:40 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n9UMjP8a027979;
Fri, 30 Oct 2009 16:45:26 -0600
Message-ID: <4AEB6BC7.2090000@axiom-developer.org>
Date: Fri, 30 Oct 2009 17:42:15 -0500
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bertfried Fauser
Subject: Re: [Axiom-developer] Examples on functions
References: <4AEB42FC.1040407@axiom-developer.org>
<275293a60910301446l87b8ed1k53402a906517738d@mail.gmail.com>
In-Reply-To: <275293a60910301446l87b8ed1k53402a906517738d@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: Axiom-Developer , lehner@bayou.uni-linz.ac.at
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 22:45:46 -0000
Bertfried Fauser wrote:
> Dear Tim,
>
>
>> On another topic, Axiom algebra is integrating the regression test
>> files with the algebra sources. If you generate new code I beg you
>> to write as many tests as you can, especially including a test for
>> each function.
>>
>
> I try to comply with this rule (ralf also asked for documentation) for
> the symmetric
> functions and hope they make their way into AXIOM(TM) too.
>
> However a fully documeted code is out of my working power, there is just far too
> much to say about symmetric functions.
>
> You saw possibly the mail of Martin on Clifford algebras. I have tried
> to test some
> Clifford issues in FriCAS (no AXIOM(TM) on my computer currently) but
> that should
> be identical. FriCAS is assuming that the quadratic form is diagonal,
> that is very bad.
> Perhaps I will find time to improve that. I tried to put up a sandbox
> on newsynthesis,
> but I possibyl forgot my user paseword there, since the system didn't
> let me create
> a new sandbox
>
> Ciao
> BF.
>
>
Given working tests we have some hope of figuring out what a function
is supposed to do. Without a working test we can only guess whether the
answer is right or not. You certainly have to construct these simple
test cases in order to debug your code. Save the tests you do.
As for documentation, it helps to include a small paragraph that
contains enough so that we can find the rest in the literature.
Even something as simple as a link to Eric's mathworld or wikipedia
or a book reference would be a start. When I worked on the special
function E1 at least there was a reference to Luke's book. Nobody
can really expect you to write a tutorial or a book chapter but
references help a lot.
I'm trying to avoid just a straight "code dump" because then we
have to guess. The main reason I started added example output to
the ")display operation" command is that the new user would have
at least one working example of every function. Sometimes it is
very hard to construct the Axiom type even if you know what the
input should look like, which I'm sure you have experienced.
Tim
From MAILER-DAEMON Fri Oct 30 19:32:52 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N40xg-0006xD-5P
for mharc-axiom-developer@gnu.org; Fri, 30 Oct 2009 19:32:52 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N40xe-0006uJ-LQ
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 19:32:50 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N40xZ-0006hf-KR
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 19:32:50 -0400
Received: from [199.232.76.173] (port=34286 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N40xZ-0006hL-GT
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 19:32:45 -0400
Received: from mo-p00-ob.rzone.de ([81.169.146.162]:60562)
by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA1:24) (Exim 4.60)
(envelope-from ) id 1N40xZ-0002Vl-5J
for axiom-developer@nongnu.org; Fri, 30 Oct 2009 19:32:45 -0400
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1256945562; l=824;
s=domk; d=hemmecke.de;
h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References:
Subject:CC:To:MIME-Version:From:Date:X-RZG-CLASS-ID:X-RZG-AUTH;
bh=rpsOkBJFeFTw0MydYOGRb7iQLwA=;
b=fs/3qDXTOet5kqzycNkPY5IUa0NBSwWOSSe63W8sVP3Qfs66HxmDcBKB/2eAYAkogHQ
PuWqk8D4uimbppfdC9vMrZRWB95zBnAkxa1wTiL90HaxDLZOXWuuCg3P1ug7FbXbNZDub
8SZQRJ1+/rUkioiK8Eq3wnRdOP+G9bZ5ueA=
X-RZG-AUTH: :Pm0Ic2CgfvKqpyys4bXn/kzLaHTdYnTFXEqQA90LpSssVTomScgJqXkIBPfH
X-RZG-CLASS-ID: mo00
Received: from [10.0.0.2]
(88-117-40-243.adsl.highway.telekom.at [88.117.40.243])
by post.strato.de (mrclete mo12) (RZmta 22.1)
with (DHE-RSA-AES128-SHA encrypted) ESMTP id N0436cl9UMGEP8 ;
Sat, 31 Oct 2009 00:31:40 +0100 (MET)
Message-ID: <4AEB775C.9070307@hemmecke.de>
Date: Sat, 31 Oct 2009 00:31:40 +0100
From: Ralf Hemmecke
User-Agent: Thunderbird 2.0.0.23 (X11/20090817)
MIME-Version: 1.0
To: Tim Daly
Subject: Re: [Axiom-developer] Examples on functions
References: <4AEB42FC.1040407@axiom-developer.org> <275293a60910301446l87b8ed1k53402a906517738d@mail.gmail.com>
<4AEB6BC7.2090000@axiom-developer.org>
In-Reply-To: <4AEB6BC7.2090000@axiom-developer.org>
X-Sent-by-Hemmecke: ralf@hemmecke.de
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta)
Cc: Axiom-Developer , lehner@bayou.uni-linz.ac.at,
Bertfried Fauser
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Fri, 30 Oct 2009 23:32:51 -0000
> As for documentation, it helps to include a small paragraph that
> contains enough so that we can find the rest in the literature.
> Even something as simple as a link to Eric's mathworld or wikipedia
> or a book reference would be a start. When I worked on the special
> function E1 at least there was a reference to Luke's book. Nobody
> can really expect you to write a tutorial or a book chapter but
> references help a lot.
I would like to strongly support that.
Mathematics is such a huge field and with current technology we have to
means to at least include a URL to help people that want to review the
code but don't know everything about the background (yes sometimes
following different books lead to different code design). It is vital to
at least give enough hints to the literature.
Ralf
From MAILER-DAEMON Sat Oct 31 06:59:54 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N4BgY-0005ep-Hi
for mharc-axiom-developer@gnu.org; Sat, 31 Oct 2009 06:59:54 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N4BgW-0005eV-Is
for axiom-developer@nongnu.org; Sat, 31 Oct 2009 06:59:52 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N4BgR-0005dx-Hx
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 06:59:51 -0400
Received: from [199.232.76.173] (port=42838 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N4BgR-0005du-Ay
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 06:59:47 -0400
Received: from moutng.kundenserver.de ([212.227.17.9]:51978)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N4BgQ-0003In-Ms
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 06:59:47 -0400
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
[94.193.164.220])
by mrelayeu.kundenserver.de (node=mrbap0) with ESMTP (Nemesis)
id 0LjdQ8-1MSuzH05pQ-00cA0Y; Sat, 31 Oct 2009 11:59:43 +0100
From: Martin Baker
To: Bertfried Fauser
Date: Sat, 31 Oct 2009 10:59:43 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <200910291042.24547.ax87438@martinb.com>
<200910301121.02806.ax87438@martinb.com>
<275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
In-Reply-To: <275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200910311059.43303.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+RiHDilOs0tGD4cCTauDr5kBi/pUEhqF1VRYj
n9+jKL473d9x7ScOS4zDv/4voI03QQTE4kyRGwmM52eyA+bQl0
D3MFPhMl5Qxd1GHA1kS8Q==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
recognized.
Cc: axiom-devel
Subject: [Axiom-developer] Clifford Algebra Requirements
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sat, 31 Oct 2009 10:59:53 -0000
Bertfried,
In addition to the limitations of the current Clifford algebra implementation,
that you explained, there also seem (to my untrained eye) to be performance
issues. Also I wanted to get a feel for the general Axiom design methodology
by picking a specific issue.
The current implementation seems to calculate the product of terms every time
it is required when a multiplication is called. From a performance point of
view it would seem much more efficient to calculate a multiplication table in
the constructor which would make individual multiplications much faster. The
original author also had this thought as the following comment is in the code:
-- The ei*ej products could instead be precomputed in
-- a (2**n)**2 multiplication table.
The entries in such a table (in the general Grassman case) would be quite
complicated. Not just a single type but perhaps a sum of types with algebraic
number multipliers.
I think, if I were designing such a system using a conventional object
oriented program then, I would create a class for the multiplication table and
also a class for individual table entries. I don't know if that's how things
are done in Axiom?
I don't know enough about the mathematics but is seems to me that classes
(domains) such as mutiplicationTable and multipicationTableEntry might have
wider application for implementing other algebras?
Here I am really going to show up the gaps in my mathematical education but,
could these things link back to more fundamental structures, for example could
there be an inheritance hierarchy like:
ring
field
field which is a compound type
compound type which can be defined by a multiplication table.
clifford (Grassman) algebra
Is there someone who defines the overall structure of Axiom at this level?
What do you think would be the best approach to this?
Martin
From MAILER-DAEMON Sat Oct 31 10:54:34 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N4FLd-0003hf-Rf
for mharc-axiom-developer@gnu.org; Sat, 31 Oct 2009 10:54:33 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N4FLc-0003gk-CV
for axiom-developer@nongnu.org; Sat, 31 Oct 2009 10:54:32 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N4FLX-0003gI-NG
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 10:54:32 -0400
Received: from [199.232.76.173] (port=33430 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N4FLX-0003gF-IB
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 10:54:27 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:45187
helo=axiom-developer.org) by monty-python.gnu.org with esmtps
(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
(envelope-from ) id 1N4FLX-0003MO-2S
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 10:54:27 -0400
Received: from [192.168.1.100] (dynamic-acs-72-23-235-203.zoominternet.net
[72.23.235.203])
by axiom-developer.org (8.12.8/8.12.8) with ESMTP id n9VEsI8a030388;
Sat, 31 Oct 2009 08:54:19 -0600
Message-ID: <4AEC4EDB.4040405@axiom-developer.org>
Date: Sat, 31 Oct 2009 09:51:07 -0500
From: Tim Daly
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker
Subject: Re: [Axiom-developer] Clifford Algebra Requirements
References: <200910291042.24547.ax87438@martinb.com> <200910301121.02806.ax87438@martinb.com> <275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
<200910311059.43303.ax87438@martinb.com>
In-Reply-To: <200910311059.43303.ax87438@martinb.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: axiom-devel ,
Bertfried Fauser
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sat, 31 Oct 2009 14:54:32 -0000
Martin Baker wrote:
> Bertfried,
>
> In addition to the limitations of the current Clifford algebra implementation,
> that you explained, there also seem (to my untrained eye) to be performance
> issues. Also I wanted to get a feel for the general Axiom design methodology
> by picking a specific issue.
>
> The current implementation seems to calculate the product of terms every time
> it is required when a multiplication is called. From a performance point of
> view it would seem much more efficient to calculate a multiplication table in
> the constructor which would make individual multiplications much faster. The
> original author also had this thought as the following comment is in the code:
>
> -- The ei*ej products could instead be precomputed in
> -- a (2**n)**2 multiplication table.
>
> The entries in such a table (in the general Grassman case) would be quite
> complicated. Not just a single type but perhaps a sum of types with algebraic
> number multipliers.
>
> I think, if I were designing such a system using a conventional object
> oriented program then, I would create a class for the multiplication table and
> also a class for individual table entries. I don't know if that's how things
> are done in Axiom?
>
> I don't know enough about the mathematics but is seems to me that classes
> (domains) such as mutiplicationTable and multipicationTableEntry might have
> wider application for implementing other algebras?
>
> Here I am really going to show up the gaps in my mathematical education but,
> could these things link back to more fundamental structures, for example could
> there be an inheritance hierarchy like:
>
> ring
> field
> field which is a compound type
> compound type which can be defined by a multiplication table.
> clifford (Grassman) algebra
>
> Is there someone who defines the overall structure of Axiom at this level?
>
> What do you think would be the best approach to this?
>
> Martin
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
>
Martin,
Structurally, Axiom rests on the categories which define the behavior
which is expected from domains which belong to the categories. For
instance, everything that belongs to SetCategory has to implement
equality.
Domains implement the methods required by the categories as well as
methods particular to themselves. Thus, it would seem that you would
define a category "field defined by multiplication table" which could
defines expected methods by all members (e.g. tableLookup(element,element))
The Grassman algebra domain would be a member of the category and thus
would be expected to implement such a method.
Alternatively you could create a category "field with cached results"
that required a "cacheLookup(element,element)".
The design is flexible. However, there should be a strong mathematical
basis for the choice of category structure. That said, there is the
"computational mathematics" issue that some ideas are implied purely
by performance rather than mathematical.
A graph of the category hierarchy is at:
http://axiom-developer.org/axiom-website/bookvol10.2full.html
This is one of the more challenging aspects of Axiom so don't feel
intimidated by the task. Feel free to ask more questions.
I downloaded the Grassman Algebra book and have finished the first
two chapters. I looked at Grassman a couple years ago while I was
busy documenting the Quaternions.
Tim
From MAILER-DAEMON Sat Oct 31 12:13:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
id 1N4GaN-0008Po-OJ
for mharc-axiom-developer@gnu.org; Sat, 31 Oct 2009 12:13:51 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
id 1N4GaM-0008PW-BO
for axiom-developer@nongnu.org; Sat, 31 Oct 2009 12:13:50 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
id 1N4GaH-0008Oo-It
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 12:13:49 -0400
Received: from [199.232.76.173] (port=40660 helo=monty-python.gnu.org)
by lists.gnu.org with esmtp (Exim 4.43) id 1N4GaH-0008Oi-Fh
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 12:13:45 -0400
Received: from mail-bw0-f212.google.com ([209.85.218.212]:36388)
by monty-python.gnu.org with esmtp (Exim 4.60)
(envelope-from ) id 1N4GaG-0006BG-WF
for Axiom-developer@nongnu.org; Sat, 31 Oct 2009 12:13:45 -0400
Received: by bwz4 with SMTP id 4so5034689bwz.2
for ; Sat, 31 Oct 2009 09:13:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=googlemail.com; s=gamma;
h=domainkey-signature:mime-version:received:in-reply-to:references
:date:message-id:subject:from:to:cc:content-type;
bh=7mT2spJKkg/61fbpHtDDk22jSrIOcBiH6if2tyE5aO8=;
b=swtBDlw4p+XpMZU1bsV2PTGWct8Kv7SlVWa0/YJ9P0dyWNFVDkV8aJC7eZ3wzmUnrL
fPEd0O+0JTRUTfpictyevhG+gYypVsyJ3GS0Jf3mXxJUKPNij/NCEZHoR0awIyLlCxaQ
vJAs5TT/oNxJfJ6+C8xEP/elm1yV1jAYbEycw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:cc:content-type;
b=EWxtFQIPPaO91xy9o/71FToNaFdy/QJlWQOJKAc7p9Vo3Rn3wxBozazIqz7Cjbguzh
N/W67/JtFO39x3T+q1NOyXKb+3DNTJtJvg1+z1ji++Fd5WVmauCV3UCZIsRatAAPZ+ON
ND+wyY9sFKd10hNj/mkPnYfr94sPcB1ssSBaQ=
MIME-Version: 1.0
Received: by 10.204.34.70 with SMTP id k6mr2209757bkd.178.1257005623266; Sat,
31 Oct 2009 09:13:43 -0700 (PDT)
In-Reply-To: <200910311059.43303.ax87438@martinb.com>
References: <200910291042.24547.ax87438@martinb.com>
<200910301121.02806.ax87438@martinb.com>
<275293a60910300526n22f6437fkb10f0ae1f256a9ba@mail.gmail.com>
<200910311059.43303.ax87438@martinb.com>
Date: Sat, 31 Oct 2009 16:13:43 +0000
Message-ID: <275293a60910310913j5961b059h48708875a8c286b9@mail.gmail.com>
From: Bertfried Fauser
To: Martin Baker
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: axiom-devel , fricas-devel@googlegroups.com
Subject: [Axiom-developer] Re: Clifford Algebra Requirements
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
X-List-Received-Date: Sat, 31 Oct 2009 16:13:50 -0000
Dear Martin,
I am surely not the person to aks for general AXIOM(TM) designs, since I am
a novice on that either
> The current implementation seems to calculate the product of terms every time
> it is required when a multiplication is called. From a performance point of
> view it would seem much more efficient to calculate a multiplication table
This will work for very small diemnions. In my maple Clifford package
(with Rafal Ablamowicz) we tried to do that, and we were not able to
compute the multiplication
tables for dim V > 8, since they become _very_ huge. A partial solution is
to cache the results of such multiplications and to read results from the cache
if present. There si currently a discussion going of on teh FriCAS
(AXIOM(TM) fork)
developers list how to do this properly. It seems that only certain
data structures
can be cached and that one has to translate user data structure
possibyl into a Lisp expression which can be hashed. This is surely
nothing a novce user (as I feel to be)
would like to crank.
> -- The ei*ej products could instead be precomputed in
> -- a (2**n)**2 multiplication table.
In principle yes, but if you have different bases, tha means also to store the
multipication table for each basis, which might soon become a problem.
Anyhow the first step is to _have_ a valid function which produces such a table,
then one can think of hashing.
> The entries in such a table (in the general Grassman case) would be quite
> complicated. Not just a single type but perhaps a sum of types with algebraic
> number multipliers.
That seems actually not to be a big issue, If we hash the product of two basis
elements, (Vector Integer, Vector Integer) the rsult is alway of type
CLQ := Type: CliffordAlgebra(2,Fraction(Integer),[[1,0],[0,1]])
<>
so a table (Index,Index) -> CLQ would do the trick, I guess.
> oriented program then, I would create a class for the multiplication table and
> also a class for individual table entries. I don't know if that's how things
> are done in Axiom?
The table entries are from the domain CLQ, and there is a type Table(key,value)
in AXIOM.
> I don't know enough about the mathematics but is seems to me that classes
> (domains) such as mutiplicationTable and multipicationTableEntry might have
> wider application for implementing other algebras?
What one would need from the outset is a graedFreeModule(Ring,Basis) V
to model the Grassmann algebra. The Clifford algebra is (a sub alegbra of)
the endormiphism algebra of that, hence lives in the tensor product V (x) V^*
A general clifford elment is hence representet (inefficiently) by a sum of such
tensors.
> could these things link back to more fundamental structures, for example could
> there be an inheritance hierarchy like:
>
> ring
> field
> field which is a compound type
> compound type which can be defined by a multiplication table.
> clifford (Grassman) algebra
Indeed such hierarchies exist in AXIOM. However, one possibly needs
even modules over skew fields and I do not know if such things are implemented.
Complex Clifford algebra: CL(n) has two cases n even and n odd
Real Clifford algebra. CL(p,q) has 8 cases where the base ring of the
representation
is in IL whre
IL={ reals, complex, quaternions, reals(+)reals, quaternios(+)quaternions}
If you would allow Clifford algebras to be build over, say finite
fields, or the integers,
I am not even sure there is a general classification result available.
Quadratic forms
(dim 2) with integral coefficients are classified by automorphic forms.....
> Is there someone who defines the overall structure of Axiom at this level?
Tim has sent you the link to the graph of AXIOM types, sacry isn't it?
But a grep on the sources sometimes points you to peices of code where
you can just see how other people made use of that.
> What do you think would be the best approach to this?
The first step would be to implement a solid version of the Grassmann
Hopf algebra.
(Hopf is automatic, i.e. in a mathematical sense 'universal'). After
one can define a
GrassmannH Hopf algebra (even better and very much desirable Grassmann
super Hopf algebra, i.e a Grassmann algebra over a Z_2 graded module)
one is ready to implement the Clifford product (either using the Rota
Stein Hopf algebra method, used in Clifford
with great effect) or the Chevalley recursive definition (which is
much slower for symbolic quadratic forms, which I want to be able to
use either).
So one would need to design an AXIOM(TM) category of the type
GrassmanSuperHopfAlegbra == ??
where ?? has to be a gradedSuperModule(withBasis)(Ring,OrderedSet)
or such.... but I am not a category/domain specialist....
I am currently porting my SchurFkt package to AXIOM(TM) (FriCAS style)
and hope to improve my knowledge thereby to be able to implement such a
GrassmannSuperHopfAlgebraWithBasis after that enterprise...
Sorry for being unspecific, but that's due to my limited knowledge
Ciao
BF.
--
% PD Dr Bertfried Fauser
% Research Fellow, School of Computer Science, Univ. of Birmingham
% Honorary Associate, University of Tasmania
% Privat Docent: University of Konstanz, Physics Dept
% contact |-> URL : http://clifford.physik.uni-konstanz.de/~fauser/
% Phone : +49 1520 9874517