From MAILER-DAEMON Sun Nov 01 19:07:48 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N4kSZ-00051f-W6
	for mharc-axiom-developer@gnu.org; Sun, 01 Nov 2009 19:07:48 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N4kSY-00051a-6l
	for axiom-developer@nongnu.org; Sun, 01 Nov 2009 19:07:46 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N4kST-000510-MM
	for axiom-developer@nongnu.org; Sun, 01 Nov 2009 19:07:45 -0500
Received: from [199.232.76.173] (port=50564 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N4kST-00050x-Fq
	for axiom-developer@nongnu.org; Sun, 01 Nov 2009 19:07:41 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:40094
	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 <daly@axiom-developer.org>) id 1N4kST-0005ET-2t
	for axiom-developer@nongnu.org; Sun, 01 Nov 2009 19:07:41 -0500
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 nA207J8a013762;
	Sun, 1 Nov 2009 18:07:20 -0600
Message-ID: <4AEE21F9.6020808@axiom-developer.org>
Date: Sun, 01 Nov 2009 19:04:09 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: lehner@bayou.uni-linz.ac.at, daly <daly@axiom-developer.org>,
	Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <bertfried.fauser@googlemail.com>
References: <4AEB42FC.1040407@axiom-developer.org>
In-Reply-To: <4AEB42FC.1040407@axiom-developer.org>
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] listOfTerms
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2009 00:07:46 -0000

Franz,

Your tensor code uses the function "listOfTerms" but I do not see
it among the exports of any category, domain, or package.
Where is this defined?

Tim




From MAILER-DAEMON Mon Nov 02 02:44:04 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N4ra7-0003I6-KU
	for mharc-axiom-developer@gnu.org; Mon, 02 Nov 2009 02:44:03 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N4ra4-0003G1-J6
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 02:44:00 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N4rZz-0003C1-S3
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 02:43:59 -0500
Received: from [199.232.76.173] (port=44007 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N4rZz-0003Bw-JX
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 02:43:55 -0500
Received: from mx20.gnu.org ([199.232.41.8]:38276)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N4rZy-0007Fr-Tk
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 02:43:55 -0500
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 <lehner@finanz.math.tu-graz.ac.at>)
	id 1N4rZq-0002XM-R3
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 02:43:47 -0500
Received: from mail.math.tu-graz.ac.at (mail.math.tu-graz.ac.at
	[129.27.148.83]) (authenticated bits=0)
	by mailrelay2.tugraz.at (8.14.3/8.14.3) with ESMTP id nA27hVNV001968
	(version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO);
	Mon, 2 Nov 2009 08:43:31 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.3 mailrelay2.tugraz.at nA27hVNV001968
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tu-graz.ac.at;
	s=mailrelay; t=1257147812; i=@finanz.math.tu-graz.ac.at;
	bh=+k8pJnM4lEcRPBKCJQyrsfF4Qpe93Xk4E4SXTLkBB3M=;
	h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:
	MIME-Version:Content-Type;
	b=favWQEuMf7tkbTg10dUb32YEOi4rm5QuUhCAQmv0nkUNzQG5CtK1vQ2+sWAjP9Im0
	f0vjdiaCZjqbChWjowk48yzvyH3E+CMqaEmi5me5gMsAICsomPXhfMpJrYgDLoftze
	5o0+4h1hjD/CaVVo6a8o1dkmiok4E44PmjsiEcw4=
Received: from schlumpf.math.tu-graz.ac.at ([129.27.150.29]:56076)
	by mail.math.tu-graz.ac.at with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.69) (envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N4rZb-0001JX-TX; Mon, 02 Nov 2009 08:43:31 +0100
Received: from lehner (helo=localhost)
	by schlumpf.math.tu-graz.ac.at with local-esmtp (Exim 4.69)
	(envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N4rZb-00073C-SN; Mon, 02 Nov 2009 08:43:31 +0100
Date: Mon, 2 Nov 2009 08:43:31 +0100 (CET)
From: Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
To: Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] listOfTerms
In-Reply-To: <4AEE21F9.6020808@axiom-developer.org>
Message-ID: <alpine.DEB.1.10.0911020838240.27026@schlumpf.math.tu-graz.ac.at>
References: <4AEB42FC.1040407@axiom-developer.org>
	<4AEE21F9.6020808@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.19
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: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <bertfried.fauser@googlemail.com>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2009 07:44:01 -0000

On Sun, 1 Nov 2009, Tim Daly wrote:
> Your tensor code uses the function "listOfTerms" but I do not see
> it among the exports of any category, domain, or package.
> Where is this defined?
Some time ago I merged "FreeModule" and "FreeModule1",
renamed "FreeModuleCat" to FreeModuleCategory" and
made "FreeModule" export "FreeModuleCategory" as it should be.
I also renamed ListOfTerms to listOfTerms in "IndexedDirectProductCategory"
and all entities which inherit the latter.

Franz



From MAILER-DAEMON Mon Nov 02 11:46:09 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N502j-0000hF-Eg
	for mharc-axiom-developer@gnu.org; Mon, 02 Nov 2009 11:46:09 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N502h-0000fO-5X
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 11:46:07 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N502c-0000Zn-Cb
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 11:46:06 -0500
Received: from [199.232.76.173] (port=39816 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N502c-0000ZZ-2y
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 11:46:02 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:57125
	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 <daly@axiom-developer.org>) id 1N502b-0000JH-OG
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 11:46:01 -0500
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 nA2Gjj8a020617;
	Mon, 2 Nov 2009 10:45:46 -0600
Message-ID: <4AEF0BFB.7010602@axiom-developer.org>
Date: Mon, 02 Nov 2009 11:42:35 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
Subject: Re: [Axiom-developer] listOfTerms
References: <4AEB42FC.1040407@axiom-developer.org>
	<4AEE21F9.6020808@axiom-developer.org>
	<alpine.DEB.1.10.0911020838240.27026@schlumpf.math.tu-graz.ac.at>
In-Reply-To: <alpine.DEB.1.10.0911020838240.27026@schlumpf.math.tu-graz.ac.at>
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 <axiom-developer@nongnu.org>,
	Bertfried Fauser <bertfried.fauser@googlemail.com>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2009 16:46:07 -0000

Franz Lehner wrote:
> On Sun, 1 Nov 2009, Tim Daly wrote:
>> Your tensor code uses the function "listOfTerms" but I do not see
>> it among the exports of any category, domain, or package.
>> Where is this defined?
> Some time ago I merged "FreeModule" and "FreeModule1",
> renamed "FreeModuleCat" to FreeModuleCategory" and
> made "FreeModule" export "FreeModuleCategory" as it should be.
> I also renamed ListOfTerms to listOfTerms in 
> "IndexedDirectProductCategory"
> and all entities which inherit the latter.
>
> Franz
>
Yes, I saw the renames. But listOfTerms does not seem to be
exported anywhere in Fricas. Try
  )d op listOfTerms

Tim




From MAILER-DAEMON Mon Nov 02 12:12:04 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N50Rn-0006Jz-RA
	for mharc-axiom-developer@gnu.org; Mon, 02 Nov 2009 12:12:04 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N50Rf-0006IR-Mm
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 12:11:55 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N50RZ-0006GO-2p
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 12:11:53 -0500
Received: from [199.232.76.173] (port=60160 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N50RY-0006Fy-FY
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 12:11:48 -0500
Received: from mail-bw0-f212.google.com ([209.85.218.212]:54454)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bertfried.fauser@googlemail.com>) id 1N50RY-000421-6K
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 12:11:48 -0500
Received: by bwz4 with SMTP id 4so6906697bwz.2
	for <Axiom-developer@nongnu.org>; Mon, 02 Nov 2009 09:11:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=googlemail.com; s=gamma;
	h=domainkey-signature:mime-version:sender:received:date
	:x-google-sender-auth:message-id:subject:from:to:content-type;
	bh=7VtKz3u2AITDvio2MHDZ1XyL4KlscMA6C4mRehq/doo=;
	b=gnjVuOVDriruaq6/0jgggqV1XF0Bspt7ZLFz7MLh9XIJyLrd+snQYv4WavVW0FNYBU
	lNSblbeGfj5t1E17g/FB93iN1AFKPRFVVGIi9YIRemhlxmBy0UQlRfclmmr9lhMi2EDi
	oXY8/u6JijYSyBciPvEbnuBO9SbwndJ4RPxsM=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma;
	h=mime-version:sender:date:x-google-sender-auth:message-id:subject
	:from:to:content-type;
	b=T9BgM21+UWzar3Ac1fA0AZlbmvMbIVnk8bzEQnqE032zE5oE7i8yqG+3YCEXuJUz9o
	Ds/rrMk+d+tJajRKQZSxtW7xBok+lKWGQWzBqsRr3Yt5JV+IeOaaQ6xxPUybuJC9TMx+
	s1ns0e/sa67arkOESizvCaf+oeOb1x1lNPJog=
MIME-Version: 1.0
Sender: bertfried.fauser@googlemail.com
Received: by 10.204.162.210 with SMTP id w18mr4064297bkx.174.1257181905839; 
	Mon, 02 Nov 2009 09:11:45 -0800 (PST)
Date: Mon, 2 Nov 2009 17:11:45 +0000
X-Google-Sender-Auth: 4ad02cd6004a9a0f
Message-ID: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
From: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
To: root <daly@axiom-developer.org>, axiom-devel <Axiom-developer@nongnu.org>
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: 
Subject: [Axiom-developer] listOfTerms
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2009 17:11:56 -0000

Dear Tim,

if I naively do the below attached things, I get in FriCAS an export
of listOfTerms,
also )d op listOfTerms guids me to IDPC and )sh IDPC shows the export...

Ciao
BF.



fauser@selfmaint-145:~> fricas
Checking for foreign routines
AXIOM="/usr/local/lib/fricas/target/i686-suse-linux"
spad-lib="/usr/local/lib/fricas/target/i686-suse-linux/lib/libspad.so"
foreign routines found
openServer result 0
                 FriCAS (AXIOM fork) Computer Algebra System
                         Version: FriCAS 2009-10-26
               Timestamp: Sunday November 1, 2009 at 22:23:01
-----------------------------------------------------------------------------
   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) -> )d op listOfTerms

There is one exposed function called listOfTerms :
   [1] D -> List(Record(k: D3,c: D2)) from D
            if D has IDPC(D2,D3) and D2 has SETCAT and D3 has ORDSET


There are 2 unexposed functions called listOfTerms :
   [1] LieExponentials(D2,D3,D4) -> List(Record(k:
            PoincareBirkhoffWittLyndonBasis(D2),c: D3))
            from LieExponentials(D2,D3,D4)
            if D2 has ORDSET and D3 has Join(CommutativeRing,Module(
            Fraction(Integer))) and D4: PI
   [2] PoincareBirkhoffWittLyndonBasis(D2) -> List(LyndonWord(D2))
            from PoincareBirkhoffWittLyndonBasis(D2) if D2 has ORDSET

(1) -> )sh IDPC
 IndexedDirectProductCategory(A: SetCategory,S: OrderedSet)  is a
category constructor
 Abbreviation for IndexedDirectProductCategory is IDPC
 This constructor is exposed in this frame.
------------------------------- Operations --------------------------------
 ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
 hash : % -> SingleInteger             latex : % -> String
 leadingCoefficient : % -> A           leadingSupport : % -> S
 map : ((A -> A),%) -> %               monomial : (A,S) -> %
 reductum : % -> %                     ?~=? : (%,%) -> Boolean
 construct : List(Record(k: S,c: A)) -> %
 constructOrdered : List(Record(k: S,c: A)) -> %
 leadingTerm : % -> Record(k: S,c: A)
 listOfTerms : % -> List(Record(k: S,c: A))

-- 
% 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
<http://www.uni-konstanz.de>
% contact |->    URL : http://clifford.physik.uni-konstanz.de/~fauser/
%              Phone : +49 1520 9874517



From MAILER-DAEMON Mon Nov 02 13:28:16 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N51dY-0003tA-Lz
	for mharc-axiom-developer@gnu.org; Mon, 02 Nov 2009 13:28:16 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N51dX-0003sy-Am
	for axiom-developer@nongnu.org; Mon, 02 Nov 2009 13:28:15 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N51dS-0003rc-7t
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 13:28:14 -0500
Received: from [199.232.76.173] (port=60649 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N51dR-0003rV-PK
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 13:28:09 -0500
Received: from mailrelay.tu-graz.ac.at ([129.27.2.202]:39705
	helo=mailrelay.tugraz.at) by monty-python.gnu.org with esmtps
	(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
	(envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N51dR-0007Bh-3t
	for Axiom-developer@nongnu.org; Mon, 02 Nov 2009 13:28:09 -0500
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 nA2IS2Zu029114
	(version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO);
	Mon, 2 Nov 2009 19:28:02 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.3 mailrelay1.tugraz.at nA2IS2Zu029114
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tu-graz.ac.at;
	s=mailrelay; t=1257186484; i=@finanz.math.tu-graz.ac.at;
	bh=uO3HjiB+CTxOnAaoGxqRy2SUPaxJ+UC8gUpuqwmVABM=;
	h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:
	MIME-Version:Content-Type;
	b=nUA9lo0t9L5FFUO10eywmtNePgc611JRSqkmL/94PvDUr2e5Mt+i6qOOvdVAdTwYQ
	lkF7dYz9R9vNEbsdwPa482rgGVY1CX23EvkyzqRNFaPXZKPsQyd78HS/9MVPQY0gWq
	PD6QLxGEq5nQVruhJZRTIj39jihXlWPeGhsX5xNI=
Received: from schlumpf.math.tu-graz.ac.at ([129.27.150.29]:58004)
	by mail.math.tu-graz.ac.at with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.69) (envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N51dK-0003pm-Rx; Mon, 02 Nov 2009 19:28:02 +0100
Received: from lehner (helo=localhost)
	by schlumpf.math.tu-graz.ac.at with local-esmtp (Exim 4.69)
	(envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N51dK-0001TJ-Qi; Mon, 02 Nov 2009 19:28:02 +0100
Date: Mon, 2 Nov 2009 19:28:02 +0100 (CET)
From: Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
To: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
Subject: Re: [Axiom-developer] listOfTerms
In-Reply-To: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
Message-ID: <alpine.DEB.1.10.0911021927180.4878@schlumpf.math.tu-graz.ac.at>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
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 monty-python.gnu.org: Solaris 10 (beta)
Cc: axiom-devel <Axiom-developer@nongnu.org>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Nov 2009 18:28:15 -0000

Dear Tim and Bertfried,
On Mon, 2 Nov 2009, Bertfried Fauser wrote:
> There is one exposed function called listOfTerms :
>   [1] D -> List(Record(k: D3,c: D2)) from D
>            if D has IDPC(D2,D3) and D2 has SETCAT and D3 has ORDSET
yes, that's the one.

Franz



From MAILER-DAEMON Tue Nov 03 12:27:45 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N5NAX-0004Vi-GX
	for mharc-axiom-developer@gnu.org; Tue, 03 Nov 2009 12:27:45 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N5NAV-0004VC-7t
	for axiom-developer@nongnu.org; Tue, 03 Nov 2009 12:27:43 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N5NAP-0004Ri-Ay
	for Axiom-developer@nongnu.org; Tue, 03 Nov 2009 12:27:41 -0500
Received: from [199.232.76.173] (port=38479 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N5NAO-0004Rb-8b
	for Axiom-developer@nongnu.org; Tue, 03 Nov 2009 12:27:36 -0500
Received: from moutng.kundenserver.de ([212.227.126.177]:56412)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1N5NAN-00066m-IY
	for Axiom-developer@nongnu.org; Tue, 03 Nov 2009 12:27:36 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis)
	id 0MFwx8-1MtoSS00Tm-00FNkJ; Tue, 03 Nov 2009 18:27:30 +0100
From: Martin Baker <ax87438@martinb.com>
To: Bertfried Fauser <bertfried.fauser@googlemail.com>,
	"axiom-devel" <Axiom-developer@nongnu.org>
Date: Tue, 3 Nov 2009 17:27:24 +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>
	<200910311059.43303.ax87438@martinb.com>
	<275293a60910310913j5961b059h48708875a8c286b9@mail.gmail.com>
In-Reply-To: <275293a60910310913j5961b059h48708875a8c286b9@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911031727.24996.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+5fvEHTFhn/L8vgjRLDjPkxGPT/sSRghHLdoK
	IlZKRP5/goI6vsSuNtWY+R0inwSvtfK7cDI+7gY+C1kxNlctjS
	IEGSLr3BO8jWnuh7YYRyw==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: 
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 <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Nov 2009 17:27:44 -0000

Thank you very much to the very helpful replies to my earlier messages, they 
give me a much clearer idea of the issues and complexities involved. I have 
been re-reading your messages to try to understand how to generate the 
multiplication rules from the quadratic form (as well as trying to understand 
Axiom in general). I'm afraid that the Rota Stein Hopf algebra method and the 
Chevalley recursive definition go over my head, at the moment, so I am unsure 
how to proceed.

The only approach I could think of is to further impinge on your patience by 
writing down what I think I understand and then hoping that you will give me 
some hints about how I can take it forward and understand it better.

Flavours of algebra being discussed
-----------------------------------
We are discussing algebras under the banner of Clifford algebra but there are 
different flavours of this:

* Grassman Algebra - vectors square to zero (exterior product '^').

* Clifford Algebra with Clifford bases - vector bases square to scalar value, 
usually +1 or -1 (equivalent to Grassman bases where quadratic form from 
diagonal matrix).

* Clifford Algebra with Grassman bases - vectors square to scalar value, bases 
can be rotated, specified by quadratic form (tensor product V (x) V^*).

* Geometric Algebra - Hestenes terminology (widely used) for Clifford Algebra 
(over reals) used in geometric context. 

In all cases pure vectors and pure bivectors anticommute.
Since the Grassman algebra underpins the other Algebras, as the exterior 
product, it makes the terminology very messy. It is hard to see a naming 
convention that won't be confusing. Most books on the subject use 'Geometric 
Algebra' and 'Clifford Algebra' is the second most popular. The book by John 
Browne, mentioned by Bill Page seems to put everything under the category of 
Grassman Algebra?

The John Browne book also seems to have a different terminology. It seems to 
use 'reciprocal bases' to do things in a tensor like way. It seems to derive 
all product types from the exterior and interior (defined as the dual of 
exterior) products.
It seems to have a 'metric palette' which is a square matrix for each grade. 
For instance the metric palette for 2D vectors is:
grade 0: [1]
grade 1: [[g(1,1),g(1,2)],[g(1,2),g(2,2)]]
grade 2: [ -g(1,2)^2 + g(1,1)g(2,2)]

Current Implementation
----------------------
The current implementation in Axiom implements Clifford Algebra with Clifford 
bases, however the constructor uses a quadratic form so implementation could 
be upgraded to Grassman bases without changing the external interface 
(although I guess it would slow it down a lot). Although a better solution is 
to create GrassmanSuperHopfAlegbra from graedFreeModule(Ring,Basis) or 
GrassmannSuperHopfAlgebraWithBasis which is what Bertfried is working on.

Getting back to the current implementation, taking an example based on 2D 
vectors and creating quadratic form from:

a 0
0 c

The multiplication table could be generated from these rules:

<e1, e2 | e1*e1=a, e2*e2=c, e1*e2= -e2*e1>

(and e1*e2 = e1^e2)

The current implementation generates table terms every time they are used when 
* operation is called (the table is not generated when a Clifford type is 
defined or instantiated: performance issue).

The way that this is calculated in the code is not really documented but as 
far as I can work out these rules are implemented by representing bases as non 
negative integers (NNI) representing a binary value where a bit position is an 
individual vector base, for example e1^e2 would be 00000011. These represent 
words, the words for each operand are effectively concatenated and the rules 
are applied to reduce to a valid base. This is done to determine the scalar 
(sign) as the basis type could have been found from the exclusive-or of the 
binary values. This is all done using specific code in the addMonomProd 
procedure rather than using any rule mechanism built into Axiom.

Change required
---------------
Grassman bases are required for many important applications such as modelling 
conformal space.

So how can we generate the multiplication table from any quadratic form?

a b
b c

Originally I thought this would have to be done by rotating the bases to make 
this diagonal, then apply method above, then rotate back by the same amount. 
However Bertfried has pointed out that this is not necessary and the table can 
be generated directly. I am trying to work out do this and Bertfried hinted 
that this can be worked out from the square of the vector.
So since the vector squares to a scalar:

a*e1**2 + b*e1*e2 + b*e2*e1 + c*e2**2 = scalar

so if we take an example:

0 1
1 0

we get

e1*e2 + e2*e1 = scalar

I can't work out to get any further, I think the rules would be something like 
this (but I can't work out how to get there):

<e1, e2 | e1*e1=0, e2*e2=0, e1*e2= -1+e1^e2, e2*e1= -1-e1^e2>

(so e1*e2 is not e1^e2)

I can't even work out an extremely simple case, more powerful mathematics is 
required, so I need an introduction to the Rota Stein Hopf algebra method and 
the Chevalley recursive definition.

Any help appreciated.

Martin



From MAILER-DAEMON Fri Nov 06 12:03:37 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N6SDp-0000W1-1O
	for mharc-axiom-developer@gnu.org; Fri, 06 Nov 2009 12:03:37 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N6SDl-0000VR-WE
	for axiom-developer@nongnu.org; Fri, 06 Nov 2009 12:03:34 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N6SDh-0000TY-49
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 12:03:33 -0500
Received: from [199.232.76.173] (port=34456 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N6SDg-0000TU-Va
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 12:03:29 -0500
Received: from moutng.kundenserver.de ([212.227.17.8]:53715)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1N6SDg-0003Hy-7x
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 12:03:28 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mrbap2) with ESMTP (Nemesis)
	id 0Mbb9R-1MnxSi1Ejl-00J7cv; Fri, 06 Nov 2009 18:03:25 +0100
From: Martin Baker <ax87438@martinb.com>
To: "axiom-devel" <Axiom-developer@nongnu.org>
Date: Fri, 6 Nov 2009 17:03:16 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
MIME-Version: 1.0
Content-Disposition: inline
Content-Type: text/plain;
  charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <200911061703.16999.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+HFYDhrsGR2Rbz8kqkDRrJ2Vixq1z6aQGy0hd
	+GydsQOvYgInMmy26LgVMUljtUS3urAvBmz7apYRouOlWJyQeD
	II9VHKGhyWYnvLqrTu7DA==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: 
Subject: [Axiom-developer] Axiom compiling - newbie questions
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Nov 2009 17:03:34 -0000

How do I get started modifying some of the spad code in axiom?

What I wanted to do is add exterior and inner products to the clifford code in 
Axiom.  At this stage I just want to try things out and experiment with the 
minimum of fuss. I therefore cut and pasted the spad code from the clifford 
spad code in pamphlet 10.3 into a file I created called grassman.spad. I then 
renamed all occurrences of CliffordAlgebra to GrassmanAlgebra just so that the 
names did not clash with the existing code otherwise it is the existing 
working code.

I then tried compiling it:

(1) -> )compile axiom/grassman.spad

This almost worked, it created a directory called GRAS.nrlib with some files 
in it, but there were some errors listed in it like this:

   finalizing nrlib GRAS                                
   Processing GrassmanAlgebra for Browser database:     
--------(e (% PI))---------                             
--->-->GrassmanAlgebra((e (% PI))): Unexpected HT command: \spad
"\\spad{e(n)} produces the appropriate unit element." 

I think this comes from this part of the source code:

    T ==> Join(Ring, Algebra(K), VectorSpace(K)) with
        e: PI -> %
          ++ e(n) produces the appropriate unit element.

I thought that this might be because I was using an old version of the 
compiler? So I renamed the file as: grassman.as

Then I tried this:

(1) -> )compile axiom/grassman.as
   Compiling AXIOM source code from file axiom/grassman.as using
      AXIOM-XL compiler and options
-O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom -Y $AXIOM/algebra
      Use the system command )set compiler args to change these
      options.
sh: NIL/bin/aldor: No such file or directory

I assume the axiom that I downloaded does not contain aldor?

So my questions are:
Is this the best approach to take for a Axiom newbie? Is there an easier way?
Do I need to use Aldor? Is there a binary version for opensuse? Where do I 
install it?

Note: I am using the Axiom May 2009 code for openSUSE downloaded from:
http://www.axiom-developer.org/axiom-website/download.html

Martin




From MAILER-DAEMON Fri Nov 06 21:05:14 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N6afy-0006bQ-JP
	for mharc-axiom-developer@gnu.org; Fri, 06 Nov 2009 21:05:14 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N6afw-0006ZD-Ei
	for axiom-developer@nongnu.org; Fri, 06 Nov 2009 21:05:12 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N6afr-0006UY-A0
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 21:05:11 -0500
Received: from [199.232.76.173] (port=34162 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N6afr-0006UU-7O
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 21:05:07 -0500
Received: from mail-pw0-f43.google.com ([209.85.160.43]:50534)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bill.page@newsynthesis.org>) id 1N6afq-00019n-Hx
	for Axiom-developer@nongnu.org; Fri, 06 Nov 2009 21:05:06 -0500
Received: by pwi18 with SMTP id 18so1008785pwi.2
	for <Axiom-developer@nongnu.org>; Fri, 06 Nov 2009 18:05:04 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.2.34 with SMTP id 34mr526500wfb.143.1257559502965; Fri, 06 
	Nov 2009 18:05:02 -0800 (PST)
In-Reply-To: <200911061703.16999.ax87438@martinb.com>
References: <200911061703.16999.ax87438@martinb.com>
Date: Fri, 6 Nov 2009 21:05:02 -0500
Message-ID: <fbcd16d40911061805s7f266012rb353faa0cd3eea7d@mail.gmail.com>
Subject: Re: [Axiom-developer] Axiom compiling - newbie questions
From: Bill Page <bill.page@newsynthesis.org>
To: Martin Baker <ax87438@martinb.com>
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: axiom-devel <Axiom-developer@nongnu.org>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 07 Nov 2009 02:05:12 -0000

Martin,

I think you are going about this the right way ... but you do have a
lot to learn. Programming in Spad in Axiom has a steep learning curve
but it does start to flatten out after a few years ... :-)  No, it's
not that bad but the output of the Spad compiler is simply atrocious.
I don't think there ever was a compiler in my worst nightmare that
produced such obscure and unhelpful output! The language though (if
you can learn to love strongly typed languages) is, in my opinion,
worth all the effort.

The message "Unexpected HT command" is really just a warning that
something in a comment (doc string) does not conform to requirements
for HyperTex processing. If the compile completed successfully you
will see a message about GrassmanAlgebra being "exposed" in your
session. If you get this you should try something like

  )show GrassmanAlgebra

to verify that it really is there.  Then just proceed to use it as you
would CliffordAlgebra.

Aldor is a whole other story and I recommend you read up on it at
http://axiom-wiki.newsynthesis.org and/or consult the email archives.
To use it you definitely have to install additional software,
specifically Aldor itself which is not included in Axiom for licensing
reasons. There is also specific Aldor interface that needs to be
compiled if you want to use Aldor from inside Axiom.  Aldor itself can
be run as a stand alone general purpose language in addition to
serving as a potential replacement for Spad in Axiom.

Good luck and keep asking ...

Regards,
Bill Page.

On Fri, Nov 6, 2009 at 12:03 PM, Martin Baker <ax87438@martinb.com> wrote:
> How do I get started modifying some of the spad code in axiom?
>
> What I wanted to do is add exterior and inner products to the clifford co=
de in
> Axiom. =A0At this stage I just want to try things out and experiment with=
 the
> minimum of fuss. I therefore cut and pasted the spad code from the cliffo=
rd
> spad code in pamphlet 10.3 into a file I created called grassman.spad. I =
then
> renamed all occurrences of CliffordAlgebra to GrassmanAlgebra just so tha=
t the
> names did not clash with the existing code otherwise it is the existing
> working code.
>
> I then tried compiling it:
>
> (1) -> )compile axiom/grassman.spad
>
> This almost worked, it created a directory called GRAS.nrlib with some fi=
les
> in it, but there were some errors listed in it like this:
>
> =A0 finalizing nrlib GRAS
> =A0 Processing GrassmanAlgebra for Browser database:
> --------(e (% PI))---------
> --->-->GrassmanAlgebra((e (% PI))): Unexpected HT command: \spad
> "\\spad{e(n)} produces the appropriate unit element."
>
> I think this comes from this part of the source code:
>
> =A0 =A0T =3D=3D> Join(Ring, Algebra(K), VectorSpace(K)) with
> =A0 =A0 =A0 =A0e: PI -> %
> =A0 =A0 =A0 =A0 =A0++ e(n) produces the appropriate unit element.
>
> I thought that this might be because I was using an old version of the
> compiler? So I renamed the file as: grassman.as
>
> Then I tried this:
>
> (1) -> )compile axiom/grassman.as
> =A0 Compiling AXIOM source code from file axiom/grassman.as using
> =A0 =A0 =A0AXIOM-XL compiler and options
> -O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom -Y $AXIOM/alg=
ebra
> =A0 =A0 =A0Use the system command )set compiler args to change these
> =A0 =A0 =A0options.
> sh: NIL/bin/aldor: No such file or directory
>
> I assume the axiom that I downloaded does not contain aldor?
>
> So my questions are:
> Is this the best approach to take for a Axiom newbie? Is there an easier =
way?
> Do I need to use Aldor? Is there a binary version for opensuse? Where do =
I
> install it?
>
> Note: I am using the Axiom May 2009 code for openSUSE downloaded from:
> http://www.axiom-developer.org/axiom-website/download.html
>
> Martin
>
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>



From MAILER-DAEMON Sat Nov 07 12:02:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N6ogc-0004py-W9
	for mharc-axiom-developer@gnu.org; Sat, 07 Nov 2009 12:02:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N6ogX-0004oD-UE
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:02:46 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N6ogS-0004mj-Ox
	for Axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:02:45 -0500
Received: from [199.232.76.173] (port=40752 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N6ogS-0004mV-CF
	for Axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:02:40 -0500
Received: from mx20.gnu.org ([199.232.41.8]:27257)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <ax87438@martinb.com>) id 1N6ogR-0000af-KM
	for Axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:02:39 -0500
Received: from moutng.kundenserver.de ([212.227.126.186])
	by mx20.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1N6ogP-0005iQ-70
	for Axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:02:37 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis)
	id 0MErMM-1MwLMF3nMw-00GCxY; Sat, 07 Nov 2009 18:02:22 +0100
From: Martin Baker <ax87438@martinb.com>
To: Bill Page <bill.page@newsynthesis.org>,
	"axiom-devel" <Axiom-developer@nongnu.org>
Subject: Re: [Axiom-developer] Axiom compiling - newbie questions
Date: Sat, 7 Nov 2009 17:02:15 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <200911061703.16999.ax87438@martinb.com>
	<fbcd16d40911061805s7f266012rb353faa0cd3eea7d@mail.gmail.com>
In-Reply-To: <fbcd16d40911061805s7f266012rb353faa0cd3eea7d@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911071702.16108.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX18HaqnyY8udVR6jPF+LpcdpIPHsRh5aONIEeob
	MxtF5sboNf953HscSZavrU2wiffDlrmVZ6E2lRVFBv0QT4lPBT
	1og10t71/C2/7ezrHF1Vg==
X-detected-operating-system: by mx20.gnu.org: Genre and OS details not
	recognized.
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
	seldom 2.4 (older, 4)
Cc: 
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 07 Nov 2009 17:02:46 -0000

Bill,

Thanks very much for your reply, this gives me a clearer idea of the issues 
involved.

In view of what you said and having looked at the Aldor site I think I will 
stay with the Spad compiler.

I tried:
)show GrassmanAlgebra
and the output looked reasonable.

I thought that the problems that I saw were related to the compiler error 
messages or to this message:
"Compiling AXIOM source code from file axiom/grassman.spad using old system 
compiler." 

However, after more trial and error, I think the problems that I am seeing 
must be due to some kind of name clash?
The problem I am seeing is this: 

(4) -> j: H2 := e(2)

   >> System error:
   Unknown bfd format

Full sequence below.

I am guessing that 'e' is exposed by both the existing CliffordAlgebra and by 
GrassmanAlgebra which I created. I tried:

)set expose drop constructor CliffordAlgebra

but that only hides the constructor, is there a way to hide the variables and 
functions also?

Thanks,

Martin
------------------------------------------------------------------                                                       
(1) -> )set mes auto off
(1) -> K := Fraction Polynomial Integer

   (1)  Fraction Polynomial Integer
                                                                 Type: Domain
(2) -> m := matrix[[-1,0],[0,-1]]

        +- 1   0 +
   (2)  |        |
        + 0   - 1+
                                                         Type: Matrix Integer
(3) -> )library GRAS
   GrassmanAlgebra is now explicitly exposed in frame frame0
   GrassmanAlgebra will be automatically loaded when needed from
      /home/martin/GRAS.nrlib/code
(3) -> )set expose drop constructor CliffordAlgebra
   CliffordAlgebra is now explicitly hidden in frame frame0
(3) -> H2 := GrassmanAlgebra(2, K, quadraticForm m)

   (3)  GrassmanAlgebra(2,Fraction Polynomial Integer,MATRIX)
                                                                 Type: Domain
(4) -> j: H2 := e(2)

   >> System error:
   Unknown bfd format

(4) -> )set expose drop group CliffordAlgebra
   CliffordAlgebra is not a known exposure group name.
(4) -> j: H2 := e(2)$GrassmanAlgebra(2,Fraction Polynomial Integer,MATRIX)

   Although Matrix is the name of a constructor, a full type must be
      specified in the context you have used it. Issue )show Matrix for
      more information.
(4) ->j: H2 := e(2)$GrassmanAlgebra(2,Fraction Polynomial 
Integer,QuadraticForm(2,Fraction Polynomial Integer))

   Cannot convert from type Domain to QuadraticForm(2,Fraction
      Polynomial Integer) for value
   QuadraticForm(2,Fraction(Polynomial(Integer())))





From MAILER-DAEMON Sat Nov 07 12:26:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N6p3r-0000RY-Pw
	for mharc-axiom-developer@gnu.org; Sat, 07 Nov 2009 12:26:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N6p3p-0000RL-8N
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:26:49 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N6p3k-0000OZ-K4
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:26:48 -0500
Received: from [199.232.76.173] (port=54580 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N6p3k-0000OU-H7
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:26:44 -0500
Received: from hera.math.uni.wroc.pl ([156.17.86.1]:40043)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <hebisch@math.uni.wroc.pl>)
	id 1N6p3k-00076U-39
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 12:26:44 -0500
Received: from hebisch by hera.math.uni.wroc.pl with local (Exim 4.63)
	(envelope-from <hebisch@math.uni.wroc.pl>) id 1N6pCk-0006XH-IK
	for axiom-developer@nongnu.org; Sat, 07 Nov 2009 17:36:02 +0000
Subject: Re: [Axiom-developer] Axiom compiling - newbie questions
In-Reply-To: <200911071702.16108.ax87438@martinb.com>
To: axiom-developer@nongnu.org
Date: Sat, 7 Nov 2009 18:36:02 +0100 (CET)
X-Mailer: ELM [version 2.4ME+ PL100 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII
Message-Id: <E1N6pCk-0006XH-IK@hera.math.uni.wroc.pl>
From: Waldek Hebisch <hebisch@math.uni.wroc.pl>
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 07 Nov 2009 17:26:49 -0000

Martin Baker wrote:
> Bill,
> 
> Thanks very much for your reply, this gives me a clearer idea of the issues 
> involved.
> 
> In view of what you said and having looked at the Aldor site I think I will 
> stay with the Spad compiler.
> 
> I tried:
> )show GrassmanAlgebra
> and the output looked reasonable.
> 
> I thought that the problems that I saw were related to the compiler error 
> messages or to this message:
> "Compiling AXIOM source code from file axiom/grassman.spad using old system 
> compiler." 
> 
> However, after more trial and error, I think the problems that I am seeing 
> must be due to some kind of name clash?
> The problem I am seeing is this: 
> 
> (4) -> j: H2 := e(2)
> 
>    >> System error:
>    Unknown bfd format
> 

The message means that Axiom binary you got is incompatible with
your system.  More precisely, Axiom tries to load (use) your 
freshly compiled code and failed.

-- 
                              Waldek Hebisch
hebisch@math.uni.wroc.pl 



From MAILER-DAEMON Mon Nov 09 19:56:07 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7f1j-00068d-GQ
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 19:56:07 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7f1h-00068W-L4
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 19:56:05 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7f1d-00067x-6F
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 19:56:05 -0500
Received: from [199.232.76.173] (port=43501 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7f1d-00067u-0K
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 19:56:01 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:49662
	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 <daly@axiom-developer.org>) id 1N7f1c-00056J-JY
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 19:56:00 -0500
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 nAA0tu8a019656;
	Mon, 9 Nov 2009 18:55:57 -0600
Message-ID: <4AF8B921.8020201@axiom-developer.org>
Date: Mon, 09 Nov 2009 19:51:45 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>,
	daly <daly@axiom-developer.org>,
	Axiom-Developer <axiom-developer@nongnu.org>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
In-Reply-To: <275293a60911020911s1d805c91vd254e436b38c4916@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: 
Subject: [Axiom-developer] pointers
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 00:56:06 -0000

You can get a memory pointer to a lisp object.

a:=Fraction(Integer)

returns the "memory location of Fraction(Integer)"
You can prove this with

b:=Fraction(Integer)
EQ(a,b)$Lisp

The lisp function EQ compares memory pointers.

There is a lisp function to get the hash value of any object
call sxhash. You can call it.

SXHASH(a)$Lisp

Note that if

c:=Integer

then
EQ(a,c)$Lisp is false
SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp

Thus the hash function you seek already exists.
You just have to accept the fact that Spad is only syntactic
sugar for lisp code and lisp is not evil.

Tim




From MAILER-DAEMON Mon Nov 09 20:10:01 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7fFA-0002wd-Un
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 20:10:01 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7fF9-0002uw-1E
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:09:59 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7fF4-0002pc-05
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:09:58 -0500
Received: from [199.232.76.173] (port=51488 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7fF3-0002pX-S2
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:09:53 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:47349
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7fF3-0007DK-Gb
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:09:53 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18643191; Mon, 09 Nov 2009 20:09:30 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: Tim Daly <daly@axiom-developer.org>,Bertfried Fauser
	<Bertfried.Fauser@uni-konstanz.de>,	daly <daly@axiom-developer.org>,
	Axiom-Developer <axiom-developer@nongnu.org>
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Mon, 09 Nov 2009 20:09:30 -0500
Message-ID: <web-18643191@cgate.sci.ccny.cuny.edu>
In-Reply-To: <4AF8B921.8020201@axiom-developer.org>
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 <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 01:09:59 -0000

Tim:

Interesting. Is there a similar function that is more 
structural? say, can I test whether some domain (which may 
be passed as a parameter of type Field) is of the form 
Fraction(something) and if so, extract "something" (that 
is, assign it to a variable and further test it), sort of 
a deconstruction?

William

On Mon, 09 Nov 2009 19:51:45 -0500
  Tim Daly <daly@axiom-developer.org> wrote:
>You can get a memory pointer to a lisp object.
>
>a:=Fraction(Integer)
>
>returns the "memory location of Fraction(Integer)"
>You can prove this with
>
>b:=Fraction(Integer)
>EQ(a,b)$Lisp
>
>The lisp function EQ compares memory pointers.
>
>There is a lisp function to get the hash value of any 
>object
>call sxhash. You can call it.
>
>SXHASH(a)$Lisp
>
>Note that if
>
>c:=Integer
>
>then
>EQ(a,c)$Lisp is false
>SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>
>Thus the hash function you seek already exists.
>You just have to accept the fact that Spad is only 
>syntactic
>sugar for lisp code and lisp is not evil.
>
>Tim
>
>
>
>_______________________________________________
>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 Mon Nov 09 20:19:00 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7fNr-0007CO-QL
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 20:18:59 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7fNq-0007Bx-UL
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:18:59 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7fNm-00079s-Ds
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:18:58 -0500
Received: from [199.232.76.173] (port=48011 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7fNm-00079j-45
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:18:54 -0500
Received: from mail-pz0-f188.google.com ([209.85.222.188]:44039)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bill.page@newsynthesis.org>) id 1N7fNl-00007t-PU
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 20:18:54 -0500
Received: by pzk26 with SMTP id 26so2493370pzk.4
	for <axiom-developer@nongnu.org>; Mon, 09 Nov 2009 17:18:52 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.6.11 with SMTP id 11mr913910wff.68.1257815931995; Mon, 09 
	Nov 2009 17:18:51 -0800 (PST)
In-Reply-To: <4AF8B921.8020201@axiom-developer.org>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
	<4AF8B921.8020201@axiom-developer.org>
Date: Mon, 9 Nov 2009 20:18:51 -0500
Message-ID: <fbcd16d40911091718o41c95ad6vb3ee94de5e138039@mail.gmail.com>
Subject: Re: [Axiom-developer] pointers
From: Bill Page <bill.page@newsynthesis.org>
To: Tim Daly <daly@axiom-developer.org>
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 <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 01:18:59 -0000

Tim,

Besides the fact that from the standard we only have that

  (equal x y) implies (= (sxhash x) (sxhash y)).

Do you see any reason why SXHASH is not used by default in SetCategory?

Note: OpenAxiom currently defines this default:

  add
      hash(s : %):  SingleInteger == SXHASH(s)$Lisp

Regards,
Bill Page.

On Mon, Nov 9, 2009 at 7:51 PM, Tim Daly <daly@axiom-developer.org> wrote:
> ...
> There is a lisp function to get the hash value of any object
> call sxhash. You can call it.
>
> SXHASH(a)$Lisp
>
> Note that if
>
> c:=Integer
>
> then
> EQ(a,c)$Lisp is false
> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>
> Thus the hash function you seek already exists.
> You just have to accept the fact that Spad is only syntactic
> sugar for lisp code and lisp is not evil.



From MAILER-DAEMON Mon Nov 09 21:29:12 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7gTo-0005yP-BB
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 21:29:12 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7gTm-0005xe-Ch
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:29:10 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7gTh-0005vm-Ld
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:29:09 -0500
Received: from [199.232.76.173] (port=41445 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7gTh-0005vf-FB
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:29:05 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:42148
	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 <daly@axiom-developer.org>) id 1N7gTh-00030e-3Z
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:29:05 -0500
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 nAA2T08a031021;
	Mon, 9 Nov 2009 20:29:01 -0600
Message-ID: <4AF8CEF0.9010704@axiom-developer.org>
Date: Mon, 09 Nov 2009 21:24:48 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: William Sit <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
References: <web-18643191@cgate.sci.ccny.cuny.edu>
In-Reply-To: <web-18643191@cgate.sci.ccny.cuny.edu>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 02:29:10 -0000

I'm not sure what you want. Perhaps you'd like to say:

a:=Fraction(Polynomial(Integer))
b:=devaluate(a)$Lisp

which returns the list (actually of type SExpression)

 (Fraction (Polynomial (Integer)))

c:=destruct(b)
c.2

which returns (Polynomial (Integer))

Does that help?

Tim


William Sit wrote:
> Tim:
>
> Interesting. Is there a similar function that is more structural? say, 
> can I test whether some domain (which may be passed as a parameter of 
> type Field) is of the form Fraction(something) and if so, extract 
> "something" (that is, assign it to a variable and further test it), 
> sort of a deconstruction?
>
> William
>
> On Mon, 09 Nov 2009 19:51:45 -0500
>  Tim Daly <daly@axiom-developer.org> wrote:
>> You can get a memory pointer to a lisp object.
>>
>> a:=Fraction(Integer)
>>
>> returns the "memory location of Fraction(Integer)"
>> You can prove this with
>>
>> b:=Fraction(Integer)
>> EQ(a,b)$Lisp
>>
>> The lisp function EQ compares memory pointers.
>>
>> There is a lisp function to get the hash value of any object
>> call sxhash. You can call it.
>>
>> SXHASH(a)$Lisp
>>
>> Note that if
>>
>> c:=Integer
>>
>> then
>> EQ(a,c)$Lisp is false
>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>
>> Thus the hash function you seek already exists.
>> You just have to accept the fact that Spad is only syntactic
>> sugar for lisp code and lisp is not evil.
>>
>> Tim
>>
>>
>>
>> _______________________________________________
>> 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 Mon Nov 09 21:42:47 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7ggx-0008MD-Ob
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 21:42:47 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7ggv-0008La-Ti
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:42:45 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7ggr-0008Je-8q
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:42:45 -0500
Received: from [199.232.76.173] (port=39552 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7ggr-0008JY-1c
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:42:41 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:48641
	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 <daly@axiom-developer.org>) id 1N7ggq-0005Ki-L5
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 21:42:40 -0500
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 nAA2gb8a005201;
	Mon, 9 Nov 2009 20:42:38 -0600
Message-ID: <4AF8D222.1030905@axiom-developer.org>
Date: Mon, 09 Nov 2009 21:38:26 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bill Page <bill.page@newsynthesis.org>
Subject: Re: [Axiom-developer] pointers
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>	
	<4AF8B921.8020201@axiom-developer.org>
	<fbcd16d40911091718o41c95ad6vb3ee94de5e138039@mail.gmail.com>
In-Reply-To: <fbcd16d40911091718o41c95ad6vb3ee94de5e138039@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 <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 02:42:46 -0000

OpenAxiom's choice is perfectly rational as far as I can tell.
The only issue would be that Aldor hashing would not equal Spad hashing.
I do not know where hashing is used at the Spad level.

Spad domains are stored in $ConstructorCache, once they are created.
In a newly started session do:

)lisp (gethash '|Fraction| |$ConstructorCache|)   ==> nil

then do

a:=1/2
)lisp (gethash '|Fraction| |$ConstructorCache|) ==> ((((|Integer|)) 2 . 
#<vector 08beb9f4>))

So spad domains are hashed internally.

I recommend that we follow OpenAxiom's lead on this provided nothing breaks.

Tim


Bill Page wrote:
> Tim,
>
> Besides the fact that from the standard we only have that
>
>   (equal x y) implies (= (sxhash x) (sxhash y)).
>
> Do you see any reason why SXHASH is not used by default in SetCategory?
>
> Note: OpenAxiom currently defines this default:
>
>   add
>       hash(s : %):  SingleInteger == SXHASH(s)$Lisp
>
> Regards,
> Bill Page.
>
> On Mon, Nov 9, 2009 at 7:51 PM, Tim Daly <daly@axiom-developer.org> wrote:
>   
>> ...
>> There is a lisp function to get the hash value of any object
>> call sxhash. You can call it.
>>
>> SXHASH(a)$Lisp
>>
>> Note that if
>>
>> c:=Integer
>>
>> then
>> EQ(a,c)$Lisp is false
>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>
>> Thus the hash function you seek already exists.
>> You just have to accept the fact that Spad is only syntactic
>> sugar for lisp code and lisp is not evil.
>>     
>
>   




From MAILER-DAEMON Mon Nov 09 22:21:37 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7hIX-0005mf-AO
	for mharc-axiom-developer@gnu.org; Mon, 09 Nov 2009 22:21:37 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7hIV-0005m9-L1
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 22:21:35 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7hIQ-0005kA-5O
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 22:21:34 -0500
Received: from [199.232.76.173] (port=48715 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7hIQ-0005k5-1J
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 22:21:30 -0500
Received: from mail-vw0-f197.google.com ([209.85.212.197]:49284)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <dosreis@gmail.com>) id 1N7hIP-0002O1-Oy
	for axiom-developer@nongnu.org; Mon, 09 Nov 2009 22:21:29 -0500
Received: by vws35 with SMTP id 35so990203vws.4
	for <axiom-developer@nongnu.org>; Mon, 09 Nov 2009 19:21:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.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=o7ZHaq75hWirSa+KtTCt+GXbwaRrxK7b+cGGzO9UqvQ=;
	b=kGCJssqgppv5lTaf5VflqW6YkazdCf4iv0mD1l1CYjCiXLt50yRVXWjdS1qyh5BpOS
	MQpRFAF8BzsW/tGE1iIh9I0YpjgUFm6c5X94xgeewX+ZpXluCPbtCbXjYjaC/ZQxrCjR
	I6BoUemjBx3U/CGabce09eSLTTjRZrygPj/MM=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.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=KxY50n4vuUihiQTMneqnbtons5FyArk746gJ2Rf+avygXyTbPHkkY1/vMxPFNlxRSx
	YuuDpIjtWPrlIpNZH5Q8c8Pi0lk9bljRFABQR5Lcoswfk3ZSaIThuISxyUSivD9+viJB
	+j26S+CgX5+kQWh63OeYkYi4gR1Nd79o7QkkY=
MIME-Version: 1.0
Sender: dosreis@gmail.com
Received: by 10.220.122.100 with SMTP id k36mr9782683vcr.38.1257823288683; 
	Mon, 09 Nov 2009 19:21:28 -0800 (PST)
In-Reply-To: <web-18643191@cgate.sci.ccny.cuny.edu>
References: <4AF8B921.8020201@axiom-developer.org>
	<web-18643191@cgate.sci.ccny.cuny.edu>
Date: Mon, 9 Nov 2009 21:21:28 -0600
X-Google-Sender-Auth: 1a83fbe3bad3777a
Message-ID: <206fcf960911091921x5d59dfd9hdb950bc5888b01cb@mail.gmail.com>
Subject: Re: [Axiom-developer] pointers
From: Gabriel Dos Reis <gdr@integrable-solutions.net>
To: William Sit <wyscc@sci.ccny.cuny.edu>
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: open-axiom-help@lists.sf.net, Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 03:21:35 -0000

On Mon, Nov 9, 2009 at 7:09 PM, William Sit <wyscc@sci.ccny.cuny.edu> wrote:
> Tim:
>
> Interesting. Is there a similar function that is more structural? say, can I
> test whether some domain (which may be passed as a parameter of type Field)
> is of the form Fraction(something) and if so, extract "something" (that is,
> assign it to a variable and further test it), sort of a deconstruction?

William --

   In OpenAxiom, when you get a domain, you can reify it, and
ask for the arguments that were used to instantiate it:

(1) -> reify Fraction Integer
   (1)  Fraction Integer
                                      Type: ConstructorCall DomainConstructor
(2) -> arguments reify Fraction Integer
   (2)  [(Integer)]
                                                            Type: List Syntax



From MAILER-DAEMON Tue Nov 10 00:37:07 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7jPf-0004Tz-19
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 00:37:07 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7jPc-0004TO-Di
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 00:37:04 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7jPX-0004So-Ig
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 00:37:03 -0500
Received: from [199.232.76.173] (port=45164 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7jPX-0004Sl-Cm
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 00:36:59 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:44942
	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 <daly@axiom-developer.org>) id 1N7jPX-0006hl-0z
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 00:36:59 -0500
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 nAA5aq8a020483;
	Mon, 9 Nov 2009 23:36:53 -0600
Message-ID: <4AF8FB33.9060409@axiom-developer.org>
Date: Tue, 10 Nov 2009 00:33:39 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bill Page <bill.page@newsynthesis.org>
Subject: Re: [Axiom-developer] pointers
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>	
	<4AF8B921.8020201@axiom-developer.org>
	<fbcd16d40911091718o41c95ad6vb3ee94de5e138039@mail.gmail.com>
In-Reply-To: <fbcd16d40911091718o41c95ad6vb3ee94de5e138039@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 <axiom-developer@nongnu.org>,
	Gabriel Dos Reis <gdr@cs.tamu.edu>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 05:37:05 -0000

Note that, under this definition

a:Dequeue(Integer):= dequeue [1,2,3,4,5]
b:Queue(Integer):= queue [1,2,3,4,5]

hash(a) == hash(b)

This is because the internal data representation of both objects is:

  ((1 2 3 4 5))

Nevertheless, this is a perfectly reasonable hash function.

Tim


Bill Page wrote:
> Tim,
>
> Besides the fact that from the standard we only have that
>
>   (equal x y) implies (= (sxhash x) (sxhash y)).
>
> Do you see any reason why SXHASH is not used by default in SetCategory?
>
> Note: OpenAxiom currently defines this default:
>
>   add
>       hash(s : %):  SingleInteger == SXHASH(s)$Lisp
>
> Regards,
> Bill Page.
>
> On Mon, Nov 9, 2009 at 7:51 PM, Tim Daly <daly@axiom-developer.org> wrote:
>   
>> ...
>> There is a lisp function to get the hash value of any object
>> call sxhash. You can call it.
>>
>> SXHASH(a)$Lisp
>>
>> Note that if
>>
>> c:=Integer
>>
>> then
>> EQ(a,c)$Lisp is false
>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>
>> Thus the hash function you seek already exists.
>> You just have to accept the fact that Spad is only syntactic
>> sugar for lisp code and lisp is not evil.
>>     
>
>   




From MAILER-DAEMON Tue Nov 10 02:42:31 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7lN1-0003eW-AL
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 02:42:31 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7lMz-0003e8-AL
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 02:42:29 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7lMu-0003dH-II
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 02:42:28 -0500
Received: from [199.232.76.173] (port=39724 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7lMu-0003dE-EK
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 02:42:24 -0500
Received: from mx20.gnu.org ([199.232.41.8]:16657)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <gdr@cs.tamu.edu>) id 1N7lMt-0001ih-Tf
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 02:42:24 -0500
Received: from smtp.cs.tamu.edu ([128.194.138.107])
	by mx20.gnu.org with esmtp (Exim 4.60)
	(envelope-from <gdr@cs.tamu.edu>) id 1N7lMr-00061E-BR
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 02:42:21 -0500
Received: from gauss.cs.tamu.edu (gauss.cs.tamu.edu [128.194.136.74])
	by smtp.cs.tamu.edu (Postfix) with ESMTP id CEA5F19042B;
	Tue, 10 Nov 2009 01:42:14 -0600 (CST)
Received: by gauss.cs.tamu.edu (Postfix, from userid 1000)
	id 1128C90502; Tue, 10 Nov 2009 01:42:52 -0600 (CST)
Sender: gdr@cs.tamu.edu
To: Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] pointers
From: Gabriel Dos Reis <gdr@cs.tamu.edu>
In-Reply-To: <4AF8FB33.9060409@axiom-developer.org> (Tim Daly's message of
	"Tue\, 10 Nov 2009 00\:33\:39 -0500")
Organization: Texas A&M University / Department of Computer Science &
	Enigneering
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
	<4AF8B921.8020201@axiom-developer.org>
	<fbcd16d40911091718o41c95ad6vb3ee94de5e138039@mail.gmail.com>
	<4AF8FB33.9060409@axiom-developer.org>
Date: Tue, 10 Nov 2009 01:42:51 -0600
Message-ID: <87tyx2g70k.fsf@gauss.cs.tamu.edu>
Lines: 20
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
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: open-axiom-help@lists.sf.net, Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 07:42:29 -0000

Tim Daly <daly@axiom-developer.org> writes:

| Note that, under this definition
| 
| a:Dequeue(Integer):= dequeue [1,2,3,4,5]
| b:Queue(Integer):= queue [1,2,3,4,5]
| 
| hash(a) == hash(b)
          ^^
I suspect you meant '='.

In any case, unless you have a hash function that is a bijection of the
whole universe onto the finite set SingleInteger, you're going to get
different objects/values mapped to the same hash value no matter what.

OpenAxiom being strongly typed, I'm not worried that you're going to put
both a and b in the same HashTable and not being able to avoid the
collision. 

-- Gaby



From MAILER-DAEMON Tue Nov 10 11:38:52 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7tk4-0005ov-3Q
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 11:38:52 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7tk0-0005mt-LN
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:38:48 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7tjv-0005kI-BP
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:38:47 -0500
Received: from [199.232.76.173] (port=38569 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7tjv-0005k5-1h
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:38:43 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:49545
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7tju-00073E-It
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:38:42 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18648445; Tue, 10 Nov 2009 11:38:25 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: Tim Daly <daly@axiom-developer.org>,William Sit <wyscc@sci.ccny.cuny.edu>
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Tue, 10 Nov 2009 11:38:25 -0500
Message-ID: <web-18648445@cgate.sci.ccny.cuny.edu>
In-Reply-To: <4AF8CEF0.9010704@axiom-developer.org>
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: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 16:38:48 -0000

Thanks, Tim. That is exactly what I am looking for. Now I 
would like to compare c.1 with some known constructor, say 
Fraction. (In other words, given a domain of category 
Field, I would like to know if it comes from the 
constructor Fraction). I tried a few variations and each 
time, Axiom says:

Although Fraction is the name of a constructor, a full 
type must be specified in the context you have used it. 
Issue )show Fraction for more information.

Things I tried:

a:=FiniteField(5,2)
b:=devaluate(a)$Lisp
c:=destruct(b)
c.1
d:="Fraction"::SExpression
e:Boolean
e:=EQ(c.1,d)  -- message above
e:=(c.1=Fraction)  -- message above
e:= (c.1=d$Lisp) -- message above
a1:=Fraction Integer
b1:=devaluate(a1)$Lisp
c1:=destruct(b1)
e:=(c.1=c1.1) -- message above

I confess that I'm still using a very old Window version 
(Version of Tuesday November 30, 2004 at 21:11:14) but I 
don't think that makes a difference in these examples.

William

On Mon, 09 Nov 2009 21:24:48 -0500
  Tim Daly <daly@axiom-developer.org> wrote:
>I'm not sure what you want. Perhaps you'd like to say:
>
>a:=Fraction(Polynomial(Integer))
>b:=devaluate(a)$Lisp
>
>which returns the list (actually of type SExpression)
>
>(Fraction (Polynomial (Integer)))
>
>c:=destruct(b)
>c.2
>
>which returns (Polynomial (Integer))
>
>Does that help?
>
>Tim
>
>
>William Sit wrote:
>>Tim:
>>
>>Interesting. Is there a similar function that is more 
>>structural? say, 
>>can I test whether some domain (which may be passed as a 
>>parameter of 
>>type Field) is of the form Fraction(something) and if so, 
>>extract 
>>"something" (that is, assign it to a variable and further 
>>test it), 
>>sort of a deconstruction?
>>
>>William
>>
>>On Mon, 09 Nov 2009 19:51:45 -0500
>> Tim Daly <daly@axiom-developer.org> wrote:
>>>You can get a memory pointer to a lisp object.
>>>
>>>a:=Fraction(Integer)
>>>
>>>returns the "memory location of Fraction(Integer)"
>>>You can prove this with
>>>
>>>b:=Fraction(Integer)
>>>EQ(a,b)$Lisp
>>>
>>>The lisp function EQ compares memory pointers.
>>>
>>>There is a lisp function to get the hash value of any 
>>>object
>>>call sxhash. You can call it.
>>>
>>>SXHASH(a)$Lisp
>>>
>>>Note that if
>>>
>>>c:=Integer
>>>
>>>then
>>>EQ(a,c)$Lisp is false
>>>SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>>
>>>Thus the hash function you seek already exists.
>>>You just have to accept the fact that Spad is only 
>>>syntactic
>>>sugar for lisp code and lisp is not evil.
>>>
>>>Tim
>>>
>>>
>>>
>>>_______________________________________________
>>>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/
>>
>

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 Tue Nov 10 11:45:40 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7tqe-0004pI-Bj
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 11:45:40 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7tqc-0004o3-8g
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:45:38 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7tqX-0004kA-I6
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:45:37 -0500
Received: from [199.232.76.173] (port=54565 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7tqX-0004k7-BY
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:45:33 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:49594
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7tqX-0008Jm-0V
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 11:45:33 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18648574; Tue, 10 Nov 2009 11:45:15 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: Gabriel Dos Reis <gdr@integrable-solutions.net>,William Sit
	<wyscc@sci.ccny.cuny.edu>
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Tue, 10 Nov 2009 11:45:15 -0500
Message-ID: <web-18648574@cgate.sci.ccny.cuny.edu>
In-Reply-To: <206fcf960911091921x5d59dfd9hdb950bc5888b01cb@mail.gmail.com>
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: open-axiom-help@lists.sf.net, Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 16:45:38 -0000

Gabriel:

Thanks for the response. Your script shows how to get the 
parameters, not the constructor. I do not have OpenAxiom 
installed (sorry). The question is whether I can test that 
the constructor is Fraction, or otherwise (like 
FiniteField) when the domain belongs to the category 
Field.

I came across this requirement in algorithms that may take 
advantage of special knowledge of how the coefficient 
field is constructed.

William

On Mon, 9 Nov 2009 21:21:28 -0600
  Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
>On Mon, Nov 9, 2009 at 7:09 PM, William Sit 
><wyscc@sci.ccny.cuny.edu> wrote:
>> Tim:
>>
>> Interesting. Is there a similar function that is more 
>>structural? say, can I
>> test whether some domain (which may be passed as a 
>>parameter of type Field)
>> is of the form Fraction(something) and if so, extract 
>>"something" (that is,
>> assign it to a variable and further test it), sort of a 
>>deconstruction?
>
>William --
>
>    In OpenAxiom, when you get a domain, you can reify 
>it, and
>ask for the arguments that were used to instantiate it:
>
>(1) -> reify Fraction Integer
>    (1)  Fraction Integer
>                                       Type: 
>ConstructorCall DomainConstructor
>(2) -> arguments reify Fraction Integer
>    (2)  [(Integer)]
>                                                           
>  Type: List Syntax

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 Tue Nov 10 12:01:16 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7u5i-0001nX-I7
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 12:01:15 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7u5d-0001lP-86
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:01:10 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7u5W-0001if-PW
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:01:07 -0500
Received: from [199.232.76.173] (port=34505 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7u5W-0001iV-5J
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:01:02 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:49650
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7u5V-0002P1-BR
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:01:01 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18648742; Tue, 10 Nov 2009 12:00:58 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: "William Sit" <wyscc@sci.ccny.cuny.edu>,Tim Daly
	<daly@axiom-developer.org>,William Sit <wyscc@sci.ccny.cuny.edu>
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Tue, 10 Nov 2009 12:00:58 -0500
Message-ID: <web-18648742@cgate.sci.ccny.cuny.edu>
In-Reply-To: <web-18648445@cgate.sci.ccny.cuny.edu>
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: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 17:01:13 -0000

Tim:

Sorry about the last message, please ignore.
The problem is solved (I was simply not being careful) and 
made some false claims on the results.

(16) -> )clear all
    All user variables and function definitions have been 
cleared.
(1) -> a:=FiniteField(5,2)

    (1)  FiniteField(5,2)
                                                            
      Type: Domain
(2) -> b:=devaluate(a)$Lisp

    (2)  (FiniteField 5 2)
                                                            
 Type: SExpression
(3) -> c:=destruct(b)

    (3)  [FiniteField,5,2]
                                                        Type: 
List SExpression
(4) -> c.1

    (4)  FiniteField
                                                            
 Type: SExpression
(5) -> d:="Fraction"::SExpression

    (5)  Fraction
                                                            
 Type: SExpression
(6) -> e:Boolean
                                                            
        Type: Void
(7) -> e:=EQ(c.1,d)$Lisp

    (7) ()
                                                     Type: 
SExpression
(7) -> e:=(c.1=Fraction) -- message above

    Although Fraction is the name of a constructor, a full 
type must be
       specified in the context you have used it. Issue 
)show Fraction
       for more information.
(7) -> e:= (c.1=d$Lisp)

    >> System error:
    The variable |d| is unbound.

protected-symbol-warn called with (NIL)
(7) -> a1:=Fraction Integer

    (7)  Fraction Integer
                                                            
      Type: Domain
(8) -> b1:=devaluate(a1)$Lisp

    (8)  (Fraction (Integer))
                                                            
 Type: SExpression
(9) -> c1:=destruct(b1)

    (9)  [Fraction,(Integer)]
                                                        Type: 
List SExpression
(10) -> e:=(c.1=c1.1)

    (10)  false
                                                            
     Type: Boolean

William
----

On Tue, 10 Nov 2009 11:38:25 -0500
  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>Thanks, Tim. That is exactly what I am looking for. Now I 
>would like to compare c.1 with some known constructor, 
>say Fraction. (In other words, given a domain of category 
>Field, I would like to know if it comes from the 
>constructor Fraction). I tried a few variations and each 
>time, Axiom says:
>
>Although Fraction is the name of a constructor, a full 
>type must be specified in the context you have used it. 
>Issue )show Fraction for more information.
>
>Things I tried:
>
>a:=FiniteField(5,2)
>b:=devaluate(a)$Lisp
>c:=destruct(b)
>c.1
>d:="Fraction"::SExpression
>e:Boolean
>e:=EQ(c.1,d)  -- message above
>e:=(c.1=Fraction)  -- message above
>e:= (c.1=d$Lisp) -- message above
>a1:=Fraction Integer
>b1:=devaluate(a1)$Lisp
>c1:=destruct(b1)
>e:=(c.1=c1.1) -- message above
>
>I confess that I'm still using a very old Window version 
>(Version of Tuesday November 30, 2004 at 21:11:14) but I 
>don't think that makes a difference in these examples.
>
>William
>
>On Mon, 09 Nov 2009 21:24:48 -0500
>  Tim Daly <daly@axiom-developer.org> wrote:
>>I'm not sure what you want. Perhaps you'd like to say:
>>
>>a:=Fraction(Polynomial(Integer))
>>b:=devaluate(a)$Lisp
>>
>>which returns the list (actually of type SExpression)
>>
>>(Fraction (Polynomial (Integer)))
>>
>>c:=destruct(b)
>>c.2
>>
>>which returns (Polynomial (Integer))
>>
>>Does that help?
>>
>>Tim
>>
>>
>>William Sit wrote:
>>>Tim:
>>>
>>>Interesting. Is there a similar function that is more 
>>>structural? say, can I test whether some domain (which 
>>>may be passed as a parameter of type Field) is of the 
>>>form Fraction(something) and if so, extract "something" 
>>>(that is, assign it to a variable and further test it), 
>>>sort of a deconstruction?
>>>
>>>William
>>>
>>>On Mon, 09 Nov 2009 19:51:45 -0500
>>>Tim Daly <daly@axiom-developer.org> wrote:
>>>>You can get a memory pointer to a lisp object.
>>>>
>>>>a:=Fraction(Integer)
>>>>
>>>>returns the "memory location of Fraction(Integer)"
>>>>You can prove this with
>>>>
>>>>b:=Fraction(Integer)
>>>>EQ(a,b)$Lisp
>>>>
>>>>The lisp function EQ compares memory pointers.
>>>>
>>>>There is a lisp function to get the hash value of any 
>>>>object
>>>>call sxhash. You can call it.
>>>>
>>>>SXHASH(a)$Lisp
>>>>
>>>>Note that if
>>>>
>>>>c:=Integer
>>>>
>>>>then
>>>>EQ(a,c)$Lisp is false
>>>>SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>>>
>>>>Thus the hash function you seek already exists.
>>>>You just have to accept the fact that Spad is only 
>>>>syntactic
>>>>sugar for lisp code and lisp is not evil.
>>>>
>>>>Tim
>>>>
>>>>
>>>>
>>>>_______________________________________________
>>>>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/
>>>
>>
>
>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/

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 Tue Nov 10 12:23:14 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7uR0-0000mT-2S
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 12:23:14 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7uQy-0000ks-UR
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:23:13 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7uQu-0000ef-LO
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:23:12 -0500
Received: from [199.232.76.173] (port=55007 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7uQu-0000eU-FE
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:23:08 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:49882
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7uQt-00067N-V8
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:23:08 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18649118; Tue, 10 Nov 2009 12:22:51 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: "William Sit" <wyscc@sci.ccny.cuny.edu>,"William Sit"
	<wyscc@sci.ccny.cuny.edu>,Tim Daly <daly@axiom-developer.org>,William
	Sit <wyscc@sci.ccny.cuny.edu>
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Tue, 10 Nov 2009 12:22:51 -0500
Message-ID: <web-18649118@cgate.sci.ccny.cuny.edu>
In-Reply-To: <web-18648742@cgate.sci.ccny.cuny.edu>
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: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 17:23:13 -0000

It appears that to test the constructor, one must test a 
candidate against a known one via the constructor itself, 
and not be "fiat" by using a SExpression. Is this related 
to hashing of pointers? Continuing with script in the 
previous email (attached):

(11) -> EQ(c.1,d)$Lisp

    (11)  ()
                                                            
 Type: SExpression
(12) -> EQ(c1.1,d)$Lisp

    (12)  ()

Type: SExpression
-- So EQ$Lisp returns () in both cases, even for 
-- EQ(c.1,c1.1)$Lisp

-- (19)  ()
                                                            
 --Type: SExpression
                                                            
 
(13) -> e:=(c.1=d)

    (13)  false
                                                            
     Type: Boolean

(14) -> e:=(c1.1=d)

    (14)  false
                                                            
    Type: Boolean
-- same problem with = using SExpression. 

15) -> e:=(c1.1=c1.1)

    (15)  true
                                                            
     Type: Boolean
(16) -> d

    (16)  Fraction
                                                            
 Type: SExpression
(17) -> c1.1

    (17)  Fraction
                                                            
 Type: SExpression

So it seems there is some distinction: d (defined 
explicitly as Fraction::SExpression) is different from 
c1.1 defined using devaluate/destruct from a domain. A 
user should not need to know the various way "equal" is 
tested if the two arguments for "equal" come from the same 
domain SExpression. So is this a bug?

William

On Tue, 10 Nov 2009 12:00:58 -0500
  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>Tim:
>
>Sorry about the last message, please ignore.
>The problem is solved (I was simply not being careful) 
>and made some false claims on the results.
>
>(16) -> )clear all
>    All user variables and function definitions have been 
>cleared.
>(1) -> a:=FiniteField(5,2)
>
>    (1)  FiniteField(5,2)
>                                                           
> 
>      Type: Domain
>(2) -> b:=devaluate(a)$Lisp
>
>    (2)  (FiniteField 5 2)
>                                                           
> 
>  Type: SExpression
>(3) -> c:=destruct(b)
>
>    (3)  [FiniteField,5,2]
>                                                        Type: 
>List SExpression
>(4) -> c.1
>
>    (4)  FiniteField
>                                                           
> 
>  Type: SExpression
>(5) -> d:="Fraction"::SExpression
>
>    (5)  Fraction
>                                                           
> 
>  Type: SExpression
>(6) -> e:Boolean
>                                                           
> 
>        Type: Void
>(7) -> e:=EQ(c.1,d)$Lisp
>
>    (7) ()
>                                                     Type: 
>SExpression
>(7) -> e:=(c.1=Fraction) -- message above
>
>    Although Fraction is the name of a constructor, a 
>full 
>type must be
>       specified in the context you have used it. Issue 
>)show Fraction
>       for more information.
>(7) -> e:= (c.1=d$Lisp)
>
>    >> System error:
>    The variable |d| is unbound.
>
>protected-symbol-warn called with (NIL)
>(7) -> a1:=Fraction Integer
>
>    (7)  Fraction Integer
>                                                           
> 
>      Type: Domain
>(8) -> b1:=devaluate(a1)$Lisp
>
>    (8)  (Fraction (Integer))
>                                                           
> 
>  Type: SExpression
>(9) -> c1:=destruct(b1)
>
>    (9)  [Fraction,(Integer)]
>                                                        Type: 
>List SExpression
>(10) -> e:=(c.1=c1.1)
>
>    (10)  false
>                                                           
> 
>     Type: Boolean
>
>William
>----
>
>On Tue, 10 Nov 2009 11:38:25 -0500
>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>>Thanks, Tim. That is exactly what I am looking for. Now I 
>>would like to compare c.1 with some known constructor, 
>>say Fraction. (In other words, given a domain of category 
>>Field, I would like to know if it comes from the 
>>constructor Fraction). I tried a few variations and each 
>>time, Axiom says:
>>
>>Although Fraction is the name of a constructor, a full 
>>type must be specified in the context you have used it. 
>>Issue )show Fraction for more information.
>>
>>Things I tried:
>>
>>a:=FiniteField(5,2)
>>b:=devaluate(a)$Lisp
>>c:=destruct(b)
>>c.1
>>d:="Fraction"::SExpression
>>e:Boolean
>>e:=EQ(c.1,d)  -- message above
>>e:=(c.1=Fraction)  -- message above
>>e:= (c.1=d$Lisp) -- message above
>>a1:=Fraction Integer
>>b1:=devaluate(a1)$Lisp
>>c1:=destruct(b1)
>>e:=(c.1=c1.1) -- message above
>>
>>I confess that I'm still using a very old Window version 
>>(Version of Tuesday November 30, 2004 at 21:11:14) but I 
>>don't think that makes a difference in these examples.
>>
>>William
>>
>>On Mon, 09 Nov 2009 21:24:48 -0500
>> Tim Daly <daly@axiom-developer.org> wrote:
>>>I'm not sure what you want. Perhaps you'd like to say:
>>>
>>>a:=Fraction(Polynomial(Integer))
>>>b:=devaluate(a)$Lisp
>>>
>>>which returns the list (actually of type SExpression)
>>>
>>>(Fraction (Polynomial (Integer)))
>>>
>>>c:=destruct(b)
>>>c.2
>>>
>>>which returns (Polynomial (Integer))
>>>
>>>Does that help?
>>>
>>>Tim
>>>
>>>
>>>William Sit wrote:
>>>>Tim:
>>>>
>>>>Interesting. Is there a similar function that is more 
>>>>structural? say, can I test whether some domain (which 
>>>>may be passed as a parameter of type Field) is of the 
>>>>form Fraction(something) and if so, extract "something" 
>>>>(that is, assign it to a variable and further test it), 
>>>>sort of a deconstruction?
>>>>
>>>>William
>>>>
>>>>On Mon, 09 Nov 2009 19:51:45 -0500
>>>>Tim Daly <daly@axiom-developer.org> wrote:
>>>>>You can get a memory pointer to a lisp object.
>>>>>
>>>>>a:=Fraction(Integer)
>>>>>
>>>>>returns the "memory location of Fraction(Integer)"
>>>>>You can prove this with
>>>>>
>>>>>b:=Fraction(Integer)
>>>>>EQ(a,b)$Lisp
>>>>>
>>>>>The lisp function EQ compares memory pointers.
>>>>>
>>>>>There is a lisp function to get the hash value of any 
>>>>>object
>>>>>call sxhash. You can call it.
>>>>>
>>>>>SXHASH(a)$Lisp
>>>>>
>>>>>Note that if
>>>>>
>>>>>c:=Integer
>>>>>
>>>>>then
>>>>>EQ(a,c)$Lisp is false
>>>>>SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>>>>
>>>>>Thus the hash function you seek already exists.
>>>>>You just have to accept the fact that Spad is only 
>>>>>syntactic
>>>>>sugar for lisp code and lisp is not evil.
>>>>>
>>>>>Tim
>>>>>
>>>>>
>>>>>
>>>>>_______________________________________________
>>>>>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/
>>>>
>>>
>>
>>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/
>
>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/

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 Tue Nov 10 12:52:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7utf-0001Kp-Lz
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 12:52:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7ute-0001K0-2H
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:52:50 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7utZ-0001F4-6G
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:52:49 -0500
Received: from [199.232.76.173] (port=53445 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7utY-0001Ec-Uo
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:52:45 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:49328
	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 <daly@axiom-developer.org>) id 1N7utY-0002xU-Ar
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 12:52:44 -0500
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 nAAHqe8a011791;
	Tue, 10 Nov 2009 11:52:41 -0600
Message-ID: <4AF9A79D.1030803@axiom-developer.org>
Date: Tue, 10 Nov 2009 12:49:17 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: William Sit <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
References: <web-18649118@cgate.sci.ccny.cuny.edu>
In-Reply-To: <web-18649118@cgate.sci.ccny.cuny.edu>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 17:52:50 -0000

I'm not sure what you are asking. Are you having trouble with working in 
the SExpression domain?
You can move the SExpressions out to other domains. Sometimes it is 
painful but it works. So:

a:=FiniteField(5,2)
b:=devaluate(a)
string(SYMBOL_-NAME(b.1)$Lisp) ==> "FiniteField" (of type String)
integer(b.1) ==> 5  (of type PositiveInteger)

Does this help?

Tim


William Sit wrote:
> It appears that to test the constructor, one must test a candidate 
> against a known one via the constructor itself, and not be "fiat" by 
> using a SExpression. Is this related to hashing of pointers? 
> Continuing with script in the previous email (attached):
>
> (11) -> EQ(c.1,d)$Lisp
>
>    (11)  ()
>                                                            Type: 
> SExpression
> (12) -> EQ(c1.1,d)$Lisp
>
>    (12)  ()
>
> Type: SExpression
> -- So EQ$Lisp returns () in both cases, even for -- EQ(c.1,c1.1)$Lisp
>
> -- (19)  ()
>                                                            --Type: 
> SExpression
>                                                           
> (13) -> e:=(c.1=d)
>
>    (13)  false
>                                                                Type: 
> Boolean
>
> (14) -> e:=(c1.1=d)
>
>    (14)  false
>                                                               Type: 
> Boolean
> -- same problem with = using SExpression.
> 15) -> e:=(c1.1=c1.1)
>
>    (15)  true
>                                                                Type: 
> Boolean
> (16) -> d
>
>    (16)  Fraction
>                                                            Type: 
> SExpression
> (17) -> c1.1
>
>    (17)  Fraction
>                                                            Type: 
> SExpression
>
> So it seems there is some distinction: d (defined explicitly as 
> Fraction::SExpression) is different from c1.1 defined using 
> devaluate/destruct from a domain. A user should not need to know the 
> various way "equal" is tested if the two arguments for "equal" come 
> from the same domain SExpression. So is this a bug?
>
> William
>
> On Tue, 10 Nov 2009 12:00:58 -0500
>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>> Tim:
>>
>> Sorry about the last message, please ignore.
>> The problem is solved (I was simply not being careful) and made some 
>> false claims on the results.
>>
>> (16) -> )clear all
>>    All user variables and function definitions have been cleared.
>> (1) -> a:=FiniteField(5,2)
>>
>>    (1)  FiniteField(5,2)
>>                                                          
>>      Type: Domain
>> (2) -> b:=devaluate(a)$Lisp
>>
>>    (2)  (FiniteField 5 2)
>>                                                          
>>  Type: SExpression
>> (3) -> c:=destruct(b)
>>
>>    (3)  [FiniteField,5,2]
>>                                                        Type: List 
>> SExpression
>> (4) -> c.1
>>
>>    (4)  FiniteField
>>                                                          
>>  Type: SExpression
>> (5) -> d:="Fraction"::SExpression
>>
>>    (5)  Fraction
>>                                                          
>>  Type: SExpression
>> (6) -> e:Boolean
>>                                                          
>>        Type: Void
>> (7) -> e:=EQ(c.1,d)$Lisp
>>
>>    (7) ()
>>                                                     Type: SExpression
>> (7) -> e:=(c.1=Fraction) -- message above
>>
>>    Although Fraction is the name of a constructor, a full type must be
>>       specified in the context you have used it. Issue )show Fraction
>>       for more information.
>> (7) -> e:= (c.1=d$Lisp)
>>
>>    >> System error:
>>    The variable |d| is unbound.
>>
>> protected-symbol-warn called with (NIL)
>> (7) -> a1:=Fraction Integer
>>
>>    (7)  Fraction Integer
>>                                                          
>>      Type: Domain
>> (8) -> b1:=devaluate(a1)$Lisp
>>
>>    (8)  (Fraction (Integer))
>>                                                          
>>  Type: SExpression
>> (9) -> c1:=destruct(b1)
>>
>>    (9)  [Fraction,(Integer)]
>>                                                        Type: List 
>> SExpression
>> (10) -> e:=(c.1=c1.1)
>>
>>    (10)  false
>>                                                          
>>     Type: Boolean
>>
>> William
>> ----
>>
>> On Tue, 10 Nov 2009 11:38:25 -0500
>>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>>> Thanks, Tim. That is exactly what I am looking for. Now I would like 
>>> to compare c.1 with some known constructor, say Fraction. (In other 
>>> words, given a domain of category Field, I would like to know if it 
>>> comes from the constructor Fraction). I tried a few variations and 
>>> each time, Axiom says:
>>>
>>> Although Fraction is the name of a constructor, a full type must be 
>>> specified in the context you have used it. Issue )show Fraction for 
>>> more information.
>>>
>>> Things I tried:
>>>
>>> a:=FiniteField(5,2)
>>> b:=devaluate(a)$Lisp
>>> c:=destruct(b)
>>> c.1
>>> d:="Fraction"::SExpression
>>> e:Boolean
>>> e:=EQ(c.1,d)  -- message above
>>> e:=(c.1=Fraction)  -- message above
>>> e:= (c.1=d$Lisp) -- message above
>>> a1:=Fraction Integer
>>> b1:=devaluate(a1)$Lisp
>>> c1:=destruct(b1)
>>> e:=(c.1=c1.1) -- message above
>>>
>>> I confess that I'm still using a very old Window version (Version of 
>>> Tuesday November 30, 2004 at 21:11:14) but I don't think that makes 
>>> a difference in these examples.
>>>
>>> William
>>>
>>> On Mon, 09 Nov 2009 21:24:48 -0500
>>> Tim Daly <daly@axiom-developer.org> wrote:
>>>> I'm not sure what you want. Perhaps you'd like to say:
>>>>
>>>> a:=Fraction(Polynomial(Integer))
>>>> b:=devaluate(a)$Lisp
>>>>
>>>> which returns the list (actually of type SExpression)
>>>>
>>>> (Fraction (Polynomial (Integer)))
>>>>
>>>> c:=destruct(b)
>>>> c.2
>>>>
>>>> which returns (Polynomial (Integer))
>>>>
>>>> Does that help?
>>>>
>>>> Tim
>>>>
>>>>
>>>> William Sit wrote:
>>>>> Tim:
>>>>>
>>>>> Interesting. Is there a similar function that is more structural? 
>>>>> say, can I test whether some domain (which may be passed as a 
>>>>> parameter of type Field) is of the form Fraction(something) and if 
>>>>> so, extract "something" (that is, assign it to a variable and 
>>>>> further test it), sort of a deconstruction?
>>>>>
>>>>> William
>>>>>
>>>>> On Mon, 09 Nov 2009 19:51:45 -0500
>>>>> Tim Daly <daly@axiom-developer.org> wrote:
>>>>>> You can get a memory pointer to a lisp object.
>>>>>>
>>>>>> a:=Fraction(Integer)
>>>>>>
>>>>>> returns the "memory location of Fraction(Integer)"
>>>>>> You can prove this with
>>>>>>
>>>>>> b:=Fraction(Integer)
>>>>>> EQ(a,b)$Lisp
>>>>>>
>>>>>> The lisp function EQ compares memory pointers.
>>>>>>
>>>>>> There is a lisp function to get the hash value of any object
>>>>>> call sxhash. You can call it.
>>>>>>
>>>>>> SXHASH(a)$Lisp
>>>>>>
>>>>>> Note that if
>>>>>>
>>>>>> c:=Integer
>>>>>>
>>>>>> then
>>>>>> EQ(a,c)$Lisp is false
>>>>>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>>>>>
>>>>>> Thus the hash function you seek already exists.
>>>>>> You just have to accept the fact that Spad is only syntactic
>>>>>> sugar for lisp code and lisp is not evil.
>>>>>>
>>>>>> Tim
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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/
>>>>>
>>>>
>>>
>>> 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/
>>
>> 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/
>
> 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 Tue Nov 10 13:11:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7vC3-0002Pf-NG
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 13:11:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7vC2-0002Ni-7C
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 13:11:50 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7vBx-0002G1-0r
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 13:11:49 -0500
Received: from [199.232.76.173] (port=60034 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7vBw-0002Fd-LF
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 13:11:44 -0500
Received: from hera.math.uni.wroc.pl ([156.17.86.1]:42914)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <hebisch@math.uni.wroc.pl>)
	id 1N7vBw-00061n-7m
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 13:11:44 -0500
Received: from hebisch by hera.math.uni.wroc.pl with local (Exim 4.63)
	(envelope-from <hebisch@math.uni.wroc.pl>) id 1N7vLB-0003xl-3H
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 18:21:17 +0000
Subject: Re: [Axiom-developer] pointers
In-Reply-To: <web-18648574@cgate.sci.ccny.cuny.edu>
To: axiom-developer@nongnu.org
Date: Tue, 10 Nov 2009 19:21:17 +0100 (CET)
X-Mailer: ELM [version 2.4ME+ PL100 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII
Message-Id: <E1N7vLB-0003xl-3H@hera.math.uni.wroc.pl>
From: Waldek Hebisch <hebisch@math.uni.wroc.pl>
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 18:11:50 -0000

William Sit wrote:
> Gabriel:
> 
> Thanks for the response. Your script shows how to get the 
> parameters, not the constructor. I do not have OpenAxiom 
> installed (sorry). The question is whether I can test that 
> the constructor is Fraction, or otherwise (like 
> FiniteField) when the domain belongs to the category 
> Field.
>

Do you want something like this?

(10) -> a := Fraction(Integer)

   (10)  Fraction Integer
                                                                 Type: Domain
(11) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean

   (11)  true
                                                                Type: Boolean
(12) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean

   (12)  false
                                                                Type: Boolean
(13) -> a :=FiniteField(5,2)

   (13)  FiniteField(5,2)
                                                                 Type: Domain
(14) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean

   (14)  false
                                                                Type: Boolean
(15) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean

   (15)  true
                                                                Type: Boolean

 
-- 
                              Waldek Hebisch
hebisch@math.uni.wroc.pl 



From MAILER-DAEMON Tue Nov 10 14:35:37 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7wV6-00042C-Fg
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 14:35:36 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7wV4-00041V-FX
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:35:34 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7wV1-00040n-0v
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:35:34 -0500
Received: from [199.232.76.173] (port=43800 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7wV0-00040k-ND
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:35:30 -0500
Received: from vms173019pub.verizon.net ([206.46.173.19]:65477)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7wV0-0002U1-BN
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:35:30 -0500
Received: from sci.ccny.cuny.edu ([96.232.55.183]) by vms173019.mailsrvcs.net
	(Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008;
	32bit)) with ESMTPA id <0KSW0015RRQMWV07@vms173019.mailsrvcs.net> for
	axiom-developer@nongnu.org; Tue, 10 Nov 2009 13:35:11 -0600 (CST)
Message-id: <4AF9C0ED.406CDB93@sci.ccny.cuny.edu>
Date: Tue, 10 Nov 2009 14:37:17 -0500
From: William Sit <wyscc@sci.ccny.cuny.edu>
Organization: City College of New York
X-Mailer: Mozilla 4.7 [en] (WinNT; U)
X-Accept-Language: en,zh-CN,zh-TW,zh
MIME-version: 1.0
To: Waldek Hebisch <hebisch@math.uni.wroc.pl>
Subject: Re: [Axiom-developer] pointers
References: <E1N7vLB-0003xl-3H@hera.math.uni.wroc.pl>
Content-type: text/plain; charset=UTF-8
Content-transfer-encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (1203?)
Cc: axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: wyscc@sci.ccny.cuny.edu
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 19:35:35 -0000

Hi Waldek:

Thanks. That is exactly what I want. Good solution. So the
"trick" is to use ' instead of the string. So is the
following a bug?

a:='Fraction::SEX
  Fraction  Type:SExpression
b:="Fraction"::SEX
  Fraction  Type:SExpression
(a=b)@Boolean
  false     Type Boolean

That is, I was deceived by the output which looked the same.
Perhaps the output should have been ('Fraction) and
("Fraction") ??

Also,

destruct(a) or destruct(b) leads to an Error:

 Function Selection for destruct
      Arguments: SEX

 [1]  signature:   SEX -> LIST SEX
      implemented: slot (List $)$ from SEX


   >> Error detected within library code:
   Non-list

protected-symbol-warn called with (NIL)

William


Waldek Hebisch wrote:
> 
> William Sit wrote:
> > Gabriel:
> >
> > Thanks for the response. Your script shows how to get the
> > parameters, not the constructor. I do not have OpenAxiom
> > installed (sorry). The question is whether I can test that
> > the constructor is Fraction, or otherwise (like
> > FiniteField) when the domain belongs to the category
> > Field.
> >
> 
> Do you want something like this?
> 
> (10) -> a := Fraction(Integer)
> 
>    (10)  Fraction Integer
>                                                                  Type: Domain
> (11) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean
> 
>    (11)  true
>                                                                 Type: Boolean
> (12) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean
> 
>    (12)  false
>                                                                 Type: Boolean
> (13) -> a :=FiniteField(5,2)
> 
>    (13)  FiniteField(5,2)
>                                                                  Type: Domain
> (14) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean
> 
>    (14)  false
>                                                                 Type: Boolean
> (15) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean
> 
>    (15)  true
>                                                                 Type: Boolean
> 
> 
> --
>                               Waldek Hebisch
> hebisch@math.uni.wroc.pl
> 
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer

-- 
William Sit
Department of Mathematics..Email: wyscc@sci.ccny.cuny.edu
City College of New York................Tel: 212-650-5179
New York, NY 10031, USA.................Fax: 212-862-0004
Home page: .......http://scisun.sci.ccny.cuny.edu/~wyscc/



From MAILER-DAEMON Tue Nov 10 14:51:39 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7wkd-0002SX-48
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 14:51:39 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7wkb-0002RB-40
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:51:37 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7wkW-0002O5-DO
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:51:36 -0500
Received: from [199.232.76.173] (port=47097 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7wkW-0002Nw-5I
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:51:32 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:34947
	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 <daly@axiom-developer.org>) id 1N7wkV-00059D-O8
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:51:31 -0500
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 nAAJpQ8a019915;
	Tue, 10 Nov 2009 13:51:27 -0600
Message-ID: <4AF9C373.7060600@axiom-developer.org>
Date: Tue, 10 Nov 2009 14:48:03 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: wyscc@sci.ccny.cuny.edu
Subject: Re: [Axiom-developer] pointers
References: <E1N7vLB-0003xl-3H@hera.math.uni.wroc.pl>
	<4AF9C0ED.406CDB93@sci.ccny.cuny.edu>
In-Reply-To: <4AF9C0ED.406CDB93@sci.ccny.cuny.edu>
Content-Type: text/plain; charset=UTF-8; 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
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 19:51:37 -0000

William,

a:='Fraction::SEX

is a lisp symbol. A lisp symbol is essentially the address of a data 
structure
which is approximately
    struct
       symbol-function (pointer to code)
       symbol-name (a string representation of the symbol)
       symbol-package (the lisp package (a hash table pointer))
       symbol-value (the value of the symbol)
       symbol-plist (an association list hanging on the symbol)

a:="Fraction"::Sex

is a lisp string, a contiguous set of bytes containing character code

So
a:=SYMBOL_-NAME('Fraction::SEX)$Lisp       (get the symbol-name from the 
fraction struct)
b:="Fraction"::SEX                                               (make a 
string of bytes containing "Fraction")
EQ(a,b)$Lisp ==> ()                                            (are they 
the same storage location? no)
c:=STRING_-EQUAL(a,b)$Lisp ==> T              (are they the same 
sequence of bytes? yes)

Tim



William Sit wrote:
> Hi Waldek:
>
> Thanks. That is exactly what I want. Good solution. So the
> "trick" is to use ' instead of the string. So is the
> following a bug?
>
> a:='Fraction::SEX
>   Fraction  Type:SExpression
> b:="Fraction"::SEX
>   Fraction  Type:SExpression
> (a=b)@Boolean
>   false     Type Boolean
>
> That is, I was deceived by the output which looked the same.
> Perhaps the output should have been ('Fraction) and
> ("Fraction") ??
>
> Also,
>
> destruct(a) or destruct(b) leads to an Error:
>
>  Function Selection for destruct
>       Arguments: SEX
>
>  [1]  signature:   SEX -> LIST SEX
>       implemented: slot (List $)$ from SEX
>
>
>    >> Error detected within library code:
>    Non-list
>
> protected-symbol-warn called with (NIL)
>
> William
>
>
> Waldek Hebisch wrote:
>   
>> William Sit wrote:
>>     
>>> Gabriel:
>>>
>>> Thanks for the response. Your script shows how to get the
>>> parameters, not the constructor. I do not have OpenAxiom
>>> installed (sorry). The question is whether I can test that
>>> the constructor is Fraction, or otherwise (like
>>> FiniteField) when the domain belongs to the category
>>> Field.
>>>
>>>       
>> Do you want something like this?
>>
>> (10) -> a := Fraction(Integer)
>>
>>    (10)  Fraction Integer
>>                                                                  Type: Domain
>> (11) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean
>>
>>    (11)  true
>>                                                                 Type: Boolean
>> (12) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean
>>
>>    (12)  false
>>                                                                 Type: Boolean
>> (13) -> a :=FiniteField(5,2)
>>
>>    (13)  FiniteField(5,2)
>>                                                                  Type: Domain
>> (14) -> (opOf(devaluate(a)$Lisp)$Lisp = 'Fraction::SEX)@Boolean
>>
>>    (14)  false
>>                                                                 Type: Boolean
>> (15) -> (opOf(devaluate(a)$Lisp)$Lisp = 'FiniteField::SEX)@Boolean
>>
>>    (15)  true
>>                                                                 Type: Boolean
>>
>>
>> --
>>                               Waldek Hebisch
>> hebisch@math.uni.wroc.pl
>>
>> _______________________________________________
>> Axiom-developer mailing list
>> Axiom-developer@nongnu.org
>> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>>     
>
>   




From MAILER-DAEMON Tue Nov 10 15:10:52 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7x3E-0002vG-Mb
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 15:10:52 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7x3D-0002uk-12
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 15:10:51 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7x37-0002t7-7O
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 15:10:49 -0500
Received: from [199.232.76.173] (port=40750 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7x36-0002t0-Vv
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 15:10:45 -0500
Received: from vms173007pub.verizon.net ([206.46.173.7]:47950)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N7x36-0007ux-Cn
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 15:10:44 -0500
Received: from sci.ccny.cuny.edu ([96.232.55.183]) by vms173007.mailsrvcs.net
	(Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008;
	32bit)) with ESMTPA id <0KSW00CPKTDJ0EBZ@vms173007.mailsrvcs.net> for
	axiom-developer@nongnu.org; Tue, 10 Nov 2009 14:10:33 -0600 (CST)
Message-id: <4AF9C937.7C127764@sci.ccny.cuny.edu>
Date: Tue, 10 Nov 2009 15:12:39 -0500
From: William Sit <wyscc@sci.ccny.cuny.edu>
Organization: City College of New York
X-Mailer: Mozilla 4.7 [en] (WinNT; U)
X-Accept-Language: en,zh-CN,zh-TW,zh
MIME-version: 1.0
To: Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] pointers//Decontructing domains
References: <web-18649118@cgate.sci.ccny.cuny.edu>
	<4AF9A79D.1030803@axiom-developer.org>
Content-type: text/plain; charset=UTF-8
Content-transfer-encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (1203?)
Cc: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: wyscc@sci.ccny.cuny.edu
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 20:10:51 -0000

Tim: 

Thanks, your method works. For me at least, it is much
easier to handle strings than SExpression.

Waldek also provided a working method using opOf (but that
involves SExpression, and the output in SExpression can be
misleading), which is perhaps a bug (see my reply to
Waldek).

To summarize:
It is possible to deconstruct a domain (that is, trace its
constructor and the parameters to that constructor) using
Lisp primitives. Given an identifier whose value at turn
time is an Axiom domain, the function devaluate$Lisp returns
its value as an SExpression, and the function deconstrut
further turns the result into a list of SExpressions (which
may be useful to extract the first level of parameters, but
not necessary). The components can then be analyzed.
However, testing for equality of SExpressions can be
hazardous when the SExpressions are constructed in different
ways but the outputForms look identical. There are (at
least?) two ways to get around the problem. Assume we have
a, b defined below (but the value of the identifier a is not
really assumed known at compile time):

a:=Fraction Integer
b:=devaluate(a)$Lisp
  (Fraction (Integer))   Type SExpression

(1) (Waldek): use opOF to pick out the constructor of the
domain and test against a candidate using a quote expression
in Lisp coerced to an SExpression:

testW:='Fraction::SEX
c:=opOf(b)$Lisp
(c=testW)@Boolean

(2) (Tim): use a Lisp function SYMBOL_-NAME and then convert
the result into a string before testing:

testT:="Fraction"
c:=string(SYMBOL_-NAME(b.1)$Lisp)
(c=testT)@Boolean

In either method, do not set testW or testT to
"Fraction"::SEX, which would not test correctly.


William

Tim Daly wrote:
> 
> I'm not sure what you are asking. Are you having trouble with working in
> the SExpression domain?
> You can move the SExpressions out to other domains. Sometimes it is
> painful but it works. So:
> 
> a:=FiniteField(5,2)
> b:=devaluate(a)
> string(SYMBOL_-NAME(b.1)$Lisp) ==> "FiniteField" (of type String)
> integer(b.1) ==> 5  (of type PositiveInteger)
> 
> Does this help?
> 
> Tim
> 
> William Sit wrote:
> > It appears that to test the constructor, one must test a candidate
> > against a known one via the constructor itself, and not be "fiat" by
> > using a SExpression. Is this related to hashing of pointers?
> > Continuing with script in the previous email (attached):
> >
> > (11) -> EQ(c.1,d)$Lisp
> >
> >    (11)  ()
> >                                                            Type:
> > SExpression
> > (12) -> EQ(c1.1,d)$Lisp
> >
> >    (12)  ()
> >
> > Type: SExpression
> > -- So EQ$Lisp returns () in both cases, even for -- EQ(c.1,c1.1)$Lisp
> >
> > -- (19)  ()
> >                                                            --Type:
> > SExpression
> >
> > (13) -> e:=(c.1=d)
> >
> >    (13)  false
> >                                                                Type:
> > Boolean
> >
> > (14) -> e:=(c1.1=d)
> >
> >    (14)  false
> >                                                               Type:
> > Boolean
> > -- same problem with = using SExpression.
> > 15) -> e:=(c1.1=c1.1)
> >
> >    (15)  true
> >                                                                Type:
> > Boolean
> > (16) -> d
> >
> >    (16)  Fraction
> >                                                            Type:
> > SExpression
> > (17) -> c1.1
> >
> >    (17)  Fraction
> >                                                            Type:
> > SExpression
> >
> > So it seems there is some distinction: d (defined explicitly as
> > Fraction::SExpression) is different from c1.1 defined using
> > devaluate/destruct from a domain. A user should not need to know the
> > various way "equal" is tested if the two arguments for "equal" come
> > from the same domain SExpression. So is this a bug?
> >
> > William
> >
> > On Tue, 10 Nov 2009 12:00:58 -0500
> >  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
> >> Tim:
> >>
> >> Sorry about the last message, please ignore.
> >> The problem is solved (I was simply not being careful) and made some
> >> false claims on the results.
> >>
> >> (16) -> )clear all
> >>    All user variables and function definitions have been cleared.
> >> (1) -> a:=FiniteField(5,2)
> >>
> >>    (1)  FiniteField(5,2)
> >>
> >>      Type: Domain
> >> (2) -> b:=devaluate(a)$Lisp
> >>
> >>    (2)  (FiniteField 5 2)
> >>
> >>  Type: SExpression
> >> (3) -> c:=destruct(b)
> >>
> >>    (3)  [FiniteField,5,2]
> >>                                                        Type: List
> >> SExpression
> >> (4) -> c.1
> >>
> >>    (4)  FiniteField
> >>
> >>  Type: SExpression
> >> (5) -> d:="Fraction"::SExpression
> >>
> >>    (5)  Fraction
> >>
> >>  Type: SExpression
> >> (6) -> e:Boolean
> >>
> >>        Type: Void
> >> (7) -> e:=EQ(c.1,d)$Lisp
> >>
> >>    (7) ()
> >>                                                     Type: SExpression
> >> (7) -> e:=(c.1=Fraction) -- message above
> >>
> >>    Although Fraction is the name of a constructor, a full type must be
> >>       specified in the context you have used it. Issue )show Fraction
> >>       for more information.
> >> (7) -> e:= (c.1=d$Lisp)
> >>
> >>    >> System error:
> >>    The variable |d| is unbound.
> >>
> >> protected-symbol-warn called with (NIL)
> >> (7) -> a1:=Fraction Integer
> >>
> >>    (7)  Fraction Integer
> >>
> >>      Type: Domain
> >> (8) -> b1:=devaluate(a1)$Lisp
> >>
> >>    (8)  (Fraction (Integer))
> >>
> >>  Type: SExpression
> >> (9) -> c1:=destruct(b1)
> >>
> >>    (9)  [Fraction,(Integer)]
> >>                                                        Type: List
> >> SExpression
> >> (10) -> e:=(c.1=c1.1)
> >>
> >>    (10)  false
> >>
> >>     Type: Boolean
> >>
> >> William
> >> ----
> >>
> >> On Tue, 10 Nov 2009 11:38:25 -0500
> >>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
> >>> Thanks, Tim. That is exactly what I am looking for. Now I would like
> >>> to compare c.1 with some known constructor, say Fraction. (In other
> >>> words, given a domain of category Field, I would like to know if it
> >>> comes from the constructor Fraction). I tried a few variations and
> >>> each time, Axiom says:
> >>>
> >>> Although Fraction is the name of a constructor, a full type must be
> >>> specified in the context you have used it. Issue )show Fraction for
> >>> more information.
> >>>
> >>> Things I tried:
> >>>
> >>> a:=FiniteField(5,2)
> >>> b:=devaluate(a)$Lisp
> >>> c:=destruct(b)
> >>> c.1
> >>> d:="Fraction"::SExpression
> >>> e:Boolean
> >>> e:=EQ(c.1,d)  -- message above
> >>> e:=(c.1=Fraction)  -- message above
> >>> e:= (c.1=d$Lisp) -- message above
> >>> a1:=Fraction Integer
> >>> b1:=devaluate(a1)$Lisp
> >>> c1:=destruct(b1)
> >>> e:=(c.1=c1.1) -- message above
> >>>
> >>> I confess that I'm still using a very old Window version (Version of
> >>> Tuesday November 30, 2004 at 21:11:14) but I don't think that makes
> >>> a difference in these examples.
> >>>
> >>> William
> >>>
> >>> On Mon, 09 Nov 2009 21:24:48 -0500
> >>> Tim Daly <daly@axiom-developer.org> wrote:
> >>>> I'm not sure what you want. Perhaps you'd like to say:
> >>>>
> >>>> a:=Fraction(Polynomial(Integer))
> >>>> b:=devaluate(a)$Lisp
> >>>>
> >>>> which returns the list (actually of type SExpression)
> >>>>
> >>>> (Fraction (Polynomial (Integer)))
> >>>>
> >>>> c:=destruct(b)
> >>>> c.2
> >>>>
> >>>> which returns (Polynomial (Integer))
> >>>>
> >>>> Does that help?
> >>>>
> >>>> Tim
> >>>>
> >>>>
> >>>> William Sit wrote:
> >>>>> Tim:
> >>>>>
> >>>>> Interesting. Is there a similar function that is more structural?
> >>>>> say, can I test whether some domain (which may be passed as a
> >>>>> parameter of type Field) is of the form Fraction(something) and if
> >>>>> so, extract "something" (that is, assign it to a variable and
> >>>>> further test it), sort of a deconstruction?
> >>>>>
> >>>>> William
> >>>>>
> >>>>> On Mon, 09 Nov 2009 19:51:45 -0500
> >>>>> Tim Daly <daly@axiom-developer.org> wrote:
> >>>>>> You can get a memory pointer to a lisp object.
> >>>>>>
> >>>>>> a:=Fraction(Integer)
> >>>>>>
> >>>>>> returns the "memory location of Fraction(Integer)"
> >>>>>> You can prove this with
> >>>>>>
> >>>>>> b:=Fraction(Integer)
> >>>>>> EQ(a,b)$Lisp
> >>>>>>
> >>>>>> The lisp function EQ compares memory pointers.
> >>>>>>
> >>>>>> There is a lisp function to get the hash value of any object
> >>>>>> call sxhash. You can call it.
> >>>>>>
> >>>>>> SXHASH(a)$Lisp
> >>>>>>
> >>>>>> Note that if
> >>>>>>
> >>>>>> c:=Integer
> >>>>>>
> >>>>>> then
> >>>>>> EQ(a,c)$Lisp is false
> >>>>>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
> >>>>>>
> >>>>>> Thus the hash function you seek already exists.
> >>>>>> You just have to accept the fact that Spad is only syntactic
> >>>>>> sugar for lisp code and lisp is not evil.
> >>>>>>
> >>>>>> Tim
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> 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/
> >>>>>
> >>>>
> >>>
> >>> 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/
> >>
> >> 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/
> >
> > 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/
> >

-- 
William Sit
Department of Mathematics..Email: wyscc@sci.ccny.cuny.edu
City College of New York................Tel: 212-650-5179
New York, NY 10031, USA.................Fax: 212-862-0004
Home page: .......http://scisun.sci.ccny.cuny.edu/~wyscc/



From MAILER-DAEMON Tue Nov 10 16:19:45 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7y7r-0006NT-UW
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 16:19:43 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7y7q-0006Lp-R2
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:19:42 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7y7m-0006Ev-HH
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:19:42 -0500
Received: from [199.232.76.173] (port=37188 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7y7m-0006EZ-9k
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:19:38 -0500
Received: from mail-vw0-f197.google.com ([209.85.212.197]:40122)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <dosreis@gmail.com>) id 1N7y7l-0001Ew-Ns
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:19:38 -0500
Received: by vws35 with SMTP id 35so128005vws.4
	for <axiom-developer@nongnu.org>; Tue, 10 Nov 2009 13:19:35 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.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=c330s45DdR3Eu3UeErxFpg1/fSWujDsGrmrJ59JUSaI=;
	b=m2U+xubxH1kEHvtaDX992Th0NEH0/q1BLSJpb/VNGFCw2umn1D6Iv4uN2R9/FEhbVj
	6R9iqsRwykEmxgVKjB5Zd5GLeRF4qtcFe0nWQj4e9GhVNt/byBckhdhqnLKbL8eQCfjj
	VnfYqPXqRPKrPpge7dkw1FWxXsJv334HnxPgs=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.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=kXQiGKWyBo0SchcH6qjuqniba9TrBX+Wk0IvvN+0gdziD3sxCOLPUHI3MTdKFzAQjg
	Q078DvGgGF3kT2hun39+++JiJjDv5yHUA3iNkW+VPndvaSmMCQVo/z8Ceb2vHLT7NmNE
	RsYap88kyEkI6C+BoqzWCYyqrP8f5dfR/6pGg=
MIME-Version: 1.0
Sender: dosreis@gmail.com
Received: by 10.220.126.214 with SMTP id d22mr802840vcs.54.1257887975037; Tue, 
	10 Nov 2009 13:19:35 -0800 (PST)
In-Reply-To: <web-18648574@cgate.sci.ccny.cuny.edu>
References: <206fcf960911091921x5d59dfd9hdb950bc5888b01cb@mail.gmail.com>
	<web-18648574@cgate.sci.ccny.cuny.edu>
Date: Tue, 10 Nov 2009 15:19:34 -0600
X-Google-Sender-Auth: 28a25dd18a0718dc
Message-ID: <206fcf960911101319nb356d02m336b125da343a994@mail.gmail.com>
Subject: Re: [Axiom-developer] pointers
From: Gabriel Dos Reis <gdr@integrable-solutions.net>
To: William Sit <wyscc@sci.ccny.cuny.edu>
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: open-axiom-help@lists.sf.net, Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 21:19:43 -0000

On Tue, Nov 10, 2009 at 10:45 AM, William Sit <wyscc@sci.ccny.cuny.edu> wrote:
> Gabriel:
>
> Thanks for the response. Your script shows how to get the parameters, not
> the constructor. I do not have OpenAxiom installed (sorry). The question is
> whether I can test that the constructor is Fraction, or otherwise (like
> FiniteField) when the domain belongs to the category Field.

You can get the constructors too

(1) -> constructor Fraction Integer

   (1)  Fraction
                                                      Type: DomainConstructor
(2) -> constructor Integer

   (2)  Integer
                                                      Type: DomainConstructor
(3) -> constructor Field

   (3)  Field
                                                    Type: CategoryConstructor


There is a prepackaged Windows binary for OpenAxiom from the download
area and it can co-exist with any other AXIOM flavour.

Category constructors and domain constructors satisfy SetCategory:

(4) -> DomainConstructor has SetCategory

   (4)  true
                                                                Type: Boolean
(5) -> CategoryConstructor has SetCategory

   (5)  true
                                                                Type: Boolean


so, you can use the equality comparator.


>
> I came across this requirement in algorithms that may take advantage of
> special knowledge of how the coefficient field is constructed.

Interesting.

-- Gaby



From MAILER-DAEMON Tue Nov 10 16:25:16 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7yDE-0004mG-3P
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 16:25:16 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7yDB-0004jA-UC
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:25:13 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7yD7-0004dG-6f
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:25:13 -0500
Received: from [199.232.76.173] (port=42618 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7yD7-0004d2-14
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:25:09 -0500
Received: from mail-vw0-f197.google.com ([209.85.212.197]:43372)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <dosreis@gmail.com>) id 1N7yD6-00020K-PA
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 16:25:08 -0500
Received: by vws35 with SMTP id 35so128997vws.4
	for <axiom-developer@nongnu.org>; Tue, 10 Nov 2009 13:25:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.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=TVZIrtCtbqOp4kg0J1C569+zgDY6aLlYhSgkH2xh80E=;
	b=YpIUPrigLP0lRTnUvqY8hTjn1bhakPlrCW0yYRG49/W18gqefiNYuRfRlX2+xynRsx
	woU2vTC3HnKS+ZVHwzVBiBPT0QjF4/6nqV2vKBaZzUwoVsID2VzLMi4Dr/Vv8RRfY3HP
	rHkfaTH0gpgqz7YxC6onCiEPFRygjFAXFLPm8=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.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=Uto104exnkcLTExH9eoiuy3OWLk9QmoanEn3u/mXQ6q2NQC79SRLyYuCvXxJRKoZNm
	dobWPpz6bE6VXQgbHKm6xYkjnQ6uoAju+QkIA7Or3nO+R4OZnv5iHy4bboSWsKgY36HU
	J5Lyh0cP9yjgXpF6rbw/u6V9H95EL2k94Plbc=
MIME-Version: 1.0
Sender: dosreis@gmail.com
Received: by 10.220.122.229 with SMTP id m37mr852859vcr.15.1257888308228; Tue, 
	10 Nov 2009 13:25:08 -0800 (PST)
In-Reply-To: <4AF9C0ED.406CDB93@sci.ccny.cuny.edu>
References: <E1N7vLB-0003xl-3H@hera.math.uni.wroc.pl>
	<4AF9C0ED.406CDB93@sci.ccny.cuny.edu>
Date: Tue, 10 Nov 2009 15:25:08 -0600
X-Google-Sender-Auth: bd16c3cf0fb8b14e
Message-ID: <206fcf960911101325h66abb3dkfcdee7cd161580b7@mail.gmail.com>
Subject: Re: [Axiom-developer] pointers
From: Gabriel Dos Reis <gdr@integrable-solutions.net>
To: wyscc@sci.ccny.cuny.edu
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: open-axiom-help@lists.sf.net, axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 21:25:14 -0000

On Tue, Nov 10, 2009 at 1:37 PM, William Sit <wyscc@sci.ccny.cuny.edu> wrote:
> Hi Waldek:
>
> Thanks. That is exactly what I want. Good solution. So the
> "trick" is to use ' instead of the string. So is the
> following a bug?

In OpenAxiom, you can get the name of a constructor as an Identifier:

(7) -> name constructor Fraction Integer

   (7)  Fraction
                                                             Type: Identifier

-- Gaby



From MAILER-DAEMON Tue Nov 10 17:56:05 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N7zd7-00045l-Oy
	for mharc-axiom-developer@gnu.org; Tue, 10 Nov 2009 17:56:05 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N7zd5-00045X-Lh
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 17:56:03 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N7zd0-00044n-6i
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 17:56:02 -0500
Received: from [199.232.76.173] (port=36978 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N7zcz-00044k-V4
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 17:55:57 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:53295
	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 <daly@axiom-developer.org>) id 1N7zcz-0006hL-Bm
	for axiom-developer@nongnu.org; Tue, 10 Nov 2009 17:55:57 -0500
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 nAAMtZ8a021782;
	Tue, 10 Nov 2009 16:55:36 -0600
Message-ID: <4AF9EE9A.6080104@axiom-developer.org>
Date: Tue, 10 Nov 2009 17:52:10 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: wyscc@sci.ccny.cuny.edu
Subject: Re: [Axiom-developer] pointers//Decontructing domains
References: <web-18649118@cgate.sci.ccny.cuny.edu>
	<4AF9A79D.1030803@axiom-developer.org>
	<4AF9C937.7C127764@sci.ccny.cuny.edu>
In-Reply-To: <4AF9C937.7C127764@sci.ccny.cuny.edu>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: Axiom-Developer <axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Nov 2009 22:56:03 -0000

Axiom now has an "API" (ApplicationProgramInterface) domain
(similar in spirit to Aldor's Builtin domain).
I will add devaluate to it.
I will also change the SExpression domain to export the symbol-*
functions from lisp with proper conversion functions.

Tim


William Sit wrote:
> Tim: 
>
> Thanks, your method works. For me at least, it is much
> easier to handle strings than SExpression.
>
> Waldek also provided a working method using opOf (but that
> involves SExpression, and the output in SExpression can be
> misleading), which is perhaps a bug (see my reply to
> Waldek).
>
> To summarize:
> It is possible to deconstruct a domain (that is, trace its
> constructor and the parameters to that constructor) using
> Lisp primitives. Given an identifier whose value at turn
> time is an Axiom domain, the function devaluate$Lisp returns
> its value as an SExpression, and the function deconstrut
> further turns the result into a list of SExpressions (which
> may be useful to extract the first level of parameters, but
> not necessary). The components can then be analyzed.
> However, testing for equality of SExpressions can be
> hazardous when the SExpressions are constructed in different
> ways but the outputForms look identical. There are (at
> least?) two ways to get around the problem. Assume we have
> a, b defined below (but the value of the identifier a is not
> really assumed known at compile time):
>
> a:=Fraction Integer
> b:=devaluate(a)$Lisp
>   (Fraction (Integer))   Type SExpression
>
> (1) (Waldek): use opOF to pick out the constructor of the
> domain and test against a candidate using a quote expression
> in Lisp coerced to an SExpression:
>
> testW:='Fraction::SEX
> c:=opOf(b)$Lisp
> (c=testW)@Boolean
>
> (2) (Tim): use a Lisp function SYMBOL_-NAME and then convert
> the result into a string before testing:
>
> testT:="Fraction"
> c:=string(SYMBOL_-NAME(b.1)$Lisp)
> (c=testT)@Boolean
>
> In either method, do not set testW or testT to
> "Fraction"::SEX, which would not test correctly.
>
>
> William
>
> Tim Daly wrote:
>   
>> I'm not sure what you are asking. Are you having trouble with working in
>> the SExpression domain?
>> You can move the SExpressions out to other domains. Sometimes it is
>> painful but it works. So:
>>
>> a:=FiniteField(5,2)
>> b:=devaluate(a)
>> string(SYMBOL_-NAME(b.1)$Lisp) ==> "FiniteField" (of type String)
>> integer(b.1) ==> 5  (of type PositiveInteger)
>>
>> Does this help?
>>
>> Tim
>>
>> William Sit wrote:
>>     
>>> It appears that to test the constructor, one must test a candidate
>>> against a known one via the constructor itself, and not be "fiat" by
>>> using a SExpression. Is this related to hashing of pointers?
>>> Continuing with script in the previous email (attached):
>>>
>>> (11) -> EQ(c.1,d)$Lisp
>>>
>>>    (11)  ()
>>>                                                            Type:
>>> SExpression
>>> (12) -> EQ(c1.1,d)$Lisp
>>>
>>>    (12)  ()
>>>
>>> Type: SExpression
>>> -- So EQ$Lisp returns () in both cases, even for -- EQ(c.1,c1.1)$Lisp
>>>
>>> -- (19)  ()
>>>                                                            --Type:
>>> SExpression
>>>
>>> (13) -> e:=(c.1=d)
>>>
>>>    (13)  false
>>>                                                                Type:
>>> Boolean
>>>
>>> (14) -> e:=(c1.1=d)
>>>
>>>    (14)  false
>>>                                                               Type:
>>> Boolean
>>> -- same problem with = using SExpression.
>>> 15) -> e:=(c1.1=c1.1)
>>>
>>>    (15)  true
>>>                                                                Type:
>>> Boolean
>>> (16) -> d
>>>
>>>    (16)  Fraction
>>>                                                            Type:
>>> SExpression
>>> (17) -> c1.1
>>>
>>>    (17)  Fraction
>>>                                                            Type:
>>> SExpression
>>>
>>> So it seems there is some distinction: d (defined explicitly as
>>> Fraction::SExpression) is different from c1.1 defined using
>>> devaluate/destruct from a domain. A user should not need to know the
>>> various way "equal" is tested if the two arguments for "equal" come
>>> from the same domain SExpression. So is this a bug?
>>>
>>> William
>>>
>>> On Tue, 10 Nov 2009 12:00:58 -0500
>>>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>>>       
>>>> Tim:
>>>>
>>>> Sorry about the last message, please ignore.
>>>> The problem is solved (I was simply not being careful) and made some
>>>> false claims on the results.
>>>>
>>>> (16) -> )clear all
>>>>    All user variables and function definitions have been cleared.
>>>> (1) -> a:=FiniteField(5,2)
>>>>
>>>>    (1)  FiniteField(5,2)
>>>>
>>>>      Type: Domain
>>>> (2) -> b:=devaluate(a)$Lisp
>>>>
>>>>    (2)  (FiniteField 5 2)
>>>>
>>>>  Type: SExpression
>>>> (3) -> c:=destruct(b)
>>>>
>>>>    (3)  [FiniteField,5,2]
>>>>                                                        Type: List
>>>> SExpression
>>>> (4) -> c.1
>>>>
>>>>    (4)  FiniteField
>>>>
>>>>  Type: SExpression
>>>> (5) -> d:="Fraction"::SExpression
>>>>
>>>>    (5)  Fraction
>>>>
>>>>  Type: SExpression
>>>> (6) -> e:Boolean
>>>>
>>>>        Type: Void
>>>> (7) -> e:=EQ(c.1,d)$Lisp
>>>>
>>>>    (7) ()
>>>>                                                     Type: SExpression
>>>> (7) -> e:=(c.1=Fraction) -- message above
>>>>
>>>>    Although Fraction is the name of a constructor, a full type must be
>>>>       specified in the context you have used it. Issue )show Fraction
>>>>       for more information.
>>>> (7) -> e:= (c.1=d$Lisp)
>>>>
>>>>    >> System error:
>>>>    The variable |d| is unbound.
>>>>
>>>> protected-symbol-warn called with (NIL)
>>>> (7) -> a1:=Fraction Integer
>>>>
>>>>    (7)  Fraction Integer
>>>>
>>>>      Type: Domain
>>>> (8) -> b1:=devaluate(a1)$Lisp
>>>>
>>>>    (8)  (Fraction (Integer))
>>>>
>>>>  Type: SExpression
>>>> (9) -> c1:=destruct(b1)
>>>>
>>>>    (9)  [Fraction,(Integer)]
>>>>                                                        Type: List
>>>> SExpression
>>>> (10) -> e:=(c.1=c1.1)
>>>>
>>>>    (10)  false
>>>>
>>>>     Type: Boolean
>>>>
>>>> William
>>>> ----
>>>>
>>>> On Tue, 10 Nov 2009 11:38:25 -0500
>>>>  "William Sit" <wyscc@sci.ccny.cuny.edu> wrote:
>>>>         
>>>>> Thanks, Tim. That is exactly what I am looking for. Now I would like
>>>>> to compare c.1 with some known constructor, say Fraction. (In other
>>>>> words, given a domain of category Field, I would like to know if it
>>>>> comes from the constructor Fraction). I tried a few variations and
>>>>> each time, Axiom says:
>>>>>
>>>>> Although Fraction is the name of a constructor, a full type must be
>>>>> specified in the context you have used it. Issue )show Fraction for
>>>>> more information.
>>>>>
>>>>> Things I tried:
>>>>>
>>>>> a:=FiniteField(5,2)
>>>>> b:=devaluate(a)$Lisp
>>>>> c:=destruct(b)
>>>>> c.1
>>>>> d:="Fraction"::SExpression
>>>>> e:Boolean
>>>>> e:=EQ(c.1,d)  -- message above
>>>>> e:=(c.1=Fraction)  -- message above
>>>>> e:= (c.1=d$Lisp) -- message above
>>>>> a1:=Fraction Integer
>>>>> b1:=devaluate(a1)$Lisp
>>>>> c1:=destruct(b1)
>>>>> e:=(c.1=c1.1) -- message above
>>>>>
>>>>> I confess that I'm still using a very old Window version (Version of
>>>>> Tuesday November 30, 2004 at 21:11:14) but I don't think that makes
>>>>> a difference in these examples.
>>>>>
>>>>> William
>>>>>
>>>>> On Mon, 09 Nov 2009 21:24:48 -0500
>>>>> Tim Daly <daly@axiom-developer.org> wrote:
>>>>>           
>>>>>> I'm not sure what you want. Perhaps you'd like to say:
>>>>>>
>>>>>> a:=Fraction(Polynomial(Integer))
>>>>>> b:=devaluate(a)$Lisp
>>>>>>
>>>>>> which returns the list (actually of type SExpression)
>>>>>>
>>>>>> (Fraction (Polynomial (Integer)))
>>>>>>
>>>>>> c:=destruct(b)
>>>>>> c.2
>>>>>>
>>>>>> which returns (Polynomial (Integer))
>>>>>>
>>>>>> Does that help?
>>>>>>
>>>>>> Tim
>>>>>>
>>>>>>
>>>>>> William Sit wrote:
>>>>>>             
>>>>>>> Tim:
>>>>>>>
>>>>>>> Interesting. Is there a similar function that is more structural?
>>>>>>> say, can I test whether some domain (which may be passed as a
>>>>>>> parameter of type Field) is of the form Fraction(something) and if
>>>>>>> so, extract "something" (that is, assign it to a variable and
>>>>>>> further test it), sort of a deconstruction?
>>>>>>>
>>>>>>> William
>>>>>>>
>>>>>>> On Mon, 09 Nov 2009 19:51:45 -0500
>>>>>>> Tim Daly <daly@axiom-developer.org> wrote:
>>>>>>>               
>>>>>>>> You can get a memory pointer to a lisp object.
>>>>>>>>
>>>>>>>> a:=Fraction(Integer)
>>>>>>>>
>>>>>>>> returns the "memory location of Fraction(Integer)"
>>>>>>>> You can prove this with
>>>>>>>>
>>>>>>>> b:=Fraction(Integer)
>>>>>>>> EQ(a,b)$Lisp
>>>>>>>>
>>>>>>>> The lisp function EQ compares memory pointers.
>>>>>>>>
>>>>>>>> There is a lisp function to get the hash value of any object
>>>>>>>> call sxhash. You can call it.
>>>>>>>>
>>>>>>>> SXHASH(a)$Lisp
>>>>>>>>
>>>>>>>> Note that if
>>>>>>>>
>>>>>>>> c:=Integer
>>>>>>>>
>>>>>>>> then
>>>>>>>> EQ(a,c)$Lisp is false
>>>>>>>> SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp
>>>>>>>>
>>>>>>>> Thus the hash function you seek already exists.
>>>>>>>> You just have to accept the fact that Spad is only syntactic
>>>>>>>> sugar for lisp code and lisp is not evil.
>>>>>>>>
>>>>>>>> Tim
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> 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/
>>>>>>>
>>>>>>>               
>>>>> 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/
>>>>>           
>>>> 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/
>>>>         
>>> 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 Wed Nov 11 02:10:11 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N87LG-0002XD-Jv
	for mharc-axiom-developer@gnu.org; Wed, 11 Nov 2009 02:10:10 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N87LD-0002Uo-8o
	for axiom-developer@nongnu.org; Wed, 11 Nov 2009 02:10:07 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N87L8-0002NQ-5z
	for axiom-developer@nongnu.org; Wed, 11 Nov 2009 02:10:06 -0500
Received: from [199.232.76.173] (port=33112 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N87L7-0002MO-G5
	for axiom-developer@nongnu.org; Wed, 11 Nov 2009 02:10:01 -0500
Received: from mail.sci.ccny.cuny.edu ([134.74.38.100]:52153
	helo=cgate.sci.ccny.cuny.edu)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1N87L7-0007C8-1l
	for axiom-developer@nongnu.org; Wed, 11 Nov 2009 02:10:01 -0500
Received: from [96.232.55.183] (account <wyscc@sci.ccny.cuny.edu>)
	by cgate.sci.ccny.cuny.edu (CommuniGate Pro WebUser 4.0.5)
	with HTTP id 18654883; Wed, 11 Nov 2009 02:09:38 -0500
From: "William Sit" <wyscc@sci.ccny.cuny.edu>
Subject: Re: [Axiom-developer] pointers
To: Gabriel Dos Reis <gdr@integrable-solutions.net>,
 wyscc@sci.ccny.cuny.edu
X-Mailer: CommuniGate Pro Web Mailer v.4.0.5
Date: Wed, 11 Nov 2009 02:09:38 -0500
Message-ID: <web-18654883@cgate.sci.ccny.cuny.edu>
In-Reply-To: <206fcf960911101325h66abb3dkfcdee7cd161580b7@mail.gmail.com>
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: axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Nov 2009 07:10:08 -0000

Gabriel:

Thanks again for all the help. I'll download the OpenAxiom 
version and try it.

William

On Tue, 10 Nov 2009 15:25:08 -0600
  Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
>On Tue, Nov 10, 2009 at 1:37 PM, William Sit 
><wyscc@sci.ccny.cuny.edu> wrote:
>> Hi Waldek:
>>
>> Thanks. That is exactly what I want. Good solution. So 
>>the
>> "trick" is to use ' instead of the string. So is the
>> following a bug?
>
>In OpenAxiom, you can get the name of a constructor as an 
>Identifier:
>
>(7) -> name constructor Fraction Integer
>
>    (7)  Fraction
>                                                           
>   Type: Identifier
>
>-- Gaby

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 Sun Nov 15 13:56:55 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N9kHP-0001bR-DC
	for mharc-axiom-developer@gnu.org; Sun, 15 Nov 2009 13:56:55 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N9kHN-0001au-Cg
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 13:56:53 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N9kHJ-0001a8-0Q
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 13:56:52 -0500
Received: from [199.232.76.173] (port=53848 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N9kHI-0001a5-Pi
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 13:56:48 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:41435
	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 <daly@axiom-developer.org>) id 1N9kHI-0001Dv-Eo
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 13:56:48 -0500
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 nAFIui8a011876;
	Sun, 15 Nov 2009 12:56:45 -0600
Message-ID: <4B004EED.5000807@axiom-developer.org>
Date: Sun, 15 Nov 2009 13:56:45 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
In-Reply-To: <275293a60911020911s1d805c91vd254e436b38c4916@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-devel <Axiom-developer@nongnu.org>
Subject: [Axiom-developer] Function cache in Axiom
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Nov 2009 18:56:53 -0000

Bertfried,

As I recall you were interested in creating a cache of values in Axiom.
I just remembered that you can do this dynamically with:

   )set functions cache

Sorry for the lag in remembering but my memory is still using
mercury delay lines and has long access times.

Tim




From MAILER-DAEMON Sun Nov 15 16:52:56 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N9n1k-00071E-7c
	for mharc-axiom-developer@gnu.org; Sun, 15 Nov 2009 16:52:56 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N9n1i-00070O-I5
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 16:52:54 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N9n1d-0006ze-HK
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 16:52:54 -0500
Received: from [199.232.76.173] (port=57796 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N9n1d-0006zb-EX
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 16:52:49 -0500
Received: from mailrelay.tu-graz.ac.at ([129.27.2.202]:50337
	helo=mailrelay.tugraz.at) by monty-python.gnu.org with esmtps
	(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
	(envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N9n1c-00027j-TB
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 16:52:49 -0500
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 nAFLqR9T000673
	(version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO);
	Sun, 15 Nov 2009 22:52:27 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.3 mailrelay1.tugraz.at nAFLqR9T000673
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tu-graz.ac.at;
	s=mailrelay; t=1258321948; i=@finanz.math.tu-graz.ac.at;
	bh=szP8WprHBl7Qh9mD3GrOYnERKloMSYwGwL+qFw8rQKM=;
	h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:
	MIME-Version:Content-Type;
	b=d7vshR6Va/rNGTUfQwbRdFcnj/T6KIzKh3/iqlyd46rbVAcTV9lrA0IKWYt1i6zM+
	1Ai26DzU7JXOO8aXuiuvqgKnz56Ldp8aRddEnMyXZAUdK/IjaS9yGGUnHXOiGzjWVT
	oreQnw32sosMP4oI3b8IQ3zVBka3zc5V7zSxA4hI=
Received: from schlumpf.math.tu-graz.ac.at ([129.27.150.29]:39766)
	by mail.math.tu-graz.ac.at with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.69) (envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N9n1I-0004vm-1O; Sun, 15 Nov 2009 22:52:28 +0100
Received: from lehner (helo=localhost)
	by schlumpf.math.tu-graz.ac.at with local-esmtp (Exim 4.69)
	(envelope-from <lehner@finanz.math.tu-graz.ac.at>)
	id 1N9n1I-0001b9-0O; Sun, 15 Nov 2009 22:52:28 +0100
Date: Sun, 15 Nov 2009 22:52:27 +0100 (CET)
From: Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
To: Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] Function cache in Axiom
In-Reply-To: <4B004EED.5000807@axiom-developer.org>
Message-ID: <alpine.DEB.1.10.0911152251470.6108@schlumpf.math.tu-graz.ac.at>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
	<4B004EED.5000807@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 monty-python.gnu.org: Solaris 10 (beta)
Cc: axiom-devel <Axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Nov 2009 21:52:54 -0000

On Sun, 15 Nov 2009, Tim Daly wrote:
> As I recall you were interested in creating a cache of values in Axiom.
> I just remembered that you can do this dynamically with:
>
>  )set functions cache
but that's only for interpreter functions if I understand correctly?

Franz



From MAILER-DAEMON Sun Nov 15 17:14:45 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N9nMr-0005Zq-Gq
	for mharc-axiom-developer@gnu.org; Sun, 15 Nov 2009 17:14:45 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N9nMq-0005Yx-8v
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 17:14:44 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N9nMl-0005VJ-45
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 17:14:43 -0500
Received: from [199.232.76.173] (port=44249 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N9nMk-0005V3-SZ
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 17:14:38 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:46234
	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 <daly@axiom-developer.org>) id 1N9nMk-0004uv-D1
	for Axiom-developer@nongnu.org; Sun, 15 Nov 2009 17:14:38 -0500
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 nAFMEM8a019509;
	Sun, 15 Nov 2009 16:14:25 -0600
Message-ID: <4B007D3F.7050401@axiom-developer.org>
Date: Sun, 15 Nov 2009 17:14:23 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
Subject: Re: [Axiom-developer] Function cache in Axiom
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
	<4B004EED.5000807@axiom-developer.org>
	<alpine.DEB.1.10.0911152251470.6108@schlumpf.math.tu-graz.ac.at>
In-Reply-To: <alpine.DEB.1.10.0911152251470.6108@schlumpf.math.tu-graz.ac.at>
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 <Axiom-developer@nongnu.org>,
	Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Nov 2009 22:14:44 -0000

Franz Lehner wrote:
> On Sun, 15 Nov 2009, Tim Daly wrote:
>> As I recall you were interested in creating a cache of values in Axiom.
>> I just remembered that you can do this dynamically with:
>>
>>  )set functions cache
> but that's only for interpreter functions if I understand correctly?
>
> Franz
>
I don't see why it needs to be.
I'll read the code and see if it can be applied to algebra.

Tim




From MAILER-DAEMON Sun Nov 15 23:35:18 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N9tJ8-0005d5-1G
	for mharc-axiom-developer@gnu.org; Sun, 15 Nov 2009 23:35:18 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N9tJ6-0005ci-7e
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 23:35:16 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N9tJ0-0005YX-Po
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 23:35:14 -0500
Received: from [199.232.76.173] (port=37001 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N9tJ0-0005YU-I4
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 23:35:10 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:57419
	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 <daly@axiom-developer.org>) id 1N9tJ0-0007Zg-7r
	for axiom-developer@nongnu.org; Sun, 15 Nov 2009 23:35:10 -0500
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 nAG4Yx8a016496;
	Sun, 15 Nov 2009 22:34:59 -0600
Message-ID: <4B00D674.5090609@axiom-developer.org>
Date: Sun, 15 Nov 2009 23:35:00 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org, daly <daly@axiom-developer.org>
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] Embedding Axiom
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 04:35:16 -0000

This is a request for design discussion for those who are interested.

I am rewriting Axiom into literate form. This involves understanding
Axiom in a very deep way. One of the insights of my current understanding
is that Axiom needs to be restructured internally.

I have to say that if you are not a lisp programmer most of this will
not make sense. If you are a lisp programmer it should be obvious.

For the non-lispers, a few comments are in order. As pointed out in
Structure and Interpretation of Computer Programs, a properly formed
lisp program "embeds" in lisp. When carefully designed, a lisp
program is not "on top of lisp", but the result is "just lisp".
That is, the new code is layered so that Spad becomes something like
a domain-specific language. If this does not seem like a deep
philosophical design issue then I highly recommend "On Lisp" by
Paul Graham.

The current state of Axiom internals is more like a history museum
than a robust layered design. There are code fragments dating back
to the late 60s along with clever research algorithms (for the time)
about zipper-parsing and CLU-capsules. There are maxima and vmlisp
concepts left over from prior ports. There are non-standard interfaces
to networks, C, and Fortran. There is a broken attempt at a python-like
syntax. Axiom was a research project of many interests and it shows.

Those who have been following Axiom releases know that I've been rewriting
the lisp code and so I've been spending some time rethinking the whole
of the internals.

I believe that there needs to be clearly defined layers of abstraction
that build up to full support of the algebra library. I have several
motives for this, including native support for literate documents and
a more robust platform for my proviso research.

Some primary design goals are:
  * the algebra and interpreter semantics should be identical, as far as 
possible.
   
  * the embedded design should target the lisp compiler as "the compiler",
    that is, the existing algebra code should just be a layered-syntax 
on the
    embedded lisp implementation. This would allow further layering of the
    system since a Spad "integrate(sin(x),x)" is really just a lisp-form
    "(integrate (sin x) x)". Note, however, that this is NOT the boot-code
    cheeseball idea of "pretty piles". Rather this would be isomorphic
    mappings between Spad and Lisp so all of the concepts of one are in
    the other.

  * the system structure should be designed to allow a "different direction"
    for the algebra since another research goal is to provide a way to
    "prove" (philosophical caveats here) that the algorithms are correct.
    Ideally this would just amount to more surface syntax layered on the
    underlying structures that a reasoning engine like COQ or ACL2 could 
use.

  * the layering should be "natural enough" so that it can be explained in
    literate text. A long term goal of the Axiom project is to make the 
whole
    system into a literate document that can be taught to the next 
generation.


All of the computer algebra systems I've seen are really just "stuck onto"
their underlying systems. You can see the struggle to marry the algebra to
the platform aka "algebra by accretion".

Instead I want to see the Axiom category/domain/package hierarchy be a 
natural
embedding on a prior layer that is prepared to "express the concepts" in the
hierarchy in natural ways. That layer embeds on a prior layer, which 
embeds on
a prior layer.... it is turtles all the way down. (Since it is an embedding,
"down" is the wrong concept but...)

I have some plans on how to get "from here to there" in a slow, incremental
fashion. These plans involve things like finding the basis-set of the 
algebra
in terms of lisp functions and then trying to find a closure of this 
basis set
so that the algebra embeds cleanly in this set. The compiler should compile
that basis set into an embedding in the prior layer. Lisp can support this
by defining domain-specific languages for each layer and macros from one 
layer
to another.

I have no idea what the final form will be. I do know that you should be 
able to
look at any layer of code and know immediately what it means in terms of the
next layer down. The compiler and interpreter should be able to walk the 
same
layers and generate the code that supports the understanding.

When it is done in this properly embedded fashion you should be able to
(mapcar #'(lambda (f) (integrate f x)) '((sin x) (cos x) ...
or use the Spad surface syntax to generate the same results.

At which point we can climb upward to a category-theoretic form...

And perform computational-mathematical proofs of algorithms...

And re-express the whole of the algebra in program transformations,
like transforming generalized grassmann expressions into efficient
linear algebra forms when the compiler knows the provisos...

And computational mathematics that involve simple classroom exercises
using the intermediate languages from their literate textbooks...

And have the open-source research supported by NSF funding...

oops...that last one is pure fantasy :-)

Tim




From MAILER-DAEMON Mon Nov 16 04:36:10 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1N9y0I-0003ea-JS
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 04:36:10 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1N9y0F-0003bR-Bc
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 04:36:07 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1N9y0A-0003Ze-ID
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 04:36:06 -0500
Received: from [199.232.76.173] (port=39852 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1N9y0A-0003Zb-9w
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 04:36:02 -0500
Received: from moutng.kundenserver.de ([212.227.126.186]:52145)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1N9y09-0003QD-Os
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 04:36:02 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis)
	id 0M7Wjr-1O6j173rPD-00xEf8; Mon, 16 Nov 2009 10:35:59 +0100
From: Martin Baker <ax87438@martinb.com>
To: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] Embedding Axiom
Date: Mon, 16 Nov 2009 09:35:55 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <4B00D674.5090609@axiom-developer.org>
In-Reply-To: <4B00D674.5090609@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911160935.56031.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+peyUILDv8zpyiyUFA2ehB7e0srRVlbPzD2Qs
	UT7DoGZAqgo8t/6h8fh9TR2nresS2x6Wg/+GcxDgE2DxqYsBHB
	TSm14ihwD3EcoUCAy5tyw==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 09:36:07 -0000

On Monday 16 November 2009 04:35:00 Tim Daly wrote:
> This is a request for design discussion for those who are interested.

Tim,

Can I ask a nieve question? If you were starting from scratch would you write 
Axiom in lisp? I've no special axe to grind and no special technical 
knowledge, I'm just asking out of curiosity.

It just seems to me that for Axiom to hit the bigtime:

* potential programmers and advanced users would want a modern graphical IDE 
and useful error messages.
* non-advanced users would want a html-like interface that changes with the 
fashion of the time (the look seems to be important these days).

I just wondered how practical it is to do all these things on top of lisp? As 
opposed to say another functional language supported by something like the 
Eclipse framework? When I first came across the spad language, a few weeks ago 
now! I was really surprised how similar it is to the language Scala, without 
knowing what the technical issues might be it would be interesting to know if 
spad could be built on top of Scala?

Martin



From MAILER-DAEMON Mon Nov 16 12:00:05 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NA4vt-0002tE-D3
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 12:00:05 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NA4vq-0002qy-VU
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:00:03 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NA4vm-0002kq-1P
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:00:02 -0500
Received: from [199.232.76.173] (port=35251 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NA4vl-0002kQ-SB
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 11:59:57 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:49203
	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 <daly@axiom-developer.org>) id 1NA4vl-00040j-Bs
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 11:59:57 -0500
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 nAGGxp8a011938;
	Mon, 16 Nov 2009 10:59:52 -0600
Message-ID: <4B018507.2080703@axiom-developer.org>
Date: Mon, 16 Nov 2009 11:59:51 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
Subject: Re: [Axiom-developer] Embedding Axiom
References: <4B00D674.5090609@axiom-developer.org>
	<200911160935.56031.ax87438@martinb.com>
In-Reply-To: <200911160935.56031.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
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 17:00:03 -0000



Martin Baker wrote:
> On Monday 16 November 2009 04:35:00 Tim Daly wrote:
>   
>> This is a request for design discussion for those who are interested.
>>     
>
> Tim,
>
> Can I ask a nieve question? If you were starting from scratch would you write 
> Axiom in lisp? I've no special axe to grind and no special technical 
> knowledge, I'm just asking out of curiosity.
>   
Axiom depends heavily on lisp's ability to write programs which write 
programs. No other language
seems to have this ability. The macro facility in lisp gives Axiom the 
ability to "get inside the compiler"
at compile time to perform needed optimizations. It can do this because 
lisp macros are source-to-source
transformations on the syntax tree that occur at compile time. Axiom 
uses closures and passes them
around as first-class objects so you can create stateful objects 
in-context on the fly, pass them around
and call them in other contexts. Unlike other languages, lisp programs 
are data which are programs.

If I were starting from scratch I don't know what other language could 
be used.
Python/Java/Scala cannot dynamically create program text and use it 
immediately.
They do not have a macro facility that is source-to-source.
They cannot create useful runtime closures.

I qualify my "cannot" remarks with Greenspun's Law which states that
"Any sufficiently complicated C or Fortran (Python/Java/Scala) program 
contains an ad-hoc,
informally-specified bug-ridden slow implementation of half of common lisp."

> It just seems to me that for Axiom to hit the bigtime:
>
> * potential programmers and advanced users would want a modern graphical IDE 
> and useful error messages.
> * non-advanced users would want a html-like interface that changes with the 
> fashion of the time (the look seems to be important these days).
>   
Axiom is re-targetting the user interface to use the browser (nod to 
Bill Page).
The browser only recently supports needed elements like the <canvas> 
object but Axiom
can already create dynamic browser pages that allow inline computations 
(supported by Ajax calls).
The hyperdoc help system is already partially rewritten to be 
browser-based.
The graphics subsystem is being redesigned to work on html canvas 
objects in browsers.
All of this works from lisp.

As for "hitting the bigtime".... Axiom is not trying to achieve success 
in the way you are thinking.
Your definition of success has an element of "lots of people use it".

Axiom's definition of success involves being the basis for computational 
mathematics, which is a
small intersection between mathematicians and programmers. The total 
number of people in this
set would likely fill a small parking lot, assuming you could get them 
out of doors.

Success means that computational mathematicians are able to build upward 
from the existing
system in a mathematically correct way. Success involves making the 
system into something that
can be taught to the next generation so they can move further with 
confidence. So what does it
take to provide reasonable guarantees that Axiom is mathematically 
correct (insert philosophical
debate here)? What does it take to teach the next generation to think 
like computational
mathematicians (insert literate programming debate here)?

> I just wondered how practical it is to do all these things on top of lisp? As 
> opposed to say another functional language supported by something like the 
> Eclipse framework? When I first came across the spad language, a few weeks ago 
> now! I was really surprised how similar it is to the language Scala, without 
> knowing what the technical issues might be it would be interesting to know if 
> spad could be built on top of Scala?
>   

Unfortunately nothing I can possibly say will be meaningful if you 
aren't a lisper.
Lisp is an "epiphany experience"

Epiphany languages change the way you think. Other examples worth 
learning are APL,
Forth, Snobol, Prolog, OPS5, etc.Python/Ruby/Scala/Java are weak 
implementations of Algol 68.

Ultimately, there is a gap between the problem you are trying to solve 
and the machine that
will execute the solution. I call this the "impedance gap" (impedance is 
resistance because
of a mismatch... think of a soda straw connected to a fire hydrant). 
This gap is very wide
if you are trying to solve a complex problem on a microprocessor. A 
computer language
that is close to the machine (e.g. assembler) means you have to move 
your concepts from
your head to the machine. A computer language that is close to the 
problem (e.g. AutoCAD
for solid models) means you need only small programs to express your 
problem but you
need a lot of special-purpose machinery to "cross the gap" to the 
microprocessor.

Lisp is the only language I know that operates at all levels across the 
impedance gap.
(e.g (integrate (car x) .... uses a heavy algorithm on a machine pointer)

You could build spad on top of Scala but it would be painful. You would 
end up using
"factory objects" to create "eq pointers" to unique instances which is 
dirt trivial in lisp.
You would have to build a Scala parser to a special internal data 
representation, a
Scala macro language that could manipulate the internal data 
representation, a Scala
interpreter so you could call Scala functions on the internal data 
representation, a Scala
compiler so you could compile the internal data representation, and an 
internal-to-Scala
printer program. In short, you would have to build "an ad-hoc, 
informally-specified
bug-ridden slow implementation of half of common lisp." And when you are 
done you
still have a language that sits on top of a virtual machine that does 
not support tail-recursion.

The REAL question is why we don't all rewrite everything in Go :-)

Methinks I'm becoming something of a curmudgeon.

Tim
Elder of the Internet




From MAILER-DAEMON Mon Nov 16 12:29:31 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NA5ON-0000SK-5Y
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 12:29:31 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NA5OI-0000Qo-A9
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:29:26 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NA5OD-0000OL-7e
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:29:25 -0500
Received: from [199.232.76.173] (port=42900 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NA5OC-0000OA-UE
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:29:21 -0500
Received: from mail-gx0-f199.google.com ([209.85.217.199]:56207)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1NA5OC-0007sj-JI
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 12:29:20 -0500
Received: by gxk23 with SMTP id 23so7075882gxk.2
	for <axiom-developer@nongnu.org>; Mon, 16 Nov 2009 09:29:20 -0800 (PST)
MIME-Version: 1.0
Path: j19g2000yqk.googlegroups.com!not-for-mail
Newsgroups: sci.math,sci.math.symbolic,comp.soft-sys.math.maple
Date: Mon, 16 Nov 2009 09:29:20 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: j19g2000yqk.googlegroups.com; posting-host=72.23.235.203; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
References: <4ADB98EB.357C0188@freenet.de> <hbgabd$33o$1@aioe.org> 
	<4ADCE548.F1ED21D6@freenet.de>
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 k2mt4788774ybb.6.1258392560099; Mon, 16 
	Nov 2009 09:29:20 -0800 (PST)
Message-ID: <3679cd20-5678-41ac-bda3-4dde5840f7ef@j19g2000yqk.googlegroups.com>
From: TimDaly <daly@axiom-developer.org>
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: Is your CAS no a weakling anymore?
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 17:29:26 -0000

On Oct 19, 5:16=A0pm, cliclic...@freenet.de wrote:
> Richard Fateman schrieb:
>
>
>
> > cliclic...@freenet.de wrote:
> > >...
> > > they claim to deliver the antiderivative of any elementary function i=
f
> > > it can also be written in terms of elementary functions...
>
> > At least Maxima / Macsyma makes no such claims, and in particular
> > neither implements completely the algebraic case of the Risch algorithm=
.
> > Undoubtedly simpler examples will stump these programs.
>
> Errh. Ok. Alright. Maxima users are excused for the time being - they
> may hand in their answers after the next integrator overhaul. On the
> other hand, Derive also makes do with less than 1000 general
> integration rules like
> =A0 INT(F((a+b*x)^(1/n),x),x) ->
> =A0 n/b*SUBST(INT(x^(n-1)*F(x,(x^n-a)/b),x),x,(a+b*x)^(1/n)),
> or
> =A0 INT(x^m*LN((a*x^n)^q),x) ->
> =A0 x^(m+1)*LN((a*x^n)^q)/(m+1)-n*q*x^(m+1)/(m+1)^2.
> What counts in the end is the ability to handle real-life integrals like
> the problem posed. Maybe Risch's is not the best way?
>
> And now pssss. They are all crouched over their screens. No sound but
> the occasional keyboard click and slurp of coffee. Papa Wolfram looks
> particularly grave. Will he and his crew flunk again?
>
> Martin ;)

Interesting. Where do you find such patterns?
Do you have a catalog of them I can try?

Tim Daly
Axiom Lead Developer
Elder of the Internet



From MAILER-DAEMON Mon Nov 16 13:38:23 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NA6T1-0000Md-FT
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 13:38:23 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NA6Sz-0000Kx-JA
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 13:38:21 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NA6Su-0000GD-4a
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 13:38:20 -0500
Received: from [199.232.76.173] (port=32999 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NA6St-0000Fq-Se
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 13:38:16 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:46560
	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 <daly@axiom-developer.org>) id 1NA6St-0001N9-D2
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 13:38:15 -0500
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 nAGIcB8a013575;
	Mon, 16 Nov 2009 12:38:11 -0600
Message-ID: <4B019C14.8080103@axiom-developer.org>
Date: Mon, 16 Nov 2009 13:38:12 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
Subject: Re: [Axiom-developer] Embedding Axiom
References: <4B00D674.5090609@axiom-developer.org>
	<200911160935.56031.ax87438@martinb.com>
In-Reply-To: <200911160935.56031.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
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 18:38:21 -0000

Martin,

I re-read what I wrote and it is likely to not be very meaningful to you.
Let me try to demonstrate the point.

Suppose you wanted to implement an "if-only" statement in Scala.
Is this possible? I don't know Scala so I can't say but I would guess not.

In Python (which I do know) a statement like

   if-only x > 0:
      pass

would require a change to the compiler. A similar statement in Java
would also require a compiler change. An if-only statement in lisp is 
trivial
to implement and would work with every other part of the language, as in:

(if-only (> x 0) (pass))

This would be a trivial in-class quiz for a lisp course.

When designing and developing lisp code it is common to create the
language you would like to implement by creating the language you
would like to implement but doing it in such a way that the language
is embedded in lisp in a "first-class operations" way. Macros allow you
to dynamically extend the compiler so "if-only" is new, first-class syntax.

The Axiom redesign question amounts to understanding the language
we would like to have to implement the support for Spad.... and then
understanding the language we would like to have to implement the
language that supports Spad... and then recursively repeating the process.

Tim

Martin Baker wrote:
> On Monday 16 November 2009 04:35:00 Tim Daly wrote:
>   
>> This is a request for design discussion for those who are interested.
>>     
>
> Tim,
>
> Can I ask a nieve question? If you were starting from scratch would you write 
> Axiom in lisp? I've no special axe to grind and no special technical 
> knowledge, I'm just asking out of curiosity.
>
> It just seems to me that for Axiom to hit the bigtime:
>
> * potential programmers and advanced users would want a modern graphical IDE 
> and useful error messages.
> * non-advanced users would want a html-like interface that changes with the 
> fashion of the time (the look seems to be important these days).
>
> I just wondered how practical it is to do all these things on top of lisp? As 
> opposed to say another functional language supported by something like the 
> Eclipse framework? When I first came across the spad language, a few weeks ago 
> now! I was really surprised how similar it is to the language Scala, without 
> knowing what the technical issues might be it would be interesting to know if 
> spad could be built on top of Scala?
>
> Martin
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
>   




From MAILER-DAEMON Mon Nov 16 18:04:35 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAAcd-000708-Cf
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 18:04:35 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAAcb-0006zr-4w
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:04:33 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAAcW-0006z4-Ie
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:04:32 -0500
Received: from [199.232.76.173] (port=44762 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAAcW-0006yy-Ei
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:04:28 -0500
Received: from web56708.mail.re3.yahoo.com ([66.196.97.67]:47277)
	by monty-python.gnu.org with smtp (Exim 4.60)
	(envelope-from <smustudent1@yahoo.com>) id 1NAAcV-0007mK-Tb
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:04:28 -0500
Received: (qmail 3995 invoked by uid 60001); 16 Nov 2009 23:04:26 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024;
	t=1258412666; bh=uu1pZMRY4e+vWeeWFCDvUV3EdysFgiDbe7HA/aXsXRc=;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type;
	b=tFRiAHljCXRg7oxyy45dHTpQA9afl4omKCEKme3wdMiGevrchhTIGQsBeUfeJP+/zJAxmuL8xJLuf5NbHH3wmWRcPjKi1hQ+5kA5isYlgPxHAxSBTIYyQtX7qQy+GyYXXUe1aQKrxQjfhAmwLn+xT9rDIDCq93o6OhdK79UAHQs=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type;
	b=D3cYG1PteqndPU7kN2ZN28we9TEURp+/neMmKmCQC2+sBcaKCKcEB88m1PZ+1dJmMno3t4oVSvX6Voj5KB78FmzXWmErKi8eh2PRVeE26VAx6bYdnW9TPJD+QedxuTOXA3k5nvCqV8P9N15Pu6SgbiJhScWuwgYn3kSQpCdj+ro=;
Message-ID: <879426.3851.qm@web56708.mail.re3.yahoo.com>
X-YMail-OSG: lALCHPkVM1kneT_6PzjGmOSiVodQvVKcyekcOmUwK99fXetOTD6e_tpDwKD7e5NvW0BS3eBWVjxYQtSWLj9sZdNdyfidLTkN9nqSiB54WsTvSmbJbzNgS1vLQaxitRYA_lbO_tiCetgFyeD2XCkdKvDdL.l3cqkgT4PRM0rV.Vo253OLwkmWeCq8W_.V8R4fiqWPFs6wwf4BrlNdVVtmbXWOT_javB92B7OaLDZE3pdBtFiyHHiTKg9FIhztgSdU4HhkMfx1T70Bx0.1szJ_UHuLpYbqfVnI3Kpp7ekluP.v0x8dvL8l8Bj23A--
Received: from [173.67.62.124] by web56708.mail.re3.yahoo.com via HTTP;
	Mon, 16 Nov 2009 15:04:26 PST
X-Mailer: YahooMailRC/211.6 YahooMailWebService/0.7.361.4
Date: Mon, 16 Nov 2009 15:04:26 -0800 (PST)
From: C Y <smustudent1@yahoo.com>
Subject: Re: [Axiom-developer] Embedding Axiom
To: axiom-developer@nongnu.org
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-operating-system: by monty-python.gnu.org: FreeBSD 6.x (1)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 23:04:33 -0000

 
On Sunday 15 November 2009 23:35:00 Tim Daly wrote:
> This is a request for design discussion for those who are interested.
> When it is done in this properly embedded fashion you should be able to
> (mapcar #'(lambda (f) (integrate f x)) '((sin x) (cos x) ...
> or use the Spad surface syntax to generate the same results.
> 
> At which point we can climb upward to a category-theoretic form...

> And perform computational-mathematical proofs of algorithms...

Tim, a question here.  As I understand it (which I readily admit I don't well) the notion of what an "integral" is or for that matter what sine, cosine and even "x" are more or less "lives" at the category theory level.  Or, put another way, the category-theoretic level is where the "type" rules of category theory determine what is and is not a legal expansion of "integrate(sqrt(x),x)" - for example, if "x" is the set of positive real numbers integrating sqrt(x) may look a tad different in expansion to a "verbose" category theory typed set of calls than (say) negative real numbers (where sqrt is going to result in something not a real number).Axiom's user environment does some "type deduction" now as I understand it, to make user interaction more manageable, although the programming environment requires non-ambiguous specification of types.  Doesn't that imply that rather than "building up" to category-theoretic form the specification of the algebra
 needs to start at the category-theoretic form and have the requirements of that form dictate the required support structure(s) at the higher level language and Lisp levels?  And that other "simpler" expressions of mathematics for users would have to be layered on top of the robust category-theoretic foundation to support "translating" more casual user supplied problems (like integrate(sin(x),x) ) into statements with the rigor to be subject to formal proof? If I understand correctly, mathematical statements are made within the context of a series of axioms, such as (for example) the ZFC set theory axioms.  Category Theory provides (among other things) a framework with which to manage the axioms being used and what can be deduced based on the current operating set of axioms.  It seems to me like this conceptual framework and the language definitions being used to express concepts within that framework would need to be laid out before algebraic logic
 could really be "properly" defined in the system, but I could be wrong - have I misunderstood what is required for proof robustness?

That would lead to a hierarchy something like:

User-level syntax

|

Intermediate Layer(s)

|

Category Theoretic High Level Language (Spad?)
 
|

Lisp

where the Category Theoretic Language would depend on Lisp behaviors, which would in turn depend on the machine assembly language level behaviors, etc.

This of course lends itself to the idea of languages within languages that Lisp provides, but the "rules" of the Category Theoretic language would essentially have to be the rules of category theory itself, which I'm guessing are probably some subset of the behaviors allowed by Lisp.

 Am I thinking about the problem incorrectly?

Cheers,
CY



      



From MAILER-DAEMON Mon Nov 16 18:19:36 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAArA-0007Rc-8W
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 18:19:36 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAAr9-0007R6-0u
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:19:35 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAAr4-0007Oc-AK
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:19:34 -0500
Received: from [199.232.76.173] (port=34830 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAAr4-0007OW-79
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:19:30 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:35405
	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 <daly@axiom-developer.org>) id 1NAAr3-0001cT-RO
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 18:19:29 -0500
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 nAGNJR8a028495;
	Mon, 16 Nov 2009 17:19:27 -0600
Message-ID: <4B01DE00.3070001@axiom-developer.org>
Date: Mon, 16 Nov 2009 18:19:28 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: C Y <smustudent1@yahoo.com>
Subject: Re: [Axiom-developer] Embedding Axiom
References: <879426.3851.qm@web56708.mail.re3.yahoo.com>
In-Reply-To: <879426.3851.qm@web56708.mail.re3.yahoo.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Nov 2009 23:19:35 -0000

C Y wrote:
> =20
> On Sunday 15 November 2009 23:35:00 Tim Daly wrote:
>  =20
>> This is a request for design discussion for those who are interested.
>> When it is done in this properly embedded fashion you should be able t=
o
>> (mapcar #'(lambda (f) (integrate f x)) '((sin x) (cos x) ...
>> or use the Spad surface syntax to generate the same results.
>>
>> At which point we can climb upward to a category-theoretic form...
>>    =20
>
>  =20
>> And perform computational-mathematical proofs of algorithms...
>>    =20
>
> Tim, a question here.  As I understand it (which I readily admit I don'=
t well) the notion of what an "integral" is or for that matter what sine,=
 cosine and even "x" are more or less "lives" at the category theory leve=
l.  Or, put another way, the category-theoretic level is where the "type"=
 rules of category theory determine what is and is not a legal expansion =
of "integrate(sqrt(x),x)" - for example, if "x" is the set of positive re=
al numbers integrating sqrt(x) may look a tad different in expansion to a=
 "verbose" category theory typed set of calls than (say) negative real nu=
mbers (where sqrt is going to result in something not a real number).Axio=
m's user environment does some "type deduction" now as I understand it, t=
o make user interaction more manageable, although the programming environ=
ment requires non-ambiguous specification of types.  Doesn't that imply t=
hat rather than "building up" to category-theoretic form the specificatio=
n of the algebra
>  needs to start at the category-theoretic form and have the requirement=
s of that form dictate the required support structure(s) at the higher le=
vel language and Lisp levels?  And that other "simpler" expressions of ma=
thematics for users would have to be layered on top of the robust categor=
y-theoretic foundation to support "translating" more casual user supplied=
 problems (like integrate(sin(x),x) ) into statements with the rigor to b=
e subject to formal proof? If I understand correctly, mathematical statem=
ents are made within the context of a series of axioms, such as (for exam=
ple) the ZFC set theory axioms.  Category Theory provides (among other th=
ings) a framework with which to manage the axioms being used and what can=
 be deduced based on the current operating set of axioms.  It seems to me=
 like this conceptual framework and the language definitions being used t=
o express concepts within that framework would need to be laid out before=
 algebraic logic
>  could really be "properly" defined in the system, but I could be wrong=
 - have I misunderstood what is required for proof robustness?
>
> That would lead to a hierarchy something like:
>
> User-level syntax
>
> |
>
> Intermediate Layer(s)
>
> |
>
> Category Theoretic High Level Language (Spad?)
> =20
> |
>
> Lisp
>
> where the Category Theoretic Language would depend on Lisp behaviors, w=
hich would in turn depend on the machine assembly language level behavior=
s, etc.
>
> This of course lends itself to the idea of languages within languages t=
hat Lisp provides, but the "rules" of the Category Theoretic language wou=
ld essentially have to be the rules of category theory itself, which I'm =
guessing are probably some subset of the behaviors allowed by Lisp.
>
>  Am I thinking about the problem incorrectly?
>
> Cheers,
> CY
>
>
>
>      =20
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
>  =20
You are correct that category theory should underlie the Axiom type=20
hierarchy.
My thought about "layering it above" is related to using the theory as pa=
rt
of the proof process. Properly speaking it should instead be used for=20
defining
functors and mappings. I am not nearly strong enough in category theory t=
o
try to architect Axiom on top of it. I think that such a rebasing would b=
e
a PhD thesis or two. You'd have to start way down deep with records as=20
products
and unions as co-products.

Tim





From MAILER-DAEMON Mon Nov 16 20:32:20 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NACvc-0001jk-Bi
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 20:32:20 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NACvZ-0001jF-EF
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 20:32:17 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NACvV-0001hy-0Z
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 20:32:16 -0500
Received: from [199.232.76.173] (port=51875 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NACvU-0001hv-Ps
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 20:32:12 -0500
Received: from mail-gx0-f199.google.com ([209.85.217.199]:36758)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1NACvU-0004Te-DF
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 20:32:12 -0500
Received: by gxk23 with SMTP id 23so7583082gxk.2
	for <axiom-developer@nongnu.org>; Mon, 16 Nov 2009 17:32:11 -0800 (PST)
MIME-Version: 1.0
Path: g27g2000yqn.googlegroups.com!not-for-mail
Newsgroups: sci.math,sci.math.symbolic,comp.soft-sys.math.maple
Date: Mon, 16 Nov 2009 17:32:11 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: g27g2000yqn.googlegroups.com; posting-host=72.23.235.203; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
References: <4ADB98EB.357C0188@freenet.de> <hbgabd$33o$1@aioe.org> 
	<4ADCE548.F1ED21D6@freenet.de>
	<3679cd20-5678-41ac-bda3-4dde5840f7ef@j19g2000yqk.googlegroups.com>
	<4B01E547.CB60267C@freenet.de>
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.9.2 with SMTP id 2mt3365629ybi.29.1258421531806; Mon, 16 
	Nov 2009 17:32:11 -0800 (PST)
Message-ID: <75295e24-5138-474e-b974-dd0d2dcdaeab@g27g2000yqn.googlegroups.com>
From: TimDaly <daly@axiom-developer.org>
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: Is your CAS no a weakling anymore?
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 01:32:18 -0000

On Nov 16, 6:50=A0pm, cliclic...@freenet.de wrote:
> TimDaly schrieb:
>
>
>
>
>
> > On Oct 19, 5:16 pm, cliclic...@freenet.de wrote:
> > > Richard Fateman schrieb:
>
> > > > cliclic...@freenet.de wrote:
> > > > >...
> > > > > they claim to deliver the antiderivative of any elementary functi=
on if
> > > > > it can also be written in terms of elementary functions...
>
> > > > At least Maxima / Macsyma makes no such claims, and in particular
> > > > neither implements completely the algebraic case of the Risch algor=
ithm.
> > > > Undoubtedly simpler examples will stump these programs.
>
> > > Errh. Ok. Alright. Maxima users are excused for the time being - they
> > > may hand in their answers after the next integrator overhaul. On the
> > > other hand, Derive also makes do with less than 1000 general
> > > integration rules like
> > > =A0 INT(F((a+b*x)^(1/n),x),x) ->
> > > =A0 n/b*SUBST(INT(x^(n-1)*F(x,(x^n-a)/b),x),x,(a+b*x)^(1/n)),
> > > or
> > > =A0 INT(x^m*LN((a*x^n)^q),x) ->
> > > =A0 x^(m+1)*LN((a*x^n)^q)/(m+1)-n*q*x^(m+1)/(m+1)^2.
> > > What counts in the end is the ability to handle real-life integrals l=
ike
> > > the problem posed. Maybe Risch's is not the best way?
>
> > > And now pssss. They are all crouched over their screens. No sound but
> > > the occasional keyboard click and slurp of coffee. Papa Wolfram looks
> > > particularly grave. Will he and his crew flunk again?
>
> > > Martin ;)
>
> > Interesting. Where do you find such patterns?
> > Do you have a catalog of them I can try?
>
> Could you be more specific? Does your "catalog of patterns" refer to my
> integration problems, or perhaps to my associative memory connecting
> attempts to solve them with concepts like "coffee" and "Wolfram" (which
> is further linked to "Papa") and "trance"?
>
> Martin.

Do you have a catalog of patterns (in source code) of the form:
  INT(F((a+b*x)^(1/n),x),x) ->
  n/b*SUBST(INT(x^(n-1)*F(x,(x^n-a)/b),x),x,(a+b*x)^(1/n)),

I would like to see what patterns you have and compare them against
the integration test suite that Axiom uses.

Tim



From MAILER-DAEMON Mon Nov 16 22:46:23 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAF1L-0007BL-Q2
	for mharc-axiom-developer@gnu.org; Mon, 16 Nov 2009 22:46:23 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAF1K-0007B8-Ro
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 22:46:22 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAF1J-0007Aw-CS
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 22:46:21 -0500
Received: from [199.232.76.173] (port=50723 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAF1J-0007At-4O
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 22:46:21 -0500
Received: from mout.perfora.net ([74.208.4.195]:59493)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <SRS0=w2Ty=HF=start.ca=wilsons@srs.perfora.net>)
	id 1NAF1I-00064W-Pv
	for axiom-developer@nongnu.org; Mon, 16 Nov 2009 22:46:20 -0500
Received: from localhost (bas3-london14-1096789107.dsl.bell.ca [65.95.172.115])
	by mrelay.perfora.net (node=mrus1) with ESMTP (Nemesis)
	id 0LonZ5-1NpsV10jn9-00gDmw; Mon, 16 Nov 2009 22:46:18 -0500
Date: Mon, 16 Nov 2009 22:46:15 -0500
From: Stephen Wilson <wilsons@start.ca>
To: Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] Embedding Axiom
Message-ID: <20091117034615.GA20998@fibrous.localdomain>
References: <4B00D674.5090609@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4B00D674.5090609@axiom-developer.org>
User-Agent: Mutt/1.5.19 (2009-01-05)
X-Provags-ID: V01U2FsdGVkX19Moe2LwJOeXmmgL34HMw/Yw6RHgh7ovHSKme1
	Y2YpnYW0H/dWnacH3HR2UBTwo7cCKY3AM66iTuR2ic+G6phvQL
	jM8LSKGOXLn/tz722J47nv7gJaS7LiIc5Ulk9xQopI=
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 03:46:23 -0000

Hi Tim,

On Sun, Nov 15, 2009 at 11:35:00PM -0500, Tim Daly wrote:
> This is a request for design discussion for those who are interested.

Your message is very interesting.

> I have some plans on how to get "from here to there" in a slow, incremental
> fashion. These plans involve things like finding the basis-set of the algebra
> in terms of lisp functions and then trying to find a closure of this basis set
> so that the algebra embeds cleanly in this set. The compiler should compile
> that basis set into an embedding in the prior layer. Lisp can support this by
> defining domain-specific languages for each layer and macros from one layer to
> another.

Could you please expand on this point?  How do you propose to do this
incrementally from an implementation point of view?  I am asking these questions
from an engineering standpoint.  In particular, are you suggesting a rewrite
(essentially from scratch, using the current implementation as a guide)?

--
steve



From MAILER-DAEMON Tue Nov 17 00:27:06 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAGan-0006K2-VN
	for mharc-axiom-developer@gnu.org; Tue, 17 Nov 2009 00:27:05 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAGam-0006IO-8J
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 00:27:04 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAGah-0006Fn-GH
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 00:27:03 -0500
Received: from [199.232.76.173] (port=57252 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAGah-0006Fg-Ct
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 00:26:59 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:37559
	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 <daly@axiom-developer.org>) id 1NAGah-0002Pv-2L
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 00:26:59 -0500
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 nAH5Qt8a022752;
	Mon, 16 Nov 2009 23:26:56 -0600
Message-ID: <4B023423.9080809@axiom-developer.org>
Date: Tue, 17 Nov 2009 00:26:59 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Stephen Wilson <wilsons@start.ca>
Subject: Re: [Axiom-developer] Embedding Axiom
References: <4B00D674.5090609@axiom-developer.org>
	<20091117034615.GA20998@fibrous.localdomain>
In-Reply-To: <20091117034615.GA20998@fibrous.localdomain>
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
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 05:27:04 -0000

Stephen Wilson wrote:
> Hi Tim,
>
> On Sun, Nov 15, 2009 at 11:35:00PM -0500, Tim Daly wrote:
>   
>> This is a request for design discussion for those who are interested.
>>     
>
> Your message is very interesting.
>
>   
>> I have some plans on how to get "from here to there" in a slow, incremental
>> fashion. These plans involve things like finding the basis-set of the algebra
>> in terms of lisp functions and then trying to find a closure of this basis set
>> so that the algebra embeds cleanly in this set. The compiler should compile
>> that basis set into an embedding in the prior layer. Lisp can support this by
>> defining domain-specific languages for each layer and macros from one layer to
>> another.
>>     
>
> Could you please expand on this point?  How do you propose to do this
> incrementally from an implementation point of view?  I am asking these questions
> from an engineering standpoint.  In particular, are you suggesting a rewrite
> (essentially from scratch, using the current implementation as a guide)?
>
> --
> steve
>
>   
A rewrite from scratch? Well, more like a "remolding of the clay" than a 
rewrite.
The idea is to move from a working system to a working system with each 
change, but
eventually restructure the internals cleanly. At the moment I am in the 
process of
restructuring the interpreter/compiler into literate form (book volume 
5). As I do
this I am rewriting the code to be functionally equivalent.

The above comment about finding the basis set for the algebra amounts to 
finding
every lisp-source-level function call from every lisp algebra object. I 
wrote a
"calls" function to walk lisp code and extract the non-common-lisp 
function calls.

This set will be gathered, arranged, and studied. The idea is to find 
the "right level"
of abstraction (ala "On Lisp" and "Structure and Interpretation"). This 
level of
abstraction forms the current base language hosting the algebra. It 
forms a design
target for the top level embedded layer. Next we re-arrange the system 
to make this layer
explicit (define an API, so to speak). Then we recurse the process with 
the new layer.

Code in the system that uses nothing but common lisp calls forms the 
other end of
the spectrum. The game is to build the two layers toward each other in a 
disciplined
way so that each layer embeds properly in the prior one. Because Axiom 
was written by
so many different people the internals are more like "tent poles" of 
functionality
where each one builds from nothing all the way to the top, reproducing 
common ideas
in different ways.

Along the way the code needs major cleanup work. On Lisp and SICP stress 
using
functional programming but the Axiom internals are wildly coupled 
through the use
of special variables. Some of these can be eliminated with extra 
arguments and
most of those that cannot will still be able to be limited using lexical 
closures.

In addition, the use of Boot code led to a fantastic amount of list 
processing
where it is not appropriate. Major structures in the system should be 
defstruct
objects or some other kind of structuring. Because of the Boot idioms it 
is next
to impossible to find all the places a data structure is modified. 
Side-effecting
global state happens all over the place. Now that the boot code is gone 
the data
can take a more natural and better disciplined shape.

Even better for the long term would be to make each structure immutable 
(see
"Purely Functional Data Structure" by Chris Okasaki). This would make it 
much easier
to move the system to a parallel base of code. This level of rewrite is 
on the queue
to think about and study but might take some experimenting.

I have roughly 140 files still to merge into the interpreter volume and 
it takes about a
week of moving/testing/documenting/rewriting/xrefing/latexing for each 
one so this
is going to take a while.


Tim




From MAILER-DAEMON Tue Nov 17 15:55:08 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAV4u-0006Ko-B3
	for mharc-axiom-developer@gnu.org; Tue, 17 Nov 2009 15:55:08 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAV4s-0006JV-7e
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 15:55:06 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAV4o-0006Gt-2C
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 15:55:05 -0500
Received: from [199.232.76.173] (port=58532 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAV4n-0006Gq-Mp
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 15:55:01 -0500
Received: from mail-iw0-f180.google.com ([209.85.223.180]:48866)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <zznmeb@gmail.com>) id 1NAV4m-0003fK-Sm
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 15:55:01 -0500
Received: by iwn10 with SMTP id 10so346602iwn.4
	for <axiom-developer@nongnu.org>; Tue, 17 Nov 2009 12:54:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:mime-version:sender:reply-to:received
	:in-reply-to:references:date:x-google-sender-auth:message-id:subject
	:from:to:content-type;
	bh=JlVQwD0BySd8oG/i7qR3GW0E9jtRLyJBoJsfMYKtp5s=;
	b=tDhL5NJHe0NBnKsDysUMt36Y9qlHTaliGw7jUBWBAztFYdTEVtcTFNmbBkpsI5jjQ7
	VH4mg6mVzg5YYcTOXTorWMAyjwPMr2381nRBtVa/yN1+/0VrjICYh9b0xs4wog3Jmcev
	UtYIy7v54OB70mF4qFibxjXca0G0mqlN2QzEU=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=mime-version:sender:reply-to:in-reply-to:references:date
	:x-google-sender-auth:message-id:subject:from:to:content-type;
	b=ipEC6T4Khmq84hx/oIthC5PrXEFWC3JC9BmX4IpeWu4R/NXwtPdDomUj/9svHft9tu
	NdqPY47JNc+bzselLrxmnQtHYgxtCxDs41n+e2IJOAifXk+CfjdmRt1EuauDscB9PVZv
	TsG/aLCiaDM8VsVlWNNd+2NxWx5Vrp1kVWp4o=
MIME-Version: 1.0
Sender: zznmeb@gmail.com
Received: by 10.231.170.201 with SMTP id e9mr614104ibz.15.1258491296754; Tue, 
	17 Nov 2009 12:54:56 -0800 (PST)
In-Reply-To: <4B023423.9080809@axiom-developer.org>
References: <4B00D674.5090609@axiom-developer.org>
	<20091117034615.GA20998@fibrous.localdomain>
	<4B023423.9080809@axiom-developer.org>
Date: Tue, 17 Nov 2009 12:54:56 -0800
X-Google-Sender-Auth: 0e8bdb897db61741
Message-ID: <af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>
Subject: Re: [Axiom-developer] Embedding Axiom
From: "M. Edward (Ed) Borasky" <znmeb@cesmail.net>
To: axiom-developer@nongnu.org
Content-Type: text/plain; charset=UTF-8
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: zznmeb@gmail.com
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 20:55:06 -0000

So:

a. Is it to be Common Lisp rather than Scheme? Should it work (and be
tested) with all three major open-source platforms (clisp, sbcl and
gcl)?

b. The kind of test / behavior driven development such a massive
refactoring requires is "usually" done in Ruby these days. Are there
Lisp-based tools for this so the project could "eat its own dog food",
or would there need to be some "scaffolding" built in a "scripting
language" like Ruby or Python?

c. Aren't there more "Lisp-like" theories of mathematics and
implementations of them? I'm thinking of Automath, but I suspect there
are others. And there are certainly Prolog-like systems, proof
engines, etc. The current crop of "functional" languages (Haskell,
Erlang, OCaml, etc.) does seem like a better platform for this sort of
thing than Common Lisp. Scheme would make sense if we wanted to push
this into undergrad / high school curricula, though. Summer of Code??

d. Hardware? This stuff needs lots of cores and RAM - maybe another
reason to use a more modern language like Erlang with explicit and
"provably correct" concurrency primitives.

Speaking of all of this, have you all seen Jeff Bone's "rant":

Programming languages, operating systems, despair and anger http://bit.ly/1xtACU

Perhaps computational mathematics should be designing their own
operating system and programming language for computational
mathematics, using something like the LLVM (low-level virtual machine)
or DROPS (Dresden Real-time OPerating System) kernel. Or the
Intellasys Forth-based SEAforth array processor? http://bit.ly/2t4e3C

> A rewrite from scratch? Well, more like a "remolding of the clay" than a
> rewrite.
> The idea is to move from a working system to a working system with each
> change, but
> eventually restructure the internals cleanly. At the moment I am in the
> process of
> restructuring the interpreter/compiler into literate form (book volume 5).
> As I do
> this I am rewriting the code to be functionally equivalent.
>
> The above comment about finding the basis set for the algebra amounts to
> finding
> every lisp-source-level function call from every lisp algebra object. I
> wrote a
> "calls" function to walk lisp code and extract the non-common-lisp function
> calls.
>
> This set will be gathered, arranged, and studied. The idea is to find the
> "right level"
> of abstraction (ala "On Lisp" and "Structure and Interpretation"). This
> level of
> abstraction forms the current base language hosting the algebra. It forms a
> design
> target for the top level embedded layer. Next we re-arrange the system to
> make this layer
> explicit (define an API, so to speak). Then we recurse the process with the
> new layer.
>
> Code in the system that uses nothing but common lisp calls forms the other
> end of
> the spectrum. The game is to build the two layers toward each other in a
> disciplined
> way so that each layer embeds properly in the prior one. Because Axiom was
> written by
> so many different people the internals are more like "tent poles" of
> functionality
> where each one builds from nothing all the way to the top, reproducing
> common ideas
> in different ways.
>
> Along the way the code needs major cleanup work. On Lisp and SICP stress
> using
> functional programming but the Axiom internals are wildly coupled through
> the use
> of special variables. Some of these can be eliminated with extra arguments
> and
> most of those that cannot will still be able to be limited using lexical
> closures.
>
> In addition, the use of Boot code led to a fantastic amount of list
> processing
> where it is not appropriate. Major structures in the system should be
> defstruct
> objects or some other kind of structuring. Because of the Boot idioms it is
> next
> to impossible to find all the places a data structure is modified.
> Side-effecting
> global state happens all over the place. Now that the boot code is gone the
> data
> can take a more natural and better disciplined shape.
>
> Even better for the long term would be to make each structure immutable (see
> "Purely Functional Data Structure" by Chris Okasaki). This would make it
> much easier
> to move the system to a parallel base of code. This level of rewrite is on
> the queue
> to think about and study but might take some experimenting.
>
> I have roughly 140 files still to merge into the interpreter volume and it
> takes about a
> week of moving/testing/documenting/rewriting/xrefing/latexing for each one
> so this
> is going to take a while.
>
>
> Tim
>
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>



-- 
M. Edward (Ed) Borasky
http://borasky-research.net

"I've always regarded nature as the clothing of God." ~Alan Hovhaness



From MAILER-DAEMON Tue Nov 17 16:26:46 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAVZW-0000o0-Lv
	for mharc-axiom-developer@gnu.org; Tue, 17 Nov 2009 16:26:46 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAVZV-0000n3-2n
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 16:26:45 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAVZQ-0000k0-C3
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 16:26:44 -0500
Received: from [199.232.76.173] (port=43667 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAVZQ-0000jx-5m
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 16:26:40 -0500
Received: from mail-bw0-f212.google.com ([209.85.218.212]:34304)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bertfried.fauser@googlemail.com>) id 1NAVZP-0001Cx-SM
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 16:26:40 -0500
Received: by bwz4 with SMTP id 4so511340bwz.2
	for <axiom-developer@nongnu.org>; Tue, 17 Nov 2009 13:26:37 -0800 (PST)
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=ea762k7jKqBtIdULQS/W05hYXX0m1A2CgEkxtNUleEU=;
	b=f4AnVWudYk8agdyDTONwTRzA90qdndt6UChRfoPn5e/eImnL3Pbxoc1hePgYl7fn/W
	g5GUtVZ28+IgOz3uMFzv9pj4+SLVZORKOgSW8AvpBiiJnHB/ox1jcfmPNobyjFubByj9
	LF6Wz6TPpgmUQyAhQ60X/p36vFxMl7HlMgAz0=
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=V1Pc9rCWD8s7aHo7d7llmeiHmyBb5xdrLVCADHJ+L/E5Z8UXkXz9EcLQOzbMBDsiQC
	VMtsnUra4dIQQjXRyOyv+TE87zAxTpG5lxHlHzG/axKT1W39GFayJH+d8UPb+1veiniY
	gkv3jiL2Qlkoxa1HCmMZyx4K0TYvq1Z577+Z8=
MIME-Version: 1.0
Sender: bertfried.fauser@googlemail.com
Received: by 10.103.50.29 with SMTP id c29mr4717130muk.61.1258493193843; Tue, 
	17 Nov 2009 13:26:33 -0800 (PST)
In-Reply-To: <af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>
References: <4B00D674.5090609@axiom-developer.org>
	<20091117034615.GA20998@fibrous.localdomain>
	<4B023423.9080809@axiom-developer.org>
	<af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>
Date: Tue, 17 Nov 2009 21:26:33 +0000
X-Google-Sender-Auth: 832b462ff45e8e7e
Message-ID: <275293a60911171326w4fbe454dt7fd192ecccdbec72@mail.gmail.com>
Subject: Re: [Axiom-developer] Embedding Axiom
From: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
To: zznmeb@gmail.com
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 <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 21:26:45 -0000

Hi,

if you do the rewrite, feel free to choose....

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
<http://www.uni-konstanz.de>
% contact |->    URL : http://clifford.physik.uni-konstanz.de/~fauser/
%              Phone : +49 1520 9874517



From MAILER-DAEMON Tue Nov 17 18:24:27 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAXPP-0004rl-AT
	for mharc-axiom-developer@gnu.org; Tue, 17 Nov 2009 18:24:27 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAXPN-0004qr-1o
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 18:24:25 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAXPG-0004mW-Vm
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 18:24:23 -0500
Received: from [199.232.76.173] (port=48055 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAXPG-0004mT-PP
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 18:24:18 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:40890
	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 <daly@axiom-developer.org>) id 1NAXPG-0002hX-BR
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 18:24:18 -0500
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 nAHNOE8a003068;
	Tue, 17 Nov 2009 17:24:14 -0600
Message-ID: <4B0330A4.5040902@axiom-developer.org>
Date: Tue, 17 Nov 2009 18:24:20 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: zznmeb@gmail.com
Subject: Re: [Axiom-developer] Embedding Axiom
References: <4B00D674.5090609@axiom-developer.org>	<20091117034615.GA20998@fibrous.localdomain>	<4B023423.9080809@axiom-developer.org>
	<af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>
In-Reply-To: <af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; 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
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Tue, 17 Nov 2009 23:24:25 -0000

M. Edward (Ed) Borasky wrote:
> So:
>
> a. Is it to be Common Lisp rather than Scheme? Should it work (and be
> tested) with all three major open-source platforms (clisp, sbcl and
> gcl)?
>   
Common lisp. For the simple reason that a slow transition from a working 
version to a working
version on a daily basis does not lend itself to a complete language 
transition. The rewrite will
move to ANSI lisp as a simple side-effect of newly written code so it 
should not matter what
Common lisp you use to host it.
> b. The kind of test / behavior driven development such a massive
> refactoring requires is "usually" done in Ruby these days. Are there
> Lisp-based tools for this so the project could "eat its own dog food",
> or would there need to be some "scaffolding" built in a "scripting
> language" like Ruby or Python?
>   

I am building unit-tests for the internal routines as I rewrite them so 
that I can verify that the
rewrite is reasonably correct. The idea of refactoring code is much 
older than Ruby. See the
"On Lisp" book.

Axiom already has a complete test system built into the build. I rebuild the
system from scratch several times a day, usually after every few 
routines are merged.

I have spent a little time on the idea of "fuzz testing" Axiom but the 
pseudo-random
generator is a challenge. On possible approach I'm studying is to use a 
hidden markov model
against the Axiom test files to generate "random-but-nearly-valid" 
inputs. Especially challenging
are random inputs that pass the parser and are mathematically "near 
valid". I think there is a
PhD thesis topic sneaking around in this problem.
> c. Aren't there more "Lisp-like" theories of mathematics and
> implementations of them? I'm thinking of Automath, but I suspect there
> are others. And there are certainly Prolog-like systems, proof
> engines, etc. The current crop of "functional" languages (Haskell,
> Erlang, OCaml, etc.) does seem like a better platform for this sort of
> thing than Common Lisp. Scheme would make sense if we wanted to push
> this into undergrad / high school curricula, though. Summer of Code??
>   

ACL2 is written in lisp and there has been a project goal of embedding 
ACL2 inside the
Axiom machinery. There has been some discussion of this topic on this 
mailing list. ACL2
calls could be made on function definitions using an inherited set of 
mathematical decorations.
Thus, the Group axioms could be added to the Group category and 
functions implementing
operations on the elements could be shown to obey the Group laws (half a 
dozen PhD
thesis topics a year hidden here)

Why would Haskell be a better platform? Because Haskell is functional? 
Again, see the book
"On Lisp" where the functional programming style is stressed. It was 
written in 1993.

A Scheme implementation would end up creating Common lisp on Scheme 
which would
be time consuming.
> d. Hardware? This stuff needs lots of cores and RAM - maybe another
> reason to use a more modern language like Erlang with explicit and
> "provably correct" concurrency primitives.
>   

There was a recent conference on parallel lisp systems (in Japan I 
think). There is no reason
why an independent lisp system could not run each core. That is 
essentially the same technique
as the Java-per-core implementations. A large portion of the lisp system 
can live in shared,
read-only memory as it works off separate heaps/stacks.

The "new idea" in Go about passing channels on channels is basically 
just passing closures,
a very old lisp trick. Using a message passing paradigm (where objects 
can be shared or
serialized through the message) is easy to do between lisps. Go 
"parallelism" appears to be
implemented by lightweight programs added to a queue which managed 
dispatch. Go is not
really running on all of the processors but the lightweight threads are.
> Speaking of all of this, have you all seen Jeff Bone's "rant":
>
> Programming languages, operating systems, despair and anger http://bit.ly/1xtACU
>   

Yes, I saw Jeff's rant and, as an Elder of the Internet, and a very 
long-time programmer (nearly 39 years)
I have to agree with him. I have a hard time finding a new technique 
that wasn't done in lisp years ago.

Python claims to be lisp-like but they have no clue about macros, 
program-data equivalence, the
cons-nil-()-false equivalence, dynamic environments, real closures, and 
a host of other useful things.
Even their python command-line interpreter doesn't seem to allow 
techniques that have been
available in the lisp break loop. Try modifying a python function on the 
fly and continuing from
the breakpoint. And forget about creating your own syntactic elements.

Haskell has "lazy evaluation" (see the function "Delay" in the Axiom 
sources), monads (stateful
pseudo-functional programs) which are trivial to write, pattern matching 
of arguments (see the
partial function definition sequence in Axiom or any prolog-in-lisp).

Go has interfaces without inheritance, a very old idea in Common lisp. I 
can't wait until they
introduce wrappers and whoppers.

Lisp can modify the compiler internals at compile time by supplying code 
to manipulate the
compiler internal data structures (lisp is a self-syntax tree and macros 
are source-to-source transforms
done at compile time). Lisp programs usually write lisp programs on the 
fly since programs and data
are the same. Try that in Ruby. Or construct programs that learn by 
self-modification, growing organically
to adapt to the input stream by permanent change. Without writing a 
whole parser/compiler chain I
have no idea how to write self-modifying Python programs.

Languages limit what you can think. Ask any Java programmer about their 
program and you are likely
to hear "design patterns". Ask any lisp programmer about design patterns 
and be prepared for a laugh.

In any case, Axiom is firmly in the Common lisp camp for the forseeable 
future.

> Perhaps computational mathematics should be designing their own
> operating system and programming language for computational
> mathematics, using something like the LLVM (low-level virtual machine)
> or DROPS (Dresden Real-time OPerating System) kernel. Or the
> Intellasys Forth-based SEAforth array processor? http://bit.ly/2t4e3C
>   

I looked at the Clojure language running on the Java virtual machine and 
at the Azul system which
is designed to host hundreds of Java VMs in parallel. But the question 
is, if you're going to use Java
VMs why not use Lisp VMs? Lisp compiles to machine code, so why not not 
host hundreds of Lisps?
With a proper implementation you only need separate stacks (or a 
spaghetti stack) and separate
heaps or "clades within a common heap". A Clade-heap modification would 
allow object sharing
or object transport between processes. Immutable data structures is a 
very interesting idea here.

As for the Axiom internals rewrite/refactor, the intention is to define 
"semantic layers" that make it
perfectly clear where certain functionality should be supported. Algebra 
concepts should be fairly
near the top of the tower with a gradual transition to raw lisp. I would 
ideally like to be able to
write each "layer" in only a few pages of code expressed in the concepts 
of the previous layer.

If that can be done than it would be possible to teach Axiom by starting 
at a few-page pile of code
and working your way upward or downward as appropriate. A perfect 
example of this is the
standard definition of lisp in lisp code. Such elegance and brevity is 
the soul of the design.
Imagine understanding all of the algebra support code in two pages.

Tim




From MAILER-DAEMON Tue Nov 17 21:18:24 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAa7k-0000VD-6L
	for mharc-axiom-developer@gnu.org; Tue, 17 Nov 2009 21:18:24 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAa7i-0000V1-TZ
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 21:18:22 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAa7d-0000UR-Hb
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 21:18:21 -0500
Received: from [199.232.76.173] (port=40561 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAa7d-0000UO-C2
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 21:18:17 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:58187
	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 <daly@axiom-developer.org>) id 1NAa7d-0002pj-30
	for axiom-developer@nongnu.org; Tue, 17 Nov 2009 21:18:17 -0500
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 nAI2IF8a021235;
	Tue, 17 Nov 2009 20:18:15 -0600
Message-ID: <4B03596D.6070201@axiom-developer.org>
Date: Tue, 17 Nov 2009 21:18:21 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Axiom-Developer <axiom-developer@nongnu.org>,
	daly <daly@axiom-developer.org>
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] re: Elder of the Internet
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 02:18:23 -0000

This is a term first used in a british sitcom "The IT Crowd"...highly 
recommended.
http://www.youtube.com/watch?v=QAUyaELfwBo&feature=related




From MAILER-DAEMON Wed Nov 18 13:13:08 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAp1g-000515-8e
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 13:13:08 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAp1e-0004zN-DK
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:13:06 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAp1Z-0004ww-Rq
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:13:05 -0500
Received: from [199.232.76.173] (port=55490 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAp1Z-0004wp-J8
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:13:01 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:34363
	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 <daly@axiom-developer.org>) id 1NAp1Z-0005sR-10
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:13:01 -0500
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 nAIICs8a032366;
	Wed, 18 Nov 2009 12:12:54 -0600
Message-ID: <4B043930.4050806@axiom-developer.org>
Date: Wed, 18 Nov 2009 13:13:04 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: gg87346@martinb.com, Axiom-Developer <axiom-developer@nongnu.org>,
	"daly@axiom-developer.org >> daly" <daly@axiom-developer.org>
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] grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 18:13:06 -0000

Martin,

I'm trying to install your code in Axiom.
Do I have your permission to use text from your webpage as documentation?

Tim




From MAILER-DAEMON Wed Nov 18 13:35:40 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NApNU-0005lo-FY
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 13:35:40 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NApNT-0005kL-I3
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:35:39 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NApNO-0005Zs-Jc
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:35:39 -0500
Received: from [199.232.76.173] (port=38060 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NApNO-0005ZX-BO
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:35:34 -0500
Received: from moutng.kundenserver.de ([212.227.17.10]:65442)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NApNN-0001Rv-Pk
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:35:34 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mrbap1) with ESMTP (Nemesis)
	id 0LejPS-1NywhR3d9C-00pxFm; Wed, 18 Nov 2009 19:35:16 +0100
From: Martin Baker <ax87438@martinb.com>
To: Tim Daly <daly@axiom-developer.org>
Date: Wed, 18 Nov 2009 18:35:17 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <4B043930.4050806@axiom-developer.org>
In-Reply-To: <4B043930.4050806@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911181835.17480.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+uzmO6RGeoRu51lGNhFLYeMwoptSa6PluVec/
	VWg2R0sVZnB+TfzQwucsCyJqN03NxkWsJOFs/aYKfusb3Cwxtt
	DocVqBpXcymdUooxWX0rA==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: Axiom-Developer <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 18:35:39 -0000

On Wednesday 18 November 2009 18:13:04 Tim Daly wrote:
> Martin,
> 
> I'm trying to install your code in Axiom.
> Do I have your permission to use text from your webpage as documentation?
> 
> Tim

Tim,

Yes, please feel free to use anything from:
http://www.euclideanspace.com/maths/standards/program/clifford/

Since I am new to literate programming I am not sure of the preferred format. 
So the web page is a bit of a mixture of User Guide, Programmers Guide, 
Requirements, test results and calls for help. 

I get the impression that the documentation in pamphlets is closer to a User 
Guide?

Since the code is currently an extension and bug fix to CliffordAlgebra it 
should not break existing applications although that might change. So I don't 
know if it should be called CliffordAlgebra or GrassmanAlgebra?

Martin





From MAILER-DAEMON Wed Nov 18 13:47:13 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NApYf-0003nu-Az
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 13:47:13 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NApYe-0003ne-41
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:47:12 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NApYY-0003mx-UE
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:47:11 -0500
Received: from [199.232.76.173] (port=37494 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NApYY-0003mu-Px
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:47:06 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:57540
	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 <daly@axiom-developer.org>) id 1NApYY-0003RA-BI
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 13:47:06 -0500
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 nAIIkx8a011016;
	Wed, 18 Nov 2009 12:47:00 -0600
Message-ID: <4B04412D.1000805@axiom-developer.org>
Date: Wed, 18 Nov 2009 13:47:09 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
References: <4B043930.4050806@axiom-developer.org>
	<200911181835.17480.ax87438@martinb.com>
In-Reply-To: <200911181835.17480.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 <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 18:47:12 -0000

Martin,

Don't worry about the literate programming aspect. I'll handle that part.
I just want to be sure that I can track your changes using your web page.

As for the package name, you can call it anything you like.
I have seen Grassmann algebras called Clifford (Geometric) Algebras
that covers some of the same topics with different names.

William Sit and someone from Rutgers had what seemed to me to be an
amazingly clever generalization. I don't know what happened with that.

Martin Baker wrote:
> On Wednesday 18 November 2009 18:13:04 Tim Daly wrote:
>   
>> Martin,
>>
>> I'm trying to install your code in Axiom.
>> Do I have your permission to use text from your webpage as documentation?
>>
>> Tim
>>     
>
> Tim,
>
> Yes, please feel free to use anything from:
> http://www.euclideanspace.com/maths/standards/program/clifford/
>
> Since I am new to literate programming I am not sure of the preferred format. 
> So the web page is a bit of a mixture of User Guide, Programmers Guide, 
> Requirements, test results and calls for help. 
>
> I get the impression that the documentation in pamphlets is closer to a User 
> Guide?
>
> Since the code is currently an extension and bug fix to CliffordAlgebra it 
> should not break existing applications although that might change. So I don't 
> know if it should be called CliffordAlgebra or GrassmanAlgebra?
>
> Martin
>
>
>   




From MAILER-DAEMON Wed Nov 18 15:48:12 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NArRk-0000sp-8O
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 15:48:12 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NArRi-0000sF-HG
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 15:48:10 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NArRd-0000q9-MV
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 15:48:09 -0500
Received: from [199.232.76.173] (port=40563 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NArRd-0000q3-Dd
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 15:48:05 -0500
Received: from vms173007pub.verizon.net ([206.46.173.7]:55123)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wyscc@sci.ccny.cuny.edu>) id 1NArRZ-0008EH-KP
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 15:48:04 -0500
Received: from sci.ccny.cuny.edu ([71.190.95.220]) by vms173007.mailsrvcs.net
	(Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008;
	32bit)) with ESMTPA id <0KTB003AYOF1BL9R@vms173007.mailsrvcs.net> for
	axiom-developer@nongnu.org; Wed, 18 Nov 2009 14:47:28 -0600 (CST)
Message-id: <4B045DDE.9300E12F@sci.ccny.cuny.edu>
Date: Wed, 18 Nov 2009 15:49:34 -0500
From: William Sit <wyscc@sci.ccny.cuny.edu>
Organization: City College of New York
X-Mailer: Mozilla 4.7 [en] (WinNT; U)
X-Accept-Language: en,zh-CN,zh-TW,zh
MIME-version: 1.0
To: Tim Daly <daly@axiom-developer.org>
References: <4B043930.4050806@axiom-developer.org>
	<200911181835.17480.ax87438@martinb.com>
	<4B04412D.1000805@axiom-developer.org>
Content-type: text/plain; charset=UTF-8
Content-transfer-encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (1203?)
Cc: Axiom-Developer <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: wyscc@sci.ccny.cuny.edu
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 20:48:10 -0000

Tim:

You wrote: "William Sit and someone from Rutgers had what
seemed to me to be an amazingly clever generalization. I
don't know what happened with that."

--
I don't think what Li Guo (Rutgers, Newark) and I proposed
is, at least mathematically speaking, anything like
"amazingly clever generalization".  Moreover, we did not
invent the concept of operads (which is I think what you are
referring to; for explanation of what an operad is, see
http://en.wikipedia.org/wiki/Operad_theory).

What you read about was from an NSF proposal that was not
funded, in which Guo and I proposed to base the algebra
hierarchy in Axiom on the idea of operads. Various algebraic
structures, like Clifford or Grassmann algebras, would then
be descendents. The operads concept is I believe closely
related to lambda-calculus and so should not be difficult to
implement in Lisp. In the grand scheme of things, it would
be also useful for the proviso project, which would require
real-time manipulation of the Axiom compiler (in a way more
involved than what Tim recently described, for example,
there has to a new embedded language to make conditionals
and indefinite iterations native).

Many years ago (in the 1980's), another researcher from
Rutgers (New Brunswick), Joseph Johnson, had a Theory of
Universes that was built on the idea of partially defined
functions as first-class objects (he did not use that term,
but I think it is a close description of the objective) and
this purely algebraic theory works across several categories
like complex analysis, algebraic geometry, differential
geometry, and differential algebraic geometry.
Unfortunately, he had a stroke and his work was not
completed. To summarize this is what is roughly Johnson's
own work: functions are just objects in which you can plug
in anyting that makes sense and then evaluate (like
physicists do, without worrying about domains of definition
and singularities explicitly). In some ways, there is a
built-in algebra for domains of definition that handles
provisos transparently and automatically.

William
-- 
William Sit
Department of Mathematics..Email: wyscc@sci.ccny.cuny.edu
City College of New York................Tel: 212-650-5179
New York, NY 10031, USA.................Fax: 212-862-0004
Home page: .......http://scisun.sci.ccny.cuny.edu/~wyscc/



From MAILER-DAEMON Wed Nov 18 16:08:50 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NArlh-0002D9-Vr
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 16:08:50 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NArlg-0002Cg-El
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:08:48 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NArlb-0002CB-4t
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:08:48 -0500
Received: from [199.232.76.173] (port=39590 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NArlb-0002C8-1d
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:08:43 -0500
Received: from mail-yw0-f142.google.com ([209.85.211.142]:48808)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1NArla-0003pQ-HN
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:08:42 -0500
Received: by ywh6 with SMTP id 6so2326833ywh.4
	for <axiom-developer@nongnu.org>; Wed, 18 Nov 2009 13:08:41 -0800 (PST)
MIME-Version: 1.0
Path: j9g2000vbp.googlegroups.com!not-for-mail
Newsgroups: comp.programming.literate
Date: Wed, 18 Nov 2009 13:08:41 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: j9g2000vbp.googlegroups.com; posting-host=72.23.235.203; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
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.129.15 with SMTP id b15mt561559ybd.50.1258578521848; Wed, 
	18 Nov 2009 13:08:41 -0800 (PST)
Message-ID: <bc8f8ca9-3fd7-4746-aae0-69009dd413f7@j9g2000vbp.googlegroups.com>
From: TimDaly <daly@axiom-developer.org>
To: axiom-developer@nongnu.org
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
Subject: [Axiom-developer] Literate Common Lisp
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 21:08:48 -0000

Using this code you can write literate common lisp programs.
Note that the literate file you create is PURE latex so a "weave"
program is not needed. This will accept noweb-style <<chunk>>=
syntax or \begin{chunk}{chunkname}....\end{chunk} latex code.

Removing the weave program and using a literate-aware
load program you can make lisp aware of this file format
without using any external tools.

Tim




;  0 AUTHOR and LICENSE
;  1 ABSTRACT
;  2 THE LATEX SUPPORT CODE
;  3 GLOBALS
;  4 THE TANGLE COMMAND
;  5 THE TANGLE FUNCTION
;  6 GCL-READ-FILE (aka read-sequence)
;  7 GCL-HASHCHUNKS
;  8 GCL-EXPAND
;  9 ISCHUNK-LATEX
; 10 ISCHUNK-NOWEB



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 0 AUTHOR and LICENSE

;;; Timothy Daly (daly@axiom-developer.org)
;;; License: Public Domain

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 1 ABSTRACT

;;; This program will extract the source code from a literate file

;;; A literate lisp file contains a mixture of latex and lisp sources
code.
;;; The file is intended to be in one of two formats, either in latex
;;; format or, for legacy reasons, in noweb format.

;;; Latex format files defines a newenvironment so that code chunks
;;; can be delimited by \begin{chunk}{name} .... \end{chunk} blocks
;;; This is supported by the following latex code.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 2 THE LATEX SUPPORT CODE

;;; The verbatim package quotes everything within its grasp and is
used to
;;; hide and quote the source code during latex formatting. The
verbatim
;;; environment is built in but the package form lets us use it in our
;;; chunk environment and it lets us change the font.
;;;
;;; \usepackage{verbatim}
;;;
;;; Make the verbatim font smaller
;;; Note that we have to temporarily change the '@' to be just a
character
;;; because the \verbatim@font name uses it as a character
;;;
;;; \chardef\atcode=\catcode`\@
;;; \catcode`\@=11
;;; \renewcommand{\verbatim@font}{\ttfamily\small}
;;; \catcode`\@=\atcode

;;; This declares a new environment named ``chunk'' which has one
;;; argument that is the name of the chunk. All code needs to live
;;; between the \begin{chunk}{name} and the \end{chunk}
;;; The ``name'' is used to define the chunk.
;;; Reuse of the same chunk name later concatenates the chunks

;;; For those of you who can't read latex this says:
;;; Make a new environment named chunk with one argument
;;; The first block is the code for the \begin{chunk}{name}
;;; The second block is the code for the \end{chunk}
;;; The % is the latex comment character

;;; We have two alternate markers, a lightweight one using dashes
;;; and a heavyweight one using the \begin and \end syntax
;;; You can choose either one by changing the comment char in column 1

;;; \newenvironment{chunk}[1]{%   we need the chunkname as an argument
;;; {\ }\newline\noindent%                    make sure we are in
column 1
;;; %{\small $\backslash{}$begin\{chunk\}\{{\bf #1}\}}% alternate
begin mark
;;; \hbox{\hskip 2.0cm}{\bf --- #1 ---}%      mark the beginning
;;; \verbatim}%                               say exactly what we see
;;; {\endverbatim%                            process \end{chunk}
;;; \par{}%                                   we add a newline
;;; \noindent{}%                              start in column 1
;;; \hbox{\hskip 2.0cm}{\bf ----------}%      mark the end
;;; %$\backslash{}$end\{chunk\}%              alternate end mark
(commented)
;;; \par%                                     and a newline
;;; \normalsize\noindent}%                    and return to the
document

;;; This declares the place where we want to expand a chunk
;;; Technically we don't need this because a getchunk must always
;;; be properly nested within a chunk and will be verbatim.

;;; \providecommand{\getchunk}[1]{%
;;; \noindent%
;;; {\small $\backslash{}$begin\{chunk\}\{{\bf #1}\}}}% mark the
reference

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 3 GLOBALS

;;; The *chunkhash* variable will hold the hash table of chunks.
;;;
;;; Every time we find a \begin{chunk}{name} ... \end{chunk} we look
;;; in this hash table. If the ``name'' is not found we add it.
;;; If the name is found, we concatentate it to the existing chunk.

(defvar *chunkhash* nil "this hash table contains the chunks found")

;;; This shows critical information for debugging purposes
(defvar *chunknoise* nil "turn this on to debug internals")


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 4 THE TANGLE COMMAND

;;;
;;; The tangle command does all of the work of extracting code.
;;; For legacy reasons we support 2 syntax forms, latex and noweb
;;;
;;; In latex form the code blocks are delimited by
;;;     \begin{chunk}{name}
;;;     ... (code for name)...
;;;     \end{chunk}
;;;
;;; and referenced by \getchunk{name} which gets replaced by the code

;;; In noweb form the code blocks are delimited by
;;;     <<name>>=
;;;     ... (code for name)...
;;;     @
;;;
;;; and referenced by <<name>> which gets replaced by the code

:;; There are several ways to invoke the tangle function.
;;;
;;; The first argument is always the file from which to extract code
;;;
;;; The second argument is the name of the chunk to extract
;;;    If the name starts with < then we assume noweb format as in:
;;;        (tangle "clweb.pamphlet" "<<name>>")  <== noweb syntax
;;;    Otherwise we assume latex format as in:
;;;        (tangle "clweb.pamphlet "name")       <== latex syntax
(default)
;;;
;;; The standard noweb chunk name is ``*'' but any name can be used.
;;;
;;; The third arument is the name of an output file:
;;;  (tangle "clweb.pamphlet" "clweb.chunk" "clweb.spadfile")



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 5 THE TANGLE FUNCTION

;;; This routine looks at the first character of the chunk name.
;;; If it is a $<$ character then we assume noweb syntax otherwise
;;; we assume latex syntax.
;;;
;;; We initialize the chunk hashtable
;;; then read the file and store each chunk
;;; then we recursively expand the ``topchunk'' to the output stream

(defun tangle (filename topchunk &optional file)
 "Extract the source code from a pamphlet file"
 (let ((noweb? (char= (schar topchunk 0) #\<)))
  (setq *chunkhash* (make-hash-table :test #'equal))
  (when *chunknoise* (format t "PASS 1~%"))
  (gcl-hashchunks (gcl-read-file filename) noweb?)
  (when *chunknoise* (format t "PASS 2~%"))
  (if (and file (stringp file))
   (with-open-file (out file :direction :output)
     (gcl-expand topchunk noweb? out))
   (gcl-expand topchunk noweb? t))))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 6 GCL-READ-FILE (aka read-sequence)

;;; This would be read-sequence in ansi common lisp. Here we read
;;; a line, push it onto a stack and then reverse the stack. The
;;; net effect is a list of strings, one per line of the file.

(defun gcl-read-file (streamname)
 "Implement read-sequence in GCL"
 (let (result)
  (with-open-file (stream (open streamname))
   (do (line eof)
      ((eq line 'done) (nreverse result))
    (multiple-value-setq (line eof) (read-line stream nil 'done))
    (unless (eq line 'done) (push line result))))))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 7 GCL-HASHCHUNKS

;;; gcl-hashchunks gathers the chunks and puts them in the hash table
;;;
;;; if we find the chunk syntax and it is a
;;;   define ==> parse the chunkname and start gathering lines onto a
stack
;;;   end    ==> push the completed list of lines into a stack of
chunks
;;;              already in the hash table
;;;   otherwise ==> if we are gathering, push the line onto the stack

;;; a hash table entry is a list of lists such as
;;; (("6" "5") ("4" "3") ("2" "1"))
;;; each of the sublists is a set of lines in reverse (stack) order
;;; each sublist is a single chunk of lines.
;;; there is a new sublist for each reuse of the same chunkname

;;; If the noweb argument is non-nil we assume that we are parsing
;;; using the noweb syntax. A nil argument implies latex syntax.

(defun gcl-hashchunks (lines noweb)
 "Gather all of the chunks and put them into a hash table"
 (let (type name chunkname oldchunks chunk gather)
  (dolist (line lines)
   (if noweb
    (multiple-value-setq (type name) (ischunk-noweb line))
    (multiple-value-setq (type name) (ischunk-latex line)))
   (cond
    ((eq type 'define)
      (when *chunknoise* (format t "DEFINE name=~a~%" name))
      (setq chunkname name)
      (setq gather t))
    ((eq type 'end)
      (when *chunknoise*
       (format t "END name= ~a chunk=~s~%" chunkname (reverse chunk)))
      (setq oldchunks (gethash chunkname *chunkhash*))
      (setf (gethash chunkname *chunkhash*) (push chunk oldchunks))
      (setq gather nil)
      (setq chunk nil))
    (gather ;; collect lines into the chunk while gather is true
      (push line chunk))))))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 8 GCL-EXPAND

;;; gcl-expand will recursively expand chunks in the hash table
;;;
;;; latex chunk names are just the chunkname itself e.g. chunkname
;;; noweb chunk names include the delimiters, e.g: <<chunkname>>

;;; a hash table entry is a list of lists such as
;;; (("6" "5") ("4" "3") ("2" "1"))
;;; so to process the chunk we reverse the main list and
;;; for each sublist we reverse the sublist and process the lines

;;; if a chunk name reference is encountered in a line we call expand
;;; recursively to expand the inner chunkname.

(defun gcl-expand (chunk noweb? file)
 "Recursively expand a chunk into the output stream"
 (let ((chunklist (gethash chunk *chunkhash*)) type name)
  (dolist (chunk (reverse chunklist))
   (dolist (line (reverse chunk))
    (if noweb?
     (multiple-value-setq (type name) (ischunk-noweb line))
     (multiple-value-setq (type name) (ischunk-latex line)))
    (if (eq type 'refer)
      (progn
       (when *chunknoise* (format t "REFER name=~a~%" name))
       (gcl-expand name noweb? file))
      (format file "~a~%" line))))))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 9 ISCHUNK-LATEX

;;; There is a built-in assumption (in the ischunk-* functions)
;;; that the chunks occur on separate lines and that the indentation
;;; of the chunk reference has no meaning.
;;;
;;; ischunk-latex  recognizes chunk names in latex convention
;;;
;;; There are 3 cases to recognize:
;;;  \begin{chunk}{thechunkname}  ==> 'define thechunkname
;;;  \end{chunk}                  ==> 'end nil
;;;  \getchunk{thechunkname}      ==> 'refer thechunkname

(defun ischunk-latex (line)
 "Find chunks delimited by latex syntax"
 (let ((mark (search "chunk" line))      ; is this a line we care
about?
       (point 0)
       name
       (beginstring "\\begin{chunk}{")   ; this is the define marker
string
       beginlength
       (endstring "\end{chunk}")         ; this is the end marker
string
       (referstring "\getchunk{")        ; this is the refer string
       referlength)
  (setq beginlength (length beginstring))
  (setq referlength (length referstring))
  (when mark
   (cond
    ((setq mark (search beginstring line)) ; recognize define
      (setq point (position #\} line :start (+ mark beginlength)))
      (cond
       ((null point) (values nil nil))
       ((= point 0)  (values nil nil))
       (t
         (setq name (subseq line (+ mark beginlength) point))
         ;(print (list 'ischunk-latex 'define name))
         (values 'define name))))
    ((setq mark (search endstring line))     ; recognize end
       ;(print (list 'ischunk-latex 'end))
       (values 'end nil))
    ((setq mark (search referstring line))         ; recognize
reference
      (setq point (position #\} line :start (+ mark referlength)))
      (cond
       ((null point) (values nil nil))
       ((= point 0)  (values nil nil))
       (t
         (setq name (subseq line (+ mark referlength) point))
         ;(print (list 'ischunk-latex 'refer name))
         (values 'refer name))))
    (t (values nil nil))))))



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 10 ISCHUNK-NOWEB

;;; ischunk-noweb recognizes chunk names using the noweb convention
;;;
;;; There are 3 cases to recognize:
;;;  <<thechunkname>>=  ==> 'define thechunkname
;;;  @                  ==> 'end nil
;;;  <<thechunkname>>   ==> 'refer thechunkname

(defun ischunk-noweb (line)
 "Find chunks delimited by noweb syntax"
 (let ((len (length line)) (mark (position #\> line)) (point 0))
  (cond
   ((and mark                    ; recognize define
         (> len (+ mark 2))
         (char= #\< (schar line 0))
         (char= #\< (schar line 1))
         (char= #\> (schar line (+ mark 1)))
         (char= #\= (schar line (+ mark 2))))
     ;(print (list 'define (subseq line 0 (+ mark 2))))
     (values 'define (subseq line 0 (+ mark 2))))
   ((and mark                    ; recognize reference
         (> len (+ mark 1))
         (char= #\> (schar line (+ mark 1))))
     (setq point (position #\< line))
     (if
      (and point
           (< point (- mark 2))
           (char= #\< (schar line (+ point 1))))
        (values 'refer (subseq line point (+ mark 2)))
        (values 'noise nil)))
    ((and (> len 0)                ; end chunk
          (char= #\@ (schar line 0)))
      (values 'end nil))
    (t (values nil nil)))))






From MAILER-DAEMON Wed Nov 18 16:24:08 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAs0W-0005QX-6c
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 16:24:08 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAs0U-0005QN-G1
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:24:06 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAs0P-0005Pj-GL
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:24:05 -0500
Received: from [199.232.76.173] (port=53451 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAs0P-0005Pg-AN
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:24:01 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:58594
	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 <daly@axiom-developer.org>) id 1NAs0O-0006Ck-Va
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 16:24:01 -0500
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 nAILNt8a005232;
	Wed, 18 Nov 2009 15:23:56 -0600
Message-ID: <4B0465F5.20705@axiom-developer.org>
Date: Wed, 18 Nov 2009 16:24:05 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: wyscc@sci.ccny.cuny.edu
References: <4B043930.4050806@axiom-developer.org>
	<200911181835.17480.ax87438@martinb.com>
	<4B04412D.1000805@axiom-developer.org>
	<4B045DDE.9300E12F@sci.ccny.cuny.edu>
In-Reply-To: <4B045DDE.9300E12F@sci.ccny.cuny.edu>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: Axiom-Developer <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 18 Nov 2009 21:24:07 -0000

Ok, so perhaps "an amazingly clever generalization" is possibly over-the-top
but the fact that it could form a basis for all of the algebra certainly 
captured
my imagination. I did not know of Operad theory but I'll add it to the 
study
queue. I still feel that what you and Li proposed was very elegant. I 
really
liked the fact that Clifford and Grassmann algebras are subcases.

Tim


William Sit wrote:
> Tim:
>
> You wrote: "William Sit and someone from Rutgers had what
> seemed to me to be an amazingly clever generalization. I
> don't know what happened with that."
>
> --
> I don't think what Li Guo (Rutgers, Newark) and I proposed
> is, at least mathematically speaking, anything like
> "amazingly clever generalization".  Moreover, we did not
> invent the concept of operads (which is I think what you are
> referring to; for explanation of what an operad is, see
> http://en.wikipedia.org/wiki/Operad_theory).
>
> What you read about was from an NSF proposal that was not
> funded, in which Guo and I proposed to base the algebra
> hierarchy in Axiom on the idea of operads. Various algebraic
> structures, like Clifford or Grassmann algebras, would then
> be descendents. The operads concept is I believe closely
> related to lambda-calculus and so should not be difficult to
> implement in Lisp. In the grand scheme of things, it would
> be also useful for the proviso project, which would require
> real-time manipulation of the Axiom compiler (in a way more
> involved than what Tim recently described, for example,
> there has to a new embedded language to make conditionals
> and indefinite iterations native).
>
> Many years ago (in the 1980's), another researcher from
> Rutgers (New Brunswick), Joseph Johnson, had a Theory of
> Universes that was built on the idea of partially defined
> functions as first-class objects (he did not use that term,
> but I think it is a close description of the objective) and
> this purely algebraic theory works across several categories
> like complex analysis, algebraic geometry, differential
> geometry, and differential algebraic geometry.
> Unfortunately, he had a stroke and his work was not
> completed. To summarize this is what is roughly Johnson's
> own work: functions are just objects in which you can plug
> in anyting that makes sense and then evaluate (like
> physicists do, without worrying about domains of definition
> and singularities explicitly). In some ways, there is a
> built-in algebra for domains of definition that handles
> provisos transparently and automatically.
>
> William
>   




From MAILER-DAEMON Wed Nov 18 23:24:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NAyZf-0006xi-FU
	for mharc-axiom-developer@gnu.org; Wed, 18 Nov 2009 23:24:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NAyZd-0006x3-2C
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 23:24:49 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NAyZY-0006vS-Bf
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 23:24:48 -0500
Received: from [199.232.76.173] (port=41126 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NAyZY-0006vJ-8N
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 23:24:44 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:54111
	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 <daly@axiom-developer.org>) id 1NAyZX-0000zB-SZ
	for axiom-developer@nongnu.org; Wed, 18 Nov 2009 23:24:44 -0500
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 nAJ4OS8a019045;
	Wed, 18 Nov 2009 22:24:29 -0600
Message-ID: <4B04C886.8030909@axiom-developer.org>
Date: Wed, 18 Nov 2009 23:24:38 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>,
	Franz Lehner <lehner@finanz.math.tu-graz.ac.at>,
	axiom-developer@nongnu.org, daly <daly@axiom-developer.org>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>	
	<4B004EED.5000807@axiom-developer.org>	
	<275293a60911151119q10eb2ebbt1fc63a2f6ff33fbf@mail.gmail.com>	
	<4B0058E3.9030800@axiom-developer.org>	
	<275293a60911151156q6d55aabbj36ea0c7cc99732b7@mail.gmail.com>	
	<4B0062B3.5060304@axiom-developer.org>
	<275293a60911151230h645191d6red19cf52c21436a9@mail.gmail.com>
In-Reply-To: <275293a60911151230h645191d6red19cf52c21436a9@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: 
Subject: [Axiom-developer] Function cache in Axiom (Memoizing)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Nov 2009 04:24:49 -0000

Bertfried, Franz,

I have been giving some thought to your need for caching.
There is a technique in lisp called memoizing which basically
creates a new hash table in a closure and then defines a function
which closes over it and wraps the original function.

So when you call
(memoize originalfunction)
then you get back a new function to replace the original.
This new function first looks in the locally created cache
and returns what it finds. If it does not have a cached value
then it calls the original function, caches the result and
returns the result. Hash tables are local to the function so
there can be no collisions with values from other domains.

I know you're not common lisp readers but knowing what it does
should make this code obvious:

(defun memoize (fn)
  (let ((cache (make-hash-table :test #'equal)))    ;local hashtable
    #'(lambda (&rest args)                                   ;function 
to return
        (multiple-value-bind (val win)                     ;win is true 
if found
          (gethash args cache)                                ;is it in 
the cache?
          (if win                                                     
              val                                                      
;yes, return cache
              (setf (gethash args cache) (apply fn args))))))) ;no. do call

In my more clever moments it might be possible to create a new function
in the API domain called memoize that could be applied to other spad
functions. This isn't one of those moments, unfortunately.

Tim




From MAILER-DAEMON Thu Nov 19 09:54:24 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NB8Ot-00042g-Be
	for mharc-axiom-developer@gnu.org; Thu, 19 Nov 2009 09:54:23 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NB8Oo-00040v-6r
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 09:54:18 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NB8Oi-0003wf-GL
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 09:54:17 -0500
Received: from [199.232.76.173] (port=33157 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NB8Oi-0003wV-6E
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 09:54:12 -0500
Received: from mail-gx0-f199.google.com ([209.85.217.199]:44149)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1NB8Oh-0006h2-Oh
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 09:54:11 -0500
Received: by gxk23 with SMTP id 23so3540016gxk.2
	for <axiom-developer@nongnu.org>; Thu, 19 Nov 2009 06:54:11 -0800 (PST)
MIME-Version: 1.0
Path: p33g2000vbn.googlegroups.com!not-for-mail
Newsgroups: comp.soft-sys.math.maple,sci.math.symbolic
Date: Thu, 19 Nov 2009 06:54:10 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: p33g2000vbn.googlegroups.com; posting-host=72.23.235.203; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
References: <k7cNm.30425$X01.7020@newsfe07.iad>
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.77.11 with SMTP id z11mt177743yba.22.1258642450922; Thu, 
	19 Nov 2009 06:54:10 -0800 (PST)
Message-ID: <34091946-4afb-4482-a165-7690e0cfb1a6@p33g2000vbn.googlegroups.com>
From: TimDaly <daly@axiom-developer.org>
To: 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)
Cc: axiom-developer@nongnu.org
Subject: [Axiom-developer] Re: A bit of statistics trivia for Maple and
	Mathematica
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Nov 2009 14:54:18 -0000

On Nov 19, 8:55=A0am, "Nasser M. Abbasi" <n...@12000.org> wrote:
> I did a count of the number of functions in Mathematica 7 the other day, =
and
> I figured I should do one like this for Maple as well. So, here are some
> stats, maybe some might find them interesting.
>
> Mathematica 7:
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> The System (i.e kernel) contains 1,920 functions.
> It comes with additional 35 standard packages that can be loaded using
> Get[];
> Total number of functions in the system and the packages combined is 2,56=
1
>
> Maple 12:
> =3D=3D=3D=3D=3D=3D=3D
> System top level commands and what is called the standard libraries: 678
> It comes with additional 116 packages that can be loaded using with();
> Total number of functions in all of the above combined is 3,902
>
> For the complete listing showing package and what functions in it in both
> system are here
>
> Maple 12http://12000.org/my_notes/maple_functions/final.html
>
> Mathematica 7http://12000.org/my_notes/compare_mathematica/mma7_functions=
/process....
>
> I do not claim the above does not contain any errors. I am just a user.
>
> May be we can get a count for some of the other CAS systems out there?
>
> Yes, I know, counting number of functions can be misleading as an indicat=
ion
> of the functionality provided by the system. As one function can be
> implemented to have many different options which ends up doing the work o=
f
> 50 other smaller functions...but still, useful to get an idea about this.
>
> Notice, this is just for functions that come with the system out of the b=
ox.
> no third-party stuff.
>
> --Nasser

Well, the question is not well-formed in Axiom terms since names are
overloaded by inheritance. So + for Integers is not the same function
as + for Polynomials. However, a count of the user-exposed functions
available from the top level can be shown by the command
   )d op
with no chosen operation. The raw counts are:
 5434 Unique functions
 3052 Unique function names (e.g. + Integer, + Poly)




From MAILER-DAEMON Thu Nov 19 14:07:05 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBCLR-0002qg-6t
	for mharc-axiom-developer@gnu.org; Thu, 19 Nov 2009 14:07:05 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBCLP-0002pq-9M
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:03 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBCLK-0002nC-JF
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:02 -0500
Received: from [199.232.76.173] (port=39695 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBCLK-0002n6-7G
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:06:58 -0500
Received: from mail-gx0-f199.google.com ([209.85.217.199]:62031)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1NBCLJ-0004uR-Rn
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:06:57 -0500
Received: by gxk23 with SMTP id 23so3871731gxk.2
	for <axiom-developer@nongnu.org>; Thu, 19 Nov 2009 11:06:57 -0800 (PST)
MIME-Version: 1.0
Path: b2g2000yqi.googlegroups.com!not-for-mail
Newsgroups: comp.soft-sys.math.maple,sci.math.symbolic
Date: Thu, 19 Nov 2009 11:06:57 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: b2g2000yqi.googlegroups.com; posting-host=72.23.235.203; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.235.203
References: <k7cNm.30425$X01.7020@newsfe07.iad>
	<de393bf9-cbb7-4138-bced-80a35753264a@b25g2000prb.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.56.11 with SMTP id e11mt490324yba.32.1258657617325; Thu, 
	19 Nov 2009 11:06:57 -0800 (PST)
Message-ID: <9dcdad91-9b60-4b59-b239-619124ef00ce@b2g2000yqi.googlegroups.com>
From: TimDaly <daly@axiom-developer.org>
To: 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)
Cc: axiom-developer@nongnu.org
Subject: [Axiom-developer] Re: A bit of statistics trivia for Maple and
	Mathematica
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Nov 2009 19:07:03 -0000

On Nov 19, 1:55=A0pm, Roman Pearce <rpear...@gmail.com> wrote:
> On Nov 19, 5:55=A0am, "Nasser M. Abbasi" <n...@12000.org> wrote:
>
> > I did a count of the number of functions in Mathematica 7 the other day=
, and
> > I figured I should do one like this for Maple as well.
> ...
> > Yes, I know, counting number of functions can be misleading as an indic=
ation
> > of the functionality provided by the system. As one function can be
> > implemented to have many different options which ends up doing the work=
 of
> > 50 other smaller functions...but still, useful to get an idea about thi=
s.
>
> My knowledge of both is limited, but Mathematica does seem to put a
> lot of its core functionality into options. =A0For example, the Groebner
> Walk algorithm is an option to the GroebnerBasis command (not sure
> about FGLM). =A0Maple has this as well, but there are also separate
> commands to run the FGLM or Groebner walk algorithms, assuming the
> input is a Groebner basis. =A0I prefer this approach, but the option
> routine is not bad either because people complain all the time that
> Maple has too many commands :)
>
> What I would love to see is a side-by-side comparison of algorithms,
> organized into different domains, with some kind of subjective
> rankings for generality and speed. =A0Call it "the world's longest
> flamewar" :) =A0It would be useful and interesting though.

A side-by-side comparison of algorithms would be excellent.
Even a function-to-function rosetta-stone translation is great.
There are lots of fascinating things to be found.

I have compared the answers to integration for Axiom, Maple,
MMA, and Maxima on the issue of branch cuts. Curiously it
seems that Axiom and Maple make the same choice and
MMA and Maxima make the same choice, different from the
Axiom/Maple choice. Since the choice is somewhat arbitrary
it would be nice to have some flame in this area. In fact,
there seems to be no reason why this can't be a dynamic
choice.

Sage is claiming an effort to reimplement some of the
integration algorithms. I do not know in which camp they
will end up but hopefully it won't be a third camp.

How would such an effort be organized?

Tim



From MAILER-DAEMON Thu Nov 19 14:07:32 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBCLs-00031F-J8
	for mharc-axiom-developer@gnu.org; Thu, 19 Nov 2009 14:07:32 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBCLr-000314-Fp
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:31 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBCLo-0002zr-0f
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:31 -0500
Received: from [199.232.76.173] (port=39712 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBCLn-0002zh-6V
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:27 -0500
Received: from mail-bw0-f212.google.com ([209.85.218.212]:57154)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bertfried.fauser@googlemail.com>) id 1NBCLm-0004yt-Pr
	for axiom-developer@nongnu.org; Thu, 19 Nov 2009 14:07:26 -0500
Received: by bwz4 with SMTP id 4so3065699bwz.2
	for <axiom-developer@nongnu.org>; Thu, 19 Nov 2009 11:07:25 -0800 (PST)
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=DPrsGuWm7iU098DAXRwCvHTFzQhmCQbffod2bDIP4fw=;
	b=s116b2qSmSkT0SFxPC/OOyQ1eN1EJMw7WYFuF/VSC/lvYffmNYHgcXt3hHiBqRkeyT
	GgCa3/vH16slHibV29M4e5yjGEOm7z+68yprd2KkL4oKMUuI+vIP7FOtIxmsMYJf+Aov
	cI3Dh+r+o31oWw9v6ZODvu4FJRDTwz9CMYN2I=
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=kb8IIbhaWvH1lOpbvEy4WgIhAEbBn3xppm5baLzc8/JDpRr6BJwCroGwKM1sZBwX6M
	0Pt5dSr9bkz+8mvzC06hI2qQp/Vozp85G/CMJYXMbM6j4AMtyKsNXsIX799oS/0FFw4y
	kWPORg3avxuqFMQtZaJSGGbVbZeWq78wfYGbw=
MIME-Version: 1.0
Sender: bertfried.fauser@googlemail.com
Received: by 10.204.152.151 with SMTP id g23mr374196bkw.148.1258657645118; 
	Thu, 19 Nov 2009 11:07:25 -0800 (PST)
In-Reply-To: <4B04C886.8030909@axiom-developer.org>
References: <275293a60911020911s1d805c91vd254e436b38c4916@mail.gmail.com>
	<4B004EED.5000807@axiom-developer.org>
	<275293a60911151119q10eb2ebbt1fc63a2f6ff33fbf@mail.gmail.com>
	<4B0058E3.9030800@axiom-developer.org>
	<275293a60911151156q6d55aabbj36ea0c7cc99732b7@mail.gmail.com>
	<4B0062B3.5060304@axiom-developer.org>
	<275293a60911151230h645191d6red19cf52c21436a9@mail.gmail.com>
	<4B04C886.8030909@axiom-developer.org>
Date: Thu, 19 Nov 2009 19:07:25 +0000
X-Google-Sender-Auth: 244c108ea01f4208
Message-ID: <275293a60911191107n74e7c6bdq77a5761b63885ec5@mail.gmail.com>
From: Bertfried Fauser <Bertfried.Fauser@uni-konstanz.de>
To: Tim Daly <daly@axiom-developer.org>
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, Franz Lehner <lehner@finanz.math.tu-graz.ac.at>
Subject: [Axiom-developer] Re: Function cache in Axiom (Memoizing)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Nov 2009 19:07:31 -0000

Dear Tim,

thank you for the lisp code, I will store it and try it as soon as I
have functioning
code for the symmetric functions.

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
<http://www.uni-konstanz.de>
% contact |->    URL : http://clifford.physik.uni-konstanz.de/~fauser/
%              Phone : +49 1520 9874517



From MAILER-DAEMON Fri Nov 20 12:10:45 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBX0P-0006MN-4G
	for mharc-axiom-developer@gnu.org; Fri, 20 Nov 2009 12:10:45 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBX0N-0006JE-KB
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 12:10:43 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBX0I-0006Am-Di
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 12:10:42 -0500
Received: from [199.232.76.173] (port=33160 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBX0I-0006AY-1l
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 12:10:38 -0500
Received: from moutng.kundenserver.de ([212.227.17.9]:64119)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NBX0H-0001md-Fc
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 12:10:37 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mrbap2) with ESMTP (Nemesis)
	id 0La2FZ-1Nummt3Rkr-00lhpE; Fri, 20 Nov 2009 18:10:34 +0100
From: Martin Baker <ax87438@martinb.com>
To: "Axiom-Developer" <axiom-developer@nongnu.org>
Date: Fri, 20 Nov 2009 17:10:28 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <4B043930.4050806@axiom-developer.org>
	<200911181835.17480.ax87438@martinb.com>
	<4B04412D.1000805@axiom-developer.org>
In-Reply-To: <4B04412D.1000805@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Message-Id: <200911201710.28380.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1/g3RKVHsY5ELEfvCyNc9gP54Q/ABTZzJCyzvW
	dcpbR/kO4knr92FMkocQaBqHcHY7y61nCN4r3FC2TjRDBkoOcZ
	IT4ksOEUYeo7ubT+0To6Q==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Subject: [Axiom-developer] Re: grassman.spad
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Nov 2009 17:10:44 -0000

Bertfried,

Thank you for your reply.

I will correct the spelling of Grassmann (although without using =DF).

I have been thinking about the naming of the domain. I think it would be=20
better to use the name 'Multivector', which seems to me to represent what i=
t=20
is, then the names Grassmann and Clifford can be reserved for the=20
multiplication types. What do you think? If you agree I will change it now.

No need to apologise about feature requests, I will keep adding to the list=
 of=20
requirements on the webpage here:
http://www.euclideanspace.com/maths/standards/program/clifford/

I don't know how efficiently sparse multivectors will be stored, when an=20
instance of the multivector is created a PrimitiveArray of instances of a=20
field is created. The length of this PrimitiveArray is fixed n^2 so that th=
e=20
position in the array indicates the type. I must admit that I have not look=
ed=20
at PrimitiveArray to see what happens internally when a given index is not=
=20
set, but when a index that was not specifically set is then read then zero =
is=20
returned. I therefore assume that it takes space with instances of the fiel=
d=20
set to zero.

I can think of a number of alternative designs, for instance, we could crea=
te=20
2 domains:
Multivector - contains multiple MultivectorElements, just the non-zero,=20
position not significant.
MultivectorElement - contains one instance of a field and an integer to=20
indicate the bases.

Or another design could be:
Multivector - contains just the non-zero MultivectorGrades, position not=20
significant.
MultivectorGrade - contains one instance of a grade, for instance a complet=
e=20
vector or a complete bivector and so on.

On the requirement for symbolic indexes, I can't see how this can be done i=
n=20
the current sort of design, which uses algorithms where the presence of e1,=
=20
e2, etc. are indicated by bits in a word? Would this require an approach mo=
re=20
like an equation solver? Where it is given a set of rules, rather than a fi=
xed=20
algorithm?

I think the whole design may need to be changed in the future but I don't=20
think I have the expertise to do that yet. I would be interested to know th=
e=20
sort of top level design approach you took to the maple package or your=20
current Hopf algebra work?

Martin



From MAILER-DAEMON Fri Nov 20 18:17:16 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBcj5-0002WC-TV
	for mharc-axiom-developer@gnu.org; Fri, 20 Nov 2009 18:17:15 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBcj3-0002UU-Vw
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 18:17:14 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBciz-0002PR-Fl
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 18:17:13 -0500
Received: from [199.232.76.173] (port=43665 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBciz-0002PK-96
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 18:17:09 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:45516
	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 <daly@axiom-developer.org>) id 1NBciy-0002qO-Vt
	for axiom-developer@nongnu.org; Fri, 20 Nov 2009 18:17:09 -0500
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 nAKNH68a003217;
	Fri, 20 Nov 2009 17:17:06 -0600
Message-ID: <4B072385.4060900@axiom-developer.org>
Date: Fri, 20 Nov 2009 18:17:25 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org, daly <daly@axiom-developer.org>
References: <4B00D674.5090609@axiom-developer.org>	
	<20091117034615.GA20998@fibrous.localdomain>	
	<4B023423.9080809@axiom-developer.org>	
	<af0420cd0911171254i6527517exdc6446afac86b91c@mail.gmail.com>	
	<4B0330A4.5040902@axiom-developer.org>
	<af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>
In-Reply-To: <af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; 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] Embedding Axiom (Hickey and fold/unfold)
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Nov 2009 23:17:14 -0000

There is an excellent talk by Rich Hickey about modelling time, 
identity, values,
perception, state, memory, etc.

http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey


I think it adds quite a bit to the Embedded Axiom idea set. If we kept 
immutable
intermediate states we could easily run a  computation forward and backward.

We can combine that immutable idea with the fold/unfold idea from functional
programming. The idea is that you can do program proofs by expanding
a definition by unfolding and contracting a definition by folding.

http://www.cs.nott.ac.uk/~gmh/bib.html#semantics

The analog of this idea, at least as I perceive it, is the same as doing
operations on both sides of an equation. If we want to prove things
about a computation we could work backward from the result by
unfolding to some intermediate point, and forward from the input by
unfolding to the same intermediate point. If they match then there is
a fold/unfold path between them.

Tim




From MAILER-DAEMON Sat Nov 21 04:56:57 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBmi8-0004bN-VI
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 04:56:57 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBmi6-0004Zx-Pc
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 04:56:54 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBmi2-0004VY-44
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 04:56:54 -0500
Received: from [199.232.76.173] (port=46615 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBmi1-0004VV-TX
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 04:56:49 -0500
Received: from moutng.kundenserver.de ([212.227.126.187]:64809)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NBmi1-0007bm-4Y
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 04:56:49 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis)
	id 0MBWuQ-1NIuFt1oIA-00Ac2r; Sat, 21 Nov 2009 10:56:47 +0100
From: Martin Baker <ax87438@martinb.com>
To: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] Embedding Axiom (Hickey and fold/unfold)
Date: Sat, 21 Nov 2009 09:56:42 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <4B00D674.5090609@axiom-developer.org>
	<af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>
	<4B072385.4060900@axiom-developer.org>
In-Reply-To: <4B072385.4060900@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911210956.42858.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX186e2jy5Ho8w8yKrklAOW8vUWZaXemS5wO/8Ol
	N/0QC1qi1lcsFEigKidAxtPvBJKd23Iy82D+K0mGKPmUyk8nmI
	eLHqJWM3mFd43bFfQBVdA==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Nov 2009 09:56:55 -0000

On Friday 20 November 2009 23:17:25 Tim Daly wrote:
> There is an excellent talk by Rich Hickey about modelling time, 
> identity, values,
> perception, state, memory, etc.

Tim,

While I was watching this talk I was wondering about the difference between 
the mainstream computing issues verses mathematical computing issues.

I get the impression that the mainstream issue, from this talk, is about how 
to run multiple algorithms in parallel?

If we are trying to solve a set of equations, is there a natural parallelism ? 
For the reasons discussed in the talk, should a rule based method be preferred 
wherever possible and explicit coding of algorithms be discouraged?

Martin Baker





From MAILER-DAEMON Sat Nov 21 11:58:50 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBtIP-0005z7-TM
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 11:58:49 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBtIM-0005yG-QO
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 11:58:46 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBtII-0005xR-91
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 11:58:46 -0500
Received: from [199.232.76.173] (port=39558 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBtII-0005xO-2L
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 11:58:42 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:48565
	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 <daly@axiom-developer.org>) id 1NBtIH-0005bD-Iw
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 11:58:41 -0500
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 nALGwa8a029827;
	Sat, 21 Nov 2009 10:58:37 -0600
Message-ID: <4B081C4E.6040308@axiom-developer.org>
Date: Sat, 21 Nov 2009 11:58:54 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
References: <4B00D674.5090609@axiom-developer.org>	<af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>	<4B072385.4060900@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
In-Reply-To: <200911210956.42858.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
Subject: [Axiom-developer] Embedding Axiom (Hickey and fold/unfold) and rule
	based programming
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Nov 2009 16:58:47 -0000

Martin Baker wrote:
> On Friday 20 November 2009 23:17:25 Tim Daly wrote:
>   
>> There is an excellent talk by Rich Hickey about modelling time, 
>> identity, values,
>> perception, state, memory, etc.
>>     
>
> Tim,
>
> While I was watching this talk I was wondering about the difference between 
> the mainstream computing issues verses mathematical computing issues.
>
> I get the impression that the mainstream issue, from this talk, is about how 
> to run multiple algorithms in parallel?
>
> If we are trying to solve a set of equations, is there a natural parallelism ? 
> For the reasons discussed in the talk, should a rule based method be preferred 
> wherever possible and explicit coding of algorithms be discouraged?
>
> Martin Baker
>
>   
Martin,

I don't know but I have some thoughts on the subject.

The first comment is that I have deep experience in rule based 
programming (I was a team
member on a commercial rule-based programming product at IBM, we also 
built a huge
expert system (FAME) on a combination rule-based/knowedge-rep system I 
built (KROPS),
one of my two thesis topics was on the subject of rules, I use them in 
work on our current
Function Extraction project, etc)

I fear rule-based programming. It has the siren-song subtle appeal of 
being very easy
to state "WHEN this DO thisthing". When you get into a problem, the 
solution is to add
another rule to solve that particular case. Ultimately, you end up in a 
situation like the
dinosaur in the tarpit... he can lift any leg but he cannot get out of 
the pit.

Rule based systems are subject to two general classes of failure. Either 
they simply
stop because no rule applies or they go into an infinite loop because a 
prior state repeats.
I do not know of a general way to verify and validate a rule based 
program (which was
the subject of the thesis). In fact, they are extremely hard to debug. 
You can't use
"print" statements or debuggers. Tracing is a swamp of output. Every 
rule could
be perfectly correct and the program is still wrong (witness the dinosaur).

Worse yet, the whole system working system can become unhinged by the 
addition of
just one "obviously correct" rule.

The second problem with rule-based programming is that they are not 
generally designed
to be "theory-aware". For instance, you can write rules in Axiom to do 
simplification by
pattern matching. You could write rules such as "divide each side by a 
constant". The
problem is "what if the constant is zero?".... Ok, we can fix that with 
a rule... But now
someone wants to use your simplification ruleset in a different domain 
(e.g. a domain
which is non-associative for instance)... where does your ruleset assume 
associative?
How does that assumption affect other rules? What if I want to apply 
"obviously correct"
formulas (e.g. x = sqrt(x^2))? But is this correct if x=-1?  
Theory-aware systems need
to be built on a consistent world based on consistent axioms. This kind 
of effort feels like a
"Principia" approach which Godel undermined.

I don't think rules will operate correctly in parallel either (although 
I have not tried).
For rules to operate effectively they need to perceive (to use Hickey's 
term) the world
in some consistent state. But a parallel system will undermine that 
assumption. A
parallel dinosaur could be in a state with all of its feet out of the 
tar since each process
is "lifting" one foot, (the dinosaur effectively "jumped") but the 
problem isn't solved.

Hickey is advocating pure functions which move from state to state, 
which look a lot
like rules but they can be much more theory aware and they can be 
applied in a
procedural way.

Curiously, Hickey does not define functions on Identities, claiming
they are an emergent property of states. But we do reason about 
Identities also
(they are meta-states, I guess). The river may not be the same from 
moment to
moment except before the river flows and after the river dries up. The 
Identity of
a river has a lifetime above and beyond its states.


Tim




From MAILER-DAEMON Sat Nov 21 12:00:18 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBtJo-0006Vd-Io
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 12:00:16 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBtJl-0006Un-Gi
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:00:13 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBtJg-0006St-Ao
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:00:12 -0500
Received: from [199.232.76.173] (port=39601 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBtJf-0006Sk-TM
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:00:08 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:50988
	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 <daly@axiom-developer.org>) id 1NBtJf-0005p0-3m
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:00:07 -0500
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 nALH028a030199;
	Sat, 21 Nov 2009 11:00:02 -0600
Message-ID: <4B081CA5.5040209@axiom-developer.org>
Date: Sat, 21 Nov 2009 12:00:21 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
References: <4B00D674.5090609@axiom-developer.org>	<af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>	<4B072385.4060900@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
In-Reply-To: <200911210956.42858.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
Subject: [Axiom-developer] Embedding Axiom (Hickey and fold/unfold) and
	Reifying time
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Nov 2009 17:00:14 -0000

Martin Baker wrote:
> On Friday 20 November 2009 23:17:25 Tim Daly wrote:
>   
>> There is an excellent talk by Rich Hickey about modelling time, 
>> identity, values,
>> perception, state, memory, etc.
>>     
>
> Tim,
>
> While I was watching this talk I was wondering about the difference between 
> the mainstream computing issues verses mathematical computing issues.
>
> I get the impression that the mainstream issue, from this talk, is about how 
> to run multiple algorithms in parallel?
>
> If we are trying to solve a set of equations, is there a natural parallelism ? 
> For the reasons discussed in the talk, should a rule based method be preferred 
> wherever possible and explicit coding of algorithms be discouraged?
>
> Martin Baker
>
>   
Reifying time...

All of that being said, I think that there is a lot to learn from 
Hickey. There is certainly
a lot to be gained by writing in a functional programming style (which 
Axiom is not
using internally now).

I found his idea of reifying time interesting. Time, according to 
Hickey, is not a flow
but an ordering on a set so you cannot measure A-B but you can decide A<B.
I would use this "reify time" idea and combine it with locking 
primitives. The lock
variable could be a timestamp. That would be unique and it would enable 
me to
know if A was changed before B. Access to the system clock could be made
unique so that no two timestamps can be equal unless they were performed by
the same process.

I really love his immutable data structures work. I am sorely tempted to 
rewrite some
of the internals to use these.





From MAILER-DAEMON Sat Nov 21 12:15:28 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NBtYW-0007e9-Kk
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 12:15:28 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NBtYW-0007dk-0S
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:15:28 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NBtYR-0007br-5b
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:15:27 -0500
Received: from [199.232.76.173] (port=50969 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NBtYR-0007bl-1G
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:15:23 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:52068
	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 <daly@axiom-developer.org>) id 1NBtYQ-00088O-96
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 12:15:22 -0500
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 nALHFI8a002759;
	Sat, 21 Nov 2009 11:15:18 -0600
Message-ID: <4B082039.1020300@axiom-developer.org>
Date: Sat, 21 Nov 2009 12:15:37 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
References: <4B00D674.5090609@axiom-developer.org>	<af0420cd0911171610p5cf35bb7kecdfc8e4353838c7@mail.gmail.com>	<4B072385.4060900@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
In-Reply-To: <200911210956.42858.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
Subject: [Axiom-developer] Embedding Axiom (Hickey and fold/unfold) Folding
	and generalization
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Nov 2009 17:15:28 -0000

Martin Baker wrote:
> On Friday 20 November 2009 23:17:25 Tim Daly wrote:
>   
>> There is an excellent talk by Rich Hickey about modelling time, 
>> identity, values,
>> perception, state, memory, etc.
>>     
>
> Tim,
>
> While I was watching this talk I was wondering about the difference between 
> the mainstream computing issues verses mathematical computing issues.
>
> I get the impression that the mainstream issue, from this talk, is about how 
> to run multiple algorithms in parallel?
>
> If we are trying to solve a set of equations, is there a natural parallelism ? 
> For the reasons discussed in the talk, should a rule based method be preferred 
> wherever possible and explicit coding of algorithms be discouraged?
>
> Martin Baker
>
>   

Folding and Unfolding via pattern matching....

On the second point, which is the subject of folding and unfolding I 
think that rules
would be very useful here. Consider two statements (function calls) that 
you would
like to prove are equal. The suggestion is to unfold them both by doing 
substitution
of definitions until they are both "the same".... where "the same" means 
that they
exhibit the same pattern with substitution e.g.

  (x^2) == (y^2) where x->y

If two functions unfold to the same pattern then we can re-fold them 
into each other.

I think that this might be a key step in Axiom's development. I am 
trying to discover
a way to prove Axiom programs correct. In particular, it would be good 
to prove
that the operations in the domain Group actually follow from the "group 
axioms".
Can mathematical group axioms be unfolded into domain Group operations? Can
ACL2 be used to prove that each unfolding step is correct? (insert PhD 
students here).


The really clever trick is to do folding without knowing anything. This 
would be a
form of "generalization". You are trying to find a way to recognize that 
a particular
sequence of code "is a SORT routine", for instance. After all, if you 
can recognize
a "SWAP" sequence, a "CONDITIONAL" sequence, and an "ITERATION"
sequence, can you know that

  SORT == ITERATED CONDITIONAL SWAP

This is a subject of a paper I'm going to present at HICSS in January.
An early video of the project ideas is at:
http://daly.axiom-developer.org/CONCORDIA.html

(The talk is in the context of function extraction and malware but the 
ideas are
motivated by my "prove computational math" struggles)

Generalization by folding would amount to finding the formula from an 
instance.
The formula has much less information than the instances of the formula 
so all types
of generalization involve deliberately losing information.

It is not possible (well...caveats) to generalize from a single 
instance. The single
instance can be generalized in many directions. Multiple instances give 
a way to
generalize by comparing the instances to their fit in the generalized 
pattern.

Tim





From MAILER-DAEMON Sat Nov 21 17:45:00 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NByhQ-0005cm-9b
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 17:45:00 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NByhO-0005cR-Up
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 17:44:59 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NByhJ-0005aX-P2
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 17:44:58 -0500
Received: from [199.232.76.173] (port=39809 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NByhJ-0005aU-Lh
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 17:44:53 -0500
Received: from moutng.kundenserver.de ([212.227.126.186]:55054)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NByhJ-0007NB-1K
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 17:44:53 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis)
	id 0Mh8jt-1NYCNk1kNF-00M9bs; Sat, 21 Nov 2009 23:44:49 +0100
From: Martin Baker <ax87438@martinb.com>
To: Tim Daly <daly@axiom-developer.org>
Date: Sat, 21 Nov 2009 22:44:44 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <4B00D674.5090609@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
	<4B082039.1020300@axiom-developer.org>
In-Reply-To: <4B082039.1020300@axiom-developer.org>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Message-Id: <200911212244.44551.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX19Mh8+2ZSbnF+n1zas9VVqEZr9Cfr2r0VA6bPs
	/kt2rzBY+PchX30YqExX5gR0Q0yCSUWw16VMbLj3yN/gYm0t0y
	dFdeiFvfxELEyfTOiuVsg==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org
Subject: [Axiom-developer] Re: Embedding Axiom (Hickey and fold/unfold)
	Folding and generalization
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Nov 2009 22:44:59 -0000

Tim,

Thank you for these replies, I am learning a lot here.

I think it helps to get a wider perspective.

Part of what prompted my question is when I was thinking about how to=20
implement the exterior product I thought about possible options, for instan=
ce=20
rules:

<e1, e2=E2=80=A6en | ei/\ei=3D0, ei/\ej=3D -ej/\ei>

or an algorithm:

And(b1::SINT,b2::SINT) ~=3D 0 =3D> z
c :=3D c1 * c2
bz :=3D Or(b1::SINT,b2::SINT)
for i in 0..n-1 | bit?(b1,i) repeat
  k :=3D 0
  for j in i+1..n-1 | bit?(b1, j) repeat k :=3D k+1
  for j in 0..i-1   | bit?(bz, j) repeat k :=3D k+1
  if odd? k then c :=3D -c
  z.bz :=3D z.bz + c
z

or a multiplication table:

0      e1^e2
=2De1^e2 0

Out of these options, the rules just seems to be operating at a higher leve=
l?=20
In that it would seem relatively easy to translate from the rules to the=20
algorithm but a lot more difficult to go from the algorithm to the rules=20
(could Concordia do it?).  Also, unlike the algorithm, there is no need to=
=20
introduce the concept of time. I wonder which type would be the best for=20
making a test for equivalence?

I take your point that the rules are not necessarily better for parallel=20
processing and they don't scale up very well, I wonder if there would be so=
me=20
way to get the best of all these approaches? lots of small rule bases or=20
something like that?

Another point is that there are no 'side effects' to this function but we a=
re=20
trying to add one in by caching the multiplication table!

I don't have any answers but its interesting to speculate,

thanks,

Martin



From MAILER-DAEMON Sat Nov 21 21:08:05 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NC1rx-0004Cs-37
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 21:08:05 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NC1rv-0004Bn-K2
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:08:03 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NC1rq-0004AQ-1v
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:08:02 -0500
Received: from [199.232.76.173] (port=38876 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NC1rp-0004AN-SB
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:07:57 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:55255
	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 <daly@axiom-developer.org>) id 1NC1rp-0007X7-GS
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:07:57 -0500
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 nAM27m8a019536;
	Sat, 21 Nov 2009 20:07:49 -0600
Message-ID: <4B089CD1.6060400@axiom-developer.org>
Date: Sat, 21 Nov 2009 21:07:13 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>
References: <4B00D674.5090609@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
	<4B082039.1020300@axiom-developer.org>
	<200911212244.44551.ax87438@martinb.com>
In-Reply-To: <200911212244.44551.ax87438@martinb.com>
Content-Type: text/plain; charset=UTF-8; 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
Subject: [Axiom-developer] Re: Embedding Axiom (Hickey and fold/unfold)
	Folding and generalization
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 22 Nov 2009 02:08:03 -0000

Martin Baker wrote:
> Tim,
>
> Thank you for these replies, I am learning a lot here.
>   

Yeah, Hickey is really an insightful chap. He sets the bar pretty high.

Many centuries ago I had to make the transition from using goto in general
to using goto in a structured form (Fortran did not have an else clause 
on If).
The hard part was the mental shift needed to do "structured programming" 
since
I had to discover the correct, disciplined control structures myself. 
There were
no textbooks as it was a "new" idea that unstructured goto was bad.

Now Hickey basically said "do not use loops". Hmmm... that's gonna be 
another
stretch, although I see why he suggests it and I agree with him. We have 
to learn to
use map/fold/take/etc. in disciplined ways to process Axiom's internal data.

And we need "reconsing" versions that return immutable but shared copies 
of the
list/vector/struct/etc., with versions that (per On Lisp) embed properly.

And we need to write in pure function form (not a stretch because I try to
do this now).

And we need (per SICP) to write embedded layering, fully factored forms.

I think all of these ideas will greatly benefit Axiom's internal 
restructuring,
including possibly making a parallel implementation much easier to achieve.
If nothing else at least the "coupling" will drop considerably as we 
stop using
special variables for maintaining mutable global state.

Tim




From MAILER-DAEMON Sat Nov 21 21:09:30 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NC1tK-00052M-Ab
	for mharc-axiom-developer@gnu.org; Sat, 21 Nov 2009 21:09:30 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NC1tI-00052H-Hj
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:09:28 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NC1tC-0004z8-Vy
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:09:27 -0500
Received: from [199.232.76.173] (port=38889 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NC1tC-0004yk-Q9
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:09:22 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:55958
	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 <daly@axiom-developer.org>) id 1NC1tC-0007go-6L
	for axiom-developer@nongnu.org; Sat, 21 Nov 2009 21:09:22 -0500
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 nAM29G8a019897;
	Sat, 21 Nov 2009 20:09:16 -0600
Message-ID: <4B089D28.2070104@axiom-developer.org>
Date: Sat, 21 Nov 2009 21:08:40 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>, axiom-developer@nongnu.org,
	"daly@axiom-developer.org >> daly" <daly@axiom-developer.org>
References: <4B00D674.5090609@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
	<4B082039.1020300@axiom-developer.org>
	<200911212244.44551.ax87438@martinb.com>
In-Reply-To: <200911212244.44551.ax87438@martinb.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by axiom-developer.org id
	nAM29G8a019897
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Re: Embedding Axiom (Hickey and fold/unfold)
	Folding and generalization
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 22 Nov 2009 02:09:29 -0000

Martin Baker wrote:
> I think it helps to get a wider perspective.
>
> Part of what prompted my question is when I was thinking about how to=20
> implement the exterior product I thought about possible options, for in=
stance=20
> rules:
>
> <e1, e2=E2=80=A6en | ei/\ei=3D0, ei/\ej=3D -ej/\ei>
>
> or an algorithm:
>
> And(b1::SINT,b2::SINT) ~=3D 0 =3D> z
> c :=3D c1 * c2
> bz :=3D Or(b1::SINT,b2::SINT)
> for i in 0..n-1 | bit?(b1,i) repeat
>   k :=3D 0
>   for j in i+1..n-1 | bit?(b1, j) repeat k :=3D k+1
>   for j in 0..i-1   | bit?(bz, j) repeat k :=3D k+1
>   if odd? k then c :=3D -c
>   z.bz :=3D z.bz + c
> z
>
> or a multiplication table:
>
> 0      e1^e2
> -e1^e2 0
>
> Out of these options, the rules just seems to be operating at a higher =
level?=20
> In that it would seem relatively easy to translate from the rules to th=
e=20
> algorithm but a lot more difficult to go from the algorithm to the rule=
s=20
> (could Concordia do it?).  Also, unlike the algorithm, there is no need=
 to=20
> introduce the concept of time. I wonder which type would be the best fo=
r=20
> making a test for equivalence?
>
> I take your point that the rules are not necessarily better for paralle=
l=20
> processing and they don't scale up very well, I wonder if there would b=
e some=20
> way to get the best of all these approaches? lots of small rule bases o=
r=20
> something like that?
>
> Another point is that there are no 'side effects' to this function but =
we are=20
> trying to add one in by caching the multiplication table!
>
> I don't have any answers but its interesting to speculate,
>  =20

I like the declarative form a lot, which would fit rules rather well. I=20
think you understand
my feelings on rules being non-algebraic, though, and I'd advise against =
it.

The table form could get very large (unless you only cache computed=20
entries).
The table form would also require some matching since "e1" could be=20
something
more complex than a symbol.

I think that the procedural form gives you the most flexible version sinc=
e
(a) it fits into the spad coding scheme and (b) allows you to manipulate =
the
internal representations in efficient ways that can "violate causality"=20
within
the function without being visible to the user. It also gives you the=20
opportunity
to coerce to more specific forms (like linear algebra forms) in special=20
cases.

In addition, the coding form will force you to be explicit about the=20
categories
that need to be defined. I think one of the key strengths of Axiom is=20
the organization
of the system into categories. If you started with Operads (per William=20
Sit's comments)
as categories and derived your Grassmann/Clifford/Octonion forms in a=20
disciplined
way then everyone wins. I will admit that this is VERY hard. I tried to=20
do this for
the Infinite Group Theory area and failed. (Hardly a surprise since I'm=20
not an
Infinite Group Theorist by any stretch of the imagination.)

William may have some useful insights here as he is a mathematician and a=
n
Axiom algebra author.

Tim




From MAILER-DAEMON Sun Nov 22 16:23:54 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NCJuU-0003d8-3Y
	for mharc-axiom-developer@gnu.org; Sun, 22 Nov 2009 16:23:54 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NCJuS-0003Zz-3p
	for axiom-developer@nongnu.org; Sun, 22 Nov 2009 16:23:52 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NCJuM-0003T9-Up
	for Axiom-developer@nongnu.org; Sun, 22 Nov 2009 16:23:51 -0500
Received: from [199.232.76.173] (port=33950 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NCJuM-0003Sw-S1
	for Axiom-developer@nongnu.org; Sun, 22 Nov 2009 16:23:46 -0500
Received: from mail-bw0-f212.google.com ([209.85.218.212]:64685)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bertfried.fauser@googlemail.com>) id 1NCJuM-0000US-EM
	for Axiom-developer@nongnu.org; Sun, 22 Nov 2009 16:23:46 -0500
Received: by bwz4 with SMTP id 4so5087459bwz.2
	for <Axiom-developer@nongnu.org>; Sun, 22 Nov 2009 13:23:44 -0800 (PST)
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=WTbkrje/nYwZ3NsNBg87p3rMLUKTFSjISYUSJzC5RuM=;
	b=x0SvWBiHBXpFJf18tV7mvDuFzYEHDWAYdD066I8wzBPDwVK0vpencw0VSolTwtv9AO
	MIeiAFQ201TGqiPdp2Z9bYQfMAtsUc6rDTj1/c8tp3gsQ6EgiZJUaiZ6CtUhrQZx88bu
	JXFZVnpIiBzRotIs1Wq9NhU5UkSk5851NkMAI=
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=bG/i8OSotWweW3HbOyTF3FpdQOvW9phS/pFCyDsjp770ofZbTsJ18gDcBjFj866Mxm
	oNL+uYGFep6OauvCwNM10shVZLOrVgR1p3MbdKqcST6Mqlv6e+gdMOHFJ6TVXP5FBgSZ
	Jt6u7MFdAvkQt2uynV14+RRNXqqp6mLlpA2W0=
MIME-Version: 1.0
Received: by 10.204.10.2 with SMTP id n2mr3789242bkn.91.1258925024777; Sun, 22 
	Nov 2009 13:23:44 -0800 (PST)
In-Reply-To: <200911221840.08697.gg87346@martinb.com>
References: <275293a60911220630u2b2eda07s12d357899a5244c3@mail.gmail.com>
	<200911221840.08697.gg87346@martinb.com>
Date: Sun, 22 Nov 2009 21:23:44 +0000
Message-ID: <275293a60911221323u4007ca2dgb280fc3e10f2efd9@mail.gmail.com>
From: Bertfried Fauser <bertfried.fauser@googlemail.com>
To: Martin Baker <gg87346@martinb.com>
Content-Type: text/plain; charset=ISO-8859-1
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2)
Cc: fricas-devel@googlegroups.com, axiom-devel <Axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: CliffordPackage
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sun, 22 Nov 2009 21:23:52 -0000

Hi Martin,

my posts to fricas-devel are currently rejected by google, so I write
this also directly to you.

> These changes make good sense to me. I will just note for the record that they
> change the user interface and would therefore break any applications already
> using CliffordAlgebra but the changes are important enough to justify that.

Since the Clifford code was broken from the outset, the only place
where it actually shows up is the AXIOM book, which would then also
need an update,
I doubt threre is any other place (and I will see if I can chack that,
a grep over the code should do, I found CliffordAlgebra mentioned in

* browse.daase
* category.daase
* operation.daase
* compres.daase
* interp.daase
* exposed.lsp.pamphlet.svn-base
* clifford.spad.pamphlet
* abbrevs.input
* extract-spad.mk
* comdb.text
* libdb.text
* DEPENDENTS.DAASE
* CLIF.spad
* /USERS.DAASE/index.KA
* hyper/pages/.svn/text-base/CLIF.ht.svn-base
* hyper/pages/.svn/text-base/QUAT.ht.svn-base
* hyper/pages/QUAT.ht
* hyper/pages/QUAT2.ht
* hyper/pages/xmpexp.ht
* hyper/pages/ug02.ht
* hyper/pages/ug13.ht
* hyper/pages/CLIF.ht
* input/clifford.input.pamphlet
* paste/CLIF.input
* paste/CLIF.phts
* padhelp/Quaternion.help
* spadhelp/CliffordAlgebra.help
* topics.data
* command.list
)

I am not a grep expert, so things may have sliped through, otherwise I
think the above given list proves that CliffordAlgebra is not used by
any other package.

> OK, I will check if division or swapping of operands is done.

That was just a feature request, forget about noncommutytive rings at
the moment.

> the domain constructor as 'List List Ring', 'SquareMatrix Ring' or create a
> custom domain called BilinearForm ? Would I be correct in thinking that Matrix
> or a custom domain would not add much value so I might as well use a List of
> Lists for efficiency?

I would be happy with List List Ring, but since its a map between
vector spaces or modules, some popele on the list (if this mail gets
through) will have different oppinions. A square matrix could do, but
actually you only want to read out the elements, nothing else is done
with this array, so I would look (ask on teh list) what data structure
has the best random acess performance, List List is possibly slow, but
on the other hand such arrays will be in practice something like up to
10x10, so no hassle.

> Yes please, this would be very helpful, no rush though, as it will take me
> some time to absorb all this good information that you have given me.

OK, as soon as my maple is up again, I'll produce some test cases for you
(and we need to do AXIOM test cases for Tim ;-))

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
<http://www.uni-konstanz.de>
% contact |->    URL : http://www.cs.bham.ac.uk/~fauserb/
%              Phone :  +44-121-41-42795 and +49 1520 9874517



From MAILER-DAEMON Mon Nov 23 09:13:25 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NCZfR-0004fa-6h
	for mharc-axiom-developer@gnu.org; Mon, 23 Nov 2009 09:13:25 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NCZfO-0004f4-8X
	for axiom-developer@nongnu.org; Mon, 23 Nov 2009 09:13:22 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NCZfJ-0004as-DJ
	for Axiom-developer@nongnu.org; Mon, 23 Nov 2009 09:13:21 -0500
Received: from [199.232.76.173] (port=50439 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NCZfJ-0004an-9o
	for Axiom-developer@nongnu.org; Mon, 23 Nov 2009 09:13:17 -0500
Received: from authsmtp.rrzn.uni-hannover.de ([130.75.2.107]:49372)
	by monty-python.gnu.org with esmtps
	(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
	(envelope-from <martin.rubey@math.uni-hannover.de>)
	id 1NCZfI-00073Y-Tq
	for Axiom-developer@nongnu.org; Mon, 23 Nov 2009 09:13:17 -0500
Received: from ada0.ifam.uni-hannover.de (ada0.ifam.uni-hannover.de
	[130.75.17.184])
	by authsmtp.rrzn.uni-hannover.de (8.14.2/8.14.2) with ESMTP id
	nANED5hX017177; Mon, 23 Nov 2009 15:13:06 +0100
To: Bertfried Fauser <bertfried.fauser@googlemail.com>
Subject: Re: [Axiom-developer] Re: CliffordPackage
References: <275293a60911220630u2b2eda07s12d357899a5244c3@mail.gmail.com>
	<200911221840.08697.gg87346@martinb.com>
	<275293a60911221323u4007ca2dgb280fc3e10f2efd9@mail.gmail.com>
From: Martin Rubey <martin.rubey@math.uni-hannover.de>
Date: Mon, 23 Nov 2009 15:13:05 +0100
In-Reply-To: <275293a60911221323u4007ca2dgb280fc3e10f2efd9@mail.gmail.com>
	(Bertfried Fauser's message of "Sun\,
	22 Nov 2009 21\:23\:44 +0000")
Message-ID: <d9my2dib2m.fsf@ada0.ifam.uni-hannover.de>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-PMX-Version: 5.5.2.363555, Antispam-Engine: 2.6.1.350677,
	Antispam-Data: 2009.10.31.165419
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3)
Cc: Martin Baker <gg87346@martinb.com>, fricas-devel@googlegroups.com,
	axiom-devel <Axiom-developer@nongnu.org>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Nov 2009 14:13:22 -0000

Bertfried Fauser <bertfried.fauser@googlemail.com> writes:


> I doubt threre is any other place (and I will see if I can chack that,
> a grep over the code should do, I found CliffordAlgebra mentioned in
>
> * browse.daase
> * category.daase
> * operation.daase
> * compres.daase
> * interp.daase
> * exposed.lsp.pamphlet.svn-base
> * clifford.spad.pamphlet
> * abbrevs.input
> * extract-spad.mk
> * comdb.text
> * libdb.text
> * DEPENDENTS.DAASE
> * CLIF.spad
> * /USERS.DAASE/index.KA
> * hyper/pages/.svn/text-base/CLIF.ht.svn-base
> * hyper/pages/.svn/text-base/QUAT.ht.svn-base
> * hyper/pages/QUAT.ht
> * hyper/pages/QUAT2.ht
> * hyper/pages/xmpexp.ht
> * hyper/pages/ug02.ht
> * hyper/pages/ug13.ht
> * hyper/pages/CLIF.ht
> * input/clifford.input.pamphlet
> * paste/CLIF.input
> * paste/CLIF.phts
> * padhelp/Quaternion.help
> * spadhelp/CliffordAlgebra.help
> * topics.data
> * command.list
> )
>
> I am not a grep expert, so things may have sliped through, otherwise I
> think the above given list proves that CliffordAlgebra is not used by
> any other package.

It's not a proof, unfortunately (only a strong hint), because the
compiler tries to be smart: packages and domains do not necessarily need
to be mentioned, if the name of the operation or the types of the
arguments determine the operation uniquely.

Martin



From MAILER-DAEMON Wed Nov 25 00:29:36 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDARc-0006Rk-HU
	for mharc-axiom-developer@gnu.org; Wed, 25 Nov 2009 00:29:36 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDARb-0006RP-6B
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:29:35 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDARW-0006PX-9T
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:29:34 -0500
Received: from [199.232.76.173] (port=36201 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDARW-0006PM-5x
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:29:30 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:34328
	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 <daly@axiom-developer.org>) id 1NDARV-0002C8-Kh
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:29:29 -0500
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 nAP5TP8a001809;
	Tue, 24 Nov 2009 23:29:25 -0600
Message-ID: <4B0CC045.7040509@axiom-developer.org>
Date: Wed, 25 Nov 2009 00:27:33 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org, daly <daly@axiom-developer.org>
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] A new command ")describe"
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Nov 2009 05:29:35 -0000

There is a new command

  )describe [category | domain | package ] <name> [ | internal ]

You can ask for the comments from the algebra source code
which are contained in the Description: section at the top
of each Category, Domain, or Package.

You can type
 
  )help describe for the man page

Details for writing the Description: section for new algebra code
are in Volume 2 (User Guide)



For example,


(1) -> )describe domain AlgebraGivenByStructuralConstants

 
AlgebraGivenByStructuralConstants implements finite rank algebras
over a commutative ring, given by the structural constants gamma with
respect to a fixed basis [a1,..,an], where gamma is an n-vector of n
by n matrices [(gammaijk) for k in 1..rank()] defined by ai * aj =
gammaij1 * a1 + ... + gammaijn * an. The symbols for the fixed basis
have to be given as a list of symbols.




You can also ask for a very detailed description of the internal
structure (only for Domains and Packages). For instance:


(1) -> )describe domain AlgebraGivenByStructuralConstants internal
----------------Template-----------------
 5 lazy DirectProduct(local #2,local #1)
 6 lazy local #1
 7 lazy local #2
 8 lazy local #3
 9 lazy local #4
 10 lazy QUOTE Rep
 11 lazy Union($,QUOTE failed)
 12 lazy FiniteRankNonAssociativeAlgebra&($$,local #1)
 13 latch recip : % -> Union(%,QUOTE failed) from 
FiniteRankNonAssociativeAlgebra&($$,local #1)
 14 fun  ALGSC;recip;$U;1
 15 lazy Matrix local #1
 16 lazy SquareMatrix(local #2,local #1)
 17 latch coerce : % -> Matrix local #1 from SquareMatrix(local #2,local #1)
 18 latch apply : (Matrix local #1,%) -> % from %
 19 fun  ALGSC;*;Sm2$;2
 20 lazy Vector local #1
 21 latch directProduct : Vector local #1 -> % from QUOTE Rep
 22 fun  ALGSC;coerce;V$;3
 23 lazy Vector Matrix local #1
 24 fun  ALGSC;structuralConstants;V;4
 25 lazy List local #1
 26 latch entries : % -> List local #1 from QUOTE Rep
 27 latch vector : List local #1 -> % from Vector local #1
 28 fun  ALGSC;coordinates;$V;5
 29 lazy Integer
 30 lazy Vector $$
 31 latch maxIndex : % -> Integer from Vector $$
 32 latch 0 : () -> % from local #1
 33 lazy NonNegativeInteger
 34 latch new : (NonNegativeInteger,NonNegativeInteger,local #1) -> % 
from Matrix local #1
 35 latch elt : (%,Integer) -> $$ from Vector $$
 36 latch setColumn! : (%,Integer,Vector local #1) -> % from Matrix local #1
 37 lazy Union(Vector local #1,QUOTE failed)
 38 lazy Record(particular: Union(Vector local #1,QUOTE failed),basis: 
List Vector local #1)
 39 lazy LinearSystemMatrixPackage(local #1,Vector local #1,Vector local 
#1,Matrix local #1)
 40 latch solve : (Matrix local #1,Vector local #1) -> 
Record(particular: Union(Vector local #1,QUOTE failed),basis: List 
Vector local #1) from LinearSystemMatrixPackage(local #1,Vector local 
#1,Vector local #1,Matrix local #1)
 41 lazy Boolean
 42 latch zero? : % -> Boolean from local #1
 43 lazy Vector $
 44 fun  ALGSC;basis;V;7
 45 lazy (local #1 -> Boolean)
 46 latch every? : ((local #1 -> Boolean),%) -> Boolean from Vector local #1
 47 fun  ALGSC;coordinates;$VV;6
 48 lazy PositiveInteger
 49 latch unitVector : PositiveInteger -> % from QUOTE Rep
 50 fun  ALGSC;someBasis;V;8
 51 fun  ALGSC;rank;Pi;9
 52 latch elt : (%,Integer) -> local #1 from QUOTE Rep
 53 fun  ALGSC;elt;$IR;10
 54 latch zero? : % -> Boolean from QUOTE Rep
 55 lazy OutputForm
 56 latch coerce : % -> OutputForm from local #1
 57 latch 1 : () -> % from local #1
 58 latch ?=? : (%,%) -> Boolean from local #1
 59 lazy Symbol
 60 lazy List Symbol
 61 latch elt : (%,Integer) -> Symbol from List Symbol
 62 latch coerce : % -> OutputForm from Symbol
 63 latch ?*? : (%,%) -> % from OutputForm
 64 latch ?+? : (%,%) -> % from OutputForm
 65 lazy ((OutputForm,OutputForm) -> OutputForm)
 66 lazy List OutputForm
 67 latch reduce : (((OutputForm,OutputForm) -> OutputForm),%) -> 
OutputForm from List OutputForm
 68 fun  ALGSC;coerce;$Of;11
 69 latch new : (NonNegativeInteger,local #1) -> % from Vector local #1
 70 latch ?*? : (%,%) -> % from local #1
 71 latch elt : (%,Integer) -> Matrix local #1 from Vector Matrix local #1
 72 latch elt : (%,Integer,Integer) -> local #1 from Matrix local #1
 73 latch ?+? : (%,%) -> % from local #1
 74 latch setelt : (%,Integer,local #1) -> local #1 from Vector local #1
 75 fun  ALGSC;*;3$;12
 76 latch ?-? : (%,%) -> % from local #1
 77 lazy Void
 78 lazy String
 79 latch messagePrint : String -> Void from OutputForm
 80 fun  ALGSC;alternative?;B;13
 81 fun  ALGSC;associative?;B;14
 82 fun  ALGSC;antiAssociative?;B;15
 83 fun  ALGSC;commutative?;B;16
 84 fun  ALGSC;antiCommutative?;B;17
 85 fun  ALGSC;leftAlternative?;B;18
 86 fun  ALGSC;rightAlternative?;B;19
 87 fun  ALGSC;flexible?;B;20
 88 fun  ALGSC;lieAdmissible?;B;21
 89 latch ?*? : (PositiveInteger,%) -> % from local #1
 90 latch recip : % -> Union(%,QUOTE failed) from local #1
 91 fun  ALGSC;jordanAdmissible?;B;22
 92 fun  ALGSC;jordanAlgebra?;B;23
 93 fun  ALGSC;jacobiIdentity?;B;24
 94 lazy SparseUnivariatePolynomial Polynomial local #1
 95 lazy Record(particular: $,basis: List $)
 96 lazy Union(Record(particular: $,basis: List $),QUOTE failed)
 97 lazy SparseUnivariatePolynomial local #1
 98 lazy List Vector local #1
 99 lazy List Polynomial local #1
 100 lazy SingleInteger
----------Complete Ops----------------
 ?~=? : (%,%) -> Boolean missing
 zero? : % -> Boolean missing
 unit : () -> Union(%,QUOTE failed) missing  if #1 has IntegralDomain
 subtractIfCan : (%,%) -> Union(%,QUOTE failed) missing
 structuralConstants : () -> Vector Matrix local #1 
ALGSC;structuralConstants;V;4
 structuralConstants : Vector % -> Vector Matrix local #1 missing
 someBasis : () -> Vector % ALGSC;someBasis;V;8
 sample : () -> % missing
 rightUnits : () -> Union(Record(particular: %,basis: List %),QUOTE 
failed) missing  if #1 has IntegralDomain
 rightUnit : () -> Union(%,QUOTE failed) missing  if #1 has IntegralDomain
 rightTraceMatrix : () -> Matrix local #1 missing
 rightTraceMatrix : Vector % -> Matrix local #1 missing
 rightTrace : % -> local #1 missing
 rightRegularRepresentation : % -> Matrix local #1 missing
 rightRegularRepresentation : (%,Vector %) -> Matrix local #1 missing
 rightRecip : % -> Union(%,QUOTE failed) missing  if #1 has IntegralDomain
 rightRankPolynomial : () -> SparseUnivariatePolynomial Polynomial local 
#1 missing  if #1 has Field
 rightPower : (%,PositiveInteger) -> % missing
 rightNorm : % -> local #1 missing
 rightMinimalPolynomial : % -> SparseUnivariatePolynomial local #1 
missing  if #1 has IntegralDomain
 rightDiscriminant : () -> local #1 missing
 rightDiscriminant : Vector % -> local #1 missing
 rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial local 
#1 missing
 rightAlternative? : () -> Boolean ALGSC;rightAlternative?;B;19
 represents : Vector local #1 -> % missing
 represents : (Vector local #1,Vector %) -> % missing
 recip : % -> Union(%,QUOTE failed) ALGSC;recip;$U;1  if #1 has 
IntegralDomain
 rank : () -> PositiveInteger ALGSC;rank;Pi;9
 powerAssociative? : () -> Boolean missing
 plenaryPower : (%,PositiveInteger) -> % missing
 noncommutativeJordanAlgebra? : () -> Boolean missing
 lieAlgebra? : () -> Boolean missing
 lieAdmissible? : () -> Boolean ALGSC;lieAdmissible?;B;21
 leftUnits : () -> Union(Record(particular: %,basis: List %),QUOTE 
failed) missing  if #1 has IntegralDomain
 leftUnit : () -> Union(%,QUOTE failed) missing  if #1 has IntegralDomain
 leftTraceMatrix : () -> Matrix local #1 missing
 leftTraceMatrix : Vector % -> Matrix local #1 missing
 leftTrace : % -> local #1 missing
 leftRegularRepresentation : % -> Matrix local #1 missing
 leftRegularRepresentation : (%,Vector %) -> Matrix local #1 missing
 leftRecip : % -> Union(%,QUOTE failed) missing  if #1 has IntegralDomain
 leftRankPolynomial : () -> SparseUnivariatePolynomial Polynomial local 
#1 missing  if #1 has Field
 leftPower : (%,PositiveInteger) -> % missing
 leftNorm : % -> local #1 missing
 leftMinimalPolynomial : % -> SparseUnivariatePolynomial local #1 
missing  if #1 has IntegralDomain
 leftDiscriminant : () -> local #1 missing
 leftDiscriminant : Vector % -> local #1 missing
 leftCharacteristicPolynomial : % -> SparseUnivariatePolynomial local #1 
missing
 leftAlternative? : () -> Boolean ALGSC;leftAlternative?;B;18
 latex : % -> String missing
 jordanAlgebra? : () -> Boolean ALGSC;jordanAlgebra?;B;23
 jordanAdmissible? : () -> Boolean ALGSC;jordanAdmissible?;B;22
 jacobiIdentity? : () -> Boolean ALGSC;jacobiIdentity?;B;24
 hash : % -> SingleInteger missing
 flexible? : () -> Boolean ALGSC;flexible?;B;20
 elt : (%,Integer) -> local #1 ALGSC;elt;$IR;10
 coordinates : % -> Vector local #1 ALGSC;coordinates;$V;5
 coordinates : Vector % -> Matrix local #1 missing
 coordinates : (Vector %,Vector %) -> Matrix local #1 missing
 coordinates : (%,Vector %) -> Vector local #1 ALGSC;coordinates;$VV;6
 convert : % -> Vector local #1 missing
 convert : Vector local #1 -> % missing
 conditionsForIdempotents : () -> List Polynomial local #1 missing
 conditionsForIdempotents : Vector % -> List Polynomial local #1 missing
 commutator : (%,%) -> % missing
 commutative? : () -> Boolean ALGSC;commutative?;B;16
 coerce : Vector local #1 -> % ALGSC;coerce;V$;3
 coerce : % -> OutputForm ALGSC;coerce;$Of;11
 basis : () -> Vector % ALGSC;basis;V;7
 associatorDependence : () -> List Vector local #1 missing  if #1 has 
IntegralDomain
 associator : (%,%,%) -> % missing
 associative? : () -> Boolean ALGSC;associative?;B;14
 apply : (Matrix local #1,%) -> % looked up
 antiCommutator : (%,%) -> % missing
 antiCommutative? : () -> Boolean ALGSC;antiCommutative?;B;17
 antiAssociative? : () -> Boolean ALGSC;antiAssociative?;B;15
 alternative? : () -> Boolean ALGSC;alternative?;B;13
 0 : () -> % missing
 ?=? : (%,%) -> Boolean missing
 -? : % -> % missing
 ?-? : (%,%) -> % missing
 ?+? : (%,%) -> % missing
 ?**? : (%,PositiveInteger) -> % missing
 ?*? : (SquareMatrix(local #2,local #1),%) -> % ALGSC;*;Sm2$;2
 ?*? : (local #1,%) -> % missing
 ?*? : (%,local #1) -> % missing
 ?*? : (%,%) -> % ALGSC;*;3$;12
 ?*? : (Integer,%) -> % missing
 ?*? : (NonNegativeInteger,%) -> % missing
 ?*? : (PositiveInteger,%) -> % missing
----------------Atts-----------------
 0 unitsKnown if #1 has IntegralDomain
 1 leftUnitary
 2 rightUnitary
----------------Preds-----------------
 1 #1 has Field
 2 #1 has IntegralDomain
----------------Cats-----------------
 0 FramedNonAssociativeAlgebra local #1 package
 1 FiniteRankNonAssociativeAlgebra local #1 package
 2 NonAssociativeAlgebra local #1 package
 3 Module local #1 package
 4 BiModule(local #1,local #1)
 5 NonAssociativeRng package
 6 LeftModule SquareMatrix(local #2,local #1)
 7 RightModule local #1
 8 LeftModule local #1
 9 AbelianGroup package
 10 CancellationAbelianMonoid
 11 AbelianMonoid package
 12 AbelianSemiGroup package
 13 Monad package
 14 SetCategory package
 15 BasicType package
 16 CoercibleTo OutputForm
----------------Data------------------
Operation data from slot 1

#(~= 197 |zero?| 203 |unit| 208 |subtractIfCan| 212 
|structuralConstants| 218 |someBasis| 227 |sample| 231 |rightUnits| 235 
|rightUnit| 239 |rightTraceMatrix| 243 |rightTrace| 252 
|rightRegularRepresentation| 257 |rightRecip| 268 |rightRankPolynomial| 
273 |rightPower| 277 |rightNorm| 283 |rightMinimalPolynomial| 288 
|rightDiscriminant| 293 |rightCharacteristicPolynomial| 302 
|rightAlternative?| 307 |represents| 311 |recip| 322 |rank| 327 
|powerAssociative?| 331 |plenaryPower| 335 
|noncommutativeJordanAlgebra?| 341 |lieAlgebra?| 345 |lieAdmissible?| 
349 |leftUnits| 353 |leftUnit| 357 |leftTraceMatrix| 361 |leftTrace| 370 
|leftRegularRepresentation| 375 |leftRecip| 386 |leftRankPolynomial| 391 
|leftPower| 395 |leftNorm| 401 |leftMinimalPolynomial| 406 
|leftDiscriminant| 411 |leftCharacteristicPolynomial| 420 
|leftAlternative?| 425 |latex| 429 |jordanAlgebra?| 434 
|jordanAdmissible?| 438 |jacobiIdentity?| 442 |hash| 446 |flexible?| 451 
|elt| 455 |coordinates| 461 |convert| 483 |conditionsForIdempotents| 493 
|commutator| 502 |commutative?| 508 |coerce| 512 |basis| 522 
|associatorDependence| 526 |associator| 530 |associative?| 537 |apply| 
541 |antiCommutator| 547 |antiCommutative?| 553 |antiAssociative?| 557 
|alternative?| 561 |Zero| 565 = 569 - 575 + 586 ** 592 * 598)
Information vector has 640 entries
     0  |     1    12    11     0    13     1    16    15     0    17
    10  |     2     0     0    15     0    18     1    10     0    20
    20  |    21     1    10    25     0    26     1    20     0    25
    30  |    27     1    30    29     0    31     0     6     0    32
    40  |     3    15     0    33    33     6    34     2    30     2
    50  |     0    29    35     3    15     0     0    29    20    36
    60  |     2    39    38    15    20    40     1     6    41     0
    70  |    42     2    20    41    45     0    46     1    10     0
    80  |    48    49     2    10     6     0    29    52     1    10
    90  |    41     0    54     1     6    55     0    56     0     6
   100  |     0    57     2     6    41     0     0    58     2    60
   110  |    59     0    29    61     1    59    55     0    62     2
   120  |    55     0     0     0    63     2    55     0     0     0
   130  |    64     2    66    55    65     0    67     2    20     0
   140  |    33     6    69     2     6     0     0     0    70     2
   150  |    23    15     0    29    71     3    15     6     0    29
   160  |    29    72     2     6     0     0     0    73     3    20
   170  |     6     0    29     6    74     2     6     0     0     0
   180  |    76     1    55    77    78    79     2     6     0    48
   190  |     0    89     1     6    11     0    90     2     0    41
   200  |     0     0     1     1     0    41     0     1     0     2
   210  |    11     1     2     0    11     0     0     1     0     0
   220  |    23    24     1     0    23    43     1     0     0    43
   230  |    50     0     0     0     1     0     2    96     1     0
   240  |     2    11     1     0     0    15     1     1     0    15
   250  |    43     1     1     0     6     0     1     1     0    15
   260  |     0     1     2     0    15     0    43     1     1     2
   270  |    11     0     1     0     1    94     1     2     0     0
   280  |     0    48     1     1     0     6     0     1     1     2
   290  |    97     0     1     0     0     6     1     1     0     6
   300  |    43     1     1     0    97     0     1     0     0    41
   310  |    86     1     0     0    20     1     2     0     0    20
   320  |    43     1     1     2    11     0    14     0     0    48
   330  |    51     0     0    41     1     2     0     0     0    48
   340  |     1     0     0    41     1     0     0    41     1     0
   350  |     0    41    88     0     2    96     1     0     2    11
   360  |     1     0     0    15     1     1     0    15    43     1
   370  |     1     0     6     0     1     1     0    15     0     1
   380  |     2     0    15     0    43     1     1     2    11     0
   390  |     1     0     1    94     1     2     0     0     0    48
   400  |     1     1     0     6     0     1     1     2    97     0
   410  |     1     0     0     6     1     1     0     6    43     1
   420  |     1     0    97     0     1     0     0    41    85     1
   430  |     0    78     0     1     0     0    41    92     0     0
   440  |    41    91     0     0    41    93     1     0   100     0
   450  |     1     0     0    41    87     2     0     6     0    29
   460  |    53     1     0    20     0    28     1     0    15    43
   470  |     1     2     0    15    43    43     1     2     0    20
   480  |     0    43    47     1     0    20     0     1     1     0
   490  |     0    20     1     0     0    99     1     1     0    99
   500  |    43     1     2     0     0     0     0     1     0     0
   510  |    41    83     1     0     0    20    22     1     0    55
   520  |     0    68     0     0    43    44     0     2    98     1
   530  |     3     0     0     0     0     0     1     0     0    41
   540  |    81     2     0     0    15     0    18     2     0     0
   550  |     0     0     1     0     0    41    84     0     0    41
   560  |    82     0     0    41    80     0     0     0     1     2
   570  |     0    41     0     0     1     1     0     0     0     1
   580  |     2     0     0     0     0     1     2     0     0     0
   590  |     0     1     2     0     0     0    48     1     2     0
   600  |     0    16     0    19     2     0     0     6     0     1
   610  |     2     0     0     0     6     1     2     0     0     0
   620  |     0    75     2     0     0    29     0     1     2     0
   630  |     0    33     0     1     2     0     0    48     0     1
----------------Size------------------
infovec total = 4434 BYTES
template    = 2064
operations  = 556 (complete)
attributes  = 6
categories  = 528
data vector = 1280
number of function slots (one extra node) = 24
number of latch slots (2 extra nodes) = 35
number of lazy slots (no extra nodes) = 37
size of domain vectors = 101 slots
domain size = 5562 BYTES
cost per instantiation = 1536 BYTES
(1) ->




From MAILER-DAEMON Wed Nov 25 00:45:35 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDAh5-0003LG-Hb
	for mharc-axiom-developer@gnu.org; Wed, 25 Nov 2009 00:45:35 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDAh4-0003L3-2t
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:45:34 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDAgw-0003I3-VM
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:45:31 -0500
Received: from [199.232.76.173] (port=44197 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDAgw-0003Hd-Nf
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:45:26 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:60770
	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 <daly@axiom-developer.org>) id 1NDAgw-0004I2-AX
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 00:45:26 -0500
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 nAP5jE8a010144;
	Tue, 24 Nov 2009 23:45:14 -0600
Message-ID: <4B0CC3FA.1070004@axiom-developer.org>
Date: Wed, 25 Nov 2009 00:43:22 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org, daly <daly@axiom-developer.org>
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 release for November 2009
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Nov 2009 05:45:34 -0000

Summary: November 2009 release

The major changes are:
   A new )describe command, boot language removal, and more motion
   toward a fully literate system.

The )describe command was added.

   The )describe function was added to Volume 5 (Interpreter)
   The )describe function was documented in Volume 2 (Users Guide)
   The Description field for the Categories, Domains, and Packages
   were cleanup up and reformatted in Volumes 10.2 (Categories)
   10.3 (Domains) and 10.4 (Packages)
 

Boot Language removal

    All of the boot-converted lisp files were reformatted from their
    compiler generated output. These files are being merged into
    Volume 5 (Interpreter) and Volume 9 (Compiler) as appropriate.
    This work will continue for the next few releases.

    All or portions of the following files were merged into
    Volume 5 (Interpreter):
      astr, cstream.lisp, dq, incl, int-top, i-syscmd, msg, nci,
      obey, osyscmd, parini, patches, pile, scan

    The src/boot subdirectory is gone, including the files:
      Makefile, boot-proclaims, boothdr, bootload, btincl2, btpile2,
      btscan2, ccl-bootsys, ccl-depsys.lsp, exports.lisp, npextras, ptyout,
      tyextra, typars, typrops, tytree1, sys-pkg, vmlisp, ptrees, wi2

    The bootsys image is no longer part of the build process


Patch ports from Fricas and Open-Axiom

    The Tuples patch was picked up and applied.

    The SXHASH function is the hash default in SetCategory

    The function ListOfTerms was renamed to listOfTerms


Input file changes

    New input files have been added to show how to compute
    results using Axiom or to create regression tests for fixes:
      complexfactor, rubey, zimmbron, branchcut, cachedf, finitegraph,
      newtonlisp, nonlinhomodiffeq, distexpr, numericgamma, donsimple
      solveperf, tuplebug, unit-macro, testprob, unittest2

    lexp was removed and moved to the LEXP algebra file

    dop and gstbl had minor fixes

New Help files and Function examples were added

    There are new help files:
      describe, AlgebraicallyClosedField, RationalFunctionSum,
      RadicalSolvePackage, PartialFractionPackage, Product,
      OrderedFreeMonoid

Website update:

  The developer.html page was rewritten. An old Scratchpad group
  photo was added to the site.

  Work continues on re-hosting the axiom-developer.org domain.

  We now own axiom-developer.com and axiom-developer.net which will
  be retargetted to the new host as soon as it is available

Interpreter changes:

    Axiom will sit in a single package in the near future.
    The VMLISP package was partially removed from the system.
    Work continues on this path.

    The util.ht file is created earlier in the parallel build
    so there are fewer compiler messages about documentation.

Research:
 
    A Cohen algebra domain is being developed to enable symbolic
    manipulation of expressions with explanations and controlled
    simplification.







From MAILER-DAEMON Wed Nov 25 06:54:51 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDGSR-0003ui-BF
	for mharc-axiom-developer@gnu.org; Wed, 25 Nov 2009 06:54:51 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDGSO-0003sR-BL
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 06:54:48 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDGSI-0003o7-Vh
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 06:54:47 -0500
Received: from [199.232.76.173] (port=49965 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDGSI-0003nq-ND
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 06:54:42 -0500
Received: from moutng.kundenserver.de ([212.227.126.171]:53284)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NDGSI-00028V-1H
	for axiom-developer@nongnu.org; Wed, 25 Nov 2009 06:54:42 -0500
Received: from suse111.localnet (94-193-164-220.zone7.bethere.co.uk
	[94.193.164.220])
	by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis)
	id 0M1kaM-1O2bcS3LR4-00twWx; Wed, 25 Nov 2009 12:54:38 +0100
From: Martin Baker <ax87438@martinb.com>
To: axiom-developer@nongnu.org
Date: Wed, 25 Nov 2009 11:54:37 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <275293a60911220630u2b2eda07s12d357899a5244c3@mail.gmail.com>
	<200911221840.08697.gg87346@martinb.com>
	<275293a60911221323u4007ca2dgb280fc3e10f2efd9@mail.gmail.com>
In-Reply-To: <275293a60911221323u4007ca2dgb280fc3e10f2efd9@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911251154.38103.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1/MSGPRjsQuU3flX0z9pQQjgY4nXSG8kQ7ybhz
	2vHuFW1HQimEhQOwtSUPc3hfNwt0E/4wVsI8KWITqz0ddxn9Qs
	ayFz/nNgMxmL698fzXpCg==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Subject: [Axiom-developer] Spad for OO Programmers
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Nov 2009 11:54:48 -0000

I am still trying to properly understand the Spad language properly, what I 
would like is a introduction for people who have object oriented experience. 
In other words to point out the differences that may confuse and also a crib 
sheet for the syntax.

I have not yet found such a document (by the way, the link to st-andrews 
website on Axiom documentation page is broken).

Since I have not found this I have been making some notes for my own benefit:
http://www.euclideanspace.com/maths/standards/program/spad/
Any corrections welcome.

Martin Baker



From MAILER-DAEMON Thu Nov 26 00:51:44 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDXGZ-0002gj-Q7
	for mharc-axiom-developer@gnu.org; Thu, 26 Nov 2009 00:51:43 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDXGX-0002gJ-UT
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 00:51:41 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDXGS-0002fA-Ma
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 00:51:40 -0500
Received: from [199.232.76.173] (port=60514 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDXGS-0002f7-Gn
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 00:51:36 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:50334
	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 <daly@axiom-developer.org>) id 1NDXGS-0000ta-5A
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 00:51:36 -0500
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 nAQ5pO8a030402;
	Wed, 25 Nov 2009 23:51:25 -0600
Message-ID: <4B0E16EB.6000808@axiom-developer.org>
Date: Thu, 26 Nov 2009 00:49:31 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Martin Baker <ax87438@martinb.com>,
	Bertfried Fauser <bertfried.fauser@googlemail.com>,
	Ralf Hemmecke <ralf@hemmecke.de>, Arthur Ralfs <arthur@mathbrane.ca>,
	Axiom-Developer <axiom-developer@nongnu.org>,
	daly <daly@axiom-developer.org>
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] large PDFs
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2009 05:51:42 -0000

You might be pleasantly surprised that the Axiom PDFs
actually are heavily cross-referenced. If you have a
recent version of any pdf viewer you'll see that there
are hyperlinks in the pdf. The index is also hyperlinked
so you can look things up in the index and jump to the
most interesting point.

The algebra PDFs (volume 10.2, 10.3, and 10.4) are all
hyperlinked. This makes it easy to find algebra. In
addition, the two algebra graphs on the webpage are
hyperlinked into the correct pdfs so you can walk the
algebra graph and see the corresponding code.

The Interpreter (volume 5) even includes both forward
(calls) and backward hyperlinks (called by) so you can
find callers and callees making it very easy to walk
the lisp code. The compiler (volume 9) will be the same.

The hypertex pages (volume 7.1) has pictures of the pages
that the code describes so you can "hyperdoc browse" in
the pdf viewer.

Eventually all of the volumes will be fully hyperlinked.
The Jenks book (volume 0) and the tutorial (volume 1) are
"in the queue".

Yes, the PDFs are large but they are easy to navigate.

Tim




From MAILER-DAEMON Thu Nov 26 12:17:16 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDhy0-0002YP-9E
	for mharc-axiom-developer@gnu.org; Thu, 26 Nov 2009 12:17:16 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDhxx-0002XV-VJ
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 12:17:14 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDhxs-0002Q2-7Y
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 12:17:13 -0500
Received: from [199.232.76.173] (port=46351 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDhxr-0002Pa-EA
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 12:17:07 -0500
Received: from moutng.kundenserver.de ([212.227.17.10]:57822)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <ax87438@martinb.com>) id 1NDhsK-0002Jb-UZ
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 12:11:25 -0500
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 0MVb0p-1Newz93CMJ-00YPbV; Thu, 26 Nov 2009 18:11:21 +0100
From: Martin Baker <ax87438@martinb.com>
To: Bertfried Fauser <bertfried.fauser@googlemail.com>
Date: Thu, 26 Nov 2009 17:11:17 +0000
User-Agent: KMail/1.11.0 (Linux/2.6.27.37-0.1-default; KDE/4.2.2; x86_64; ; )
References: <275293a60911260657n6b1815ffofec01dbcc6fb362e@mail.gmail.com>
In-Reply-To: <275293a60911260657n6b1815ffofec01dbcc6fb362e@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <200911261711.17546.ax87438@martinb.com>
X-Provags-ID: V01U2FsdGVkX1+9G6Co64ioWrtkLM2BazGqfxeyuhNxw9WVUxa
	MubtQIfub/WUjkYgx+wBOVs8nfwnlQK3O2T4e3Md9y+Ap2QRHm
	MuvBWFnp0zLBtimFoeHQw==
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-devel <Axiom-developer@nongnu.org>
Subject: [Axiom-developer] Re: Clifford Algebra examples:
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2009 17:17:14 -0000

Bertfried,

Thanks this looks very useful.

Can I ask about the definitions of the involutions:

gradeInvolution == reversion? sign=(-1)^(d(d-1)/2) symbol= ~
Cliplus clirev == ? symbol=multiply by pseudoscalar? symbol=
Clifford conjugation: scalar part minus non-scalar part? symbol=

I know these are wrong but I just made a guess!

I expect I had better ignore the Spinors for now although I am curious about 
how they should be added on later. Upto now I have thought of spinors as an 
even subalgebra of Clifford algebras? (rotation by 2*pi multiplies by -1) but 
this does not seem to be the case here? Would spinors require a new type of 
multiplication or a new domain?

Martin



From MAILER-DAEMON Thu Nov 26 13:29:26 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDj5p-0002MG-T2
	for mharc-axiom-developer@gnu.org; Thu, 26 Nov 2009 13:29:25 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDj5o-0002JW-54
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:29:24 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDj5i-0002B1-Uc
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:29:23 -0500
Received: from [199.232.76.173] (port=41619 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDj5i-0002Ae-Oz
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:29:18 -0500
Received: from mail-bw0-f212.google.com ([209.85.218.212]:52325)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bertfried.fauser@googlemail.com>) id 1NDj5h-0004RJ-Q9
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:29:18 -0500
Received: by bwz4 with SMTP id 4so756700bwz.2
	for <Axiom-developer@nongnu.org>; Thu, 26 Nov 2009 10:29:16 -0800 (PST)
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=DToZv/vVCS/yjwr838FrRr6uVrBeYPy0WDt6Xa596+Q=;
	b=RXklRn2F3+/MNHORPL2H2pqAt4GW/kJOQN49wQwH94wIhgqEzoi1xikS9TZIOt3ugj
	6FuDwZd/NOwfH6gsnUR/wrNgzPVpOt3jWm60LJNoV4/NZLxrbZGTirLTY4MrIc2fmW9l
	/RvOr90vfy9os+tgtX1HwMB4J6922zQcOiZy8=
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=FxguyNHcwHjpBUARtbKTy3ONr8tJUS+NumoSgLixVAYVqcGNwBCksEgsqWf2832KtI
	D8qP+aozRx40Qtx9ncvYePlSlcuFIE2tUpM0rr9xy/0iX168hnkq6/nxMEqbCCgyBw2H
	91j7H7VvBFp6EnhhRYdA5m5p0jzZKr8w+jwdE=
MIME-Version: 1.0
Received: by 10.204.26.135 with SMTP id e7mr41393bkc.183.1259260156461; Thu, 
	26 Nov 2009 10:29:16 -0800 (PST)
In-Reply-To: <200911261711.17546.ax87438@martinb.com>
References: <275293a60911260657n6b1815ffofec01dbcc6fb362e@mail.gmail.com>
	<200911261711.17546.ax87438@martinb.com>
Date: Thu, 26 Nov 2009 18:29:16 +0000
Message-ID: <275293a60911261029v1a07260cpe529071689cbff41@mail.gmail.com>
From: Bertfried Fauser <bertfried.fauser@googlemail.com>
To: Martin Baker <ax87438@martinb.com>
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 <Axiom-developer@nongnu.org>, fricas-devel@googlegroups.com,
	Ablamowicz <rablamowicz@tntech.edu>
Subject: [Axiom-developer] Re: Clifford Algebra examples:
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2009 18:29:24 -0000

Dear Martin,

> Can I ask about the definitions of the involutions:
Yes, please ask, I'll answer if I know and time permits.

> gradeInvolution == reversion? sign=(-1)^(d(d-1)/2) symbol= ~
> Cliplus clirev == ? symbol=multiply by pseudoscalar? symbol=
> Clifford conjugation: scalar part minus non-scalar part? symbol=

The involutions you give are again assuming a diagonal (orthonormal)
basis for the quadratic (bilinear) form. Since this is bad for applications,
it has to be avoided. Of course if you know you are in a diagonal basis
you can use faster algorithms (like defining a cmulDiag)

Grade involution:
Any (Grassmann-) Clifford algebra is built up from a base space V (of dimension
dim V = n) You have two natural transformations on V which generalize
to the whole space W=/\V of dim W = 2^n.
a) The identity map (does nothing on W)
b) The map sending every vector v \in V to its additiove inverse (negative)
    barV : V -> V :: v |--> -v
    This will send any basis vector to its negative (regardless of the bilinear
    form). So iff your basis is like the grBasis :=[Id, e1, e2, e1we2, e3,...]
    barW will send all elements eiw..wej to (-)^number of basis
elements eiw..wej
c) Iff the basis is more general (like in the case with an antisymmetric part in
    the bilinear form, you always fing a new basis (inhomgeous in the old
    generators) such that the involution does the trick for the new
basis elements.
    Eg: B:= matrix [[1,q],[-q ,1]] you would liek tto define a new
Grassmann basis
   grBasWf = [Id, f1(=e1),f2(=e2), f1wf2 ( f1wf2-q*Id), f3 (=e3),...] etc
   In this case you will see that the new basis is graded (only even or odd
   elements appear) so the involution still works as expected.

Whta you technically do is the following:
* Take a vector space V
* build the free algebra over it, that is the tensor algebra TV, its product is
   concatenation it is noncommutative
* You are only intersted in antisymmetric tensors, hence factor out
all symmetric
   ones. That is you identify all terms of the form
   (v1 (x)... (x) vi (x) vi (x) ... (x) vd) = 0
   [One can check that this is a graded ideal I_gr and one can therefor factor
  the tensor algebra TV/I_gr = /\V
  (for the generators this means you impose ei^2=0. From that you conclude that
   0=(ei+ej)^(x)2 = ei^2+ei (x) ej + ej (x) ei + ej^2
     = ei (x) ej + ej (x) ej
   calling the projectet tensor /\ you get
   ei /\ ej = -  ej /\ ei )

Reversion:
   This is quite different. The reversion needs to know about the Clifford
   multiplication, so its actually defined in the Clifford basis
   cliBas:= [Id, e(1), e(2), e(12):=e(1)*e(2), e(3),... ]
   and it reverses the order of the Clifford multiplication (which depends on
   the quadratic (bilinear) form. Hence you have (eij) Grassmann ,
e(ij) Clifford
   basis elements)
   reversion e12 = reversion (e(12)-B(e1,e2)*Id) = e(21)-B(e1,e2)*Id
       = e2/\e1 +(B(e2,e1)-B(e1,e2))*Id
       = -e12 - 2F(e1,e2)
   where F(e1,e2) is the antisymmetric part of B, hence this difficulty will
   _only_ appear when there is an antisymmetric part. Since not many people
   have looked at that, its rarely described in literature, but see my
joint papers
   with Rafal Ablamowicz:
#
Mathematics of CLIFFORD - A Maple package for Clifford and Grassmann algebras
Rafal Ablamowicz, B. Fauser: Adv. in Appl. Clifford Alg. 15 No. 2, 2005:157-181

#
arXiv:math-ph/0212032
Clifford and Grassmann Hopf algebras via the BIGEBRA package for Maple
Rafal Ablamowicz, B. Fauser: Comp. Physics Comm. 170, 2005:115--130
  available from the arXiv (or I can send you pdf's).

Technically the reversion comes from the dualising the vector space V -> V*
and building the tensor algebra over the dualised vector space V* and
identifying
V* ~= V canonically. The project onto antisymmetric tensors. You see
that the symmetric group acts on tensors by permuting the 'list' ov
vectors a tensor is forms of. The reverison is the unique larget
permutation (usually called w)
with the most inversions (in reduced notation). So reversion is not
just adding a sign, its really reversing the list of all vectors
(generators) and then reorder them using the antisymmetry and collect
the minus signs.

conjugation is just the composition of recerion and grade involution:

conjugation x == reversion gradeinvolution x
                      (== gradeinvolution reversion x) -- oder does not matter

So first thing is to implement:

Grassmann wedge
Grassmann meet (note that the meet is a sort of wedge but with the roles
  of the grades inverted)
Clifford product for a bilinear form (this is not hard, its the same routine
which calculates the Clifford product for a symmetric bilinear form or an
arbitrary bilinear form)

> I expect I had better ignore the Spinors for now although I am curious about
> how they should be added on later.

Indeed, forget about them for now. I just added the spinor things to
make sure there are matrix analogs which show that the algebra
computes correctly. It is
just a way to convince yourself that everything works right. It was not meant
(yet) as a feature request. (Spinors come in handy when describing
linear complexes in projective space)

> Upto now I have thought of spinors as an even subalgebra of Clifford
> algebras?

There are many ways to look at spinors. Every way has its own benefit.
Indeed the weakest is to go for matrix representations and confuse
those with the abstract algebra. In the examples you see that all
three Clifford algebras Cl(2,0), CL(1,1)
and CL(0,2) finally can be modelled by 2x2 matrices, but how to
identify them if only the matrices are given?
  The spinors in the examples are (left) idela spinors, that is they
are elements of a minimal left ideal of the Clifford algebra and
therefore them self representable as Clifford numbers (as clearly can
be seen by inspecting the lists calld spinorSpace). If represented in
the (same) spinor basis, these elements make up a matrix with a single
non-zero column, forgetting about the zero columns gives what you see
usually (but it gets more complicated if the ring is no longer the
reals, even complex conjugation is then a differently presented
operation).
  Some of the matrix concepts are difficult to translate back into the
algebra, eg transposition if the bilinear form is not
diagonal/symmetric... this is a reseach
subject (and I hope there will be soon a paper comming out clarifying
this partly).

> (rotation by 2*pi multiplies by -1) but
> this does not seem to be the case here? Would spinors require a new type of
> multiplication or a new domain?

If a spinor is represented _inside_ of the Clifford algebra, no new
multiplications are needed. That's the nice feature of unifying these
things. Interpreting spinors as rotations can be done by constructing
so called operator spinors, well described eg in Perrti Lounesto's
boon Clifford algebras and spinors. Also this is not yet important.
(And will not need new algebra).

What you need to implement at the moment is:

a) A Grassmann basis (module over some (commutative) ring, field)
   [Clifford has some undocumented features which allow a q-deformation here
    but I guess you should ignore that too]

b) the wedge and meet products, and some helper functions, like
   extraction of the coefficient of the identiy, the volume elemenet etc
   gradeinvolution, Grassmann reversion (that is the above reversion where
   all terms comming from the bilinear form are absent), so this is
just the sign
   factor (or better (-1)^{number of involutions of the permutatiosn which
   reorders the rerm} this would allow to replace -1 by generic q).

a) and b) make up a GrassmannAlgebra (and with very little effort could be
turned into a Grassmann Hopf algebra by adding a wedge corproduct, and
an antipode)

c) The Clifford product, based on a correctly implemented
leftContraction and rightContraction. This is done easily by a
recursion, as I tried to explain in a previous mail.

With x,y in V u,v,w in W=/\V you have

i) x * y =  lc(x,y) + x/\y  and 1*1=1
ii) x * (u /\ v) = x /\ u /\ v + lc(x, u/\v)
                     = x/\u/\v + lc(x,u)/\v + gradeinvolution(u) /\ lc(x, v)
   (same for (u/\v) * y using right contraction)
iii) Since every term u can be recursively be decomposed as a Clifford product
   you can finally evaluate u * v by
   u = w*x  (where the grade of w is strictly less than that of u
   u * v = (w*x)*v = w*(x*v)  and use the above recursion with 1*1=1

I am sorry to have to less time currently to sit down and just provide the code,
I have some other things on my table which are urgent.

Hope this helps, otherwise feel free to ask.
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
<http://www.uni-konstanz.de>
% contact |->    URL : http://www.cs.bham.ac.uk/~fauserb/
%              Phone :  +44-121-41-42795 and +49 1520 9874517



From MAILER-DAEMON Thu Nov 26 13:54:55 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NDjUU-0008BG-Pc
	for mharc-axiom-developer@gnu.org; Thu, 26 Nov 2009 13:54:54 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NDjUS-00088k-Mb
	for axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:54:52 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NDjUN-00081c-8F
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:54:51 -0500
Received: from [199.232.76.173] (port=42633 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NDjUN-00081L-0f
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:54:47 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:32779
	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 <daly@axiom-developer.org>) id 1NDjUM-0007oK-Ma
	for Axiom-developer@nongnu.org; Thu, 26 Nov 2009 13:54:46 -0500
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 nAQIsb8a018713;
	Thu, 26 Nov 2009 12:54:37 -0600
Message-ID: <4B0ECE7B.1020406@axiom-developer.org>
Date: Thu, 26 Nov 2009 13:52:43 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bertfried Fauser <bertfried.fauser@googlemail.com>
Subject: Re: [Axiom-developer] Re: Clifford Algebra examples:
References: <275293a60911260657n6b1815ffofec01dbcc6fb362e@mail.gmail.com>	<200911261711.17546.ax87438@martinb.com>
	<275293a60911261029v1a07260cpe529071689cbff41@mail.gmail.com>
In-Reply-To: <275293a60911261029v1a07260cpe529071689cbff41@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: fricas-devel@googlegroups.com, axiom-devel <Axiom-developer@nongnu.org>,
	Ablamowicz <rablamowicz@tntech.edu>
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2009 18:54:53 -0000


 From an Axiom point of view this is stunningly good documentation.
I've downloaded the paper and added it to the reading queue.
I thought I had a grip on the Clifford Algebra stuff but clearly I do not.
Thanks.

Tim

There is no such thing as a simple job.

> Dear Martin,
>
>   
>> Can I ask about the definitions of the involutions:
>>     
> Yes, please ask, I'll answer if I know and time permits.
>
>   
>> gradeInvolution == reversion? sign=(-1)^(d(d-1)/2) symbol= ~
>> Cliplus clirev == ? symbol=multiply by pseudoscalar? symbol=
>> Clifford conjugation: scalar part minus non-scalar part? symbol=
>>     
>
> The involutions you give are again assuming a diagonal (orthonormal)
> basis for the quadratic (bilinear) form. Since this is bad for applications,
> it has to be avoided. Of course if you know you are in a diagonal basis
> you can use faster algorithms (like defining a cmulDiag)
>
> Grade involution:
> Any (Grassmann-) Clifford algebra is built up from a base space V (of dimension
> dim V = n) You have two natural transformations on V which generalize
> to the whole space W=/\V of dim W = 2^n.
> a) The identity map (does nothing on W)
> b) The map sending every vector v \in V to its additiove inverse (negative)
>     barV : V -> V :: v |--> -v
>     This will send any basis vector to its negative (regardless of the bilinear
>     form). So iff your basis is like the grBasis :=[Id, e1, e2, e1we2, e3,...]
>     barW will send all elements eiw..wej to (-)^number of basis
> elements eiw..wej
> c) Iff the basis is more general (like in the case with an antisymmetric part in
>     the bilinear form, you always fing a new basis (inhomgeous in the old
>     generators) such that the involution does the trick for the new
> basis elements.
>     Eg: B:= matrix [[1,q],[-q ,1]] you would liek tto define a new
> Grassmann basis
>    grBasWf = [Id, f1(=e1),f2(=e2), f1wf2 ( f1wf2-q*Id), f3 (=e3),...] etc
>    In this case you will see that the new basis is graded (only even or odd
>    elements appear) so the involution still works as expected.
>
> Whta you technically do is the following:
> * Take a vector space V
> * build the free algebra over it, that is the tensor algebra TV, its product is
>    concatenation it is noncommutative
> * You are only intersted in antisymmetric tensors, hence factor out
> all symmetric
>    ones. That is you identify all terms of the form
>    (v1 (x)... (x) vi (x) vi (x) ... (x) vd) = 0
>    [One can check that this is a graded ideal I_gr and one can therefor factor
>   the tensor algebra TV/I_gr = /\V
>   (for the generators this means you impose ei^2=0. From that you conclude that
>    0=(ei+ej)^(x)2 = ei^2+ei (x) ej + ej (x) ei + ej^2
>      = ei (x) ej + ej (x) ej
>    calling the projectet tensor /\ you get
>    ei /\ ej = -  ej /\ ei )
>
> Reversion:
>    This is quite different. The reversion needs to know about the Clifford
>    multiplication, so its actually defined in the Clifford basis
>    cliBas:= [Id, e(1), e(2), e(12):=e(1)*e(2), e(3),... ]
>    and it reverses the order of the Clifford multiplication (which depends on
>    the quadratic (bilinear) form. Hence you have (eij) Grassmann ,
> e(ij) Clifford
>    basis elements)
>    reversion e12 = reversion (e(12)-B(e1,e2)*Id) = e(21)-B(e1,e2)*Id
>        = e2/\e1 +(B(e2,e1)-B(e1,e2))*Id
>        = -e12 - 2F(e1,e2)
>    where F(e1,e2) is the antisymmetric part of B, hence this difficulty will
>    _only_ appear when there is an antisymmetric part. Since not many people
>    have looked at that, its rarely described in literature, but see my
> joint papers
>    with Rafal Ablamowicz:
> #
> Mathematics of CLIFFORD - A Maple package for Clifford and Grassmann algebras
> Rafal Ablamowicz, B. Fauser: Adv. in Appl. Clifford Alg. 15 No. 2, 2005:157-181
>
> #
> arXiv:math-ph/0212032
> Clifford and Grassmann Hopf algebras via the BIGEBRA package for Maple
> Rafal Ablamowicz, B. Fauser: Comp. Physics Comm. 170, 2005:115--130
>   available from the arXiv (or I can send you pdf's).
>   
> Technically the reversion comes from the dualising the vector space V -> V*
> and building the tensor algebra over the dualised vector space V* and
> identifying
> V* ~= V canonically. The project onto antisymmetric tensors. You see
> that the symmetric group acts on tensors by permuting the 'list' ov
> vectors a tensor is forms of. The reverison is the unique larget
> permutation (usually called w)
> with the most inversions (in reduced notation). So reversion is not
> just adding a sign, its really reversing the list of all vectors
> (generators) and then reorder them using the antisymmetry and collect
> the minus signs.
>
> conjugation is just the composition of recerion and grade involution:
>
> conjugation x == reversion gradeinvolution x
>                       (== gradeinvolution reversion x) -- oder does not matter
>
> So first thing is to implement:
>
> Grassmann wedge
> Grassmann meet (note that the meet is a sort of wedge but with the roles
>   of the grades inverted)
> Clifford product for a bilinear form (this is not hard, its the same routine
> which calculates the Clifford product for a symmetric bilinear form or an
> arbitrary bilinear form)
>
>   
>> I expect I had better ignore the Spinors for now although I am curious about
>> how they should be added on later.
>>     
>
> Indeed, forget about them for now. I just added the spinor things to
> make sure there are matrix analogs which show that the algebra
> computes correctly. It is
> just a way to convince yourself that everything works right. It was not meant
> (yet) as a feature request. (Spinors come in handy when describing
> linear complexes in projective space)
>
>   
>> Upto now I have thought of spinors as an even subalgebra of Clifford
>> algebras?
>>     
>
> There are many ways to look at spinors. Every way has its own benefit.
> Indeed the weakest is to go for matrix representations and confuse
> those with the abstract algebra. In the examples you see that all
> three Clifford algebras Cl(2,0), CL(1,1)
> and CL(0,2) finally can be modelled by 2x2 matrices, but how to
> identify them if only the matrices are given?
>   The spinors in the examples are (left) idela spinors, that is they
> are elements of a minimal left ideal of the Clifford algebra and
> therefore them self representable as Clifford numbers (as clearly can
> be seen by inspecting the lists calld spinorSpace). If represented in
> the (same) spinor basis, these elements make up a matrix with a single
> non-zero column, forgetting about the zero columns gives what you see
> usually (but it gets more complicated if the ring is no longer the
> reals, even complex conjugation is then a differently presented
> operation).
>   Some of the matrix concepts are difficult to translate back into the
> algebra, eg transposition if the bilinear form is not
> diagonal/symmetric... this is a reseach
> subject (and I hope there will be soon a paper comming out clarifying
> this partly).
>
>   
>> (rotation by 2*pi multiplies by -1) but
>> this does not seem to be the case here? Would spinors require a new type of
>> multiplication or a new domain?
>>     
>
> If a spinor is represented _inside_ of the Clifford algebra, no new
> multiplications are needed. That's the nice feature of unifying these
> things. Interpreting spinors as rotations can be done by constructing
> so called operator spinors, well described eg in Perrti Lounesto's
> boon Clifford algebras and spinors. Also this is not yet important.
> (And will not need new algebra).
>
> What you need to implement at the moment is:
>
> a) A Grassmann basis (module over some (commutative) ring, field)
>    [Clifford has some undocumented features which allow a q-deformation here
>     but I guess you should ignore that too]
>
> b) the wedge and meet products, and some helper functions, like
>    extraction of the coefficient of the identiy, the volume elemenet etc
>    gradeinvolution, Grassmann reversion (that is the above reversion where
>    all terms comming from the bilinear form are absent), so this is
> just the sign
>    factor (or better (-1)^{number of involutions of the permutatiosn which
>    reorders the rerm} this would allow to replace -1 by generic q).
>
> a) and b) make up a GrassmannAlgebra (and with very little effort could be
> turned into a Grassmann Hopf algebra by adding a wedge corproduct, and
> an antipode)
>
> c) The Clifford product, based on a correctly implemented
> leftContraction and rightContraction. This is done easily by a
> recursion, as I tried to explain in a previous mail.
>
> With x,y in V u,v,w in W=/\V you have
>
> i) x * y =  lc(x,y) + x/\y  and 1*1=1
> ii) x * (u /\ v) = x /\ u /\ v + lc(x, u/\v)
>                      = x/\u/\v + lc(x,u)/\v + gradeinvolution(u) /\ lc(x, v)
>    (same for (u/\v) * y using right contraction)
> iii) Since every term u can be recursively be decomposed as a Clifford product
>    you can finally evaluate u * v by
>    u = w*x  (where the grade of w is strictly less than that of u
>    u * v = (w*x)*v = w*(x*v)  and use the above recursion with 1*1=1
>
> I am sorry to have to less time currently to sit down and just provide the code,
> I have some other things on my table which are urgent.
>
> Hope this helps, otherwise feel free to ask.
> Ciao
> BF.
>
>   




From MAILER-DAEMON Sat Nov 28 00:53:18 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NEGFC-0000Ra-M1
	for mharc-axiom-developer@gnu.org; Sat, 28 Nov 2009 00:53:18 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NEGFA-0000R4-UY
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 00:53:16 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NEGF5-0000Os-OX
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 00:53:15 -0500
Received: from [199.232.76.173] (port=52410 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NEGF5-0000On-Hi
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 00:53:11 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:45218
	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 <daly@axiom-developer.org>) id 1NEGF5-00032o-90
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 00:53:11 -0500
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 nAS5qw8a002569;
	Fri, 27 Nov 2009 23:53:02 -0600
Message-ID: <4B10BA46.7040004@axiom-developer.org>
Date: Sat, 28 Nov 2009 00:51:02 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bug 387255 <387255@bugs.launchpad.net>,
	Christoph Egger <debian@christoph-egger.org>,
	daly <daly@axiom-developer.org>,
	Axiom-Developer <axiom-developer@nongnu.org>
References: <20090615110455.20445.98183.malonedeb@palladium.canonical.com>
	<20091127213158.GA5775@christoph-egger.org>
In-Reply-To: <20091127213158.GA5775@christoph-egger.org>
Content-Type: text/plain; charset=UTF-8; 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] Re: [Bug 387255] Axiom in Debian
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 28 Nov 2009 05:53:17 -0000

Christoph Egger wrote:
> Hi!
>
> 	I'm currently having a look at this open RC Bug in Debian and
> Ubuntu. You said you know how this is to be solved, can you provide a
> patch or instructions on how to fix it?
>
> Thanks
>
>         Christoph
>
>   
Christoph,

I downloaded debian-503-i386-netinst.iso and used it to build a clean
version of debian.

I set up the prerequired packages (not all are required but....) and
then built the latest release (November 2009)

I did the following steps:

apt-get -y install gcc build-essential debhelper gcl gettext gs-gpl 
html2text
apt-get -y install intltool-debian libgmp3-dev libice-dev libxau-dev 
libxaw7-dev
apt-get -y install po-debconf x-dev x11proto-input-dev x11proto-kb-dev
apt-get -y install libncurses5-dev libreadline5-dev libstdc++6-4.1-dev gawk
apt-get -y install texlive-pstricks git-core texlive
git clone git://axiom.git.sourceforge.net/gitroot/axiom/axiom
cd axiom
export AXIOM=`pwd`/mnt/debian
export PATH=$AXIOM/bin:$PATH
make

I uploaded the binary as
http://daly.axiom-developer.org/axiom-debian-nov2009-bin.tgz

To run it do:
wget http://daly.axiom-developer.org/axiom-debian-nov2009-bin.tgz
tar -zxf axiom-debian-nov2009-bin.tgz
cd axiom
export AXIOM=`pwd`/mnt/debian
export PATH=$AXIOM/bin:$PATH
axiom

In the hyperdoc window you can click on

Basic Commands -> Draw -> A function of two variables -> Continue -> Do It

and you should see a 3D graphics

At the Axiom comand line you can type:

integrate(sin(x),x)

and get back "- cos(x)"

Let me know if it works for you.

Tim Daly
Axiom Lead Developer






From MAILER-DAEMON Sat Nov 28 01:48:57 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NEH73-0002Zx-3O
	for mharc-axiom-developer@gnu.org; Sat, 28 Nov 2009 01:48:57 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NEH71-0002ZW-2j
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 01:48:55 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NEH6w-0002Ws-JU
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 01:48:54 -0500
Received: from [199.232.76.173] (port=55631 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NEH6w-0002Wj-93
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 01:48:50 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:57724
	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 <daly@axiom-developer.org>) id 1NEH6v-0007qQ-PL
	for axiom-developer@nongnu.org; Sat, 28 Nov 2009 01:48:49 -0500
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 nAS6me8a020535;
	Sat, 28 Nov 2009 00:48:40 -0600
Message-ID: <4B10C754.7050702@axiom-developer.org>
Date: Sat, 28 Nov 2009 01:46:44 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: Bug 387255 <387255@bugs.launchpad.net>,
	Christoph Egger <debian@christoph-egger.org>,
	daly <daly@axiom-developer.org>,
	Axiom-Developer <axiom-developer@nongnu.org>
References: <20090615110455.20445.98183.malonedeb@palladium.canonical.com>
	<20091127213158.GA5775@christoph-egger.org>
	<4B10BA46.7040004@axiom-developer.org>
In-Reply-To: <4B10BA46.7040004@axiom-developer.org>
Content-Type: text/plain; charset=UTF-8; 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] Re: [Bug 387255] Axiom in Debian
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Sat, 28 Nov 2009 06:48:55 -0000

Christoph,

I would like to replace the Debian version (from 2005)
to be a later version. How do I go about doing this?

Tim Daly
Axiom Lead Developer




From MAILER-DAEMON Sun Nov 29 19:20:18 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NEu02-0006oR-Ir
	for mharc-axiom-developer@gnu.org; Sun, 29 Nov 2009 19:20:18 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NEtzz-0006nr-Sv
	for axiom-developer@nongnu.org; Sun, 29 Nov 2009 19:20:15 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NEtzu-0006n8-SE
	for axiom-developer@nongnu.org; Sun, 29 Nov 2009 19:20:15 -0500
Received: from [199.232.76.173] (port=60204 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NEtzu-0006n5-PO
	for axiom-developer@nongnu.org; Sun, 29 Nov 2009 19:20:10 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:57814
	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 <daly@axiom-developer.org>) id 1NEtzu-00027Q-Gw
	for axiom-developer@nongnu.org; Sun, 29 Nov 2009 19:20:10 -0500
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 nAU0K38a025592;
	Sun, 29 Nov 2009 18:20:04 -0600
Message-ID: <4B13102C.5020203@axiom-developer.org>
Date: Sun, 29 Nov 2009 19:22:04 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org,
	"daly@axiom-developer.org >> daly" <daly@axiom-developer.org>
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] Knuth talks about Literate Programming
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 30 Nov 2009 00:20:16 -0000

http://stanford-online.stanford.edu/seminars/knuth/871021-knuth-100.asx
http://stanford-online.stanford.edu/seminars/knuth/871023-knuth-100.asx




From MAILER-DAEMON Mon Nov 30 07:10:36 2009
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1NF55Q-0005yo-HG
	for mharc-axiom-developer@gnu.org; Mon, 30 Nov 2009 07:10:36 -0500
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1NF55O-0005yD-R5
	for axiom-developer@nongnu.org; Mon, 30 Nov 2009 07:10:34 -0500
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1NF55J-0005vf-Pw
	for axiom-developer@nongnu.org; Mon, 30 Nov 2009 07:10:34 -0500
Received: from [199.232.76.173] (port=52759 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1NF55J-0005va-Hz
	for axiom-developer@nongnu.org; Mon, 30 Nov 2009 07:10:29 -0500
Received: from vs338.rosehosting.com ([209.135.140.38]:44573
	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 <daly@axiom-developer.org>) id 1NF55J-0005eN-FH
	for axiom-developer@nongnu.org; Mon, 30 Nov 2009 07:10:29 -0500
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 nAUCAR8a021946;
	Mon, 30 Nov 2009 06:10:27 -0600
Message-ID: <4B13B6AA.5040209@axiom-developer.org>
Date: Mon, 30 Nov 2009 07:12:26 -0500
From: Tim Daly <daly@axiom-developer.org>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: axiom-developer@nongnu.org,
	"daly@axiom-developer.org >> daly" <daly@axiom-developer.org>
References: <4B00D674.5090609@axiom-developer.org>
	<200911210956.42858.ax87438@martinb.com>
	<4B082039.1020300@axiom-developer.org>
	<200911212244.44551.ax87438@martinb.com>
	<4B089D28.2070104@axiom-developer.org>
In-Reply-To: <4B089D28.2070104@axiom-developer.org>
Content-Type: text/plain; charset=UTF-8; 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] Embedding Axiom
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Axiom Developers <axiom-developer.nongnu.org>
List-Unsubscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>, 
	<mailto:axiom-developer-request@nongnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/pipermail/axiom-developer>
List-Post: <mailto:axiom-developer@nongnu.org>
List-Help: <mailto:axiom-developer-request@nongnu.org?subject=help>
List-Subscribe: <http://lists.nongnu.org/mailman/listinfo/axiom-developer>,
	<mailto:axiom-developer-request@nongnu.org?subject=subscribe>
X-List-Received-Date: Mon, 30 Nov 2009 12:10:35 -0000

Another trend that is important is the development of parallelism.
Berkeley has a group dedicated to this it seems[1]. Assuming that
today's uniprocessor power is the peak speed for the future we
need to architect the system to take advantage of parallelism.

My view of the natural embedding of parallelism in Axiom is
tightly coupled to provisos. The proviso mechanism holds, manages,
and carries the assumptions that each branch of a computation will
use to constrain the answer. Thus if you have
   f(x) | x > 0
   f(x) | x = 0
   f(x) | x < 0
then you have the ability to perform all three computations in
parallel. I am assuming functional programming and immutable
data structures. These three computations can be forked into their
own images and then the results can be joined. This is a "natural"
parallelism for mathematics computation.

Thus some thought needs to be given to re-architecting the system
to support provisos in a natural way.

Tim

[1] http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-183.pdf



