From MAILER-DAEMON Mon Sep 01 11:42:08 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaBXc-00054M-MM
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 11:42:08 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaBXa-00050n-9G
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 11:42:06 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaBXZ-0004zN-Dd
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 11:42:05 -0400
Received: from [199.232.76.173] (port=44677 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaBXZ-0004zD-AY
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 11:42:05 -0400
Received: from wa-out-1112.google.com ([209.85.146.181]:43122)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <movgp0@gmail.com>) id 1KaBXZ-0003UG-K9
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 11:42:05 -0400
Received: by wa-out-1112.google.com with SMTP id j5so1634806wah.18
	for <axiom-developer@nongnu.org>; Mon, 01 Sep 2008 08:42:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:received:received:message-id:date:from:to
	:subject:mime-version:content-type:content-transfer-encoding
	:content-disposition;
	bh=bYHrI4860EBEo4SNhuqKBC4DA0oPnovoZO1Qp4iH/Ys=;
	b=XEsNhZ8fgaZ56+pnoMJttXPVq2MvB7wD2ETZjFpfpohCeD0L0UBcahr0GLHhpH8jJ2
	kBJ/bl7X/6bxUnOgI4yHHWD4oUJmVit5nTOfgMhgYLmeguNfTDXgiiUPM7sIX1zdSfpX
	2tgsC8JghR18dR86u7D1eVustklq8T6WP5Tow=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=message-id:date:from:to:subject:mime-version:content-type
	:content-transfer-encoding:content-disposition;
	b=vTUYupxzAzAFckZiq+xwtkLoLCYbw5fd26oZb81PalBOZOadbfVYOMGlXoWBRzvG1Z
	mC5aAbnvrjPyi5hWRv9N/Ci16tVvUq+hqwoePRl2Z8kVkJfLPOBRYZFf0ROx3iHKNEpS
	B6zLOsBRkMCstP5A8Yt8ErFOYZCwCpM3O8FsM=
Received: by 10.115.90.1 with SMTP id s1mr5356712wal.214.1220283723035;
	Mon, 01 Sep 2008 08:42:03 -0700 (PDT)
Received: by 10.114.180.12 with HTTP; Mon, 1 Sep 2008 08:42:03 -0700 (PDT)
Message-ID: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
Date: Mon, 1 Sep 2008 17:42:03 +0200
From: "Mov GP 0" <movgp0@gmail.com>
To: axiom-developer <axiom-developer@nongnu.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2)
Subject: [Axiom-developer] Counting Elements in Cyclic List
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, 01 Sep 2008 15:42:06 -0000

Hi,
I'm new to axiom and tried to count the elements in a cyclic list and
expected to get %PositiveInfiniy as Answer. Instead it resulted in an
infinite loop. Version is Axiom 3.9 (September 2005)

=======================================
What I've did:

u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part :=
rest(u,2);  setrest!(end, part);

u is now [9,2,(42,7,1)] -- the () are the cyclic part

when you count the elements using "#u" then it resolves in a loop.

=======================================
What I 've expected:

There should be a Property like "isCyclic?" that tests if the list is
cyclic. The new code for counting should be something like

count(x) == if isCyclic? x then return ?PositiveInfinity else #x

=======================================
Question:
Is this fixed already in a newer version?


Thanks!
MovGP0



From MAILER-DAEMON Mon Sep 01 12:28:52 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaCGq-0005GS-Ms
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 12:28:52 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaCGo-0005Fy-70
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 12:28:50 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaCGm-0005FM-QW
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 12:28:49 -0400
Received: from [199.232.76.173] (port=58169 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaCGm-0005FG-Fw
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 12:28:48 -0400
Received: from ey-out-1920.google.com ([74.125.78.147]:46456)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bill.page@newsynthesis.org>) id 1KaCGm-0003o9-46
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 12:28:48 -0400
Received: by ey-out-1920.google.com with SMTP id 4so723258eyk.4
	for <axiom-developer@nongnu.org>; Mon, 01 Sep 2008 09:28:43 -0700 (PDT)
Received: by 10.210.24.12 with SMTP id 12mr6763916ebx.72.1220286523119;
	Mon, 01 Sep 2008 09:28:43 -0700 (PDT)
Received: by 10.210.130.9 with HTTP; Mon, 1 Sep 2008 09:28:43 -0700 (PDT)
Message-ID: <fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
Date: Mon, 1 Sep 2008 12:28:43 -0400
From: "Bill Page" <bill.page@newsynthesis.org>
To: "Mov GP 0" <movgp0@gmail.com>
Subject: Re: [Axiom-developer] Counting Elements in Cyclic List
In-Reply-To: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2)
Cc: axiom-developer <axiom-developer@nongnu.org>,
	fricas-devel <fricas-devel@googlegroups.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, 01 Sep 2008 16:28:50 -0000

On Mon, Sep 1, 2008 at 11:42 AM, Mov GP 0 wrote:

> I'm new to axiom and tried to count the elements in a cyclic
> list and expected to get %PositiveInfiniy as Answer. Instead it
> resulted in an infinite loop. Version is Axiom 3.9 (September 2005)
>

Welcome.

You are using a rather old version of Axiom. Perhaps you should
upgrade to one of the newer version in the axiom family:

 Axiom:     http://www.axiom-developer.org/
 OpenAxiom: http://www.open-axiom.org/
 FriCAS:    http://fricas.sourceforge.net/

> =======================================
> What I've did:
>
> u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part :=
> rest(u,2);  setrest!(end, part);
>
> u is now [9,2,(42,7,1)] -- the () are the cyclic part
>
> when you count the elements using "#u" then it resolves in a loop.
>

I can confirm that this works in FriCAS:

                 FriCAS (AXIOM fork) Computer Algebra System
                         Version: FriCAS 2008-02-09
               Timestamp: Thursday March 27, 2008 at 18:27:30
-----------------------------------------------------------------------------
   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) -> u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part
:=rest(u,2);  setrest!(end, part);

                                          Type: List PositiveInteger
(2) -> u
             _____
   (2)  [9,2,4,7,1]
                                          Type: List PositiveInteger
(3) -> #u

   >> System error:

LENGTH: A proper list must not be circular: #1=(9 2 . #2=(4 7 1 . #2#))


> =======================================
> What I 've expected:
>
> There should be a Property like "isCyclic?" that tests if the list
> is cyclic.

There is an operator. Browse the List constructor in hyperdoc. Look
for 'cyclic?'.

(3) -> cyclic? u

   (3)  true
                                          Type: Boolean

> The new code for counting should be something like
>
> count(x) == if isCyclic? x then return ?PositiveInfinity else #x
>

(4) -> count(x) == if cyclic? x then return %PositiveInfinity else #x
                                          Type: Void
(
5) -> count u
   Compiling function count with type List PositiveInteger ->
      Polynomial Integer

   (5)  %PositiveInfinity
                                          Type: Polynomial Integer


> =======================================
> Question:
> Is this fixed already in a newer version?
>

If this doesn't work in other forks of Axiom then it should be
reported as an error.

Regards,
Bill Page.



From MAILER-DAEMON Mon Sep 01 13:00:29 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaClR-0000pU-7w
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 13:00:29 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaClP-0000ng-NX
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:00:27 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaClO-0000mG-1A
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:00:27 -0400
Received: from [199.232.76.173] (port=37126 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaClN-0000mD-V7
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:00:25 -0400
Received: from grace.univie.ac.at ([131.130.3.115]:55765)
	by monty-python.gnu.org with esmtps
	(TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60)
	(envelope-from <martin.rubey@univie.ac.at>) id 1KaClN-0001LM-DB
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:00:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=univie.ac.at; s=rev1; h=Sender:To:Cc:Subject:References:From:
	Date:In-Reply-To:Message-ID:MIME-Version:Content-Type; bh=oEgpTe
	1guUQmaXjNJDZzwX5yQMHGWxmZ+ncQVZGoxxo=; b=iDBXbc6ZAFlB0V9WTb3oAd
	H3EW03Z2dWvUGIGa3OuQeUWEWtx0y7CcNN92euaytKPCfY9YuhOmp8CPhp93GqYR
	4Q6DS44vvgtfKv1rVLaKazl2YXLWaDYQ287uX5qmvQSDn7cbtPhf3/cGUCg7ZBkp
	s1p77p8K5eAlK10WattKI=
Received: from justin.univie.ac.at ([131.130.3.111] helo=justin.univie.ac.at)
	by grace.univie.ac.at with esmtp (Exim 4.69)
	(envelope-from <martin.rubey@univie.ac.at>)
	id 1KaClJ-0002OI-0D; Mon, 01 Sep 2008 19:00:21 +0200
Received: from aquin.mat.univie.ac.at ([131.130.16.163]
	helo=aquin.mat.univie.ac.at)
	by justin.univie.ac.at with esmtp (Exim 4.69)
	(envelope-from <martin.rubey@univie.ac.at>)
	id 1KaClI-0004lL-Tx; Mon, 01 Sep 2008 19:00:20 +0200
Sender: rubey@aquin.mat.univie.ac.at
To: fricas-devel@googlegroups.com
Subject: Re: [fricas-devel] Re: [Axiom-developer] Counting Elements in Cyclic
	List
References: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
	<fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
From: Martin Rubey <martin.rubey@univie.ac.at>
Date: 01 Sep 2008 19:00:23 +0200
In-Reply-To: <fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
Message-ID: <9qtzczby3c.fsf@aquin.mat.univie.ac.at>
Lines: 8
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4)
Cc: axiom-developer <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, 01 Sep 2008 17:00:27 -0000

"Bill Page" <bill.page@newsynthesis.org> writes:

> (4) -> count(x) == if cyclic? x then return %PositiveInfinity else #x

WARNING: %PositiveInfinity has no special meaning in axiom / friCAS / OpenAxiom.
I suggest you use plusInfinity(), if you must.

Martin




From MAILER-DAEMON Mon Sep 01 13:23:50 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaD81-0003Uq-OI
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 13:23:49 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaD7z-0003Tw-QF
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:23:47 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaD7x-0003Sj-V4
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:23:47 -0400
Received: from [199.232.76.173] (port=37066 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaD7x-0003SZ-Nx
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:23:45 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:45235
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KaD7x-0004uQ-Cv
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:23:45 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=jk5hlZ_7lBsA:10 a=Z3xz-dyDBRsA:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=cNcjWzFVtAXicvvNzU0A:9 a=c2bswuU9Asnmy15JndwA:7
	a=A563AR7pOVEVxtKq3D_xjzDwOeEA:4 a=ndTQkonOMSIA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:49595] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id 46/98-31288-6152CB84; Mon, 01 Sep 2008 13:23:34 -0400
Received: (qmail 15564 invoked from network); 1 Sep 2008 17:23:33 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <movgp0@gmail.com>; 1 Sep 2008 17:23:33 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m81IoFG19971;
	Mon, 1 Sep 2008 14:50:15 -0400
Date: Mon, 1 Sep 2008 14:50:15 -0400
Message-Id: <200809011850.m81IoFG19971@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: bill.page@newsynthesis.org
In-reply-to: <fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
	(bill.page@newsynthesis.org)
Subject: Re: [Axiom-developer] Counting Elements in Cyclic List
References: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
	<fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, fricas-devel@googlegroups.com
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 01 Sep 2008 17:23:48 -0000

Bill,

Since you are posting this to the Axiom mailing list I'd suggest
that you try it in Axiom and post the result. If it fails, please
post a patch to this mailing list that fixes the problem.

Tim



From MAILER-DAEMON Mon Sep 01 13:40:26 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaDO5-00057A-GF
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 13:40:25 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaDO3-00056R-Ft
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:40:23 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaDO2-00056F-0g
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:40:23 -0400
Received: from [199.232.76.173] (port=60778 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaDO1-00056C-Qq
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:40:21 -0400
Received: from ey-out-1920.google.com ([74.125.78.146]:59192)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <bill.page@newsynthesis.org>) id 1KaDO1-0008FI-0y
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 13:40:21 -0400
Received: by ey-out-1920.google.com with SMTP id 4so733973eyk.4
	for <axiom-developer@nongnu.org>; Mon, 01 Sep 2008 10:40:19 -0700 (PDT)
Received: by 10.210.21.6 with SMTP id 6mr6844658ebu.111.1220290819612;
	Mon, 01 Sep 2008 10:40:19 -0700 (PDT)
Received: by 10.210.130.9 with HTTP; Mon, 1 Sep 2008 10:40:19 -0700 (PDT)
Message-ID: <fbcd16d40809011040t118bee4etd8cc63f2e3e2a9e6@mail.gmail.com>
Date: Mon, 1 Sep 2008 13:40:19 -0400
From: "Bill Page" <bill.page@newsynthesis.org>
To: "Martin Rubey" <martin.rubey@univie.ac.at>
Subject: Re: [fricas-devel] Re: [Axiom-developer] Counting Elements in Cyclic
	List
In-Reply-To: <9qtzczby3c.fsf@aquin.mat.univie.ac.at>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
	<fbcd16d40809010928p73a1dfa4xcadce11ad0656027@mail.gmail.com>
	<9qtzczby3c.fsf@aquin.mat.univie.ac.at>
X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2)
Cc: fricas-devel@googlegroups.com, axiom-developer <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, 01 Sep 2008 17:40:23 -0000

On Mon, Sep 1, 2008 at 1:00 PM, Martin Rubey wrote:
> Bill Page writes:
>
>> (4) -> count(x) == if cyclic? x then return %PositiveInfinity else #x
>
> WARNING: %PositiveInfinity has no special meaning in axiom / friCAS / OpenAxiom.
> I suggest you use plusInfinity(), if you must.
>

You are right. Or also written:

(5) -> %plusInfinity
   Loading ../algebra/ORDCOMP.fas for domain OrderedCompletion

   (5)   + infinity
                                              Type: OrderedCompletion Integer

Regards,
Bill Page.



From MAILER-DAEMON Mon Sep 01 15:00:58 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaEe1-0007HC-Tw
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 15:00:57 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaEdz-0007Gp-9C
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 15:00:55 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaEdw-0007Gd-FP
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 15:00:53 -0400
Received: from [199.232.76.173] (port=33698 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaEdw-0007Ga-D1
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 15:00:52 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:33310
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KaEdw-0002jV-2X
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 15:00:52 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=jk5hlZ_7lBsA:10 a=Z3xz-dyDBRsA:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=37mPLz1kAAAA:8 a=uN2nZ6oh2lhKe_Rpu2sA:9
	a=hZNL8qoZgkyxAopKnAHUls04g7wA:4 a=yqFbmg6DZFsA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.47] ([24.154.1.47:40571] helo=pop-4.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id B1/A3-24455-8DB3CB84; Mon, 01 Sep 2008 15:00:40 -0400
Received: (qmail 5861 invoked from network); 1 Sep 2008 19:00:40 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-4.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <axiom-developer@nongnu.org>; 1 Sep 2008 19:00:40 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m81KRIs20021;
	Mon, 1 Sep 2008 16:27:18 -0400
Date: Mon, 1 Sep 2008 16:27:18 -0400
Message-Id: <200809012027.m81KRIs20021@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: movgp0@gmail.com
In-reply-to: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
	(movgp0@gmail.com)
Subject: Re: [Axiom-developer] Counting Elements in Cyclic List
References: <1601a3040809010842n1cb6545an5e6f2b1168542b42@mail.gmail.com>
X-detected-kernel: 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
Reply-To: daly@axiom-developer.org
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, 01 Sep 2008 19:00:55 -0000

>I'm new to axiom and tried to count the elements in a cyclic list and
>expected to get %PositiveInfiniy as Answer. Instead it resulted in an
>infinite loop. Version is Axiom 3.9 (September 2005)
>
>=======================================
>What I've did:
>
>u:= [9,2,4,7]; concat! (u, [1,2,42]); end := rest(u,4); part :=
>rest(u,2);  setrest!(end, part);
>
>u is now [9,2,(42,7,1)] -- the () are the cyclic part
>
>when you count the elements using "#u" then it resolves in a loop.
>
>=======================================
>What I 've expected:
>
>There should be a Property like "isCyclic?" that tests if the list is
>cyclic. The new code for counting should be something like
>
>count(x) == if isCyclic? x then return ?PositiveInfinity else #x
>
>=======================================
>Question:
>Is this fixed already in a newer version?

In the documentation it states:
  "Note that using the "#" operator on a list with cycles
   causes Axiom to enter an infinte loop"

See:
<http://axiom-developer.org/axiom-website/documentation.html>
in Volume 0: Axiom Jenks and Sutor p41

Tim



From MAILER-DAEMON Mon Sep 01 21:25:23 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaKe3-0004Zz-Ci
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 21:25:23 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaKdz-0004ZB-Vv
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:25:20 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaKdy-0004Yv-IA
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:25:18 -0400
Received: from [199.232.76.173] (port=47162 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaKdy-0004Ys-Bg
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:25:18 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:48698
	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 1KaKdx-00044H-Th
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:25:18 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m821PDr3027302;
	Mon, 1 Sep 2008 20:25:13 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m821PD5R027299;
	Mon, 1 Sep 2008 20:25:13 -0500
Date: Mon, 1 Sep 2008 20:25:13 -0500
Message-Id: <200809020125.m821PD5R027299@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080831.01.tpd.patch (graphviz dotfile
	decoration)
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, 02 Sep 2008 01:25:20 -0000

algfact and algext now have graphviz information
========================================================================
diff --git a/changelog b/changelog
index 2a699f6..9398dcc 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080831 tpd src/algebra/algfact.spad graphviz dotfile decoration
+20080831 tpd src/algebra/algext.spad graphviz dotfile decoration
 20080830 tpd src/algebra/trigcat.spad graphviz dotfile decoration
 20080830 tpd src/algebra/si.spad graphviz dotfile decoration
 20080830 tpd src/algebra/sf.spad graphviz dotfile decoration
@@ -1028,23 +1030,23 @@
 20080416 tpd src/input/schaum3.input show Schaums-Axiom equivalence
 20080416 tpd src/input/schaum2.input show Schaums-Axiom equivalence
 20080415 tpd src/input/schaum1.input show Schaums-Axiom equivalence
-20080414 tpd src/input/Makefile add integration regression testing	
+20080414 tpd src/input/Makefile add integration regression testing
 20080414 tpd src/input/schaum34.input integrals of csch(ax)
 20080414 tpd src/input/schaum33.input integrals of csch(ax)
 20080414 tpd src/input/schaum32.input integrals of sech(ax)
 20080414 tpd src/input/schaum31.input integrals of coth(ax)
-20080413 tpd src/input/Makefile add integration regression testing	
+20080413 tpd src/input/Makefile add integration regression testing
 20080413 tpd src/input/schaum30.input integrals of tanh(ax)
 20080413 tpd src/input/schaum29.input integrals of sinh(ax) and cosh(ax)
 20080413 tpd src/input/schaum28.input integrals of cosh(ax)
 20080413 tpd src/input/schaum27.input integrals of sinh(ax)
 20080413 tpd src/input/schaum26.input integrals of ln x
-20080409 tpd src/input/Makefile add integration regression testing	
+20080409 tpd src/input/Makefile add integration regression testing
 20080409 tpd src/input/schaum25.input integrals of e^(a*x)
 20080409 tpd readme add Max Tegmark
 20080409 tpd src/interp/setq.lisp add Max Tegmark
 20080409 tpd src/doc/toe.gif added, by Max Tegmark <tegmark@mit.edu>
-20080409 tpd src/input/Makefile add integration regression testing	
+20080409 tpd src/input/Makefile add integration regression testing 
 20080409 tpd src/input/schaum24.input integrals of inverse trig functions
 20080409 tpd src/input/schaum23.input integrals of csc(ax)
 20080409 tpd src/input/schaum22.input integrals of sec(ax)
@@ -1227,7 +1229,7 @@
 20080104 mxr src/input/calculus2.input fix function names (7093)
 20080103 mxr src/algebra/sf.spad handle besselK (7090/355)
 20080103 mxr src/algebra/op.spad handle besselK (7090/355)
-20080103 mxr src/algebra/combfunc.spad handle besselK (7090/355)	
+20080103 mxr src/algebra/combfunc.spad handle besselK (7090/355) 
 20080102 tpd src/hyper/Makefile.pamphlet fix typo for axbook
 20071230 tpd src/hyper/Makefile prevent spurious remake of axbook (7052)
 20071230 tpd src/input/summation.input update tests with new mathml output
@@ -1896,7 +1898,7 @@
 20070704 tpd zips/gcl-2.6.3.cmpnew.gcl_cmpflet.lsp.patch dos2unix
 20070704 tpd zips/gcl-2.6.2.cmpnew.gcl_cmpflet.lsp.patch dos2unix
 20070704 tpd zips/gcl-2.6.2a.cmpnew.gcl_cmpflet.lsp.patch dos2unix
-20070702 tpd src/input/asec.input fix \usepackage order	
+20070702 tpd src/input/asec.input fix \usepackage order 
 20070701 tpd merge downcase branch to master
 20070701 tpd src/hyper/pages/util.ht downcase Continue, DoIt bitmaps
 20070701 tpd src/interp/setvart.boot downcase INTERP.EXPOSED
diff --git a/src/algebra/algext.spad.pamphlet b/src/algebra/algext.spad.pamphlet
index 30e5152..3fd1300 100644
--- a/src/algebra/algext.spad.pamphlet
+++ b/src/algebra/algext.spad.pamphlet
@@ -10,6 +10,11 @@
 \tableofcontents
 \eject
 \section{domain SAE SimpleAlgebraicExtension}
+<<dot>>=
+"SAE" -> "MONOGEN"
+"SimpleAlgebraicExtension(a:CommutativeRing,b:UnivariatePolynomialCategory(a))"
+ -> "MonogenicAlgebra(a:CommutativeRing,b:UnivariatePolynomialCategory(a))"
+@
 <<domain SAE SimpleAlgebraicExtension>>=
 )abbrev domain SAE SimpleAlgebraicExtension
 ++ Algebraic extension of a ring by a single polynomial
diff --git a/src/algebra/algfact.spad.pamphlet b/src/algebra/algfact.spad.pamphlet
index 3e90bb5..7940d37 100644
--- a/src/algebra/algfact.spad.pamphlet
+++ b/src/algebra/algfact.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package IALGFACT InnerAlgFactor}
+<<dot>>=
+"IALGFACT" -> "PACKAGE"
+"InnerAlgFactor(a:Field,b:UPOLYC(a),c:Join(...),d:UPOLYC(c))" -> "Package"
+@
 <<package IALGFACT InnerAlgFactor>>=
 )abbrev package IALGFACT InnerAlgFactor
 ++ Factorisation in a simple algebraic extension
@@ -99,6 +103,11 @@ InnerAlgFactor(F, UP, AlExt, AlPol): Exports == Implementation where
 
 @
 \section{package SAEFACT SimpleAlgebraicExtensionAlgFactor}
+<<dot>>=
+"SAEFACT" -> "PACKAGE"
+"SimpleAlgebraicExtensionAlgFactor(a:UPOLYC(FRAC(INT)),b:Join(...),c:UPOLYC(b))"
+   -> "Package"
+@
 <<package SAEFACT SimpleAlgebraicExtensionAlgFactor>>=
 )abbrev package SAEFACT SimpleAlgebraicExtensionAlgFactor
 ++ Factorisation in a simple algebraic extension;
@@ -127,6 +136,10 @@ SimpleAlgebraicExtensionAlgFactor(UP,SAE,UPA):Exports==Implementation where
 
 @
 \section{package RFFACT RationalFunctionFactor}
+<<dot>>=
+"RFFACT" -> "PACKAGE"
+"RationalFunctionFactor(a:UPOLYC(FRAC(POLY(INT))))" -> "Package"
+@
 <<package RFFACT RationalFunctionFactor>>=
 )abbrev package RFFACT RationalFunctionFactor
 ++ Factorisation in UP FRAC POLY INT
@@ -166,6 +179,11 @@ RationalFunctionFactor(UP): Exports == Implementation where
 
 @
 \section{package SAERFFC SAERationalFunctionAlgFactor}
+<<dot>>=
+"SAERFFC" -> "PACKAGE"
+"SAERationalFunctionAlgFactor(a:UPOLYC(FRAC(POLY(INT))),b:Join(...),c:UPOLYC(b))"
+    -> "Package"
+@
 <<package SAERFFC SAERationalFunctionAlgFactor>>=
 )abbrev package SAERFFC SAERationalFunctionAlgFactor
 ++ Factorisation in UP SAE FRAC POLY INT
@@ -194,6 +212,10 @@ SAERationalFunctionAlgFactor(UP, SAE, UPA): Exports == Implementation where
 
 @
 \section{package ALGFACT AlgFactor}
+<<dot>>=
+"ALGFACT" -> "PACKAGE"
+"AlgFactor(UPOLYC(AN))" -> "Package"
+@
 <<package ALGFACT AlgFactor>>=
 )abbrev package ALGFACT AlgFactor
 ++ Factorization of UP AN;



From MAILER-DAEMON Mon Sep 01 21:34:40 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaKn2-00089x-JO
	for mharc-axiom-developer@gnu.org; Mon, 01 Sep 2008 21:34:40 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaKmy-00086Q-5n
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:34:36 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaKmu-00083t-PP
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:34:35 -0400
Received: from [199.232.76.173] (port=56070 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaKmu-00083g-24
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:34:32 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:36302
	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 1KaKms-0005V0-Im
	for axiom-developer@nongnu.org; Mon, 01 Sep 2008 21:34:31 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m821YQr3027812;
	Mon, 1 Sep 2008 20:34:26 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m821YQEp027809;
	Mon, 1 Sep 2008 20:34:26 -0500
Date: Mon, 1 Sep 2008 20:34:26 -0500
Message-Id: <200809020134.m821YQEp027809@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080901.01.tpd.patch (add start of multivar poly
	test suite)
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, 02 Sep 2008 01:34:37 -0000

A multivariate polynomial test suite is being constructed similiar
to the schaums integration testing. This is the first file.
=====================================================================
diff --git a/changelog b/changelog
index 9398dcc..056933f 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20080901 tpd src/input/Makefile add start of multivar poly tests
+20080901 tpd src/input/bini.input add start of multivar poly tests
 20080831 tpd src/algebra/algfact.spad graphviz dotfile decoration
 20080831 tpd src/algebra/algext.spad graphviz dotfile decoration
 20080830 tpd src/algebra/trigcat.spad graphviz dotfile decoration
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 8bc5aa4..93c2ee7 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -275,7 +275,7 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     arrows.regress    asinatan.regress asinhatanh.regress \
     assign.regress    atansqrt.regress \
     asec.regress      bags.regress     bbtree.regress   besselk.regress \
-    binary.regress    biquat.regress \
+    binary.regress    bini.regress     biquat.regress \
     bop.regress       bstree.regress   bouquet.regress \
     bug100.regress    bug101.regress \
     bug103.regress    bug10069.regress \
@@ -520,8 +520,8 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/asec.input \
        ${OUT}/bags.input     ${OUT}/bbtree.input     ${OUT}/besselk.input \
        ${OUT}/bern.input \
-       ${OUT}/bernpoly.input ${OUT}/binary.input     ${OUT}/biquat.input \
-       ${OUT}/bop.input \
+       ${OUT}/bernpoly.input ${OUT}/binary.input     ${OUT}/bini.input \
+       ${OUT}/biquat.input   ${OUT}/bop.input \
        ${OUT}/bouquet.input  ${OUT}/bstree.input     ${OUT}/bug6357.input \
        ${OUT}/bug9057.input  ${OUT}/bug100.input     ${OUT}/bug101.input \
        ${OUT}/bug103.input \
@@ -729,7 +729,7 @@ DOCFILES= \
   ${DOC}/bbtree.input.dvi      ${DOC}/besselk.input.dvi    \
   ${DOC}/bern.input.dvi       \
   ${DOC}/bernpoly.input.dvi    ${DOC}/binary.input.dvi     \
-  ${DOC}/biquat.input.dvi \
+  ${DOC}/bini.input.dvi        ${DOC}/biquat.input.dvi \
   ${DOC}/bop.input.dvi         ${DOC}/bouquet.input.dvi    \
   ${DOC}/bstree.input.dvi      ${DOC}/bug10069.input.dvi   \
   ${DOC}/bug100.input.dvi      ${DOC}/bug101.input.dvi     \
diff --git a/src/input/bini.input.pamphlet b/src/input/bini.input.pamphlet
new file mode 100644
index 0000000..eac6e13
--- /dev/null
+++ b/src/input/bini.input.pamphlet
@@ -0,0 +1,2922 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input bini.input}
+\author{D. Bini and B. Mourrain}
+\maketitle
+\begin{abstract}
+The POSSO multivariate polynomial test suite.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+)spool bini.output
+)set message test on
+)set message type off
+)set message auto off
+)clear all
+
+@
+Bini and Mourrain define a hierarchy of classes for polynomial solutions:
+\begin{verbatim}
+  1 Complete_Intersection
+    1 Bezoutian_Matrix
+      1 Table_of_Multiplication
+        1 RUR
+          1 Uspensky
+            1 Real_Solve
+            2 Count_the_real_solutions
+          2 Uni_Solve
+            1 Solve
+        2 Hermite
+          1 Real_Solve
+          2 Count_the_real_solutions
+        3 Eigenvector
+          1 Solve
+          2 Real_Solve
+      2 Residue
+        1 Table_of_Multiplication
+          1 RUR
+            1 Uspensky
+              1 Real_Solve
+              2 Count_the_real_solutions
+            2 Uni_Solve
+              1 Solve
+          2 Hermite
+            1 Real_Solve
+            2 Count_the_real_solutions
+          3 Eigenvector
+            1 Solve
+            2 Real_Solve
+        2 Hermite
+          1 Real_Solve
+          2 Count_the_real_solutions
+      3 RUR
+        1 Uspensky
+          1 Real_Solve
+          2 Count_the_real_solutions
+        2 Uni_Solve
+          1 Solve
+      4 Elimination_of_variables
+        1 Uspensky
+          1 Real_Solve
+          2 Count_the_real_solutions
+        2 Uni_Solve
+          1 Solve
+  2 General_System
+    1 Grobner
+      1 Table_of_Multiplication
+        1 RUR
+          1 Uspensky
+            1 Real_Solve
+            2 Count_the_real_solutions
+          2 Uni_Solve
+            1 Solve
+        2 Hermite
+          1 Real_Solve
+          2 Count_the_real_solutions
+        3 Eigenvector
+          1 Solve
+          2 Real_Solve
+      2 Elimination_of_variables
+        1 Uspensky
+          1 Real_Solve
+          2 Count_the_real_solutions
+        2 Uni_Solve
+          1 Solve
+      3 Count_the_solutions
+  3 Generic_Complete_Intersection
+    1 Resultant_Matrix
+      1 Table_of_Multiplication
+        1 RUR
+          1 Uspensky
+            1 Real_Solve
+            2 Count_the_real_solutions
+          2 Uni_Solve
+            1 Solve
+        2 Hermite
+          1 Real_Solve
+          2 Count_the_real_solutions
+        3 Eigenvector
+          1 Solve
+          2 Real_Solve
+      2 Elimination_of_variables
+        1 Uspensky
+          1 Real_Solve
+          2 Count_the_real_solutions
+        2 Uni_Solve
+          1 Solve
+    2 Mix_Volume
+        1 Count_the_solutions
+\end{verbatim}
+
+\section{Bronstein2}
+Paramaters $a,b$ and variables  $x,y$)
+<<*>>=
+)clear all
+
+--S 1
+t1:=2*y^2*(y^2+x^2)+(b^2-3*a^2)*y^2-2*b*y^2*(x+y)+2*a^2*b*(y+x)_
+    -a^2*x^2+a^2*(a^2-b^2)
+--R 
+--R
+--R   (1)
+--R     4       3      2           2     2  2     2       2 2     2       2 2    4
+--R   2y  - 2b y  + (2x  - 2b x + b  - 3a )y  + 2a b y - a x  + 2a b x - a b  + a
+--E 1
+
+--S 2
+t2:=4*y^3+4*y*(y^2+x^2)-2*b*y^2-4*b*y*(y+x)+2*(b^2-3*a^2)*y+2*a^2*b
+--R 
+--R
+--R          3       2      2            2     2       2
+--R   (2)  8y  - 6b y  + (4x  - 4b x + 2b  - 6a )y + 2a b
+--E 2
+
+--S 3
+t3:=4*x*y^2-2*b*y^2-2*a^2*x+2*a^2*b
+--R 
+--R
+--R                  2     2      2
+--R   (3)  (4x - 2b)y  - 2a x + 2a b
+--E 3
+
+@
+\section{CzaporGeddes1}
+Variables $x,y,z$
+<<*>>=
+)clear all
+
+--S 4
+t1:=8*x^2-2*x*y-6*x*z+3*x+3*y^2-7*y*z+10*y+10*z^2-8*z-4
+--R 
+--R
+--R           2                        2                    2
+--R   (1)  10z  + (- 7y - 6x - 8)z + 3y  + (- 2x + 10)y + 8x  + 3x - 4
+--E 4
+
+--S 5
+t2:=10*x^2-2*x*y+6*x*z-6*x+9*y^2-y*z-4*y-2*z^2+5*z-9
+--R 
+--R
+--R            2                       2                    2
+--R   (2)  - 2z  + (- y + 6x + 5)z + 9y  + (- 2x - 4)y + 10x  - 6x - 9
+--E 5
+
+--S 6
+t3:=5*x^2+8*x*y+4*x*z+8*x+9*y^2-6*y*z+2*y-z^2-7*x+5
+--R 
+--R
+--R           2                    2                 2
+--R   (3)  - z  + (- 6y + 4x)z + 9y  + (8x + 2)y + 5x  + x + 5
+--E 6
+
+@
+\section{CzaporGeddes2} 
+Parameter $b$ and variables $c,d,p,q$
+<<*>>=
+
+)clear all
+--S 7
+t1:=2*(b-1)^2 + 2*(q-p*q+p^2) + c^2*(q-1)^2 -2*b*q + 2*c*d*(1-q)*(q-p)_
+    +2*b*p*q*d*(d-c) + b^2*d^2*(1-2*p) + 2*b*d^2*(p-q) + 2*b*d*c*(p-1)_
+    +2*b*p*q*(c+1) + (b^2 - 2*b)*p^2*d^2 + 2*b^2*p^2 + 4*b*(1-b)*p_
+    + d^2*(p-1)^2
+--R 
+--R
+--R   (1)
+--R                2  2
+--R     (- 2c d + c )q
+--R   + 
+--R           2                                         2            2
+--R     ((2b d  + (- 2b + 2)c d + 2b c + 2b - 2)p - 2b d  + 2c d - 2c  - 2b + 2)q
+--R   + 
+--R        2           2     2      2
+--R     ((b  - 2b + 1)d  + 2b  + 2)p
+--R   + 
+--R           2           2                   2            2      2             2
+--R     ((- 2b  + 2b - 2)d  + (2b - 2)c d - 4b  + 4b)p + (b  + 1)d  - 2b c d + c
+--R   + 
+--R       2
+--R     2b  - 4b + 2
+--E 7
+
+--S 8
+t2:=d*(2*p+1)*(q-p) + c*(p+2)*(1-q) + b*(b-2)*d + b*(1-2*b)*p*d_
+    +b*c*(q+p-p*q-1) + b*(b+1)*p^2*d
+--R 
+--R
+--R   (2)
+--R                                              2            2
+--R     ((2d + (- b - 1)c)p + d + (b - 2)c)q + (b  + b - 2)d p
+--R   + 
+--R           2                            2
+--R     ((- 2b  + b - 1)d + (b + 1)c)p + (b  - 2b)d + (- b + 2)c
+--E 8
+
+--S 9
+t3:=-b^2*(p-1)^2 + 2*p*(p-q) - 2*(q-1)
+--R 
+--R
+--R                          2      2     2     2
+--R   (3)  (- 2p - 2)q + (- b  + 2)p  + 2b p - b  + 2
+--E 9
+
+--S 10
+t4:=b^2 + 4*(p-q^2) + 3*c^2*(q-1)^2 - 3*d^2*(p-q)^2 + 3*b^2*d^2*(p-1)^2_
+    +b^2*p*(p-2) + 6*b*d*c*(p+q+q*p-1)
+--R 
+--R
+--R   (4)
+--R          2     2      2       2                         2
+--R     (- 3d  + 3c  - 4)q  + ((6d  + 6b c d)p + 6b c d - 6c )q
+--R   + 
+--R         2      2    2  2        2 2              2           2 2              2
+--R     ((3b  - 3)d  + b )p  + (- 6b d  + 6b c d - 2b  + 4)p + 3b d  - 6b c d + 3c
+--R   + 
+--R      2
+--R     b
+--E 10
+
+@
+\section{CzaporGeddes3}
+Paramters $a,b,c,d,e,f,g,h,k$ and variables $x,y$
+<<*>>=
+
+)clear all
+
+--S 11
+t1:=a*x^2+b*x*y+c*x+d*y^2+e*y+f
+--R 
+--R
+--R           2                   2
+--R   (1)  d y  + (b x + e)y + a x  + c x + f
+--E 11
+
+--S 12
+t2:=b*x^2+4*d*x*y+2*e*x+g*y^2+h*y+k
+--R 
+--R
+--R           2                    2
+--R   (2)  g y  + (4d x + h)y + b x  + 2e x + k
+--E 12
+
+@
+\section{CzaporGeddes4}
+Paramters $a,b,c,d,e,f,g,h,k$ and variables $x,y,z$
+<<*>>=
+)clear all
+
+--S 13
+t1:=x^2+a*y*z+d*x+g
+--R 
+--R
+--R                 2
+--R   (1)  a y z + x  + d x + g
+--E 13
+
+--S 14
+t2:=y^2+b*z*x+e*y+h
+--R 
+--R
+--R                 2
+--R   (2)  b x z + y  + e y + h
+--E 14
+
+--S 15
+t3:=z^2+c*x*y+f*z+k
+--R 
+--R
+--R         2
+--R   (3)  z  + f z + c x y + k
+--E 15
+
+@
+\section{Hawes1}
+Parameters $a,b$ and variables $x,A,B$
+<<*>>=
+)clear all
+
+--S 16
+t1:=(x^2-A)^2 + (x^3+b*x-B)*(x^3+b*x-B-a)^2
+--R 
+--R
+--R   (1)
+--R      9       7               6     2 5                      4
+--R     x  + 3b x  + (- 2a - 3B)x  + 3b x  + ((- 4a - 6B)b + 1)x
+--R   + 
+--R       3    2            2  3                2       2     2            2
+--R     (b  + a  + 4B a + 3B )x  + ((- 2a - 3B)b  - 2A)x  + (a  + 4B a + 3B )b x
+--R   + 
+--R          2     2     3    2
+--R     - B a  - 2B a - B  + A
+--E 16
+
+--S 17
+t2:=4*x*(x^2-A)+(3*x^2+b)*(x^3+b*x-B-a)*(3*(x^3+b*x-B)-a)
+--R 
+--R
+--R   (2)
+--R       8        6                 5      2 4                        3
+--R     9x  + 21b x  + (- 12a - 18B)x  + 15b x  + ((- 16a - 24B)b + 4)x
+--R   + 
+--R        3     2             2  2                2            2            2
+--R     (3b  + 3a  + 12B a + 9B )x  + ((- 4a - 6B)b  - 4A)x + (a  + 4B a + 3B )b
+--E 17
+
+--S 18
+t3:=12*x^2-4*A+6*x*(x^3+b*x-B-a)^2+4*(3*x^2+b)^2*(x^3+b*x-B-a)_
+    +2*(x^3+b*x-B)*(3*x^2+b)^2+12*x*(x^3+b*x-B)*(x^3+b*x-B-a)
+--R 
+--R
+--R   (3)
+--R        7         5                 4      2 3                         2
+--R     72x  + 126b x  + (- 60a - 90B)x  + 60b x  + ((- 48a - 72B)b + 12)x
+--R   + 
+--R        3     2              2                 2
+--R     (6b  + 6a  + 24B a + 18B )x + (- 4a - 6B)b  - 4A
+--E 18
+
+--S 19
+t4:=24*x+6*(x^3+b*x-B-a)^2+72*x*(x^3+b*x-B-a)*(3*x^2+b)+6*(3*x^2+b)^3_
+    +36*x*(x^3+b*x-B)*(3*x^2+b)+12*(x^3+b*x-B)*(x^3+b*x-B-a)
+--R 
+--R
+--R   (4)
+--R         6         4                   3       2 2
+--R     504x  + 630b x  + (- 240a - 360B)x  + 180b x  + ((- 96a - 144B)b + 24)x
+--R   + 
+--R       3     2              2
+--R     6b  + 6a  + 24B a + 18B
+--E 19
+
+@
+\section{Hawes2}
+Parameters $a,b,c$ and variables $x,y[2],z[2]$
+<<*>>=
+)clear all
+
+--S 20
+t1:=x+2*y1*z1+3*a*y1^2+5*y1^4+2*c*y1
+--R 
+--R
+--R                    4        2
+--R   (1)  2y1 z1 + 5y1  + 3a y1  + 2c y1 + x
+--E 20
+
+--S 21
+t2:=x+2*y2*z2+3*a*y2^2+5*y2^4+2*c*y2
+--R 
+--R
+--R                    4        2
+--R   (2)  2y2 z2 + 5y2  + 3a y2  + 2c y2 + x
+--E 21
+
+--S 22
+t3:=2*z2+6*a*y2+20*y2^3+2*c
+--R 
+--R
+--R                  3
+--R   (3)  2z2 + 20y2  + 6a y2 + 2c
+--E 22
+
+--S 23
+t4:=3*z1^2+y1^2+b
+--R 
+--R
+--R           2     2
+--R   (4)  3z1  + y1  + b
+--E 23
+
+--S 24
+t5:=3*z2^2+y2^2+b
+--R 
+--R
+--R           2     2
+--R   (5)  3z2  + y2  + b
+--E 24
+
+@
+\section{Hawes}
+Paramters $a,b,c$ and variables $x,y[3],z[3]$
+<<*>>=
+)clear all
+
+--S 25
+t1:=3*z1^2+y1^2+b
+--R 
+--R
+--R           2     2
+--R   (1)  3z1  + y1  + b
+--E 25
+
+--S 26
+t2:=3*z1^2+y2^2+b
+--R 
+--R
+--R           2     2
+--R   (2)  3z1  + y2  + b
+--E 26
+
+--S 27
+t3:=3*z3^2+y3^2+b
+--R 
+--R
+--R           2     2
+--R   (3)  3z3  + y3  + b
+--E 27
+
+--S 28
+t4:=y1^2*z1+2*a*y1^3+4*y1^5+c*y1^2-z1^3-b*z1-y2^2*z2-2*a*y2^3_
+    -4*y2^5-c*y2^2+z2^3+b*z2
+--R 
+--R
+--R   (4)
+--R       3        2            3      2             5        3       2      5
+--R     z2  + (- y2  + b)z2 - z1  + (y1  - b)z1 - 4y2  - 2a y2  - c y2  + 4y1
+--R   + 
+--R          3       2
+--R     2a y1  + c y1
+--E 28
+
+--S 29
+t5:=y2^2*z2+2*a*y2^3+4*y2^5+c*y2^2-z2^3-b*z2-y3^2*z3-2*a*y3^3_
+    -4*y3^5-c*y3^2+z3^3+b*z3
+--R 
+--R
+--R   (5)
+--R       3        2            3      2             5        3       2      5
+--R     z3  + (- y3  + b)z3 - z2  + (y2  - b)z2 - 4y3  - 2a y3  - c y3  + 4y2
+--R   + 
+--R          3       2
+--R     2a y2  + c y2
+--E 29
+
+--S 30
+t6:=y3^2*z3+2*a*y3^3+4*y3^5+c*y3^2-z3^3-b*z3-y1^2*z1-2*a*y1^3_
+    -4*y1^5-c*y1^2+z1^3+b*z1
+--R 
+--R
+--R   (6)
+--R         3      2            3        2             5        3       2      5
+--R     - z3  + (y3  - b)z3 + z1  + (- y1  + b)z1 + 4y3  + 2a y3  + c y3  - 4y1
+--R   + 
+--R            3       2
+--R     - 2a y1  - c y1
+--E 30
+
+@
+\section{Hawes}
+Paramters $a,b,c$ and variables $x,y[2],z[2]$
+<<*>>=
+)clear all
+
+--S 31
+t1:=3*z1^2+y1^2+b
+--R 
+--R
+--R           2     2
+--R   (1)  3z1  + y1  + b
+--E 31
+
+--S 32
+t2:=3*z2^2+y2^2+b
+--R 
+--R
+--R           2     2
+--R   (2)  3z2  + y2  + b
+--E 32
+
+--S 33
+t3:=x+2*y1*z1+3*a*y1^2+5*y1^4+2*c*y1
+--R 
+--R
+--R                    4        2
+--R   (3)  2y1 z1 + 5y1  + 3a y1  + 2c y1 + x
+--E 33
+
+--S 34
+t4:=x+2*y2*z2+3*a*y2^2+5*y2^4+2*c*y2
+--R 
+--R
+--R                    4        2
+--R   (4)  2y2 z2 + 5y2  + 3a y2  + 2c y2 + x
+--E 34
+
+--S 35
+t5:=x*y1+z1^3+y1^2*z1+a*y1^3+y1^5+b*z1+c*y1^2-x*y2-z2^3-y2^2*z2_
+    -a*y2^3-y2^5-b*z2-c*y2^2
+--R 
+--R
+--R   (5)
+--R         3        2            3      2            5       3       2
+--R     - z2  + (- y2  - b)z2 + z1  + (y1  + b)z1 - y2  - a y2  - c y2  - x y2
+--R   + 
+--R       5       3       2
+--R     y1  + a y1  + c y1  + x y1
+--E 35
+
+--S 36
+t6:=(6*z1^2+18*a*z1*y1+6*y1-y1^3*z1+6*c*y1^2*z1-2*y1^2)_
+    *(3*z2^2*y2+9*a*y2^2*z2+45*y2^4*z2-y2^3-3*x*z2+b*y2)_
+    -(6*z2^2+18*a*z2*y2+60*y2^3*z2+6*c*y2^2*z2-2*y2^2)_
+    *(3*z1^2*y1+9*a*y1^2*z1+45*y1^4*z1-y1^3-3*x*z1+b*y1)
+--R 
+--R
+--R   (6)
+--R                        2
+--R         (18y2 - 18y1)z1
+--R       + 
+--R                3         2                    4         2
+--R         ((- 3y1  + 18c y1  + 54a y1)y2 - 270y1  - 54a y1  + 18x)z1
+--R       + 
+--R               2                3
+--R         (- 6y1  + 18y1)y2 + 6y1  - 6b y1
+--R    *
+--R         2
+--R       z2
+--R   + 
+--R               4           3                     2                     2
+--R         (270y2  - 180y1 y2  + (- 18c y1 + 54a)y2  - 54a y1 y2 - 18x)z1
+--R       + 
+--R                    3          2             4
+--R             (- 45y1  + 270c y1  + 810a y1)y2
+--R           + 
+--R                      4          2          3
+--R             (- 2700y1  - 540a y1  + 180x)y2
+--R           + 
+--R                       4        3       2             2
+--R             (- 270c y1  - 9a y1  + 162a y1 + 18c x)y2
+--R           + 
+--R                       4       2  2                   3           2
+--R             (- 810a y1  - 162a y1  + 54a x)y2 + 3x y1  - 18c x y1  - 54a x y1
+--R        *
+--R           z1
+--R       + 
+--R                2           4        3            3
+--R         (- 90y1  + 270y1)y2  + (60y1  - 60b y1)y2
+--R       + 
+--R               3         2                      2          3
+--R         (6c y1  - 18a y1  + (- 6b c + 54a)y1)y2  + (18a y1  - 18a b y1)y2
+--R       + 
+--R              2
+--R         6x y1  - 18x y1
+--R    *
+--R       z2
+--R   + 
+--R           3         2           2
+--R     (- 6y2  + 6y1 y2  + 6b y2)z1
+--R   + 
+--R            3        2            3        4         2        2
+--R         (y1  - 6c y1  - 18a y1)y2  + (90y1  + 18a y1  - 6x)y2
+--R       + 
+--R                3          2
+--R         (- b y1  + 6b c y1  + 18a b y1)y2
+--R    *
+--R       z1
+--R   + 
+--R         2         3         3           2           2
+--R     (2y1  - 6y1)y2  + (- 2y1  + 2b y1)y2  + (- 2b y1  + 6b y1)y2
+--E 36
+
+@
+\section{Reif}
+Variables $x[16]$
+<<*>>=
+)clear all
+
+--S 37
+t1:=x4*x13 + x5*x14 + x6*(1-x13-x14)
+--R 
+--R
+--R   (1)  (- x14 - x13 + 1)x6 + x14 x5 + x13 x4
+--E 37
+
+--S 38
+t2:=x4*x15 + x5*x16 - x6*(x15+x16)
+--R 
+--R
+--R   (2)  (- x16 - x15)x6 + x16 x5 + x15 x4
+--E 38
+
+--S 39
+t3:=x7*x13 + x8*x14 + x9*(1-x13-x14)
+--R 
+--R
+--R   (3)  (- x14 - x13 + 1)x9 + x14 x8 + x13 x7
+--E 39
+
+--S 40
+t4:=x7*x15 + x8*x16 - x9*(x15+x16)-1
+--R 
+--R
+--R   (4)  (- x16 - x15)x9 + x16 x8 + x15 x7 - 1
+--E 40
+
+--S 41
+t5:=x10*x13 + x11*x14 + x12*(1-x13-x14)
+--R 
+--R
+--R   (5)  (- x12 + x11)x14 + (- x12 + x10)x13 + x12
+--E 41
+
+--S 42
+t6:=x10*x15 + x11*x16 - x12*(x15+x16)
+--R 
+--R
+--R   (6)  (- x12 + x11)x16 + (- x12 + x10)x15
+--E 42
+
+--S 43
+t7:=x1*x13 + x2*x14 + x3*(1-x13-x14)
+--R 
+--R
+--R   (7)  (- x14 - x13 + 1)x3 + x14 x2 + x1 x13
+--E 43
+
+--S 44
+t8:=x1*x15 + x2*x16 - x3*(x15+x16)
+--R 
+--R
+--R   (8)  (- x16 - x15)x3 + x16 x2 + x1 x15
+--E 44
+
+--S 45
+t9:=x1*x4*x13 + x2*x5*x14 + x3*x6*(1-x13-x14)-1
+--R 
+--R
+--R   (9)  (- x14 - x13 + 1)x3 x6 + x14 x2 x5 + x1 x13 x4 - 1
+--E 45
+
+--S 46
+t10:=x1*x4*x15 + x2*x5*x16 - x3*x6*(x15+x16)
+--R 
+--R
+--R   (10)  (- x16 - x15)x3 x6 + x16 x2 x5 + x1 x15 x4
+--E 46
+
+--S 47
+t11:=x1*x7*x13 + x2*x8*x14 + x3*x9*(1-x13-x14)
+--R 
+--R
+--R   (11)  (- x14 - x13 + 1)x3 x9 + x14 x2 x8 + x1 x13 x7
+--E 47
+
+--S 48
+t12:=x1*x7*x15 + x2*x8*x16 - x3*x9*(x15+x16)
+--R 
+--R
+--R   (12)  (- x16 - x15)x3 x9 + x16 x2 x8 + x1 x15 x7
+--E 48
+
+--S 49
+t13:=x1*x10*x13 + x2*x11*x14 + x3*x12*(1-x13-x14)
+--R 
+--R
+--R   (13)  (- x12 x14 - x12 x13 + x12)x3 + x11 x14 x2 + x1 x10 x13
+--E 49
+
+--S 50
+t14:=x1*x10*x15 + x2*x11*x16 - x3*x12*(x15+x16)-1
+--R 
+--R
+--R   (14)  (- x12 x16 - x12 x15)x3 + x11 x16 x2 + x1 x10 x15 - 1
+--E 50
+
+@
+\section{Reimer4}
+Variables $x,y,z,t$
+<<*>>=
+)clear all
+
+--S 51
+t1:=2*x^2-2*y^2+2*z^2-2*t^2-1
+--R 
+--R
+--R          2     2     2     2
+--R   (1)  2z  - 2y  + 2x  - 2t  - 1
+--E 51
+
+--S 52
+t2:=2*x^3-2*y^3+2*z^3-2*t^3-1
+--R 
+--R
+--R          3     3     3     3
+--R   (2)  2z  - 2y  + 2x  - 2t  - 1
+--E 52
+
+--S 53
+t3:=2*x^4-2*y^4+2*z^4-2*t^4-1
+--R 
+--R
+--R          4     4     4     4
+--R   (3)  2z  - 2y  + 2x  - 2t  - 1
+--E 53
+
+--S 54
+t4:=2*x^5-2*y^5+2*z^5-2*t^5-1
+--R 
+--R
+--R          5     5     5     5
+--R   (4)  2z  - 2y  + 2x  - 2t  - 1
+--E 54
+
+@
+\section{Reimer4}
+Variables $x,y,z,t,u$
+<<*>>=
+)clear all
+
+--S 55
+t1:=2*x^2-2*y^2+2*z^2-2*t^2+2*u^2-1
+--R 
+--R
+--R          2     2     2     2     2
+--R   (1)  2z  - 2y  + 2x  + 2u  - 2t  - 1
+--E 55
+
+--S 56
+t2:=2*x^3-2*y^3+2*z^3-2*t^3+2*u^3-1
+--R 
+--R
+--R          3     3     3     3     3
+--R   (2)  2z  - 2y  + 2x  + 2u  - 2t  - 1
+--E 56
+
+--S 57
+t3:=2*x^4-2*y^4+2*z^4-2*t^4+2*u^4-1
+--R 
+--R
+--R          4     4     4     4     4
+--R   (3)  2z  - 2y  + 2x  + 2u  - 2t  - 1
+--E 57
+
+--S 58
+t4:=2*x^5-2*y^5+2*z^5-2*t^5+2*u^5-1
+--R 
+--R
+--R          5     5     5     5     5
+--R   (4)  2z  - 2y  + 2x  + 2u  - 2t  - 1
+--E 58
+
+--S 59
+t5:=2*x^6-2*y^6+2*z^6-2*t^6+2*u^6-1
+--R 
+--R
+--R          6     6     6     6     6
+--R   (5)  2z  - 2y  + 2x  + 2u  - 2t  - 1
+--E 59
+
+@
+\section{Reimer(n)}
+Given the variables $x[x]$ the general case of these 
+equations is given by:
+\[-1/2+\sum_{i=1}^n{(-1)(i+1)x_i^k} \quad k=2..n+1\]
+
+\section{Gerdt}
+Variables $x,y,z,t,u,v,w$
+<<*>>=
+)clear all
+
+--S 60
+t1:=y*w-1/2*z*w+t*w
+--R 
+--R
+--R          1
+--R   (1)  - - w z + w y + t w
+--R          2
+--E 60
+
+--S 61
+t2:=-2/7*u*w^2+10/7*v*w^2-20/7*w^3+t*u-5*t*v+10*t*w
+--R 
+--R
+--R          20  3    10     2    2
+--R   (2)  - -- w  + (-- v - - u)w  + 10t w - 5t v + t u
+--R           7        7     7
+--E 61
+
+--S 62
+t3:=2/7*y*w^2-2/7*z*w^2+6/7*t*w^2-y*t+z*t-3*t^2
+--R 
+--R
+--R           2  2          2  2         6    2     2
+--R   (3)  (- - w  + t)z + (- w  - t)y + - t w  - 3t
+--R           7             7            7
+--E 62
+
+--S 63
+t4:=-2*v^3+4*u*v*w+5*v^2*w-6*u*w^2-7*v*w^2+15*w^3+42*y*v_
+    -14*z*v-63*y*w+21*z*w-42*t*w+147*x
+--R 
+--R
+--R   (4)
+--R                                               3               2
+--R     (21w - 14v)z + (- 63w + 42v)y + 147x + 15w  + (- 7v - 6u)w
+--R   + 
+--R        2                    3
+--R     (5v  + 4u v - 42t)w - 2v
+--E 63
+
+--S 64
+t5:=-9/7*u*w^3+45/7*v*w^3-135/7*w^4+2*z*v^2-2*t*v^2-4*z*u*w+10*t*u*w_
+    -2*z*v*w-28*t*v*w+4*z*w^2+86*t*w^2-42*y*z+14*z^2+42*y*t_
+    -14*z*t-21*x*u+105*x*v-315*x*w
+--R 
+--R
+--R   (5)
+--R        2              2                    2
+--R     14z  + (- 42y + 4w  + (- 2v - 4u)w + 2v  - 14t)z + 42t y
+--R   + 
+--R                              135  4    45     9    3        2
+--R     (- 315w + 105v - 21u)x - --- w  + (-- v - - u)w  + 86t w
+--R                               7         7     7
+--R   + 
+--R                              2
+--R     (- 28t v + 10t u)w - 2t v
+--E 64
+
+--S 65
+t6:=6/7*y*w^3-9/7*z*w^3+36/7*t*w^3-2*x*v^2-4*y*t*w+6*z*t*w_
+    -24*t^2*w+4*x*u*w+2*x*v*w-4*x*w^2+56*x*y-35*x*z+84*x*t
+--R 
+--R
+--R   (6)
+--R              9  3                   6  3
+--R     (- 35x - - w  + 6t w)z + (56x + - w  - 4t w)y
+--R              7                      7
+--R   + 
+--R          2                  2           36    3      2
+--R     (- 4w  + (2v + 4u)w - 2v  + 84t)x + -- t w  - 24t w
+--R                                          7
+--E 65
+
+--S 66
+t7:=2*u*v*w-6*v^2*w-u*w^2+13*v*w^2-5*w^3+14*y*w-28*t*w
+--R 
+--R
+--R                  3             2        2
+--R   (7)  14w y - 5w  + (13v - u)w  + (- 6v  + 2u v - 28t)w
+--E 66
+
+--S 67
+t8:=u^2*w-3*u*v*w+5*u*w^2+14*y*w-28*t*w
+--R 
+--R
+--R                    2              2
+--R   (8)  14w y + 5u w  + (- 3u v + u  - 28t)w
+--E 67
+
+--S 68
+t9:=-2*z*u*w-2*t*u*w+4*y*v*w+6*z*v*w-2*t*v*w-16*y*w^2_
+    -10*z*w^2+22*t*w^2+42*x*w
+--R 
+--R
+--R   (9)
+--R         2                        2                         2
+--R   (- 10w  + (6v - 2u)w)z + (- 16w  + 4v w)y + 42w x + 22t w  + (- 2t v - 2t u)w
+--E 68
+
+--S 69
+t10:=28/3*y*u*w+8/3*z*u*w-20/3*t*u*w-88/3*y*v*w-8*z*v*w_
+    +68/3*t*v*w+52*y*w^2+40/3*z*w^2-44*t*w^2-84*x*w
+--R 
+--R
+--R   (10)
+--R      40  2           8             2      88     28                      2
+--R     (-- w  + (- 8v + - u)w)z + (52w  + (- -- v + -- u)w)y - 84w x - 44t w
+--R       3              3                     3      3
+--R   + 
+--R      68       20
+--R     (-- t v - -- t u)w
+--R       3        3
+--E 69
+
+--S 70
+t11:=-4*y*z*w+10*y*t*w+8*z*t*w-20*t^2*w+12*x*u*w-30*x*v*w+15*x*w^2
+--R 
+--R
+--R                                          2                         2
+--R   (11)  (- 4w y + 8t w)z + 10t w y + (15w  + (- 30v + 12u)w)x - 20t w
+--E 70
+
+--S 71
+t12:=-y^2*w+1/2*y*z*w+y*t*w-z*t*w+2*t^2*w-3*x*u*w+6*x*v*w-3*x*w^2
+--R 
+--R
+--R          1                  2                2                    2
+--R   (12)  (- w y - t w)z - w y  + t w y + (- 3w  + (6v - 3u)w)x + 2t w
+--R          2
+--E 71
+
+--S 72
+t13:=8*x*y*w-4*x*z*w+8*x*t*w
+--R 
+--R
+--R   (13)  - 4w x z + 8w x y + 8t w x
+--E 72
+
+@
+\section{Gerdt2}
+Variables $x,y,z,t,u$
+<<*>>=
+)clear all
+
+--S 73
+t1:=35*y^4-30*x*y^2-210*y^2*z+3*x^2+30*x*z-105*z^2+140*y*t-21*u
+--R 
+--R
+--R              2          2              4        2              2
+--R   (1)  - 105z  + (- 210y  + 30x)z + 35y  - 30x y  + 140t y + 3x  - 21u
+--E 73
+
+--S 74
+t2:=5*x*y^3-140*y^3*z-3*x^2*y+45*x*y*z-420*y*z^2+210*y^2*t_
+    -25*x*t+70*z*t+126*y*u
+--R 
+--R
+--R   (2)
+--R             2          3                       3         2        2
+--R     - 420y z  + (- 140y  + 45x y + 70t)z + 5x y  + 210t y  + (- 3x  + 126u)y
+--R   + 
+--R     - 25t x
+--E 74
+
+@
+\section{Gerdt3}
+Variables $x,y,z,t$
+<<*>>=
+)clear all
+
+--S 75
+t1:=6*x*y^2*t-x^2*z*t-6*x*y*z*t+3*x*z^2*t-2*z^3*t-6*x*y^2+6*x*y*z-2*x*z^2
+--R 
+--R
+--R              3              2                       2                2
+--R   (1)  - 2t z  + (3t - 2)x z  + ((- 6t + 6)x y - t x )z + (6t - 6)x y
+--E 75
+
+--S 76
+t2:=-63*x*y^2*t^2+9*x^2*z*t^2+63*x*y*z*t^2+18*y^2*z*t^2-27*x*z^2*t^2_
+    -18*y*z^2*t^2+18*z^3*t^2+78*x*y^2*t-78*x*y*z*t-18*y^2*z*t_
+    +24*x*z^2*t+18*y*z^2*t-9*z^3*t-15*x*y^2+15*x*y*z-5*x*z^2
+--R 
+--R
+--R   (2)
+--R         2       3          2                 2              2
+--R     (18t  - 9t)z  + ((- 18t  + 18t)y + (- 27t  + 24t - 5)x)z
+--R   + 
+--R          2        2       2                    2 2           2               2
+--R     ((18t  - 18t)y  + (63t  - 78t + 15)x y + 9t x )z + (- 63t  + 78t - 15)x y
+--E 76
+
+--S 77
+t3:=18*x^2*y^2*t-3*x^3*z*t-18*x^2*y*z*t+12*x*y^2*z*t+5*x^2*z^2*t_
+    -12*x*y*z^2*t+6*x*z^3*t-8*z^4*t-18*x^2*y^2+18*x^2*y*z-12*x*y^2*z_
+    -4*x^2*z^2+12*x*y*z^2-6*x*z^3
+--R 
+--R
+--R   (3)
+--R           4              3                               2  2
+--R     - 8t z  + (6t - 6)x z  + ((- 12t + 12)x y + (5t - 4)x )z
+--R   + 
+--R                   2                2        3                2 2
+--R     ((12t - 12)x y  + (- 18t + 18)x y - 3t x )z + (18t - 18)x y
+--E 77
+
+--S 78
+t4:=-x^2*y*t+3*x*y^2*t+10*y^3*t-15*y^2*z*t+3*y*z^2*t-3*x*y^2-10*y^3+x*y*z_
+    +15*y^2*z-5*y*z^2
+--R 
+--R
+--R   (4)
+--R              2                 2                      3              2      2
+--R   (3t - 5)y z  + ((- 15t + 15)y  + x y)z + (10t - 10)y  + (3t - 3)x y  - t x y
+--E 78
+
+@
+\section{Gerdt4}
+Variables $x,y,z,t,u,v,w,a,b,c$
+<<*>>=
+)clear all
+
+--S 79
+t1:=y*t-y*u-u*b+u*c
+--R 
+--R
+--R   (1)  (- u + t)y + (c - b)u
+--E 79
+
+--S 80
+t2:=2*x*y^2*t-x*y^2*u-2*y^2*t*v+y^2*u*v-x*y*z*a+12*x*t^2*a-4*x*t*u*a_
+    -x*u^2*a+y*z*v*a-2*t*u*v*a+u^2*v*a-x*u*w*a+u*v*w*a-6*x*z*a*b
+--R 
+--R
+--R   (2)
+--R                                                            2
+--R     ((- a x + a v)y - 6a b x)z + ((- u + 2t)x + (u - 2t)v)y
+--R   + 
+--R                   2                 2                   2
+--R     (- a u w - a u  - 4a t u + 12a t )x + a u v w + (a u  - 2a t u)v
+--E 80
+
+--S 81
+t3:=x*y^2*z-y^2*z*v+6*x*z*t*a+x*z*u*a-z*u*v*a-2*x*y*z*b+2*y*z*v*b_
+    -2*x*u*w*b+2*u*v*w*b-12*x*z*b^2+x*y*z*c-y*z*v*c+x*u*w*c_
+    -u*v*w*c+6*x*z*b*c
+--R 
+--R
+--R   (3)
+--R                 2                                                        2
+--R         (x - v)y  + ((c - 2b)x + (- c + 2b)v)y + (a u + 6a t + 6b c - 12b )x
+--R       + 
+--R         - a u v
+--R    *
+--R       z
+--R   + 
+--R     (c - 2b)u w x + (- c + 2b)u v w
+--E 81
+
+--S 82
+t4:=x*y*u-y*u*v+3*x*z*a+3*x*t*b+x*u*b-u*v*b
+--R 
+--R
+--R   (4)  3a x z + (u x - u v)y + (b u + 3b t)x - b u v
+--E 82
+
+--S 83
+t5:=5*x^2*y*t-5*x^2*y*u-10*x*y*t*v+10*x*y*u*v+5*y*t*v^2-5*y*u*v^2_
+    -6*x^2*z*a-12*x*z*v*a+4*x^2*t*b-7*x^2*u*b+16*x*t*v*b+8*x*u*v*b_
+    -2*t*v^2*b-u*v^2*b+8*x^2*t*c+x^2*u*c-10*x*t*v*c-2*x*u*v*c_
+    +2*t*v^2*c+u*v^2*c
+--R 
+--R
+--R   (5)
+--R            2                            2                                2
+--R     (- 6a x  - 12a v x)z + ((- 5u + 5t)x  + (10u - 10t)v x + (- 5u + 5t)v )y
+--R   + 
+--R                              2
+--R     ((c - 7b)u + (8c + 4b)t)x  + ((- 2c + 8b)u + (- 10c + 16b)t)v x
+--R   + 
+--R                             2
+--R     ((c - b)u + (2c - 2b)t)v
+--E 83
+
+--S 84
+t6:=-9*x^4*t*v*c+9*x^4*u*v*c-18*x^3*t*v^2*c-9*x^3*u*v^2*c+3*x^4*y*t_
+    -4*x^4*y*u-9*x^3*y*t*v+10*x^3*y*u*v+9*x^2*y*t*v^2-6*x^2*y*u*v^2_
+    -3*x*y*t*v^3-2*x*y*u*v^3+2*y*u*v^4-6*x^4*z*a-45*x^3*z*v*a_
+    -27*x^2*z*v^2*a-3*x*z*v^3*a-6*x^4*t*b-2*x^4*u*b-45*x^3*t*v*b_
+    +32*x^3*u*v*b-27*x^2*t*v^2*b-30*x^2*u*v^2*b-3*x*t*v^3*b-x*u*v^3*b+u*v^4*b
+--R 
+--R
+--R   (6)
+--R            4          3        2 2       3
+--R     (- 6a x  - 45a v x  - 27a v x  - 3a v x)z
+--R   + 
+--R                       4                3               2 2               3
+--R           (- 4u + 3t)x  + (10u - 9t)v x  + (- 6u + 9t)v x  + (- 2u - 3t)v x
+--R         + 
+--R               4
+--R           2u v
+--R    *
+--R       y
+--R   + 
+--R                                    4
+--R     ((9c u - 9c t)v - 2b u - 6b t)x
+--R   + 
+--R                       2                     3                     2 2
+--R     ((- 9c u - 18c t)v  + (32b u - 45b t)v)x  + (- 30b u - 27b t)v x
+--R   + 
+--R                    3         4
+--R     (- b u - 3b t)v x + b u v
+--E 84
+
+--S 85
+t7:=w*b-t*c+u*c-w*c
+--R 
+--R
+--R   (7)  (- c + b)w + c u - c t
+--E 85
+
+--S 86
+t8:=-6*z*t*v*a+x*z*w*a-z*v*w*a-2*x*w^2*b+2*v*w^2*b+12*z*v*b^2_
+    +x*y*z*c-y*z*v*c+x*w^2*c-v*w^2*c-2*x*z*b*c-4*z*v*b*c+x*z*c^2-z*v*c^2
+--R 
+--R
+--R   (8)
+--R                             2                               2             2
+--R     ((c x - c v)y + (a w + c  - 2b c)x - a v w + (- 6a t - c  - 4b c + 12b )v)z
+--R   + 
+--R              2                 2
+--R     (c - 2b)w x + (- c + 2b)v w
+--E 86
+
+--S 87
+t9:=-12*t^2*v*a+6*t*u*v*a+2*x*t*w*a-x*u*w*a-2*t*v*w*a+u*v*w*a_
+    -x*w^2*a+v*w^2*a+6*z*v*a*b+2*x*y*t*c-x*y*u*c-2*y*t*v*c+y*u*v*c_
+    -x*z*a*c+z*v*a*c
+--R 
+--R
+--R   (9)
+--R     (- a c x + (a c + 6a b)v)z + ((- c u + 2c t)x + (c u - 2c t)v)y
+--R   + 
+--R         2                            2                                    2
+--R   (- a w  + (- a u + 2a t)w)x + a v w  + (a u - 2a t)v w + (6a t u - 12a t )v
+--E 87
+
+--S 88
+t10:=3*z*v*a+3*t*v*b-x*t*c+t*v*c-x*w*c+v*w*c
+--R 
+--R
+--R   (10)  3a v z + (- c w - c t)x + c v w + (c + 3b)t v
+--E 88
+
+--S 89
+t11:=-12*x*z*v*a-6*z*v^2*a-2*x^2*t*b+2*x^2*u*b+16*x*t*v*b-10*x*u*v*b_
+    +4*t*v^2*b+8*u*v^2*b+5*x^2*w*b-10*x*v*w*b+5*v^2*w*b-x^2*t*c_
+    +x^2*u*c+8*x*t*v*c-2*x*u*v*c-7*t*v^2*c+u*v^2*c-5*x^2*w*c_
+    +10*x*v*w*c-5*v^2*w*c
+--R 
+--R
+--R   (11)
+--R                      2                                              2
+--R     (- 12a v x - 6a v )z + ((- 5c + 5b)w + (c + 2b)u + (- c - 2b)t)x
+--R   + 
+--R                                                                      2
+--R     ((10c - 10b)v w + ((- 2c - 10b)u + (8c + 16b)t)v)x + (- 5c + 5b)v w
+--R   + 
+--R                                2
+--R     ((c + 8b)u + (- 7c + 4b)t)v
+--E 89
+
+--S 90
+t12:=-18*x^2*u*v^3*b-9*x*u*v^4*b-9*x^2*u*v^3*c+9*x*u*v^4*c-3*x^3*z*v*a_
+    -27*x^2*z*v^2*a-45*x*z*v^3*a-6*z*v^4*a-3*x^3*t*v*b_
+    -27*x^2*t*v^2*b-45*x*t*v^3*b-6*t*v^4*b-3*x^3*v*w*b_
+    +9*x^2*v^2*w*b-9*x*v^3*w*b+3*v^4*w*b+x^4*t*c-x^3*t*v*c_
+    -30*x^2*t*v^2*c+32*x*t*v^3*c-2*t*v^4*c+2*x^4*w*c-2*x^3*v*w*c_
+    -6*x^2*v^2*w*c+10*x*v^3*w*c-4*v^4*w*c
+--R 
+--R
+--R   (12)
+--R              3        2 2        3        4                  4
+--R     (- 3a v x  - 27a v x  - 45a v x - 6a v )z + (2c w + c t)x
+--R   + 
+--R                                      3
+--R     ((- 2c - 3b)v w + (- c - 3b)t v)x
+--R   + 
+--R                  2                   3                   2  2
+--R     ((- 6c + 9b)v w + (- 9c - 18b)u v  + (- 30c - 27b)t v )x
+--R   + 
+--R                 3                4                 3                 4
+--R     ((10c - 9b)v w + (9c - 9b)u v  + (32c - 45b)t v )x + (- 4c + 3b)v w
+--R   + 
+--R                   4
+--R     (- 2c - 6b)t v
+--E 90
+
+@
+\section{Gerdt5}
+Varables $x,y,z,t,u,v,a,A,B,C,D,E,F$
+<<*>>=
+)clear all
+
+--S 91
+t1:=v*A
+--R 
+--R
+--R   (1)  A v
+--E 91
+
+--S 92
+t2:=u*A+14*B
+--R 
+--R
+--R   (2)  A u + 14B
+--E 92
+
+--S 93
+t3:=z*A
+--R 
+--R
+--R   (3)  A z
+--E 93
+
+--S 94
+t4:=u*a*A+3*z*A+2*t*A+168*B
+--R 
+--R
+--R   (4)  3A z + A a u + 2A t + 168B
+--E 94
+
+--S 95
+t5:=y*A+5*u*B
+--R 
+--R
+--R   (5)  A y + 5B u
+--E 95
+
+--S 96
+t6:=5*v*C+21*D
+--R 
+--R
+--R   (6)  5C v + 21D
+--E 96
+
+--S 97
+t7:=10*u*C+14*E
+--R 
+--R
+--R   (7)  10C u + 14E
+--E 97
+
+--S 98
+t8:=-5*y*C-u*E+105*F
+--R 
+--R
+--R   (8)  - 5C y - E u + 105F
+--E 98
+
+--S 99
+t9:=5*z*C+2*u*D
+--R 
+--R
+--R   (9)  5C z + 2D u
+--E 99
+
+--S 100
+t10:=-2/7*v^2+t-4*u-A
+--R 
+--R
+--R           2  2
+--R   (10)  - - v  - 4u + t - A
+--R           7
+--E 100
+
+--S 101
+t11:=-2/7*u^2+y-B
+--R 
+--R
+--R             2  2
+--R   (11)  y - - u  - B
+--R             7
+--E 101
+
+--S 102
+t12:=7*u-C
+--R 
+--R
+--R   (12)  7u - C
+--E 102
+
+--S 103
+t13:=3/7*v^3-2*t*v+6*u*v-7*z-D
+--R 
+--R
+--R                3  3
+--R   (13)  - 7z + - v  + (6u - 2t)v - D
+--R                7
+--E 103
+
+--S 104
+t14:=9/7*u*v^2-2*t*u+16*u^2-6*z*v-42*y-E
+--R 
+--R
+--R                        9    2      2
+--R   (14)  - 6v z - 42y + - u v  + 16u  - 2t u - E
+--R                        7
+--E 104
+
+--S 105
+t15:=3/7*u^3-2*y*u+7*x-F
+--R 
+--R
+--R                       3  3
+--R   (15)  - 2u y + 7x + - u  - F
+--R                       7
+--E 105
+
+@
+\section{Gertd6}
+Variables $x,y,z,t$
+<<*>>=
+)clear all
+
+--S 106
+t1:=-2*y^3*z+6*x^2*z*t-6*x*y*z*t+3*y^2*z*t-y*z*t^2-6*x^2*t+6*x*y*t-2*y^2*t
+--R 
+--R
+--R             3       2              2         2         2                2
+--R   (1)  (- 2y  + 3t y  + (- 6t x - t )y + 6t x )z - 2t y  + 6t x y - 6t x
+--E 106
+
+--S 107
+t1:=18*x^2*y*z^2-18*x*y^2*z^2+18*y^2*z^2-63*x^2*z^2*t+63*x*y*z^2*t_
+    -27*y^2*z^2*t+9*y*z^2*t^2-18*x^2*y*z+18*x*y^2*z-9*y^3*z_
+    +78*x^2*z*t-78*x*y*z*t+24*y^2*z*t-15*x^2*t+15*x*y*t-5*y^2*t
+--R 
+--R
+--R   (2)
+--R                         2       2             2          2  2
+--R     ((- 18x - 27t + 18)y  + (18x  + 63t x + 9t )y - 63t x )z
+--R   + 
+--R          3               2         2                  2         2
+--R     (- 9y  + (18x + 24t)y  + (- 18x  - 78t x)y + 78t x )z - 5t y  + 15t x y
+--R   + 
+--R            2
+--R     - 15t x
+--E 107
+
+--S 108
+t1:=-8*y^4*z+12*x^2*y*z*t-12*x*y^2*z*t+6*y^3*z*t+18*x^2*z*t^2_
+    -18*x*y*z*t^2+5*y^2*z*t^2-3*y*z*t^3-12*x^2*y*t+12*x*y^2*t_
+    -6*y^3*t-18*x^2*t^2+18*x*y*t^2-4*y^2*t^2
+--R 
+--R
+--R   (3)
+--R          4       3                2  2         2      2      3        2 2
+--R     (- 8y  + 6t y  + (- 12t x + 5t )y  + (12t x  - 18t x - 3t )y + 18t x )z
+--R   + 
+--R           3              2  2           2      2         2 2
+--R     - 6t y  + (12t x - 4t )y  + (- 12t x  + 18t x)y - 18t x
+--E 108
+
+--S 109
+t1:=10*x^3*z-15*x^2*y*z+3*x*y^3*z+3*x^2*z*t-x*z*t^2-10*x^3+15*x^2*y_
+    -5*x*y^2-3*x^2*t+x*y*t
+--R 
+--R
+--R   (4)
+--R        3      2       3       2    2          2       2              3       2
+--R   (3x y  - 15x y + 10x  + 3t x  - t x)z - 5x y  + (15x  + t x)y - 10x  - 3t x
+--E 109
+
+@
+\section{Hairer1}
+Variables $a,b,c,d,e,f,g,h$
+<<*>>=
+)clear all
+
+--S 110
+t1:=a-f
+--R 
+--R
+--R   (1)  - f + a
+--E 110
+
+--S 111
+t2:=b-g-h
+--R 
+--R
+--R   (2)  - h - g + b
+--E 111
+
+--S 112
+t3:=c+d+e-1
+--R 
+--R
+--R   (3)  e + d + c - 1
+--E 112
+
+--S 113
+t4:=b*c+a*d-1/2
+--R 
+--R
+--R                    1
+--R   (4)  a d + b c - -
+--R                    2
+--E 113
+
+--S 114
+t5:=b^2*c+a^2*d-1/3
+--R 
+--R
+--R         2     2    1
+--R   (5)  a d + b c - -
+--R                    3
+--E 114
+
+--S 115
+t6:=a*c*g-1/6
+--R 
+--R
+--R                1
+--R   (6)  a c g - -
+--R                6
+--E 115
+
+@
+\section{Hairer2}
+Variables $a,b,c,d,e,f,g,h,i,j,k,l,m$
+<<*>>=
+)clear all
+
+--S 116
+t1:=d+e+f+g-1
+--R 
+--R
+--R   (1)  g + f + e + d - 1
+--E 116
+
+--S 117
+t2:=c*d+b*e+a*f-1/2
+--R 
+--R
+--R                          1
+--R   (2)  a f + b e + c d - -
+--R                          2
+--E 117
+
+--S 118
+t3:=c^2*d+b^2*e+a^2*f-1/3
+--R 
+--R
+--R         2     2     2    1
+--R   (3)  a f + b e + c d - -
+--R                          3
+--E 118
+
+--S 119
+t4:=a*e*i+a*d*l+b*d*m-1/6
+--R 
+--R
+--R                                1
+--R   (4)  b d m + a d l + a e i - -
+--R                                6
+--E 119
+
+--S 120
+t5:=c^3*d+b^3*e+a^3*f-1/4
+--R 
+--R
+--R         3     3     3    1
+--R   (5)  a f + b e + c d - -
+--R                          4
+--E 120
+
+--S 121
+t6:=a*b*e*i+a*c*d*l+b*c*d*m-1/8
+--R 
+--R
+--R                                      1
+--R   (6)  b c d m + a c d l + a b e i - -
+--R                                      8
+--E 121
+
+--S 122
+t7:=a^2*e*i+a^2*d*l+b^2*d*m-1/2
+--R 
+--R
+--R         2       2       2      1
+--R   (7)  b d m + a d l + a e i - -
+--R                                2
+--E 122
+
+--S 123
+t8:=a*d*i*m-1/24
+--R 
+--R
+--R                   1
+--R   (8)  a d i m - --
+--R                  24
+--E 123
+
+--S 124
+t9:=a-h
+--R 
+--R
+--R   (9)  - h + a
+--E 124
+
+--S 125
+t10:=b-i-j
+--R 
+--R
+--R   (10)  - j - i + b
+--E 125
+
+--S 126
+t11:=c-k-l-m
+--R 
+--R
+--R   (11)  - m - l - k + c
+--E 126
+
+@
+\section{Hairer3}
+Variables $a,b,c,d,e,f,g,h,i,j,k,l,m,n$
+<<*>>=
+)clear all
+
+--S 127
+t1:=a*e+b*f+c*g+d*h-1/2
+--R 
+--R
+--R                                1
+--R   (1)  d h + c g + b f + a e - -
+--R                                2
+--E 127
+
+--S 128
+t2:=a^2*e+b^2*f+c^2*g+d^2*h-1/3
+--R 
+--R
+--R         2     2     2     2    1
+--R   (2)  d h + c g + b f + a e - -
+--R                                3
+--E 128
+
+--S 129
+t3:=a*f*i+a*g*j+b*g*k+a*h*l+b*h*m+c*h*n-1/6
+--R 
+--R
+--R                                                        1
+--R   (3)  c h n + b h m + a h l + b g k + a g j + a f i - -
+--R                                                        6
+--E 129
+
+--S 130
+t4:=a^3*e+b^3*f+c^3*g+d^3*h-1/4
+--R 
+--R
+--R         3     3     3     3    1
+--R   (4)  d h + c g + b f + a e - -
+--R                                4
+--E 130
+
+--S 131
+t5:=a*b*f*i+a*c*g*j+b*c*g*k+a*d*h*l+b*d*h*m+c*d*h*n-1/8
+--R 
+--R
+--R                                                                    1
+--R   (5)  c d h n + b d h m + a d h l + b c g k + a c g j + a b f i - -
+--R                                                                    8
+--E 131
+
+--S 132
+t6:=a^2*f*i+a^2*g*j+b^2*g*k+a^2*h*l+b^2*h*m+c^2*h*n-1/12
+--R 
+--R
+--R         2       2       2       2       2       2       1
+--R   (6)  c h n + b h m + a h l + b g k + a g j + a f i - --
+--R                                                        12
+--E 132
+
+--S 133
+t7:=a*g*i*k+a*h*i*m+a*h*j*n+b*h*k*n-1/24
+--R 
+--R
+--R                                                1
+--R   (7)  (b h k + a h j)n + a h i m + a g i k - --
+--R                                               24
+--E 133
+
+--S 134
+t8:=a^4*e+b^4*f+c^4*g+d^4*h-1/5
+--R 
+--R
+--R         4     4     4     4    1
+--R   (8)  d h + c g + b f + a e - -
+--R                                5
+--E 134
+
+--S 135
+t9:=a*b^2*f*i+a*c^2*g*j+b*c^2*g*k+ad^2*h*l+b*d^2*h*m+c*d^2*h*n-1/10
+--R 
+--R
+--R           2         2        2         2         2         2       1
+--R   (9)  c d h n + b d h m + ad h l + b c g k + a c g j + a b f i - --
+--R                                                                   10
+--E 135
+
+--S 136
+t10:=a^2*b*f*i+a^2*c*g*j+b^2*c*g*k+a^3*h*l+b^2*d*h*m+c^2*d*h*n-1/15
+--R 
+--R
+--R          2         2         3       2         2         2         1
+--R   (10)  c d h n + b d h m + a h l + b c g k + a c g j + a b f i - --
+--R                                                                   15
+--E 136
+
+--S 137
+t11:=a*c*g*i*k+a*d*h*i*m+a*d*h*j*n+b*d*h*k*n-1/30
+--R 
+--R
+--R                                                         1
+--R   (11)  (b d h k + a d h j)n + a d h i m + a c g i k - --
+--R                                                        30
+--E 137
+
+--S 138
+t12:=a^2*f*i^2+a^2*g*j^2+2*a*b*g*j*k+b^2*g*k^2+a^2*h*l^2+2*a*b*h*l*m
+    +b^2*h*m^2+2*a*c*h*l*n+2*b*c*h*m*n+c^2*h*n^2-1/20
+--R 
+--R
+--R   (12)
+--R      2   2                             2   2                 2   2    2   2
+--R     c h n  + (2b c h m + 2a c h l)n + b h m  + 2a b h l m + a h l  + b g k
+--R   + 
+--R                   2   2    2   2    1
+--R     2a b g j k + a g j  + a f i  - --
+--R                                    20
+--E 138
+
+--S 139
+t13:=a^2*f*i+a^3*g*j+b^3*g*k+a^3*h*l+b^3*h*m+c^3*h*n-1/20
+--R 
+--R
+--R          3       3       3       3       3       2       1
+--R   (13)  c h n + b h m + a h l + b g k + a g j + a f i - --
+--R                                                         20
+--E 139
+
+--S 140
+t14:=a*b*g*i*k+a*b*h*i*m+a*c*h*j*n+b*c*h*k*n-1/40
+--R 
+--R
+--R                                                         1
+--R   (14)  (b c h k + a c h j)n + a b h i m + a b g i k - --
+--R                                                        40
+--E 140
+
+--S 141
+t15:=a^2*g*i*k+a^2*h*i*m+a^2*h*j*n+b^2*h*k*n-1/60
+--R 
+--R
+--R           2       2         2         2         1
+--R   (15)  (b h k + a h j)n + a h i m + a g i k - --
+--R                                                60
+--E 141
+
+--S 142
+t16:=a*h*i*k*n-1/120
+--R 
+--R
+--R                      1
+--R   (16)  a h i k n - ---
+--R                     120
+--E 142
+
+@
+\section{Hairer4}
+Variables $a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t$
+<<*>>=
+)clear all
+
+--S 143
+t1:=a*f+b*g+c*h+d*i+e*j-1/2
+--R 
+--R
+--R                                      1
+--R   (1)  e j + d i + c h + b g + a f - -
+--R                                      2
+--E 143
+
+--S 144
+t2:=a^2*f+b^2*g+c^2*h+d^2*i+e^2*j-1/3
+--R 
+--R
+--R         2     2     2     2     2    1
+--R   (2)  e j + d i + c h + b g + a f - -
+--R                                      3
+--E 144
+
+--S 145
+t3:=t*d*j+a*g*k+a*h*l+b*h*m+a*i*n+b*i*o+c*i*p+a*j*q+b*j*r+c*j*s-1/6
+--R 
+--R
+--R   (3)
+--R     d j t + c j s + b j r + a j q + c i p + b i o + a i n + b h m + a h l
+--R   + 
+--R             1
+--R     a g k - -
+--R             6
+--E 145
+
+--S 146
+t4:=a^3*f+b^3*g+c^3*h+d^3*i+e^3*j-1/4
+--R 
+--R
+--R         3     3     3     3     3    1
+--R   (4)  e j + d i + c h + b g + a f - -
+--R                                      4
+--E 146
+
+--S 147
+t5:=t*d*e*j+a*b*g*k+a*c*h*l+b*c*h*m+a*d*i*n+b*d*i*o+c*d*i*p+a*e*j*q_
+    +b*e*j*r+c*e*j*s-1/8
+--R 
+--R
+--R   (5)
+--R     d e j t + c e j s + b e j r + a e j q + c d i p + b d i o + a d i n
+--R   + 
+--R                                   1
+--R     b c h m + a c h l + a b g k - -
+--R                                   8
+--E 147
+
+--S 148
+t6:=t*d^2*j+a^2*g*k+a^2*h*l+b^2*h*m+a^2*i*n+b^2*i*o+c^2*i*p+a^2*j*g_
+    +b^2*j*r+c^2*j*s-1/12
+--R 
+--R
+--R   (6)
+--R      2       2       2       2       2       2       2       2       2
+--R     d j t + c j s + b j r + c i p + b i o + a i n + b h m + a h l + a g k
+--R   + 
+--R      2       1
+--R     a g j - --
+--R             12
+--E 148
+
+--S 149
+t7:=a*h*k*m+t*a*j*n+t*b*j*o+a*i*k*o+t*c*j*p+a*i*l*p+b*i*m*p+a*j*k*r_
+    +a*j*l*s+b*j*m*s-1/24
+--R 
+--R
+--R   (7)
+--R     (c j p + b j o + a j n)t + (b j m + a j l)s + a j k r + (b i m + a i l)p
+--R   + 
+--R                          1
+--R     a i k o + a h k m - --
+--R                         24
+--E 149
+
+--S 150
+t8:=a^4*f+b^4*g+c^4*h+d^4*i+e^4*j-1/5
+--R 
+--R
+--R         4     4     4     4     4    1
+--R   (8)  e j + d i + c h + b g + a f - -
+--R                                      5
+--E 150
+
+--S 151
+t9:=t*d*e^2*j+a*b^2*g*k+a*c^2*h*l+b*c^2*h*m+a*d^2*i*n+b*d^2*i*o_
+    +c*d^2*i*p+a*e^2*j*g+b*e^2*j*r+c*e^2*j*s-1/10
+--R 
+--R
+--R   (9)
+--R        2         2         2         2         2         2         2
+--R     d e j t + c e j s + b e j r + c d i p + b d i o + a d i n + b c h m
+--R   + 
+--R        2         2         2       1
+--R     a c h l + a b g k + a e g j - --
+--R                                   10
+--E 151
+
+--S 152
+t10:=t*d^2*e*j+a^2*b*g*k+a^2*c*h*l+b^2*c*h*m+a^2*d*i*n+b^2*d*i*o_
+    +c^2*d*i*p+a^2*e*j*q+b^2*e*j*r+c^2*e*j*s-1/15
+--R 
+--R
+--R   (10)
+--R      2         2         2         2         2         2         2
+--R     d e j t + c e j s + b e j r + a e j q + c d i p + b d i o + a d i n
+--R   + 
+--R      2         2         2         1
+--R     b c h m + a c h l + a b g k - --
+--R                                   15
+--E 152
+
+--S 153
+t11:=a*c*h*k*m+t*a*e*j*n+t*b*e*j*o+a*d*i*k*o+t*c*e*j*p+a*d*i*l*p_
+    +b*d*i*m*p+a*e*j*k*r+a*e*j*l*s+b*e*j*m*s-1/30
+--R 
+--R
+--R   (11)
+--R     (c e j p + b e j o + a e j n)t + (b e j m + a e j l)s + a e j k r
+--R   + 
+--R                                                     1
+--R     (b d i m + a d i l)p + a d i k o + a c h k m - --
+--R                                                    30
+--E 153
+
+--S 154
+t12:=t^2*d^2*j+a^2*g*k^2+a^2*h*l^2+2*a*b*h*l*m+b^2*h*m^2+a^2*i*n^2_
+    +2*a*b*i*n*o+b^2*i*o^2+2*a*c*i*n*p+2*b*c*i*o*p+c^2*i*p^2_
+    +2*t*a*d*j*q+a^2*j*q^2+2*t*b*d*j*r+2*a*b*j*q*r+b^2*j*r^2_
+    +2*t*c*d*j*s+2*a*c*j*q*s+2*b*c*j*r*s+c^2*j*s^2-1/20
+--R 
+--R
+--R   (12)
+--R      2   2                                        2   2
+--R     d j t  + (2c d j s + 2b d j r + 2a d j q)t + c j s
+--R   + 
+--R                               2   2                 2   2    2   2
+--R     (2b c j r + 2a c j q)s + b j r  + 2a b j q r + a j q  + c i p
+--R   + 
+--R                               2   2                 2   2    2   2
+--R     (2b c i o + 2a c i n)p + b i o  + 2a b i n o + a i n  + b h m  + 2a b h l m
+--R   + 
+--R      2   2    2   2    1
+--R     a h l  + a g k  - --
+--R                       20
+--E 154
+
+--S 155
+t13:=t*d^3*j+a^3*g*k+a^3*h*l+b^3*h*m+a^3*i*n+b^3*i*o+c^3*i*p_
+    +a^3*j*q+b^3*j*r+c^3*j*s-1/20
+--R 
+--R
+--R   (13)
+--R      3       3       3       3       3       3       3       3       3
+--R     d j t + c j s + b j r + a j q + c i p + b i o + a i n + b h m + a h l
+--R   + 
+--R      3       1
+--R     a g k - --
+--R             20
+--E 155
+
+--S 156
+t14:=a*b*h*k*m+t*a*d*j*n+t*b*d*j*o+a*b*i*k*o+t*c*d*j*p+a*c*i*l*p_
+    +b*c*i*m*p+a*b*j*k*r+a*c*j*l*s+b*c*j*m*s-1/40
+--R 
+--R
+--R   (14)
+--R     (c d j p + b d j o + a d j n)t + (b c j m + a c j l)s + a b j k r
+--R   + 
+--R                                                     1
+--R     (b c i m + a c i l)p + a b i k o + a b h k m - --
+--R                                                    40
+--E 156
+
+--S 157
+t15:=a^2*h*k*m+t*a^2*j*n+t*b^2*j*o+a^2*i*k*o+t*c^2*j*p+a^2*i*l*p_
+    +b^2*i*m*p+a^2*j*k*r+a^2*j*l*s+b^2*j*m*s-1/60
+--R 
+--R
+--R   (15)
+--R       2       2       2          2       2         2          2       2
+--R     (c j p + b j o + a j n)t + (b j m + a j l)s + a j k r + (b i m + a i l)p
+--R   + 
+--R      2         2         1
+--R     a i k o + a h k m - --
+--R                         60
+--E 157
+
+--S 158
+t16:=t*a*j*k*o+t*a*j*l*p+t*b*j*m*p+a*i*k*m*p+a*j*k*m*s-1/20
+--R 
+--R
+--R                                                                  1
+--R   (16)  ((b j m + a j l)p + a j k o)t + a j k m s + a i k m p - --
+--R                                                                 20
+--E 158
+
+@
+\section{Hietarinta1}
+Variables $a,c,j,l,m,n,p,v,g,h$
+<<*>>=
+)clear all
+
+--S 159
+t1:=c^2*p-a*c+c*l+a-p-h
+--R 
+--R
+--R          2
+--R   (1)  (c  - 1)p + c l - h - a c + a
+--E 159
+
+--S 160
+t2:=a*c*h+c^2+c*n+m*h
+--R 
+--R
+--R                             2
+--R   (2)  c n + h m + a c h + c
+--E 160
+
+--S 161
+t3:=-a^2*c+a*c*l+a*c*g-c*l*h+a^2+2*c^2-a*m-a*h+l*h-2
+--R 
+--R
+--R                                                      2    2     2
+--R   (3)  - a m + ((- c + 1)h + a c)l - a h + a c g + 2c  - a c + a  - 2
+--E 161
+
+--S 162
+t4:=-a*c^2+a*c*j-c^2*m+a*c*n+c^2*v-c*n*h-c*m+n*h
+--R 
+--R
+--R         2                              2                    2
+--R   (4)  c v + ((- c + 1)h + a c)n + (- c  - c)m + a c j - a c
+--E 162
+
+--S 163
+t5:=-c*l*g-a*l-j-1
+--R 
+--R
+--R   (5)  (- c g - a)l - j - 1
+--E 163
+
+--S 164
+t6:=-c*n*g-c*l-c*m+j*m+c*g+c*h
+--R 
+--R
+--R   (6)  - c g n + (j - c)m - c l + c h + c g
+--E 164
+
+--S 165
+t7:=-c*j*l-a*j+j*l-a*n+c*g+a-v+g
+--R 
+--R
+--R   (7)  - v - a n + (- c + 1)j l - a j + (c + 1)g + a
+--E 165
+
+--S 166
+t8:=-c*j*n+c*j-c*n+j*n
+--R 
+--R
+--R   (8)  ((- c + 1)j - c)n + c j
+--E 166
+
+--S 167
+t9:=c*m*p-l*n*p+a*l+l*m+a*p-l*p+c-n-2
+--R 
+--R
+--R   (9)  (- l n + c m - l + a)p - n + l m + a l + c - 2
+--E 167
+
+--S 168
+t10:=-n^2*p+c*l+c*m+2*m*n+c*p-c*h+m
+--R 
+--R
+--R             2
+--R   (10)  (- n  + c)p + 2m n + (c + 1)m + c l - c h
+--E 168
+
+--S 169
+t11:=-l*m*h+a*c+2*c*m-l*n+m*n-c*g-a+p+h
+--R 
+--R
+--R   (11)  p + (m - l)n + (- h l + 2c)m + h - c g + a c - a
+--E 169
+
+--S 170
+t12:=-c*l*m-c*m^2+a*m*n-m^2*n+c*m*v-m*n*h+c^2-c*j-n^2+n
+--R 
+--R
+--R                  2       2                         2                  2
+--R   (12)  c m v - n  + (- m  + (- h + a)m + 1)n - c m  - c l m - c j + c
+--E 170
+
+--S 171
+t13:=a^2*l-a*l^2+c*n*p-l*m*g-c*l-a*n+2*a-l+m-v+g
+--R 
+--R
+--R                                               2           2
+--R   (13)  - v + c n p - a n + (- g l + 1)m - a l  + (- c + a  - 1)l + g + 2a
+--E 171
+
+--S 172
+t14:=a*c*l-c*l^2+a*m*n-l*m*n-m*n*g+c*l*h-m^2+c*n-n^2+m*v+2*c
+--R 
+--R
+--R                2                            2      2
+--R   (14)  m v - n  + ((- l - g + a)m + c)n - m  - c l  + (c h + a c)l + 2c
+--E 172
+
+--S 173
+t15:=-j*l*m-l*n*v+c*l*g+a*l+c*n+n^2+j+1
+--R 
+--R
+--R                    2
+--R   (15)  - l n v + n  + c n - j l m + (c g + a)l + j + 1
+--E 173
+
+--S 174
+t16:=c*j*l-c*l*n-j*m*n+a*n^2-m*n^2+c*n*v-n^2*v+n*v
+--R 
+--R
+--R             2                          2
+--R   (16)  (- n  + (c + 1)n)v + (- m + a)n  + (- j m - c l)n + c j l
+--E 174
+
+--S 175
+t17:=-j*l*p+c*m*p+n*p*h-a*l-a*m+a*g-p*g+a*h+c-j+n-1
+--R 
+--R
+--R   (17)  (h n + c m - j l - g)p + n - a m - a l - j + a h + a g + c - 1
+--E 175
+
+--S 176
+t18:=-j*n*p+l*m*h-c*l+j*m+c*g+n*h
+--R 
+--R
+--R   (18)  - j n p + h n + (h l + j)m - c l + c g
+--E 176
+
+--S 177
+t19:=l^2*h-l*h^2+a*c-c*l-j*l+c*m+j*m-n*g+c*h+n*h-a-l-g+h
+--R 
+--R
+--R   (19)
+--R                            2           2
+--R   (h - g)n + (j + c)m + h l  + (- j - h  - c - 1)l + (c + 1)h - g + a c - a
+--E 177
+
+--S 178
+t20:=a*j*m-j*m^2+c*m*v-c*m*g-c*m*h+l*n*h+n*v*h-n*h^2+c^2-c*n-2*j*n
+--R 
+--R
+--R                                     2            2                         2
+--R   (20)  (h n + c m)v + (h l - 2j - h  - c)n - j m  + (a j - c h - c g)m + c
+--E 178
+
+--S 179
+t21:=j*n*p-l*g*h-j*l-n*g-m+h
+--R 
+--R
+--R   (21)  j n p - g n - m + (- j - g h)l + h
+--E 179
+
+--S 180
+t22:=j*l^2-j*l*v-a*n*g+n*g^2-j*l*h+2*j*n+l*g+m*g-v*g+j-1
+--R 
+--R
+--R                               2                    2
+--R   (22)  (- j l - g)v + (2j + g  - a g)n + g m + j l  + (- h j + g)l + j - 1
+--E 180
+
+--S 181
+t23:=j*l*n-j*m*n-c*n*g+j*n*g-j*n*h+j*m
+--R 
+--R
+--R   (23)  (- j m + j l + (- h + g)j - c g)n + j m
+--E 181
+
+--S 182
+t24:=-a^2*p+a*l*p+m^2*p-l*p*v+3*a+2*m-v
+--R 
+--R
+--R                          2          2
+--R   (24)  (- l p - 1)v + (m  + a l - a )p + 2m + 3a
+--E 182
+
+--S 183
+t25:=-a*c*p+c*l*p-n*p*v+n*p*h-a*m+l*m+m*v-m*h+2*c+2*n
+--R 
+--R
+--R   (25)  (- n p + m)v + (h n + c l - a c)p + 2n + (l - h - a)m + 2c
+--E 183
+
+--S 184
+t26:=-a*c*p+n*p*g+l^2-a*m-l*m+m^2+l*p-l*v+m*v-m*g-l*h-p*h+c+n
+--R 
+--R
+--R   (26)
+--R                                          2                     2
+--R   (m - l)v + (g n + l - h - a c)p + n + m  + (- l - g - a)m + l  - h l + c
+--E 184
+
+--S 185
+t27:=-c^2*p+j*n*p-2*c*m-j*m+l*n-m*n-n*h
+--R 
+--R
+--R                 2
+--R   (27)  (j n - c )p + (- m + l - h)n + (- j - 2c)m
+--E 185
+
+--S 186
+t28:=m*n*p+n*p*v-a*l-l*m-a*p-l*v-l*g-p*g
+--R 
+--R
+--R   (28)  (n p - l)v + (m n - g - a)p - l m + (- g - a)l
+--E 186
+
+--S 187
+t29:=l*m*h-c*l-c*p-n*g+n*h-m
+--R 
+--R
+--R   (29)  - c p + (h - g)n + (h l - 1)m - c l
+--E 187
+
+--S 188
+t30:=l^2*v-l*v^2+l*m*g-j*l-a*n-l*n+m*n-j*p+2*n*v+n*g-v
+--R 
+--R
+--R              2          2
+--R   (30)  - l v  + (2n + l  - 1)v - j p + (m - l + g - a)n + g l m - j l
+--E 188
+
+--S 189
+t31:=j*l*m+l*n*v-c*n-n^2
+--R 
+--R
+--R                  2
+--R   (31)  l n v - n  - c n + j l m
+--E 189
+
+@
+\section{Hietarinta2}
+Variables $a,b,c,j,k,l,m,n,p,v$
+<<*>>=
+)clear all
+ 
+--S 190
+t1:=-a*b*k+a*c*k+b*k*l-c*k*l-b^2*p+c^2*p+b*k
+--R 
+--R
+--R          2    2
+--R   (1)  (c  - b )p + (- c + b)k l + (a c + (- a + 1)b)k
+--E 190
+
+--S 191
+t2:=-c^2*k+a*c*l+b*l*m-c*k*n+a*c+c^2+b*m
+--R 
+--R
+--R                                        2     2
+--R   (2)  - c k n + (b l + b)m + a c l - c k + c  + a c
+--E 191
+
+--S 192
+t3:=a^2*b-a^2*c+2*b^2*k-2*c^2*k-a*b*l+a*c*l+b*l^2-c*l^2-a*b*m+a*c*m_
+-a*b-b^2+c^2+b*l-c*l
+--R 
+--R
+--R   (3)
+--R                              2                                   2     2      2
+--R     (a c - a b)m + (- c + b)l  + ((a - 1)c + (- a + 1)b)l + (- 2c  + 2b )k + c
+--R   + 
+--R        2     2     2
+--R     - a c - b  + (a  - a)b
+--E 192
+
+--S 193
+t4:=-a*c^2+a*c*j-b*c*m-c^2*m+a*c*n+b*l*n-c*l*n+c^2*v+b*n-c*n
+--R 
+--R
+--R         2                                       2                      2
+--R   (4)  c v + ((- c + b)l + (a - 1)c + b)n + (- c  - b c)m + a c j - a c
+--E 193
+
+--S 194
+t5:=b^2*k+b*j*k-a*b*l-c*l*m-b^2
+--R 
+--R
+--R                                  2      2
+--R   (5)  - c l m - a b l + (b j + b )k - b
+--E 194
+
+--S 195
+t6:=b*j*m-c*m*n+b*c
+--R 
+--R
+--R   (6)  - c m n + b j m + b c
+--E 195
+
+--S 196
+t7:=a*b^2-a*b*j+b*j*l-c*j*l+b^2*m+b*c*m-a*b*n-b^2*v
+--R 
+--R
+--R           2                    2                               2
+--R   (7)  - b v - a b n + (b c + b )m + (- c + b)j l - a b j + a b
+--E 196
+
+--S 197
+t8:=b*c*j-b*c*n+b*j*n-c*j*n
+--R 
+--R
+--R   (8)  ((- c + b)j - b c)n + b c j
+--E 197
+
+--S 198
+t9:=-2*b*k^2+c*k^2-a*k*l-k*l*m-k^2*n+a*b*p-b*l*p+c*m*p-l*n*p+b*k
+--R 
+--R
+--R                                      2                             2
+--R   (9)  (- l n + c m - b l + a b)p - k n - k l m - a k l + (c - 2b)k  + b k
+--E 198
+
+--S 199
+t10:=-b*k*m-c*k*m-2*k*m*n+b*c*p-n^2*p+c*k+b*m+c*m
+--R 
+--R
+--R             2
+--R   (10)  (- n  + b c)p - 2k m n + ((- c - b)k + c + b)m + c k
+--E 199
+
+--S 200
+t11:=a*b*k-a*c*k-b*k*l-c*k*m-l^2*m+k*l*n-k*m*n+b^2*p-b*k+c*m-l*m-l*n
+--R 
+--R
+--R   (11)
+--R      2                              2
+--R     b p + (- k m + (k - 1)l)n + (- l  - l - c k + c)m - b k l
+--R   + 
+--R     (- a c + (a - 1)b)k
+--E 200
+
+--S 201
+t12:=-c^2*k+c*j*k-c*l*m-c*m^2-b*k*n+a*m*n-l*m*n-m^2*n+k*n^2+c*m*v+b*n-m*n-n^2
+--R 
+--R
+--R   (12)
+--R                     2       2                                   2
+--R     c m v + (k - 1)n  + (- m  + (- l + a - 1)m - b k + b)n - c m  - c l m
+--R   + 
+--R             2
+--R     (c j - c )k
+--E 201
+
+--S 202
+t13:=-2*a*b*k+a^2*l+b*k*l+c*k*l-a*l^2-2*b*k*m-l*m^2+a*k*n+c*n*p_
+    +b*k*v+a*b-b*l-l*n
+--R 
+--R
+--R   (13)
+--R                                       2               2                    2
+--R     b k v + c n p + (- l + a k)n - l m  - 2b k m - a l  + ((c + b)k - b + a )l
+--R   + 
+--R     - 2a b k + a b
+--E 202
+
+--S 203
+t14:=-2*b*c*k+a*c*l-b*m^2-c*k*n+a*m*n-l*m*n-m^2*n+k*n^2+b*m*v_
+    +b*c+c*l+c*n-n^2
+--R 
+--R
+--R   (14)
+--R                     2       2                               2
+--R     b m v + (k - 1)n  + (- m  + (- l + a)m - c k + c)n - b m  + (a + 1)c l
+--R   + 
+--R     - 2b c k + b c
+--E 203
+
+--S 204
+t15:=-b^2*k-b*j*k+a*b*l+c*l*m-j*l*m-c*k*n-k*n^2-l*n*v+b^2+c*n
+--R 
+--R
+--R   (15)
+--R                2                                                   2      2
+--R   - l n v - k n  + (- c k + c)n + (- j + c)l m + a b l + (- b j - b )k + b
+--E 204
+
+--S 205
+t16:=c*j*l-c*l*n-j*m*n+a*n^2-m*n^2+b*n*v+c*n*v-n^2*v
+--R 
+--R
+--R             2                          2
+--R   (16)  (- n  + (c + b)n)v + (- m + a)n  + (- j m - c l)n + c j l
+--E 205
+
+--S 206
+t17:=-b*k^2+c*k^2-j*k^2+k^2*n-j*l*p-b*m*p+c*m*p+l*n*p-a*k+n*p
+--R 
+--R
+--R                                         2                  2
+--R   (17)  ((l + 1)n + (c - b)m - j l)p + k n + (- j + c - b)k  - a k
+--E 206
+
+--S 207
+t18:=c*l*k-c*k*m-j*k*m+l^2*m-k*l*n-j*n*p+c*m+l*m-k*n+l*n+n
+--R 
+--R
+--R                                             2
+--R   (18)  - j n p + ((- k + 1)l - k + 1)n + (l  + l + (- j - c)k + c)m + c k l
+--E 207
+
+--S 208
+t19:=a*b*k-a*c*k+j*k*l+b*k*m-c*k*m-j*k*m-k*l*n+k*m*n_
+    -b*k-c*k-j*l-l^2-b*m+c*m-k*n+l*n-l+n
+--R 
+--R
+--R   (19)
+--R                                                                2
+--R     (k m + (- k + 1)l - k + 1)n + ((- j - c + b)k + c - b)m - l
+--R   + 
+--R     (j k - j - 1)l + ((- a - 1)c + (a - 1)b)k
+--E 208
+
+--S 209
+t20:=-c^2*k+a*j*m-c*l*m-c*m^2-j*m^2+c*k*n+2*j*k*n+c*m*v+l*n*v_
+    -c*m-j*n-l*n+n*v-n
+--R 
+--R
+--R   (20)
+--R                                                                2
+--R     ((l + 1)n + c m)v + (- l + (2j + c)k - j - 1)n + (- j - c)m
+--R   + 
+--R                           2
+--R     (- c l + a j - c)m - c k
+--E 209
+
+--S 210
+t21:=-b*k*l+j*k*l+b*k*m-l^2*m+k*m*n+j*n*p-b*k-j*l-b*m-l*m
+--R 
+--R
+--R                             2
+--R   (21)  j n p + k m n + (- l  - l + b k - b)m + ((j - b)k - j)l - b k
+--E 210
+
+--S 211
+t22:=b^2*k-b*j*k+b*l*m+b*m^2-2*j*k*n-a*m*n+m^2*n-j*l*v-b*m*v-j*l+j*n
+--R 
+--R
+--R   (22)
+--R                      2                         2                           2
+--R   (- b m - j l)v + (m  - a m - 2j k + j)n + b m  + b l m - j l + (- b j + b )k
+--E 211
+
+--S 212
+t23:=b*j*m-c*m*n-j*n
+--R 
+--R
+--R   (23)  (- c m - j)n + b j m
+--E 212
+
+--S 213
+t24:=3*a*k^2+2*k^2*m-a^2*p+a*l*p+m^2*p-k^2*v-l*p*v-2*a*k-b*p+n*p
+--R 
+--R
+--R                   2           2              2       2        2
+--R   (24)  (- l p - k )v + (n + m  + a l - b - a )p + 2k m + 3a k  - 2a k
+--E 213
+
+--S 214
+t25:=2*c*k^2+a*k*m+2*k^2*n-a*c*p+c*l*p+l*n*p-k*m*v-n*p*v-c*k-a*m_
+    +k*m+l*m+m^2-3*k*n+n*p+n
+--R 
+--R
+--R   (25)
+--R                                                   2               2
+--R     (- n p - k m)v + ((l + 1)n + c l - a c)p + (2k  - 3k + 1)n + m
+--R   + 
+--R                               2
+--R     (l + (a + 1)k - a)m + 2c k  - c k
+--E 214
+
+--S 215
+t26:=c*k^2+a*k*m+k*l*m+k^2*n-a*c*p+m*n*p+k*l*v-k*m*v_
+    +2*b*k-c*k+k*l-a*m+m^2-2*k*n-b*p-l*v-b-l+n
+--R 
+--R
+--R   (26)
+--R                                                2               2
+--R     (- k m + (k - 1)l)v + (m n - a c - b)p + (k  - 2k + 1)n + m
+--R   + 
+--R                                      2
+--R     (k l + a k - a)m + (k - 1)l + c k  + (- c + 2b)k - b
+--E 215
+
+--S 216
+t27:=2*c*k*m+j*k*m+k*m*n-c^2*p+j*n*p-2*c*m+k*n-n
+--R 
+--R
+--R                 2
+--R   (27)  (j n - c )p + (k m + k - 1)n + ((j + 2c)k - 2c)m
+--E 216
+
+--S 217
+t28:=a*k*l+2*k*l*m-a*b*p-b*m*p+m*n*p+k*l*v+n*p*v+b*k-l*m+k*n-l*v-b
+--R 
+--R
+--R   (28)
+--R   (n p + (k - 1)l)v + (m n - b m - a b)p + k n + (2k - 1)l m + a k l + b k - b
+--E 217
+
+@
+\section{Hietarinta3}
+Variables $x,y,z,t,u,v,w,a$
+<<*>>=
+)clear all
+
+--S 218
+t1:=-x^2+y^2
+--R 
+--R
+--R         2    2
+--R   (1)  y  - x
+--E 218
+
+--S 219
+t2:=x*u*v+y*u*a-x-w
+--R 
+--R
+--R   (2)  a u y + (u v - 1)x - w
+--E 219
+
+--S 220
+t3:=x*u^2-y*u^2+y*z*a-x*u*a+y*u*a-x*v*a+x*a^2-y*a^2
+--R 
+--R
+--R                    2          2               2          2
+--R   (3)  a y z + (- u  + a u - a )y + (- a v + u  - a u + a )x
+--E 220
+
+--S 221
+t4:=-x*y*v-y^2*v+x*u*w-y*u*w+y*t*a+y*w*a-v^2+a^2
+--R 
+--R
+--R             2                                          2    2
+--R   (4)  - v y  + (- v x + (- u + a)w + a t)y + u w x - v  + a
+--E 221
+
+--S 222
+t5:=-y*z*u-x*u*a+y+t
+--R 
+--R
+--R   (5)  - u y z + y - a u x + t
+--E 222
+
+--S 223
+t6:=x*y*z-x*y*v+x*t*v-y*z*w+z*u-u*v-z*a-v*a
+--R 
+--R
+--R   (6)  ((x - w)y + u - a)z - v x y + t v x + (- u - a)v
+--E 223
+
+--S 224
+t7:=x^2*z+x*y*z+x*t*u-y*t*u-x*t*a-x*w*a+z^2-a^2
+--R 
+--R
+--R         2           2                                     2
+--R   (7)  z  + (x y + x )z - t u y + (- a w + t u - a t)x - a
+--E 224
+
+--S 225
+t8:=x*y*t-x*y*w+x*t*w-y*t*w+x*z+z*t-y*v-v*w
+--R 
+--R
+--R   (8)  (x + t)z + ((- w + t)x - t w - v)y + t w x - v w
+--E 225
+
+--S 226
+t9:=-x*u+y*v-u*w+x*a
+--R 
+--R
+--R   (9)  v y + (- u + a)x - u w
+--E 226
+
+--S 227
+t10:=x*y-w^2
+--R 
+--R
+--R                2
+--R   (10)  x y - w
+--E 227
+
+--S 228
+t11:=-u^2*v+x^2+z
+--R 
+--R
+--R              2    2
+--R   (11)  z + x  - u v
+--E 228
+
+--S 229
+t12:=-y*u*v-y*v^2-u*v*w-v^2*w+y*v*a+u*w*a+x+t
+--R 
+--R
+--R             2                          2
+--R   (12)  (- v  + (- u + a)v)y + x + (- v  - u v + a u)w + t
+--E 229
+
+--S 230
+t13:=-z*u*v-u^2*a+u*a^2+y*w+a
+--R 
+--R
+--R                            2    2
+--R   (13)  - u v z + w y - a u  + a u + a
+--E 230
+
+--S 231
+t14:=-x*v^2-z*v*w-u*v*w+y*u*a+x*v*a+v*w*a
+--R 
+--R
+--R                               2
+--R   (14)  - v w z + a u y + (- v  + a v)x + (- u + a)v w
+--E 231
+
+--S 232
+t15:=y*z*u-t*u*v+x*u*a-u*w*a
+--R 
+--R
+--R   (15)  u y z + a u x - a u w - t u v
+--E 232
+
+--S 233
+t16:=y*t*u-y*u*w-t*v*w-v*w^2+x*w*a+y*w*a-v^2+a^2
+--R 
+--R
+--R                                          2            2    2
+--R   (16)  ((- u + a)w + t u)y + a w x - v w  - t v w - v  + a
+--E 233
+
+--S 234
+t17:=-x*z-t*u+y*v+u*w
+--R 
+--R
+--R   (17)  - x z + v y + u w - t u
+--E 234
+
+--S 235
+t18:=u^2*v-t*w-z
+--R 
+--R
+--R                      2
+--R   (18)  - z - t w + u v
+--E 235
+
+--S 236
+t19:=-y*z*v-y*u*v-t*v^2+y*v*a+t*v*a+u*w*a
+--R 
+--R
+--R                                             2
+--R   (19)  - v y z + (- u + a)v y + a u w - t v  + a t v
+--E 236
+
+--S 237
+t20:=-z*u^2+t*w+v
+--R 
+--R
+--R            2
+--R   (20)  - u z + t w + v
+--E 237
+
+--S 238
+t21:=x*z*u+x*z*v+z^2*w-x*z*a-t*u*a-z*w*a
+--R 
+--R
+--R            2
+--R   (21)  w z  + ((v + u - a)x - a w)z - a t u
+--E 238
+
+--S 239
+t22:=x*t*v-y*z*w+z*t*w-t*v*w+z*u-u*v-z*a+v*a
+--R 
+--R
+--R   (22)  (- w y + t w + u - a)z + t v x - t v w + (- u + a)v
+--E 239
+
+--S 240
+t23:=v^2-a^2
+--R 
+--R
+--R          2    2
+--R   (23)  v  - a
+--E 240
+
+--S 241
+t24:=y*u+u*w-y*a-w*a
+--R 
+--R
+--R   (24)  (u - a)y + (u - a)w
+--E 241
+
+--S 242
+t25:=z*w-y*a
+--R 
+--R
+--R   (25)  w z - a y
+--E 242
+
+--S 243
+t26:=-y^2+t*w
+--R 
+--R
+--R            2
+--R   (26)  - y  + t w
+--E 243
+
+--S 244
+t27:=-x*z+v*w-x*a+w*a
+--R 
+--R
+--R   (27)  - x z - a x + (v + a)w
+--E 244
+
+--S 245
+t28:=u^2*v-x*y-z
+--R 
+--R
+--R                      2
+--R   (28)  - z - x y + u v
+--E 245
+
+--S 246
+t29:=z*u*v+u^2*a-u*a^2-x*t-a
+--R 
+--R
+--R                          2    2
+--R   (29)  u v z - t x + a u  - a u - a
+--E 246
+
+--S 247
+t30:=t*u*v+u*w*a-y-t
+--R 
+--R
+--R   (30)  - y + a u w + t u v - t
+--E 247
+
+--S 248
+t31:=-x*z+y*u+t*u-y*a
+--R 
+--R
+--R   (31)  - x z + (u - a)y + t u
+--E 248
+
+@
+\section{Hunecke}
+Variables $x,y,z,t,u$
+<<*>>=
+)clear all
+
+--S 249
+t1:=-x^5-y^5-z^5+5*x*y*z*t*u-u^5
+--R 
+--R
+--R           5                 5    5    5
+--R   (1)  - z  + 5t u x y z - y  - x  - u
+--E 249
+
+--S 250
+t2:=x*y^3*z+y*z^3*t+x^3*y*u+z*t^3*u+z*t*u^3
+--R 
+--R
+--R             3       3      3    3         3
+--R   (2)  t y z  + (x y  + t u  + t u)z + u x y
+--E 250
+
+--S 251
+t3:=x^2*y*z^2+y^2*z*t^2+x^2*t^2*u+x*y^2*u^2+z^2*t*u^2
+--R 
+--R
+--R          2       2  2    2 2     2   2    2   2
+--R   (3)  (x y + t u )z  + t y z + u x y  + t u x
+--E 251
+
+--S 252
+t4:=x*y*z^5-y^4*z^2*t-2*x^2*y^2*z*t*u+x*z^3*t^2*u-x^4*t*u^2_
+    +y*z*t^2*u^3+x*y*u^5
+--R 
+--R
+--R             5    2     3      4 2            2 2    2 3       5         2 4
+--R   (4)  x y z  + t u x z  - t y z  + (- 2t u x y  + t u y)z + u x y - t u x
+--E 252
+
+--S 253
+t5:=x*y^2*z^4-y^5*z*t-x^2*y^3*t*u+2*x*y*z^2*t^2*u+x*t^4*u^2_
+    -x^2*y*z*u^3-z*t*u^5
+--R 
+--R
+--R           2 4     2       2         5    3 2       5          2 3    4 2
+--R   (5)  x y z  + 2t u x y z  + (- t y  - u x y - t u )z - t u x y  + t u x
+--E 253
+
+--S 254
+t6:=x^3*y^2*t-y*z^2*t^4+x*y^2*z^3*u-y^5*t*u-t^6*u+3*x*y*z*t^2*u^2_
+    -x^2*y*u^4-t*u^6
+--R 
+--R
+--R             2 3    4   2     2 2             5      3 2    4 2       6    6
+--R   (6)  u x y z  - t y z  + 3t u x y z - t u y  + t x y  - u x y - t u  - t u
+--E 254
+
+--S 255
+t7:=x^4*y^2*z-x*y*z^2*t^3-x*y^5*u-y^3*z^2*t*u-x*t^5*u_
+    +2*x^2*y*z*t*u^2+z*t^2*u^4
+--R 
+--R
+--R                3    3     2     4 2       2 2     2 4          5    5
+--R   (7)  (- t u y  - t x y)z  + (x y  + 2t u x y + t u )z - u x y  - t u x
+--E 255
+
+--S 256
+t8:=y^6*z+y*z^6+x^2*y^4*u-3*x*y^2*z^2*t*u+z^4*t^2*u-x^3*z*t*u^2_
+-x*y*t^3*u^3+y*z*u^5
+--R 
+--R
+--R           6    2   4           2 2     6    5       2 3        2 4    3 3
+--R   (8)  y z  + t u z  - 3t u x y z  + (y  + u y - t u x )z + u x y  - t u x y
+--E 256
+
+@
+\section{Laconcelli}
+Variables $a,b,c,d,e,f,g,h,k,l,m$
+<<*>>=
+)clear all
+
+--S 257
+t1:=a+b+c+d+e+f+g+h-1
+--R 
+--R
+--R   (1)  h + g + f + e + d + c + b + a - 1
+--E 257
+
+--S 258
+t2:=-a^2*k-2*a*b*k-b^2*k-a*c*k-b*c*k-a*d*k-b*d*k-a*e*k_
+    -b*e*k-c*e*k-d*e*k-a*f*k-b*f*k-c*f*k-d*f*k+a+b
+--R 
+--R
+--R   (2)
+--R                                                                              2
+--R         (- d - c - b - a)f + (- d - c - b - a)e + (- b - a)d + (- b - a)c - b
+--R       + 
+--R                   2
+--R         - 2a b - a
+--R    *
+--R       k
+--R   + 
+--R     b + a
+--E 258
+
+--S 259
+t3:=-a^2*l-a*b*l-a*c*l-a*d*l-a*e*l-b*e*l-c*e*l-d*e*l_
+    +a^2+2*a*b+b^2+a*e+b*e+a*f+b*f
+--R 
+--R
+--R   (3)
+--R                                              2                            2
+--R     ((- d - c - b - a)e - a d - a c - a b - a )l + (b + a)f + (b + a)e + b
+--R   + 
+--R             2
+--R     2a b + a
+--E 259
+
+--S 260
+t4:=a+c+e+g-m
+--R 
+--R
+--R   (4)  - m + g + e + c + a
+--E 260
+
+@ 
+\section{Morgenstern: articulated system (3 rods)}
+Variables $x,y,z,t,u,v,w,a,b$
+<<*>>=
+)clear all
+
+--S 261
+t1:=-y*z+x*t
+--R 
+--R
+--R   (1)  - y z + t x
+--E 261
+
+--S 262
+t2:=-y*u+x*v+y-v
+--R 
+--R
+--R   (2)  (- u + 1)y + v x - v
+--E 262
+
+--S 263
+t3:=z^2+t^2-w^2
+--R 
+--R
+--R         2    2    2
+--R   (3)  z  - w  + t
+--E 263
+
+--S 264
+t4:=u^2+v^2-a^2-2*u+1
+--R 
+--R
+--R         2    2         2
+--R   (4)  v  + u  - 2u - a  + 1
+--E 264
+
+--S 265
+t5:=z^2+t^2-2*z*u+u^2-2*t*v+v^2-b^2
+--R 
+--R
+--R         2           2           2    2    2
+--R   (5)  z  - 2u z + v  - 2t v + u  + t  - b
+--E 265
+
+@
+\section{Pavelle Macsyma}
+Variables $x,y,z,t,u,v,w,a$
+<<*>>=
+)clear all
+
+--S 266
+t1:=x*y+x*z+x*t-u^2
+--R 
+--R
+--R                           2
+--R   (1)  x z + x y + t x - u
+--E 266
+
+--S 267
+t2:=x*y+y*z+y*t-v^2
+--R 
+--R
+--R                          2
+--R   (2)  y z + (x + t)y - v
+--E 267
+
+--S 268
+t3:=x*z+y*z+z*t-w^2
+--R 
+--R
+--R                        2
+--R   (3)  (y + x + t)z - w
+--E 268
+
+--S 269
+t4:=x*t+y*t+z*t-a^2
+--R 
+--R
+--R                           2
+--R   (4)  t z + t y + t x - a
+--E 269
+
+@ 
+\section{Raksanyi}
+Variables $x,y,z,t,u,v,w,a$
+<<*>>=
+)clear all
+
+--S 270
+t1:=t+v-a
+--R 
+--R
+--R   (1)  v + t - a
+--E 270
+
+--S 271
+t2:=x+y+z+t-u-w-a
+--R 
+--R
+--R   (2)  z + y + x - w - u + t - a
+--E 271
+
+--S 272
+t3:=x*z+y*z+x*t+z*t-u*w-u*a-w*a
+--R 
+--R
+--R   (3)  (y + x + t)z + t x + (- u - a)w - a u
+--E 272
+
+--S 273
+t4:=x*z*t-u*w*a
+--R 
+--R
+--R   (4)  t x z - a u w
+--E 273
+
+@
+\section{Rose}
+Variables $x,y,z$
+<<*>>=
+
+--S 274
+t1:=y^4-20/7*x^2
+--R 
+--R
+--R         4   20  2
+--R   (5)  y  - -- x
+--R              7
+--E 274
+
+--S 275
+t2:=x^2*z^4 + 7/10*x*z^4 + 7/48*z^4 - 50/27*x^2 - 35/27*x - 49/216
+--R 
+--R
+--R          2    7      7  4   50  2   35      49
+--R   (6)  (x  + -- x + --)z  - -- x  - -- x - ---
+--R              10     48      27      27     216
+--E 275
+
+--S 276
+t3:=3/5*x^6*y^2*z + x^5*y^3 + 3/7*x^5*y^2*z + 7/5*x^4*y^3_
+   - 7/20*x^4*y*z^2 - 3/20*x^4*z^3 + 609/1000*x^3*y^3_
+   + 63/200*x^3*y^2*z - 77/125*x^3*y*z^2 - 21/50*x^3*z^3_
+   + 49/1250*x^2*y^3 + 147/2000*x^2*y^2*z - 23863/60000*x^2*y*z^2_
+   - 91/400*x^2*z^3 - 27391/800000*x*y^3 + 4137/800000*x*y^2*z_
+   - 1078/9375*x*y*z^2 - 5887/200000*x*z^3 - 1029/160000*y^3_
+   - 24353/1920000*y*z^2 - 343/128000*z^3
+--R 
+--R
+--R   (7)
+--R         3  4   21  3    91  2    5887        343   3
+--R     (- -- x  - -- x  - --- x  - ------ x - ------)z
+--R        20      50      400      200000     128000
+--R   + 
+--R         7  4    77  3   23863  2   1078      24353     2
+--R     (- -- x  - --- x  - ----- x  - ---- x - -------)y z
+--R        20      125      60000      9375     1920000
+--R   + 
+--R      3  6   3  5    63  3    147  2    4137     2
+--R     (- x  + - x  + --- x  + ---- x  + ------ x)y z
+--R      5      7      200      2000      800000
+--R   + 
+--R       5   7  4    609  3    49   2    27391      1029   3
+--R     (x  + - x  + ---- x  + ---- x  - ------ x - ------)y
+--R           5      1000      1250      800000     160000
+--E 276
+
+)spool 
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} D. Bini and B. Mourrain. Polynomials test suite. 1996.
+http://www-sop.inria.fr/saga/POL
+\end{thebibliography}
+\end{document}




From MAILER-DAEMON Tue Sep 02 05:59:25 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KaSfV-0001v2-0W
	for mharc-axiom-developer@gnu.org; Tue, 02 Sep 2008 05:59:25 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KaSfS-0001up-RY
	for axiom-developer@nongnu.org; Tue, 02 Sep 2008 05:59:22 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KaSfR-0001uc-4r
	for axiom-developer@nongnu.org; Tue, 02 Sep 2008 05:59:22 -0400
Received: from [199.232.76.173] (port=42290 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KaSfQ-0001uZ-Ry
	for axiom-developer@nongnu.org; Tue, 02 Sep 2008 05:59:20 -0400
Received: from yw-out-2526.google.com ([74.125.46.35]:37244)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KaSfP-0008CH-2S
	for axiom-developer@nongnu.org; Tue, 02 Sep 2008 05:59:20 -0400
Received: by yw-out-2526.google.com with SMTP id 4so3625731ywg.82
	for <axiom-developer@nongnu.org>; Tue, 02 Sep 2008 02:59:15 -0700 (PDT)
MIME-Version: 1.0
Path: z66g2000hsc.googlegroups.com!not-for-mail
Newsgroups: sci.math.symbolic
Date: Tue, 2 Sep 2008 02:59:14 -0700 (PDT)
Complaints-To: groups-abuse@google.com
Injection-Info: z66g2000hsc.googlegroups.com; posting-host=72.23.19.139; 
	posting-account=m2ufuQoAAAAnP4mhpj2-bRzndif0-AIg
NNTP-Posting-Host: 72.23.19.139
References: <nsSdndXQzeXSbCbVnZ2dnUVZ_q_inZ2d@comcast.com>
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) 
	Gecko/2008070208 Firefox/3.0.1,gzip(gfe),gzip(gfe)
Message-ID: <70490e2d-9c98-4303-ac44-8c2da2e2e6d6@z66g2000hsc.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-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2)
Subject: [Axiom-developer] Re: What is a CAS?
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, 02 Sep 2008 09:59:23 -0000

On Sep 1, 9:42=A0am, "David Park" <djmp...@comcast.net> wrote:
> What is the purpose of a CAS?
> What kind of people use a CAS?
> How does a CAS fit into their activities?
> What is the output product of a CAS?
> What is the output product of a CAS used for?
>
> --
> David Park
> djmp...@comcast.nethttp://home.comcast.net/~djmpark/=A0

As a CAS developer I have a different answer.

Computational mathematics is the intersection of
mathematics and computer science. This is a new
science in that we can create effective algorithms
and reduce them to measurable implementations. My
particular interest (Axiom) lies in the organization
of these algorithms against a categorically defined,
algebraic structure.

What is the purpose of a CAS?

The purpose of a CAS is to host research in
computational mathematics. The CAS serves the
purpose of collecting and communicating these
algorithms to other researchers. Algorithms can
be measured and compared, proven and improved.

What kind of people use a CAS?

I'm afraid I'm an amatuer academic since I don't
have a job that will pay me to develop Axiom. I
do it purely for the fun of advancing a new field
of science. The long term value (Axiom's theme is
"The 30 year horizon") is that the next generation
can build on the platform of the previous.

How does a CAS fit into their activities?

Other than consuming 100% of my free time? :-)

What is the output product of a CAS?

The output product is the CAS itself. To me
this is like asking, "What is the output
product of mathematics?"

What is the output product of a CAS used for?

I view the Axiom CAS system as a long term
repository of knowledge of computational
science. Most of the current Axiom effort is
directed toward deep documentation of the system
so that it can be used for teaching and research.

The collision of mathematics with computers has
created this new science. Unfortunately a lot of
this new science is commercially oriented. This
puts us all back into the early days of mathematics
where someone discovered a formula but would not
reveal it. They could prove it worked ("send me
a problem and I'll return the solution") but no
one else could study or improve it.

Beyond developing the algorithms, Axiom studies
the problem of how to organize the algorithms
into their most general setting.

Tim Daly
Axiom Lead Developer



From MAILER-DAEMON Wed Sep 03 13:11:27 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kavt9-0000iG-Ic
	for mharc-axiom-developer@gnu.org; Wed, 03 Sep 2008 13:11:27 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kavt7-0000f9-Vk
	for axiom-developer@nongnu.org; Wed, 03 Sep 2008 13:11:26 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kavt7-0000df-9f
	for axiom-developer@nongnu.org; Wed, 03 Sep 2008 13:11:25 -0400
Received: from [199.232.76.173] (port=60225 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kavt7-0000dO-5j
	for axiom-developer@nongnu.org; Wed, 03 Sep 2008 13:11:25 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:35535
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kavt6-0004pd-Tw
	for axiom-developer@nongnu.org; Wed, 03 Sep 2008 13:11:25 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=jk5hlZ_7lBsA:10 a=Z3xz-dyDBRsA:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=37mPLz1kAAAA:8 a=qOgRbWo2h-cgcGlr71MA:9
	a=9dh-gWQaubvIomtnerCahOH3QLwA:4 a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.47] ([24.154.1.47:47786] helo=pop-4.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id D3/8E-31271-135CEB84; Wed, 03 Sep 2008 13:11:13 -0400
Received: (qmail 3950 invoked from network); 3 Sep 2008 17:11:13 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-4.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 3 Sep 2008 17:11:13 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m83Ic0V21279;
	Wed, 3 Sep 2008 14:38:00 -0400
Date: Wed, 3 Sep 2008 14:38:00 -0400
Message-Id: <200809031838.m83Ic0V21279@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] Counting Elements in Cyclic List
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: 
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 03 Sep 2008 17:11:26 -0000

>> In the documentation it states:
>>  "Note that using the "#" operator on a list with cycles
>>   causes Axiom to enter an infinte loop"
>>
>> See:
>> <http://axiom-developer.org/axiom-website/documentation.html>
>> in Volume 0: Axiom Jenks and Sutor p41
>>
>> Tim
>>
>

...[private reply snip]...


Consider the type information. Length takes a list and returns
a positive integer. 

"%PositiveInfinite" (actually %plusInfinity in Axiom) is not a
positive integer but a macro:


)d all

Properties of %plusInfinity
    This is a system-defined macro
    macro %plusInfinity () == plusInfinity()


so we see that %plusInfinity is a function call.

Next we notice the return type:


%plusInfinity
Type: OrderedCompletion Integer


so your new length would be a function defined as:

#(a:List):Union(PositiveInteger,OrderedCompletion Integer) ==
   ....
   plusInfinity()
   ....


which would impact a lot of algebra in a lot of ways.


The "more Axiom-like" solution to this problem, which I have been
looking at, would be to define a new domain called CircularList.
This new CircularList domain would export 

#(a:List):OrderedCompletion(Integer) ==
      plusInfinity()

and all of the operations that destructively modify a list such as
 
concat!(a:List,b:S):% ==

All of the destructive operations should be removed from List and
there should be a coerce from List to CircularList.

Thus you could freely use # on List objects (since they cannot be
circular). If you use concat! on a List object you get back a
CircularList object. If you use # on a CircularList object you get
back +infinity.

This is the correct fix. It will take time to do it right because
it needs
  (a) thinking
  (b) new code
  (c) changes to existing code
  (d) before-and-after unit tests
  (e) community feedback
  (f) regression tests
  (g) documentation changes

So your complaint is noted and a TODO task has been added to the queue.

Tim





From MAILER-DAEMON Thu Sep 04 06:13:43 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KbBqR-00055D-5K
	for mharc-axiom-developer@gnu.org; Thu, 04 Sep 2008 06:13:43 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KbBqP-00054g-LX
	for axiom-developer@nongnu.org; Thu, 04 Sep 2008 06:13:41 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KbBqN-00053n-Qv
	for axiom-developer@nongnu.org; Thu, 04 Sep 2008 06:13:40 -0400
Received: from [199.232.76.173] (port=34965 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KbBqN-00053a-FH
	for axiom-developer@nongnu.org; Thu, 04 Sep 2008 06:13:39 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:46755
	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 1KbBqM-0002bz-Vo
	for axiom-developer@nongnu.org; Thu, 04 Sep 2008 06:13:39 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m84ADbr3024786;
	Thu, 4 Sep 2008 05:13:37 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m84ADbNj024783;
	Thu, 4 Sep 2008 05:13:37 -0500
Date: Thu, 4 Sep 2008 05:13:37 -0500
Message-Id: <200809041013.m84ADbNj024783@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080904.01.tst.patch (add reduce example
	(Tsikas))
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, 04 Sep 2008 10:13:42 -0000

add an example for reduce to the output of )d op reduce
======================================================================
diff --git a/changelog b/changelog
index 056933f..d6cf2ec 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080904 tst src/algebra/aggcat.spad add reduce example	
 20080901 tpd src/input/Makefile add start of multivar poly tests
 20080901 tpd src/input/bini.input add start of multivar poly tests
 20080831 tpd src/algebra/algfact.spad graphviz dotfile decoration
diff --git a/src/algebra/aggcat.spad.pamphlet b/src/algebra/aggcat.spad.pamphlet
index 7212a34..d137a42 100644
--- a/src/algebra/aggcat.spad.pamphlet
+++ b/src/algebra/aggcat.spad.pamphlet
@@ -313,9 +313,14 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
    if % has finiteAggregate then
       reduce: ((S,S)->S,%) -> S
 	++ reduce(f,u) reduces the binary operation f across u. For example,
-	++ if u is \axiom{[x,y,...,z]} then \axiom{reduce(f,u)} returns \axiom{f(..f(f(x,y),...),z)}.
+	++ if u is \axiom{[x,y,...,z]} then \axiom{reduce(f,u)} 
+        ++ returns \axiom{f(..f(f(x,y),...),z)}.
 	++ Note: if u has one element x, \axiom{reduce(f,u)} returns x.
 	++ Error: if u is empty.
+        ++
+        ++C )clear all
+        ++X reduce(+,[C[i]*x**i for i in 1..5])
+
       reduce: ((S,S)->S,%,S) -> S
 	++ reduce(f,u,x) reduces the binary operation f across u, where x is
 	++ the identity operation of f.



From MAILER-DAEMON Fri Sep 05 01:25:44 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KbTpH-00021h-VM
	for mharc-axiom-developer@gnu.org; Fri, 05 Sep 2008 01:25:43 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KbTpG-00021X-5k
	for axiom-developer@nongnu.org; Fri, 05 Sep 2008 01:25:42 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KbTpC-000215-BC
	for axiom-developer@nongnu.org; Fri, 05 Sep 2008 01:25:41 -0400
Received: from [199.232.76.173] (port=33480 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KbTpC-000211-3G
	for axiom-developer@nongnu.org; Fri, 05 Sep 2008 01:25:38 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:38272
	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 1KbTpB-0005mA-LB
	for axiom-developer@nongnu.org; Fri, 05 Sep 2008 01:25:38 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m855PXr3003427;
	Fri, 5 Sep 2008 00:25:33 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m855PXYA003424;
	Fri, 5 Sep 2008 00:25:33 -0500
Date: Fri, 5 Sep 2008 00:25:33 -0500
Message-Id: <200809050525.m855PXYA003424@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080904.02.tpd.patch (graphviz dotfile
	decoration)
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, 05 Sep 2008 05:25:42 -0000

Domains from the files retract, equation1, carten, coerce, card
brill, bezout, axserver, attreg, array2, array1, any, alql are
now in the algebra graph.

======================================================================
diff --git a/changelog b/changelog
index d6cf2ec..ec35f67 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,16 @@
+20080904 tpd src/algebra/retract.spad graphviz dotfile decoration
+20080904 tpd src/algebra/equation1.spad graphviz dotfile decoration
+20080904 tpd src/algebra/carten.spad graphviz dotfile decoration
+20080904 tpd src/algebra/coerce.spad graphviz dotfile decoration
+20080904 tpd src/algebra/card.spad graphviz dotfile decoration
+20080904 tpd src/algebra/brill.spad graphviz dotfile decoration
+20080904 tpd src/algebra/bezout.spad graphviz dotfile decoration
+20080904 tpd src/algebra/axserver.spad graphviz dotfile decoration	
+20080904 tpd src/algebra/attreg.spad graphviz dotfile decoration
+20080904 tpd src/algebra/array2.spad graphviz dotfile decoration
+20080904 tpd src/algebra/array1.spad graphviz dotfile decoration
+20080904 tpd src/algebra/any.spad graphviz dotfile decoration
+20080904 tpd src/algebra/alql.spad graphviz dotfile decoration
 20080904 tst src/algebra/aggcat.spad add reduce example	
 20080901 tpd src/input/Makefile add start of multivar poly tests
 20080901 tpd src/input/bini.input add start of multivar poly tests
diff --git a/src/algebra/alql.spad.pamphlet b/src/algebra/alql.spad.pamphlet
index 5865b39..86c5d2e 100644
--- a/src/algebra/alql.spad.pamphlet
+++ b/src/algebra/alql.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{domain DLIST DataList}
+<<dot>>=
+"DLIST" -> "LSAGG"
+"DataList(a:OrderedSet)" -> "ListAggregate(a:Type)"
+@
 <<domain DLIST DataList>>=
 )abbrev domain DLIST DataList
 ++ This domain provides some nice functions on lists
@@ -40,6 +44,10 @@ DataList(S:OrderedSet) : Exports == Implementation where
 
 @
 \section{domain ICARD IndexCard}
+<<dot>>=
+"ICARD" -> "ORDSET"
+"IndexCard()" -> "OrderedSet()"
+@
 <<domain ICARD IndexCard>>=
 )abbrev domain ICARD IndexCard
 ++ This domain implements a container of information
@@ -51,13 +59,12 @@ IndexCard() : Exports == Implementation where
       ++ are \axiom{name, nargs, exposed, type, abbreviation, kind, origin,
       ++ params, condition, doc}.
     display: % -> Void
-      ++ display(ic) prints a summary of the information contained in \axiom{ic}.
+      ++ display(ic) prints a summary of information contained in \axiom{ic}.
     fullDisplay: % -> Void
       ++ fullDisplay(ic) prints all of the information contained in \axiom{ic}.
     coerce: String -> %
       ++ coerce(s) converts \axiom{s} into an \axiom{IndexCard}.  Warning: if
-      ++ \axiom{s} is not of the right format then an error will occur when using
-      ++ it.
+      ++ \axiom{s} is not of the right format then an error will occur 
   Implementation == add
     x<y==(x pretend String) < (y pretend String)
     x=y==(x pretend String) = (y pretend String)
@@ -68,7 +75,8 @@ IndexCard() : Exports == Implementation where
     fullDisplay(x) ==
       name : OutputForm := dbName(x)$Lisp
       type : OutputForm := dbPart(x,4,1$Lisp)$Lisp
-      origin:OutputForm := hconcat(alqlGetOrigin(x$Lisp)$Lisp,alqlGetParams(x$Lisp)$Lisp)
+      origin:OutputForm := 
+          hconcat(alqlGetOrigin(x$Lisp)$Lisp,alqlGetParams(x$Lisp)$Lisp)
       fromPart : OutputForm := hconcat(" from ",origin)
       condition : String := dbPart(x,6,1$Lisp)$Lisp
       ifPart : OutputForm :=
@@ -99,6 +107,10 @@ IndexCard() : Exports == Implementation where
 
 @
 \section{domain DBASE Database}
+<<dot>>=
+"DBASE" -> "SETCAT"
+"Database(a:OrderedSet)" -> "SetCategory()"
+@
 <<domain DBASE Database>>=
 )abbrev domain DBASE Database
 ++ This domain implements a simple view of a database whose fields are 
@@ -149,6 +161,10 @@ Database(S): Exports == Implementation where
 
 @
 \section{domain QEQUAT QueryEquation}
+<<dot>>=
+"QEQUAT" -> "KOERCE"
+"QueryEquation()" -> "CoercibleTo(OutputForm)"
+@
 <<domain QEQUAT QueryEquation>>=
 )abbrev domain QEQUAT QueryEquation
 ++ This domain implements simple database queries 
@@ -169,14 +185,18 @@ QueryEquation(): Exports == Implementation where
 
 @
 \section{package MTHING MergeThing}
+<<dot>>=
+"MTHING" -> "PACKAGE"
+"MergeThing(a:OrderedSet)" -> "Package"
+@
 <<package MTHING MergeThing>>=
 )abbrev package MTHING MergeThing
 ++ This package exports tools for merging lists
 MergeThing(S:OrderedSet): Exports == Implementation where
   Exports == with
     mergeDifference: (List(S),List(S)) -> List(S)
-	++ mergeDifference(l1,l2) returns a list of elements in l1 not present in l2.
-	++ Assumes lists are ordered and all x in l2 are also in l1.
+	++ mergeDifference(l1,l2) returns a list of elements in l1 not present
+	++ in l2. Assumes lists are ordered and all x in l2 are also in l1.
   Implementation == add
     mergeDifference1: (List S,S,List S) -> List S
     mergeDifference(x,y) == 
@@ -202,6 +222,10 @@ MergeThing(S:OrderedSet): Exports == Implementation where
 
 @
 \section{package OPQUERY OperationsQuery}
+<<dot>>=
+"OPQUERY" -> "PACKAGE"
+"OperationsQuery()" -> "Package"
+@
 <<package OPQUERY OperationsQuery>>=
 )abbrev package OPQUERY OperationsQuery
 ++ This package exports tools to create AXIOM Library information databases.
diff --git a/src/algebra/any.spad.pamphlet b/src/algebra/any.spad.pamphlet
index ef2f1b9..757c012 100644
--- a/src/algebra/any.spad.pamphlet
+++ b/src/algebra/any.spad.pamphlet
@@ -76,6 +76,10 @@ o )show None
 o $AXIOM/doc/src/algebra/any.spad.dvi
 
 @
+<<dot>>=
+"NONE" -> "SETCAT"
+"None()" -> "SetCategory()"
+@
 <<domain NONE None>>=
 )abbrev domain NONE None
 ++ Author:
@@ -98,6 +102,10 @@ None():SetCategory == add
 
 @
 \section{package NONE1 NoneFunctions1}
+<<dot>>=
+"NONE1" -> "PACKAGE"
+"NoneFunctions1(a:Type)" -> "Package"
+@
 <<package NONE1 NoneFunctions1>>=
 )abbrev package NONE1 NoneFunctions1
 ++ Author:
@@ -124,6 +132,10 @@ NoneFunctions1(S:Type): Exports == Implementation where
 
 @
 \section{domain ANY Any}
+<<dot>>=
+"ANY" -> "SETCAT"
+"Any()" -> "SetCategory()"
+@
 <<domain ANY Any>>=
 )abbrev domain ANY Any
 ++ Author: Robert S. Sutor
@@ -146,8 +158,8 @@ NoneFunctions1(S:Type): Exports == Implementation where
 Any(): SetCategory with
         any             : (SExpression, None) -> %
           ++ any(type,object) is a technical function for creating
-          ++ an object of \spadtype{Any}. Arugment \spad{type} is a \spadgloss{LISP} form
-          ++ for the type of \spad{object}.
+          ++ an object of \spadtype{Any}. Arugment \spad{type} is a 
+          ++ \spadgloss{LISP} form for the type of \spad{object}.
         domainOf        : % -> OutputForm
           ++ domainOf(a) returns a printable form of the type of the
           ++ original object that was converted to \spadtype{Any}.
@@ -205,6 +217,10 @@ Any(): SetCategory with
 
 @
 \section{package ANY1 AnyFunctions1}
+<<dot>>=
+"ANY1" -> "PACKAGE"
+"AnyFunctions1(a:Type)" -> "Package"
+@
 <<package ANY1 AnyFunctions1>>=
 )abbrev package ANY1 AnyFunctions1
 ++ Author:
diff --git a/src/algebra/array1.spad.pamphlet b/src/algebra/array1.spad.pamphlet
index 7f4be27..5d5b1c2 100644
--- a/src/algebra/array1.spad.pamphlet
+++ b/src/algebra/array1.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{domain PRIMARR PrimitiveArray}
+<<dot>>=
+"PRIMARR" -> "A1AGG"
+"PrimitiveArray(a:Type)" -> "OneDimensionalArrayAggregate(a:Type)"
+@
 <<domain PRIMARR PrimitiveArray>>=
 )abbrev domain PRIMARR PrimitiveArray
 ++ This provides a fast array type with no bound checking on elt's.
@@ -213,6 +217,10 @@ Note that this code is not included in the generated catdef.spad file.
  (QUOTE |lookupComplete|))) 
 @
 \section{package PRIMARR2 PrimitiveArrayFunctions2}
+<<dot>>=
+"PRIMARR2" -> "PACKAGE"
+"PrimitiveArrayFunctions2(a:Type,b:Type)" -> "Package"
+@
 <<package PRIMARR2 PrimitiveArrayFunctions2>>=
 )abbrev package PRIMARR2 PrimitiveArrayFunctions2
 ++ This package provides tools for operating on primitive arrays
@@ -263,6 +271,10 @@ PrimitiveArrayFunctions2(A, B): Exports == Implementation where
 
 @
 \section{domain TUPLE Tuple}
+<<dot>>=
+"TUPLE" -> "PRIMARR"
+"Tuple(a:Type)" -> "PrimitiveArray(a:Type)"
+@
 <<domain TUPLE Tuple>>=
 )abbrev domain TUPLE Tuple
 ++ This domain is used to interface with the interpreter's notion
@@ -309,6 +321,16 @@ Tuple(S:Type): CoercibleTo(PrimitiveArray S) with
 
 @
 \section{domain IFARRAY IndexedFlexibleArray}
+<<dot>>=
+"IFARRAY" -> "A1AGG"
+"IndexedFlexibleArray(a:Type,b:Integer)" ->
+    "OneDimensionalArrayAggregate(a:Type)"
+"IndexedFlexibleArray(a:Type,1)" -> 
+    "IndexedFlexibleArray(a:Type,b:Integer)"
+"IFARRAY" -> "ELAGG"
+"IndexedFlexibleArray(a:Type,b:Integer)" ->
+    "ExtensibleLinearAggregate(a:Type)"
+@
 <<domain IFARRAY IndexedFlexibleArray>>=
 )abbrev domain IFARRAY IndexedFlexibleArray
 ++ Author: Michael Monagan July/87, modified SMW June/91
@@ -520,7 +542,8 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 
     select_!(g:(S->Boolean), a:%) ==
        k:I := 0
-       for i in 0..maxIndex a - mn repeat if g(a.f.i) then (a.f.k := a.f.i;k := k+1)
+       for i in 0..maxIndex a - mn repeat_
+          if g(a.f.i) then (a.f.k := a.f.i;k := k+1)
        shrink(a, #a - k)
 
     if S has SetCategory then
@@ -809,6 +832,10 @@ o )show FlexibleArray
 o $AXIOM/doc/src/algebra/array1.spad.dvi
 
 @
+<<dot>>=
+"FARRAY" -> "IFARRAY"
+"FlexibleArray(a:Type)" -> "IndexedFlexibleArray(a:Type,1)"
+@
 <<domain FARRAY FlexibleArray>>=
 )abbrev domain FARRAY FlexibleArray
 ++ A FlexibleArray is the notion of an array intended to allow for growth
@@ -833,6 +860,11 @@ FlexibleArray(S: Type) == Implementation where
 
 @
 \section{domain IARRAY1 IndexedOneDimensionalArray}
+<<dot>>=
+"IARRAY1" -> "A1AGG"
+"IndexedOneDimensionalArray(a:Type,b:Integer)" ->
+    "OneDimensionalArrayAggregate(a:Type)"
+@
 <<domain IARRAY1 IndexedOneDimensionalArray>>=
 )abbrev domain IARRAY1 IndexedOneDimensionalArray
 ++ Author Micheal Monagan Aug/87
@@ -1077,6 +1109,10 @@ o )show OneDimensionalArray
 o $AXIOM/doc/src/algebra/array1.spad.dvi
 
 @
+<<dot>>=
+"ARRAY1" -> "A1AGG"
+"OneDimensionalArray(a:Type)" -> "OneDimensionalArrayAggregate(a:Type)"
+@
 <<domain ARRAY1 OneDimensionalArray>>=
 )abbrev domain ARRAY1 OneDimensionalArray
 ++ This is the domain of 1-based one dimensional arrays
@@ -1105,6 +1141,10 @@ OneDimensionalArray(S:Type): Exports == Implementation where
 
 @
 \section{package ARRAY12 OneDimensionalArrayFunctions2}
+<<dot>>=
+"ARRAY12" -> "PACKAGE"
+"OneDimensionalArrayFunctions2(a:Type,b:Type)" -> "Package"
+@
 <<package ARRAY12 OneDimensionalArrayFunctions2>>=
 )abbrev package ARRAY12 OneDimensionalArrayFunctions2
 ++ This package provides tools for operating on one-dimensional arrays
diff --git a/src/algebra/array2.spad.pamphlet b/src/algebra/array2.spad.pamphlet
index a6f9cd7..831a89e 100644
--- a/src/algebra/array2.spad.pamphlet
+++ b/src/algebra/array2.spad.pamphlet
@@ -19,6 +19,13 @@ function 'minRowIndex'.  The index of the 'first' column may
 be obtained by calling the function 'minColIndex'.  The index of
 the first element of a 'Row' is the same as the index of the
 first column in an array and vice versa.
+<<dot>>=
+"ARR2CAT" -> "HOAGG"
+"TwoDimensionalArrayCategory(a:Type,b:FiniteLinearAggregate(a),c:FiniteLinearAggregate(a))"
+    -> "HomogeneousAggregate(a:Type)"
+"TwoDimensionalArrayCategory(a:Type,d:IndexedOneDimensionalArray(a,b),e:IndexedOneDimensionalArray(a,c))"
+-> "TwoDimensionalArrayCategory(a:Type,b:FiniteLinearAggregate(a),c:FiniteLinearAggregate(a))"
+@
 <<category ARR2CAT TwoDimensionalArrayCategory>>=
 )abbrev category ARR2CAT TwoDimensionalArrayCategory
 ++ Two dimensional array categories and domains
@@ -372,6 +379,15 @@ TwoDimensionalArrayCategory(R,Row,Col): Category == Definition where
 \section{domain IIARRAY2 InnerIndexedTwoDimensionalArray}
 This is an internal type which provides an implementation of
 2-dimensional arrays as PrimitiveArray's of PrimitiveArray's.
+<<dot>>=
+"IIARRAY2" -> "ARR2CAT"
+"InnerIndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer,d:FiniteLinearAggregate(a),e:FiniteLinearAggregate(a))"
+-> "TwoDimensionalArrayCategory(a:Type,b:FiniteLinearAggregate(a),c:FiniteLinearAggregate(a))"
+"InnerIndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer,d:IndexedOneDimensionalArray(a,b),e:IndexedOneDimensionalArray(a,c))"
+-> "InnerIndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer,d:FiniteLinearAggregate(a),e:FiniteLinearAggregate(a))"
+"InnerIndexedTwoDimensionalArray(a:Type,1,1,b:OneDimensionalArray(a),c:OneDimensionalArray(a))"
+-> "InnerIndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer,d:FiniteLinearAggregate(a),e:FiniteLinearAggregate(a))"
+@
 <<domain IIARRAY2 InnerIndexedTwoDimensionalArray>>=
 )abbrev domain IIARRAY2 InnerIndexedTwoDimensionalArray
 InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col):_
@@ -466,6 +482,14 @@ function 'minRowIndex'.  The index of the 'first' column may
 be obtained by calling the function 'minColIndex'.  The index of
 the first element of a 'Row' is the same as the index of the
 first column in an array and vice versa.
+<<dot>>=
+"IARRAY2" -> "ARR2CAT"
+"IndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer)" ->
+"TwoDimensionalArrayCategory(a:Type,d:IndexedOneDimensionalArray(a,b),e:IndexedOneDimensionalArray(a,c))"
+"IARRAY2" -> "IIARRAY2"
+"IndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer)" ->
+"InnerIndexedTwoDimensionalArray(a:Type,b:Integer,c:Integer,d:IndexedOneDimensionalArray(a,b),e:IndexedOneDimensionalArray(a,c))"
+@
 <<domain IARRAY2 IndexedTwoDimensionalArray>>=
 )abbrev domain IARRAY2 IndexedTwoDimensionalArray
 IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports == Implementation where
@@ -927,6 +951,14 @@ o )show TwoDimensionalArray
 o $AXIOM/doc/src/algebra/array2.spad.dvi
 
 @
+<<dot>>=
+"ARRAY2" -> "ARR2CAT"
+"TwoDimensionalArray(a:Type)" ->
+"TwoDimensionalArrayCategory(a:Type,b:FiniteLinearAggregate(a),c:FiniteLinearAggregate(a))"
+"ARRAY2" -> "IIARRAY2"
+"TwoDimensionalArray(a:Type)" ->
+"InnerIndexedTwoDimensionalArray(a:Type,1,1,b:OneDimensionalArray(a),c:OneDimensionalArray(a))"
+@
 <<domain ARRAY2 TwoDimensionalArray>>=
 )abbrev domain ARRAY2 TwoDimensionalArray
 TwoDimensionalArray(R):Exports == Implementation where
diff --git a/src/algebra/attreg.spad.pamphlet b/src/algebra/attreg.spad.pamphlet
index 221d387..0dbacc1 100644
--- a/src/algebra/attreg.spad.pamphlet
+++ b/src/algebra/attreg.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{category ATTREG AttributeRegistry}
+<<dot>>=
+"ATTREG" -> "CATEGORY"
+"AttributeRegistry()" -> "Category"
+@
 <<category ATTREG AttributeRegistry>>=
 )abbrev category ATTREG AttributeRegistry
 
diff --git a/src/algebra/axserver.spad.pamphlet b/src/algebra/axserver.spad.pamphlet
index 84f72f8..09e5329 100644
--- a/src/algebra/axserver.spad.pamphlet
+++ b/src/algebra/axserver.spad.pamphlet
@@ -12,6 +12,10 @@ to axiom.
 \tableofcontents
 \eject
 \section{Axiom Server}
+<<dot>>=
+"AXSERV" -> "PACKAGE"
+"AxiomServer()" -> "Package"
+@
 <<package AXSERV AxiomServer>>=
 
 )abbrev package AXSERV AxiomServer
diff --git a/src/algebra/bezout.spad.pamphlet b/src/algebra/bezout.spad.pamphlet
index 7f6b540..18afeab 100644
--- a/src/algebra/bezout.spad.pamphlet
+++ b/src/algebra/bezout.spad.pamphlet
@@ -10,6 +10,11 @@
 \tableofcontents
 \eject
 \section{package BEZOUT BezoutMatrix}
+<<dot>>=
+"BEZOUT" -> "PACKAGE"
+"BezoutMatrix(a:Ring,b:UPOLYC(a),c:MATCAT(a,d,e),d:FLAGG(a),e:FLAGG(a))"
+    -> "Package"
+@
 <<package BEZOUT BezoutMatrix>>=
 )abbrev package BEZOUT BezoutMatrix
 ++ Author: Clifton J. Williamson
diff --git a/src/algebra/brill.spad.pamphlet b/src/algebra/brill.spad.pamphlet
index ae69e86..8221267 100644
--- a/src/algebra/brill.spad.pamphlet
+++ b/src/algebra/brill.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package BRILL BrillhartTests}
+<<dot>>=
+"BRILL" -> "PACKAGE"
+"BrillhartTests(a:UPOLYC(INT))" -> "Package"
+@
 <<package BRILL BrillhartTests>>=
 )abbrev package BRILL BrillhartTests
 ++ Author: Frederic Lehobey, James H. Davenport
diff --git a/src/algebra/card.spad.pamphlet b/src/algebra/card.spad.pamphlet
index 7eb9afa..b56b5c2 100644
--- a/src/algebra/card.spad.pamphlet
+++ b/src/algebra/card.spad.pamphlet
@@ -328,6 +328,16 @@ o )show CardinalNumber
 o $AXIOM/doc/src/algebra/card.spad.dvi
 
 @
+<<dot>>=
+"CARD" -> "ORDSET"
+"CardinalNumber()" -> "OrderedSet()"
+"CARD" -> "ABELMON"
+"CardinalNumber()" -> "AbelianMonoid()"
+"CARD" -> "MONOID"
+"CardinalNumber()" -> "Monoid()" 
+"CARD" -> "RETRACT"
+"CardinalNumber()" -> "RetractableTo(NonNegativeInteger)"
+@
 <<domain CARD CardinalNumber>>=
 )abbrev domain CARD CardinalNumber
 ++ Author: S.M. Watt
diff --git a/src/algebra/carten.spad.pamphlet b/src/algebra/carten.spad.pamphlet
index d1880f4..38170aa 100644
--- a/src/algebra/carten.spad.pamphlet
+++ b/src/algebra/carten.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{category GRMOD GradedModule}
+<<dot>>=
+"GRMOD" -> "SETCAT"
+"GradedModule(a:CommutativeRing,b:AbelianMonoid)" -> "SetCategory()"
+@
 <<category GRMOD GradedModule>>=
 )abbrev category GRMOD GradedModule
 ++ Author: Stephen M. Watt
@@ -61,6 +65,14 @@ GradedModule(R: CommutativeRing, E: AbelianMonoid): Category ==
 
 @
 \section{category GRALG GradedAlgebra}
+<<dot>>=
+"GRALG" -> "GRMOD"
+"GradedAlgebra(a:CommutativeRing,b:AbelianMonoid)" ->
+    "GradedModule(a:CommutativeRing,b:AbelianMonoid)"
+"GRALG" -> "RETRACT"
+"GradedAlgebra(a:CommutativeRing,b:AbelianMonoid)" ->
+    "RetractableTo(CommutativeRing)"
+@
 <<category GRALG GradedAlgebra>>=
 )abbrev category GRALG GradedAlgebra
 ++ Author: Stephen M. Watt
@@ -1050,6 +1062,14 @@ o )show CartesianTensor
 o $AXIOM/doc/src/algebra/carten.spad.dvi
 
 @
+<<dot>>=
+"CARTEN" -> "GRALG"
+"CartesianTensor(a:Integer,b:NonNegativeInteger,c:CommutativeRing)" ->
+    "GradedAlgebra(a:CommutativeRing,b:NonNegativeInteger)"
+"CARTEN" -> "GRMOD"
+"CartesianTensor(a:Integer,b:NonNegativeInteger,c:CommutativeRing)" ->
+    "GradedModule(a:Integer,b:NonNegativeInteger)"
+@
 <<domain CARTEN CartesianTensor>>=
 )abbrev domain CARTEN CartesianTensor
 ++ Author: Stephen M. Watt
@@ -1657,6 +1677,10 @@ CartesianTensor(minix, dim, R): Exports == Implementation where
 
 @
 \section{package CARTEN2 CartesianTensorFunctions2}
+<<dot>>=
+"CARTEN2" -> "PACKAGE"
+"CartesianTensorFunctions2(a:INT,b:NNI,c:COMRING,d:DOMRING)" -> "Package"
+@
 <<package CARTEN2 CartesianTensorFunctions2>>=
 )abbrev package CARTEN2 CartesianTensorFunctions2
 ++ Author: Stephen M. Watt
diff --git a/src/algebra/coerce.spad.pamphlet b/src/algebra/coerce.spad.pamphlet
index 9c0935c..ad24e99 100644
--- a/src/algebra/coerce.spad.pamphlet
+++ b/src/algebra/coerce.spad.pamphlet
@@ -91,6 +91,8 @@ ConvertibleTo(S:Type): Category == with
 "RetractableTo(NonNegativeInteger)" -> "RetractableTo(a:Type)"
 "RetractableTo(Fraction(Integer))" -> "RetractableTo(a:Type)"
 "RetractableTo(Float)" -> "RetractableTo(a:Type)"
+"RetractableTo(Kernel(ExpressionSpace))" -> "RetractableTo(a:Type)"
+"RetractableTo(CommutativeRing)" -> "RetractableTo(a:Type)"
 @
 <<category RETRACT RetractableTo>>=
 )abbrev category RETRACT RetractableTo
diff --git a/src/algebra/equation1.spad.pamphlet b/src/algebra/equation1.spad.pamphlet
index 116e585..1483d64 100644
--- a/src/algebra/equation1.spad.pamphlet
+++ b/src/algebra/equation1.spad.pamphlet
@@ -17,6 +17,8 @@
     "InnerEvalable(a:SetCategory,b:Type)"
 "InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))"
      -> "InnerEvalable(a:SetCategory,b:Type)"
+"InnerEvalable(Kernal(ExpressionSpace),ExpressionSpace)" ->
+    "InnerEvalable(a:SetCategory,b:Type)"
 @
 <<category IEVALAB InnerEvalable>>=
 )abbrev category IEVALAB InnerEvalable
@@ -53,6 +55,7 @@ InnerEvalable(A:SetCategory, B:Type): Category == with
 "Evalable(a:SetCategory)" -> "InnerEvalable(a:SetCategory,b:SetCategory)"
 "Evalable(MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" ->
     "Evalable(a:SetCategory)"
+"Evalable(ExpressionSpace)" -> "Evalable(a:SetCategory)"
 @
 <<category EVALAB Evalable>>=
 )abbrev category EVALAB Evalable
diff --git a/src/algebra/retract.spad.pamphlet b/src/algebra/retract.spad.pamphlet
index 8738f2c..3492d7e 100644
--- a/src/algebra/retract.spad.pamphlet
+++ b/src/algebra/retract.spad.pamphlet
@@ -10,6 +10,12 @@
 \tableofcontents
 \eject
 \section{category FRETRCT FullyRetractableTo}
+<<dot>>=
+"FRETRCT" -> "RETRACT"
+"FullyRetractableTo(a:Type)" -> "RetractableTo(a:Type)"
+"FullyRetractableTo(a:Ring)" -> "FullyRetractableTo(a:Type)"
+"FullyRetractableTo(a:CommutativeRing)" -> "FullyRetractableTo(a:Type)"
+@
 <<category FRETRCT FullyRetractableTo>>=
 )abbrev category FRETRCT FullyRetractableTo
 ++ Author: Manuel Bronstein
@@ -46,6 +52,10 @@ FullyRetractableTo(S: Type): Category == RetractableTo(S) with
 
 @
 \section{package INTRET IntegerRetractions}
+<<dot>>=
+"INTRET" -> "PACKAGE"
+"IntegerRetractions(a:RetractableTo(Integer))" -> "Package"
+@
 <<package INTRET IntegerRetractions>>=
 )abbrev package INTRET IntegerRetractions
 ++ Author: Manuel Bronstein
@@ -68,6 +78,10 @@ IntegerRetractions(S:RetractableTo(Integer)): with
 
 @
 \section{package RATRET RationalRetractions}
+<<dot>>=
+"RATRET" -> "PACKAGE"
+"RationalRetractions(a:RetractableTo(Fraction Integer))" -> "Package"
+@
 <<package RATRET RationalRetractions>>=
 )abbrev package RATRET RationalRetractions
 ++ Author: Manuel Bronstein



From MAILER-DAEMON Sat Sep 06 01:42:39 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KbqZD-0006C1-N4
	for mharc-axiom-developer@gnu.org; Sat, 06 Sep 2008 01:42:39 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KbqZA-0006BO-HB
	for axiom-developer@nongnu.org; Sat, 06 Sep 2008 01:42:36 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KbqZ6-0006AZ-Gr
	for axiom-developer@nongnu.org; Sat, 06 Sep 2008 01:42:34 -0400
Received: from [199.232.76.173] (port=44165 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KbqZ5-0006AT-UI
	for axiom-developer@nongnu.org; Sat, 06 Sep 2008 01:42:32 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:33650
	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 1KbqZ5-0004Ry-7t
	for axiom-developer@nongnu.org; Sat, 06 Sep 2008 01:42:31 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m865gQr3026038;
	Sat, 6 Sep 2008 00:42:26 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m865gQh4026035;
	Sat, 6 Sep 2008 00:42:26 -0500
Date: Sat, 6 Sep 2008 00:42:26 -0500
Message-Id: <200809060542.m865gQh4026035@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080905.01.tpd.patch (graphviz dotfile
	decoration)
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, 06 Sep 2008 05:42:37 -0000

The graphviz graph information has been added to the files:
cra, coordsys, cont, contfrac, constant, complet, retract, combinat,
combfunc, color, cmplxrt, clip, clifford, and catdef

=======================================================================
diff --git a/changelog b/changelog
index ec35f67..dc5688d 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,17 @@
+20080905 tpd src/algebra/cra.spad graphviz dotfile decoration
+20080905 tpd src/algebra/coordsys.spad graphviz dotfile decoration
+20080905 tpd src/algebra/cont.spad graphviz dotfile decoration
+20080905 tpd src/algebra/contfrac.spad graphviz dotfile decoration
+20080905 tpd src/algebra/constant.spad graphviz dotfile decoration
+20080905 tpd src/algebra/complet.spad graphviz dotfile decoration
+20080905 tpd src/algebra/retract.spad graphviz dotfile decoration
+20080905 tpd src/algebra/combinat.spad graphviz dotfile decoration
+20080905 tpd src/algebra/combfunc.spad graphviz dotfile decoration
+20080905 tpd src/algebra/color.spad graphviz dotfile decoration
+20080905 tpd src/algebra/cmplxrt.spad graphviz dotfile decoration
+20080905 tpd src/algebra/clip.spad graphviz dotfile decoration
+20080905 tpd src/algebra/clifford.spad graphviz dotfile decoration
+20080905 tpd src/algebra/catdef.spad graphviz dotfile decoration
 20080904 tpd src/algebra/retract.spad graphviz dotfile decoration
 20080904 tpd src/algebra/equation1.spad graphviz dotfile decoration
 20080904 tpd src/algebra/carten.spad graphviz dotfile decoration
diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet
index b16f4b2..7beab0a 100644
--- a/src/algebra/catdef.spad.pamphlet
+++ b/src/algebra/catdef.spad.pamphlet
@@ -536,6 +536,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<dot>>=
 "ALGEBRA" -> "RING"
 "Algebra(a:CommutativeRing)" -> "Ring()"
+"Algebra(a:Field)" -> "Algebra(a:CommutativeRing)"
 "ALGEBRA" -> "MODULE"
 "Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)"
 "Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)"
@@ -2987,6 +2988,8 @@ LeftModule(R:Rng):Category == AbelianGroup with
 "LINEXP" -> "RING"
 "LinearlyExplicitRingOver(a:Ring)" -> "Ring()"
 "LinearlyExplicitRingOver(Integer)" -> "LinearlyExplicitRingOver(a:Ring)"
+"LinearlyExplicitRingOver(Fraction(Integer))" -> 
+    "LinearlyExplicitRingOver(a:Ring)"
 @
 <<category LINEXP LinearlyExplicitRingOver>>=
 )abbrev category LINEXP LinearlyExplicitRingOver
diff --git a/src/algebra/clifford.spad.pamphlet b/src/algebra/clifford.spad.pamphlet
index cd94dd5..2527f99 100644
--- a/src/algebra/clifford.spad.pamphlet
+++ b/src/algebra/clifford.spad.pamphlet
@@ -11,6 +11,10 @@
 \tableofcontents
 \eject
 \section{domain QFORM QuadraticForm}
+<<dot>>=
+"QFORM" -> "ABELGRP"
+"QuadraticForm(a:PositiveInteger,b:Field)" -> "AbelianGroup()"
+@
 <<domain QFORM QuadraticForm>>=
 )abbrev domain QFORM QuadraticForm
 ++ Author: Stephen M. Watt
@@ -854,6 +858,17 @@ o )show CliffordAlgebra
 o $AXIOM/doc/src/algebra/clifford.spad
 
 @
+<<dot>>=
+"CLIF" -> "RING"
+"CliffordAlgebra(a:PositiveInteger,b:Field,c:QuadraticForm(a,b))" ->
+    "Ring()"
+"CLIF" -> "ALGEBRA"
+"CliffordAlgebra(a:PositiveInteger,b:Field,c:QuadraticForm(a,b))" ->
+    "Algebra(a:Field)"
+"CLIF" -> "VSPACE"
+"CliffordAlgebra(a:PositiveInteger,b:Field,c:QuadraticForm(a,b))" ->
+    "VectorSpace(a:Field)"
+@
 <<domain CLIF CliffordAlgebra>>=
 )abbrev domain CLIF CliffordAlgebra
 ++ Author: Stephen M. Watt
diff --git a/src/algebra/clip.spad.pamphlet b/src/algebra/clip.spad.pamphlet
index 04f9f42..4d4d3d8 100644
--- a/src/algebra/clip.spad.pamphlet
+++ b/src/algebra/clip.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package CLIP TwoDimensionalPlotClipping}
+<<dot>>=
+"CLIP" -> "PACKAGE"
+"TwoDimensionalPlotClipping()" -> "Package"
+@
 <<package CLIP TwoDimensionalPlotClipping>>=
 )abbrev package CLIP TwoDimensionalPlotClipping
 ++ Automatic clipping for 2-dimensional plots
@@ -101,7 +105,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
         error "clipDraw: fraction should be between 0 and 1"
       empty? pointLists => [nil(),segment(0,0),segment(0,0)]
       -- put all points together , sort them according to norm
-      sortedList := sort(norm(#1) < norm(#2),select(not Pnan? #1,concat pointLists))
+      sortedList := 
+         sort(norm(#1) < norm(#2),select(not Pnan? #1,concat pointLists))
       empty? sortedList => [nil(),segment(0,0),segment(0,0)]
       n := # sortedList 
       num := numer fraction
@@ -115,7 +120,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
       yMax : SF := yCoord firstPt
       -- calculate min/max for the first (1-fraction)*N points
       -- this contracts the range
-      -- this unnecessarily clips monotonic functions (step-function, x^(high power),etc.)
+      -- this unnecessarily clips monotonic functions 
+      -- (step-function, x^(high power),etc.)
       for k in 0..lastN  for pt in rest sortedList repeat
         xMin := min(xMin,xCoord pt)
         xMax := max(xMax,xCoord pt)
diff --git a/src/algebra/cmplxrt.spad.pamphlet b/src/algebra/cmplxrt.spad.pamphlet
index 5cd1072..663b5c3 100644
--- a/src/algebra/cmplxrt.spad.pamphlet
+++ b/src/algebra/cmplxrt.spad.pamphlet
@@ -10,6 +10,11 @@
 \tableofcontents
 \eject
 \section{package CMPLXRT ComplexRootPackage}
+<<dot>>=
+"CMPLXRT" -> "PACKAGE"
+"ComplexRootPackage(a:UPOLYC(COMPLEX(INT)),b:Join(FIELD,ORDRING))" ->
+    "Package"
+@
 <<package CMPLXRT ComplexRootPackage>>=
 )abbrev package CMPLXRT ComplexRootPackage
 ++ Author: P. Gianni
diff --git a/src/algebra/color.spad.pamphlet b/src/algebra/color.spad.pamphlet
index 56801bf..3850532 100644
--- a/src/algebra/color.spad.pamphlet
+++ b/src/algebra/color.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{domain COLOR Color}
+<<dot>>=
+"COLOR" -> "ABELSG"
+"Color()" -> "AbelianSemiGroup()"
+@
 <<domain COLOR Color>>=
 )abbrev domain COLOR Color
 ++ Author: Jim Wen
@@ -103,6 +107,10 @@ Color(): Exports == Implementation where
 
 @
 \section{domain PALETTE Palette}
+<<dot>>=
+"PALETTE" -> "SETCAT"
+"Palette()" -> "SetCategory()"
+@
 <<domain PALETTE Palette>>=
 )abbrev domain PALETTE Palette
 ++ Author: Jim Wen
diff --git a/src/algebra/combfunc.spad.pamphlet b/src/algebra/combfunc.spad.pamphlet
index 24dd91a..c92394f 100644
--- a/src/algebra/combfunc.spad.pamphlet
+++ b/src/algebra/combfunc.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{category COMBOPC CombinatorialOpsCategory}
+<<dot>>=
+"COMBOPC" -> "CFCAT"
+"CombinatorialOpsCategory()" -> "CombinatorialFunctionCategory()"
+@
 <<category COMBOPC CombinatorialOpsCategory>>=
 )abbrev category COMBOPC CombinatorialOpsCategory
 ++ Category for summations and products
@@ -41,6 +45,10 @@ CombinatorialOpsCategory(): Category ==
       ++ formal product;
 
 @
+<<dot>>=
+"COMBF" -> "PACKAGE"
+"CombinatorialFunction(a:Join(ORDSET,INTDOM),b:FS(a))" -> "Package"
+@
 <<package COMBF CombinatorialFunction>>=
 )abbrev package COMBF CombinatorialFunction
 ++ Provides the usual combinatorial functions
@@ -52,8 +60,6 @@ CombinatorialOpsCategory(): Category ==
 ++ Keywords: combinatorial, function, factorial.
 ++ Examples:  )r COMBF INPUT
 
-
-
 CombinatorialFunction(R, F): Exports == Implementation where
   R: Join(OrderedSet, IntegralDomain)
   F: FunctionSpace R
@@ -670,6 +676,10 @@ equality.
 
 
 \section{package FSPECF FunctionalSpecialFunction}
+<<dot>>=
+"FSPECF" -> "PACKAGE"
+"FunctionalSpecialFunction(a:Join(ORDSET,INTDOM),b:FS(a))" -> "Package"
+@
 <<package FSPECF FunctionalSpecialFunction>>=
 )abbrev package FSPECF FunctionalSpecialFunction
 ++ Provides the special functions
@@ -1057,6 +1067,10 @@ component of the gradient failed, it resulted in an infinite loop for
 
 @
 \section{package SUMFS FunctionSpaceSum}
+<<dot>>=
+"SUMFS" -> "PACKAGE"
+"FunctionSpaceSum(a:Join(...),b:Join(...))" -> "Package"
+@
 <<package SUMFS FunctionSpaceSum>>=
 )abbrev package SUMFS FunctionSpaceSum
 ++ Top-level sum function
diff --git a/src/algebra/combinat.spad.pamphlet b/src/algebra/combinat.spad.pamphlet
index 55765dc..0bc10f0 100644
--- a/src/algebra/combinat.spad.pamphlet
+++ b/src/algebra/combinat.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package COMBINAT IntegerCombinatoricFunctions}
+<<dot>>=
+"COMBINAT" -> "PACKAGE"
+"IntegerCombinatoricFunctions(a:IntegerNumberSystem)" -> "Package"
+@
 <<package COMBINAT IntegerCombinatoricFunctions>>=
 )abbrev package COMBINAT IntegerCombinatoricFunctions
 ++ Authors: Martin Brock, Robert Sutor, Michael Monagan
diff --git a/src/algebra/complet.spad.pamphlet b/src/algebra/complet.spad.pamphlet
index 2dc03ae..642de19 100644
--- a/src/algebra/complet.spad.pamphlet
+++ b/src/algebra/complet.spad.pamphlet
@@ -10,6 +10,12 @@
 \tableofcontents
 \eject
 \section{domain ORDCOMP OrderedCompletion}
+<<dot>>=
+"ORDCOMP" -> "SETCAT"
+"OrderedCompletion(a:SetCategory)" -> "SetCategory()"
+"ORDCOMP" -> "FRETRCT"
+"OrderedCompletion(a:SetCategory)" -> "FullyRetractableTo(a:SetCategory)"
+@
 <<domain ORDCOMP OrderedCompletion>>=
 )abbrev domain ORDCOMP OrderedCompletion
 ++ Completion with + and - infinity
@@ -140,6 +146,10 @@ OrderedCompletion(R:SetCategory): Exports == Implementation where
 
 @
 \section{package ORDCOMP2 OrderedCompletionFunctions2}
+<<dot>>=
+"ORDCOMP2" -> "PACKAGE"
+"OrderedCompletionFunctions2(a:SETCAT,b:SETCAT)" -> "Package"
+@
 <<package ORDCOMP2 OrderedCompletionFunctions2>>=
 )abbrev package ORDCOMP2 OrderedCompletionFunctions2
 ++ Lifting of maps to ordered completions
@@ -173,6 +183,12 @@ OrderedCompletionFunctions2(R, S): Exports == Implementation where
 
 @
 \section{domain ONECOMP OnePointCompletion}
+<<dot>>=
+"ONECOMP" -> "SETCAT"
+"OnePointCompletion(a:SetCategory)" -> "SetCategory()"
+"ONECOMP" -> "FRETRCT"
+"OnePointCompletion(a:SetCategory)" -> "FullyRetractableTo(a:SetCategory)"
+@
 <<domain ONECOMP OnePointCompletion>>=
 )abbrev domain ONECOMP OnePointCompletion
 ++ Completion with infinity
@@ -277,6 +293,10 @@ OnePointCompletion(R:SetCategory): Exports == Implementation where
 
 @
 \section{package ONECOMP2 OnePointCompletionFunctions2}
+<<dot>>=
+"ONECOMP2" -> "PACKAGE"
+"OnePointCompletionFunctions2(a:SETCAT,b:SETCAT)" -> "Package"
+@
 <<package ONECOMP2 OnePointCompletionFunctions2>>=
 )abbrev package ONECOMP2 OnePointCompletionFunctions2
 ++ Lifting of maps to one-point completions
@@ -307,6 +327,10 @@ OnePointCompletionFunctions2(R, S): Exports == Implementation where
 
 @
 \section{package INFINITY Infinity}
+<<dot>>=
+"INFINITY" -> "PACKAGE"
+"Infinity()" -> "Package"
+@
 <<package INFINITY Infinity>>=
 )abbrev package INFINITY Infinity
 ++ Top-level infinity
diff --git a/src/algebra/constant.spad.pamphlet b/src/algebra/constant.spad.pamphlet
index 8cab8cc..b72289d 100644
--- a/src/algebra/constant.spad.pamphlet
+++ b/src/algebra/constant.spad.pamphlet
@@ -10,6 +10,26 @@
 \tableofcontents
 \eject
 \section{domain IAN InnerAlgebraicNumber}
+<<dot>>=
+"IAN" -> "ES"
+"InnerAlgebraicNumber()" -> "ExpressionSpace()"
+"IAN" -> "ACF"
+"InnerAlgebraicNumber()" -> "AlgebraicallyClosedField()"
+"IAN" -> "RETRACT"
+"InnerAlgebraicNumber()" -> "RetractableTo(Integer)"
+"InnerAlgebraicNumber()" -> "RetractableTo(Fraction(Integer))"
+"IAN" -> "LINEXP"
+"InnerAlgebraicNumber()" -> "LinearlyExplicitRingOver(Integer)"
+"InnerAlgebraicNumber()" -> "LinearlyExplicitRingOver(Fraction(Integer))"
+"IAN" -> "REAL"
+"InnerAlgebraicNumber()" -> "RealConstant()"
+"IAN" -> "CHARZ"
+"InnerAlgebraicNumber()" -> "CharacteristicZero()"
+"IAN" -> "KONVERT"
+"InnerAlgebraicNumber()" -> "ConvertibleTo(Complex(Float))"
+"IAN" -> "DIFRING"
+"InnerAlgebraicNumber()" -> "DifferentialRing()"
+@
 <<domain IAN InnerAlgebraicNumber>>=
 )abbrev domain IAN InnerAlgebraicNumber
 ++ Algebraic closure of the rational numbers
@@ -67,7 +87,8 @@ InnerAlgebraicNumber(): Exports == Implementation where
 --        mv:= mainVariable denom f
 --        mv case "failed" => f
 --        algv:=mv::K
---	q:=univariate(f, algv, minPoly(algv))$PolynomialCategoryQuotientFunctions(IndexedExponents K,K,Integer,P,%)
+--	q:=univariate(f, algv, minPoly(algv))_
+--       $PolynomialCategoryQuotientFunctions(IndexedExponents K,K,Integer,P,%)
 --	q(algv::%)
 
     findDenominator(z:SUP %):Record(num:SUP %,den:%) ==
@@ -103,8 +124,10 @@ InnerAlgebraicNumber(): Exports == Implementation where
        pa,pb:SparseUnivariatePolynomial %
        pa:=monomial(1,1)-monomial(a,0)
        pb:=monomial(1,1)-monomial(b,0)
-       na:=map(retract,norm(pa,ka))$SparseUnivariatePolynomialFunctions2(%,Fraction Z)
-       nb:=map(retract,norm(pb,kb))$SparseUnivariatePolynomialFunctions2(%,Fraction Z)
+       na:=map(retract,norm(pa,ka))_
+         $SparseUnivariatePolynomialFunctions2(%,Fraction Z)
+       nb:=map(retract,norm(pb,kb))_
+         $SparseUnivariatePolynomialFunctions2(%,Fraction Z)
        (sa:=squareFreePart(na)) = (sb:=squareFreePart(nb)) => true
        g:=gcd(sa,sb)
        (dg:=degree g) = 0 => false
@@ -123,9 +146,11 @@ InnerAlgebraicNumber(): Exports == Implementation where
            z:=norm(z,k)
        z
     norm(z:SUP %,k:Kernel %):SUP % ==
-       p:=map(#1::SUP %,minPoly k)$SparseUnivariatePolynomialFunctions2(%,SUP %)
+       p:=map(#1::SUP %,minPoly k)_
+         $SparseUnivariatePolynomialFunctions2(%,SUP %)
        f:=findDenominator z
-       zz:=map(makeUnivariate(numer #1,k),f.num)$SparseUnivariatePolynomialFunctions2( %,SUP %)
+       zz:=map(makeUnivariate(numer #1,k),f.num)_
+         $SparseUnivariatePolynomialFunctions2( %,SUP %)
        zz:=swap(zz)$CommuteUnivariatePolynomialCategory(%,SUP %,SUP SUP %)
        resultant(p,zz)/norm(f.den,k)
     norm(z:SUP %,l:List Kernel %): SUP % ==
@@ -147,6 +172,26 @@ InnerAlgebraicNumber(): Exports == Implementation where
 
 @
 \section{domain AN AlgebraicNumber}
+<<dot>>=
+"AN" -> "ES"
+"AlgebraicNumber()" -> "ExpressionSpace()"
+"AN" -> "ACF"
+"AlgebraicNumber()" -> "AlgebraicallyClosedField()"
+"AN" -> "RETRACT"
+"AlgebraicNumber()" -> "RetractableTo(Integer)"
+"AlgebraicNumber()" -> "RetractableTo(Fraction(Integer))"
+"AN" -> "LINEXP"
+"AlgebraicNumber()" -> "LinearlyExplicitRingOver(Integer)"
+"AlgebraicNumber()" -> "LinearlyExplicitRingOver(Fraction(Integer))"
+"AN" -> "REAL"
+"AlgebraicNumber()" -> "RealConstant()"
+"AN" -> "CHARZ"
+"AlgebraicNumber()" -> "CharacteristicZero()"
+"AN" -> "KONVERT"
+"AlgebraicNumber()" -> "ConvertibleTo(Complex(Float))"
+"AN" -> "DIFRING"
+"AlgebraicNumber()" -> "DifferentialRing()"
+@
 <<domain AN AlgebraicNumber>>=
 )abbrev domain AN AlgebraicNumber
 ++ Algebraic closure of the rational numbers
diff --git a/src/algebra/cont.spad.pamphlet b/src/algebra/cont.spad.pamphlet
index 5183d27..fde20e0 100644
--- a/src/algebra/cont.spad.pamphlet
+++ b/src/algebra/cont.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package ESCONT ExpertSystemContinuityPackage}
+<<dot>>=
+"ESCONT" -> "PACKAGE"
+"ExpertSystemContinuityPackage()" -> "Package"
+@
 <<package ESCONT ExpertSystemContinuityPackage>>=
 )abbrev package ESCONT ExpertSystemContinuityPackage
 ++ Author: Brian Dupee
@@ -264,6 +268,10 @@ ExpertSystemContinuityPackage(): E == I where
 
 @
 \section{package ESCONT1 ExpertSystemContinuityPackage1}
+<<dot>>=
+"ESCONT1" -> "PACKAGE"
+"ExpertSystemContinuityPackage1(a:DF,b:DF)" -> "Package"
+@
 <<package ESCONT1 ExpertSystemContinuityPackage1>>=
 )abbrev package ESCONT1 ExpertSystemContinuityPackage1
 ++ Author: Brian Dupee
diff --git a/src/algebra/contfrac.spad.pamphlet b/src/algebra/contfrac.spad.pamphlet
index d6c24af..300ccd2 100644
--- a/src/algebra/contfrac.spad.pamphlet
+++ b/src/algebra/contfrac.spad.pamphlet
@@ -554,6 +554,14 @@ o )show ContinuedFraction
 o $AXIOM/doc/src/algebra/contrac.spad.dvi
 
 @
+<<dot>>=
+"CONTFRAC" -> "ALGEBRA"
+"ContinuedFraction(a:EuclideanDomain)" -> "Algebra(a:EuclideanDomain)"
+"ContinuedFraction(a:EuclideanDomain)" ->
+    "Algebra(a:Fraction(EuclideanDomain))"
+"CONTFRAC" -> "FIELD"
+"ContinuedFraction(a:EuclideanDomain)" -> "Field()"
+@
 <<domain CONTFRAC ContinuedFraction>>=
 )abbrev domain CONTFRAC ContinuedFraction
 ++ Author: Stephen M. Watt
@@ -579,8 +587,6 @@ o $AXIOM/doc/src/algebra/contrac.spad.dvi
 ++   This is enforced by ensuring the partial numerators and partial
 ++   denominators are greater than 0 in the Euclidean domain view of \spad{R}
 ++   (i.e. \spad{sizeLess?(0, x)}). 
-
-
 ContinuedFraction(R): Exports == Implementation where
   R :     EuclideanDomain
   Q   ==> Fraction R
@@ -882,6 +888,10 @@ ContinuedFraction(R): Exports == Implementation where
 
 @
 \section{package NCNTFRAC NumericContinuedFraction}
+<<dot>>=
+"NCNTFRAC" -> "PACKAGE"
+"NumericContinuedFraction(a:FloatingPointSystem)" -> "Package"
+@
 <<package NCNTFRAC NumericContinuedFraction>>=
 )abbrev package NCNTFRAC NumericContinuedFraction
 ++ Author: Clifton J. Williamson
diff --git a/src/algebra/coordsys.spad.pamphlet b/src/algebra/coordsys.spad.pamphlet
index 1dc9196..3b3b5ac 100644
--- a/src/algebra/coordsys.spad.pamphlet
+++ b/src/algebra/coordsys.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package COORDSYS CoordinateSystems}
+<<dot>>=
+"COORDSYS" -> "PACKAGE"
+"CoordinateSystems(a:Join(FIELD,TRANFUN,RADCAT))" -> "Package"
+@
 <<package COORDSYS CoordinateSystems>>=
 )abbrev package COORDSYS CoordinateSystems
 ++ Author: Jim Wen
@@ -42,12 +46,14 @@ CoordinateSystems(R): Exports == Implementation where
       ++ to \spad{x = r * cos(theta)} , \spad{y = r * sin(theta)}.
     cylindrical: Pt -> Pt
       ++ cylindrical(pt) transforms pt from polar coordinates to Cartesian 
-      ++ coordinates: the function produced will map the point \spad{(r,theta,z)}
-      ++ to \spad{x = r * cos(theta)}, \spad{y = r * sin(theta)}, \spad{z}.
+      ++ coordinates: the function produced will map the point 
+      ++ \spad{(r,theta,z)} to 
+      ++ \spad{x = r * cos(theta)}, \spad{y = r * sin(theta)}, \spad{z}.
     spherical: Pt -> Pt
       ++ spherical(pt) transforms pt from spherical coordinates to Cartesian 
-      ++ coordinates: the function produced will map the point \spad{(r,theta,phi)}
-      ++ to \spad{x = r*sin(phi)*cos(theta)}, \spad{y = r*sin(phi)*sin(theta)},
+      ++ coordinates: the function produced will map the point 
+      ++ \spad{(r,theta,phi)} to 
+      ++ \spad{x = r*sin(phi)*cos(theta)}, \spad{y = r*sin(phi)*sin(theta)},
       ++ \spad{z = r*cos(phi)}.
     parabolic: Pt -> Pt
       ++ parabolic(pt) transforms pt from parabolic coordinates to Cartesian 
@@ -66,40 +72,51 @@ CoordinateSystems(R): Exports == Implementation where
     elliptic: R -> (Pt -> Pt)
       ++ elliptic(a) transforms from elliptic coordinates to Cartesian 
       ++ coordinates: \spad{elliptic(a)} is a function which will map the 
-      ++ point \spad{(u,v)} to \spad{x = a*cosh(u)*cos(v)}, \spad{y = a*sinh(u)*sin(v)}.
+      ++ point \spad{(u,v)} to 
+      ++ \spad{x = a*cosh(u)*cos(v)}, \spad{y = a*sinh(u)*sin(v)}.
     ellipticCylindrical: R -> (Pt -> Pt)
-      ++ ellipticCylindrical(a) transforms from elliptic cylindrical coordinates 
-      ++ to Cartesian coordinates: \spad{ellipticCylindrical(a)} is a function
-      ++ which will map the point \spad{(u,v,z)} to \spad{x = a*cosh(u)*cos(v)},
-      ++ \spad{y = a*sinh(u)*sin(v)}, \spad{z}.
+      ++ ellipticCylindrical(a) transforms from elliptic cylindrical 
+      ++ coordinates to Cartesian coordinates: 
+      ++ \spad{ellipticCylindrical(a)} is a function
+      ++ which will map the point \spad{(u,v,z)} to 
+      ++ \spad{x = a*cosh(u)*cos(v)},\spad{y = a*sinh(u)*sin(v)}, \spad{z}.
     prolateSpheroidal: R -> (Pt -> Pt)
-      ++ prolateSpheroidal(a) transforms from prolate spheroidal coordinates to 
-      ++ Cartesian coordinates: \spad{prolateSpheroidal(a)} is a function 
+      ++ prolateSpheroidal(a) transforms from prolate spheroidal coordinates
+      ++ to Cartesian coordinates: \spad{prolateSpheroidal(a)} is a function 
       ++ which will map the point \spad{(xi,eta,phi)} to 
-      ++ \spad{x = a*sinh(xi)*sin(eta)*cos(phi)}, \spad{y = a*sinh(xi)*sin(eta)*sin(phi)}, 
+      ++ \spad{x = a*sinh(xi)*sin(eta)*cos(phi)}, 
+      ++ \spad{y = a*sinh(xi)*sin(eta)*sin(phi)}, 
       ++ \spad{z = a*cosh(xi)*cos(eta)}.
     oblateSpheroidal: R -> (Pt -> Pt)
       ++ oblateSpheroidal(a) transforms from oblate spheroidal coordinates to 
       ++ Cartesian coordinates: \spad{oblateSpheroidal(a)} is a function which
-      ++ will map the point \spad{(xi,eta,phi)} to \spad{x = a*sinh(xi)*sin(eta)*cos(phi)},
-      ++ \spad{y = a*sinh(xi)*sin(eta)*sin(phi)}, \spad{z = a*cosh(xi)*cos(eta)}.
+      ++ will map the point \spad{(xi,eta,phi)} to 
+      ++ \spad{x = a*sinh(xi)*sin(eta)*cos(phi)},
+      ++ \spad{y = a*sinh(xi)*sin(eta)*sin(phi)}, 
+      ++ \spad{z = a*cosh(xi)*cos(eta)}.
     bipolar: R -> (Pt -> Pt)
-      ++ bipolar(a) transforms from bipolar coordinates to Cartesian coordinates:
-      ++ \spad{bipolar(a)} is a function which will map the point \spad{(u,v)} to
-      ++ \spad{x = a*sinh(v)/(cosh(v)-cos(u))}, \spad{y = a*sin(u)/(cosh(v)-cos(u))}.
+      ++ bipolar(a) transforms from bipolar coordinates to Cartesian 
+      ++ coordinates: \spad{bipolar(a)} is a function which will map 
+      ++ the point \spad{(u,v)} to
+      ++ \spad{x = a*sinh(v)/(cosh(v)-cos(u))}, 
+      ++ \spad{y = a*sin(u)/(cosh(v)-cos(u))}.
     bipolarCylindrical: R -> (Pt -> Pt)
       ++ bipolarCylindrical(a) transforms from bipolar cylindrical coordinates 
-      ++ to Cartesian coordinates: \spad{bipolarCylindrical(a)} is a function which 
-      ++ will map the point \spad{(u,v,z)} to \spad{x = a*sinh(v)/(cosh(v)-cos(u))},
+      ++ to Cartesian coordinates: \spad{bipolarCylindrical(a)} is a function 
+      ++ which will map the point \spad{(u,v,z)} to 
+      ++ \spad{x = a*sinh(v)/(cosh(v)-cos(u))},
       ++ \spad{y = a*sin(u)/(cosh(v)-cos(u))}, \spad{z}.
     toroidal: R -> (Pt -> Pt)
       ++ toroidal(a) transforms from toroidal coordinates to Cartesian 
-      ++ coordinates: \spad{toroidal(a)} is a function which will map the point 
-      ++ \spad{(u,v,phi)} to \spad{x = a*sinh(v)*cos(phi)/(cosh(v)-cos(u))},
-      ++ \spad{y = a*sinh(v)*sin(phi)/(cosh(v)-cos(u))}, \spad{z = a*sin(u)/(cosh(v)-cos(u))}.
+      ++ coordinates: \spad{toroidal(a)} is a function which will map the 
+      ++ point \spad{(u,v,phi)} to 
+      ++ \spad{x = a*sinh(v)*cos(phi)/(cosh(v)-cos(u))},
+      ++ \spad{y = a*sinh(v)*sin(phi)/(cosh(v)-cos(u))}, 
+      ++ \spad{z = a*sin(u)/(cosh(v)-cos(u))}.
     conical: (R,R) -> (Pt -> Pt)
-      ++ conical(a,b) transforms from conical coordinates to Cartesian coordinates:
-      ++ \spad{conical(a,b)} is a function which will map the point \spad{(lambda,mu,nu)} to
+      ++ conical(a,b) transforms from conical coordinates to Cartesian 
+      ++ coordinates: \spad{conical(a,b)} is a function which will map the 
+      ++ point \spad{(lambda,mu,nu)} to
       ++ \spad{x = lambda*mu*nu/(a*b)},
       ++ \spad{y = lambda/a*sqrt((mu**2-a**2)*(nu**2-a**2)/(a**2-b**2))},
       ++ \spad{z = lambda/b*sqrt((mu**2-b**2)*(nu**2-b**2)/(b**2-a**2))}.
diff --git a/src/algebra/cra.spad.pamphlet b/src/algebra/cra.spad.pamphlet
index 640170d..13fa6a1 100644
--- a/src/algebra/cra.spad.pamphlet
+++ b/src/algebra/cra.spad.pamphlet
@@ -10,6 +10,10 @@
 \tableofcontents
 \eject
 \section{package CRAPACK CRApackage}
+<<dot>>=
+"CRAPACK" -> "PACKAGE"
+"CRApackage(a:EuclideanDomain)" -> "Package"
+@
 <<package CRAPACK CRApackage>>=
 )abbrev package CRAPACK CRApackage
  
diff --git a/src/algebra/retract.spad.pamphlet b/src/algebra/retract.spad.pamphlet
index 3492d7e..7717c65 100644
--- a/src/algebra/retract.spad.pamphlet
+++ b/src/algebra/retract.spad.pamphlet
@@ -15,6 +15,7 @@
 "FullyRetractableTo(a:Type)" -> "RetractableTo(a:Type)"
 "FullyRetractableTo(a:Ring)" -> "FullyRetractableTo(a:Type)"
 "FullyRetractableTo(a:CommutativeRing)" -> "FullyRetractableTo(a:Type)"
+"FullyRetractableTo(a:SetCategory)" -> "FullyRetractableTo(a:Type)"
 @
 <<category FRETRCT FullyRetractableTo>>=
 )abbrev category FRETRCT FullyRetractableTo



From MAILER-DAEMON Sun Sep 07 00:28:10 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcBsf-0003bL-QK
	for mharc-axiom-developer@gnu.org; Sun, 07 Sep 2008 00:28:09 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcBsd-0003YY-SX
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 00:28:07 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcBsc-0003XU-El
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 00:28:07 -0400
Received: from [199.232.76.173] (port=59413 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcBsc-0003XR-AA
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 00:28:06 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:52364
	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 1KcBsb-0004zr-PI
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 00:28:05 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m874S1r3018093;
	Sat, 6 Sep 2008 23:28:02 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m874S1op018090;
	Sat, 6 Sep 2008 23:28:01 -0500
Date: Sat, 6 Sep 2008 23:28:01 -0500
Message-Id: <200809070428.m874S1op018090@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Axiom Abbreviated Category and Domain graph
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, 07 Sep 2008 04:28:08 -0000

For a small subset of the algebra and showing only the abbreviations
I have created a test page. To see the page you'll need a rather new
copy of the browser. Go to:

<http://daly.axiom-developer.org/dotabb.html>

The blue rectangles are categories, the yellow rectangles are domains.

I'm building the complete graph of the algebra, both in abbreviated
form and full text form. The graphs will be available in the new firefox
browser front end. The plan is to key the algebra documentation to the
graphs, assuming I can figure out how to hot-spot the graph.

Tim



From MAILER-DAEMON Sun Sep 07 01:24:59 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcClf-0002cW-3x
	for mharc-axiom-developer@gnu.org; Sun, 07 Sep 2008 01:24:59 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcClb-0002cO-UJ
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:24:55 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcCla-0002bI-4z
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:24:55 -0400
Received: from [199.232.76.173] (port=48911 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcCla-0002b5-1l
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:24:54 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:36737
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KcClZ-0001Rp-RW
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:24:53 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=-oelNcs-KPsA:10 a=uqjpmGx_lQoA:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=37mPLz1kAAAA:8 a=t06zPUizm_M5IOJQLicA:9
	a=Pnkhs8Fxmn49UQ-JEr0A:7 a=qJl0zyv06Ld1Xx3pYIKUUIMoJ24A:4
	a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.46] ([24.154.1.46:42568] helo=pop-3.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id FE/A2-00416-39563C84; Sun, 07 Sep 2008 01:24:35 -0400
Received: (qmail 28354 invoked from network); 7 Sep 2008 05:24:37 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-3.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 7 Sep 2008 05:24:37 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m876pmE23687;
	Sun, 7 Sep 2008 02:51:48 -0400
Date: Sun, 7 Sep 2008 02:51:48 -0400
Message-Id: <200809070651.m876pmE23687@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: ted.kosan@gmail.com
In-reply-to: <9d9ff120809062150k70bb58cbocb1423400e3f37cf@mail.gmail.com>
	(ted.kosan@gmail.com)
Subject: Re: [Axiom-developer] Axiom Abbreviated Category and Domain graph
References: <200809070428.m874S1op018090@axiom-developer.org>
	<9d9ff120809062150k70bb58cbocb1423400e3f37cf@mail.gmail.com>
X-detected-kernel: 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
Reply-To: daly@axiom-developer.org
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, 07 Sep 2008 05:24:56 -0000

>> For a small subset of the algebra and showing only the abbreviations
>> I have created a test page. To see the page you'll need a rather new
>> copy of the browser. Go to:
>>
>> <http://daly.axiom-developer.org/dotabb.html>
>>
>> The blue rectangles are categories, the yellow rectangles are domains.
>>
>> I'm building the complete graph of the algebra, both in abbreviated
>> form and full text form. The graphs will be available in the new firefox
>> browser front end. The plan is to key the algebra documentation to the
>> graphs, assuming I can figure out how to hot-spot the graph.
>
>This looks very nice!

Thanks.

The full name version, rather than the abbreviations, is much more
interesting. In particular, I needed to insert subsumption nodes
that do not appear in the algebra files explicitly but which
Axiom "knows". I should have a corresponding alpha test version
up in a few hours.

I'm also puzzling over how to handle packages.

I've only done about 1/4-1/3 of the algebra so far. I stopped at
this point to try to think about presentation issues before going
further.



>I wonder how difficult it would be to place a slider on the page which
>would adjust the scale?

That wouldn't be difficult in some sense since the numbers 0.25, .5, etc
are just function args. Of course, I'm not familiar with sliders but
after all the twists it took to get this working, how hard can it be?
There is no such thing as a simple job, though.

The image itself is an SVG (Scalable Vector Graphics) file so it looks
ok at any resolution. I'm still trying to figure out the steps to 
automate the whole process. Eventually it will be part of the build.

What I'd like to figure out is how to get the relative coordinates
of the mouse so I could use the mouse click to choose the algebra
file. I hope to use this to drive the documentation in the new
firefox front end; click on a domain and you hyperlink into the
proper place in the books, right-click and you can choose the kind
of help you want (source, examples, related work, etc)




And once the algebra, in all its glory, is completed I'm hoping to
create a wall poster. I haven't been able to find any software that
can print an image larger than a single screen.

Tim



From MAILER-DAEMON Sun Sep 07 01:38:06 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcCyM-0002Sl-II
	for mharc-axiom-developer@gnu.org; Sun, 07 Sep 2008 01:38:06 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcCyJ-0002Sb-R5
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:38:03 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcCyH-0002Rj-Ni
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:38:02 -0400
Received: from [199.232.76.173] (port=58390 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcCyH-0002Rg-C8
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:38:01 -0400
Received: from wf-out-1314.google.com ([209.85.200.172]:49648)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <mhansen@gmail.com>) id 1KcCyH-0002eu-2B
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 01:38:01 -0400
Received: by wf-out-1314.google.com with SMTP id 27so1085123wfd.4
	for <axiom-developer@nongnu.org>; Sat, 06 Sep 2008 22:37:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:received:received:message-id:date:from:to
	:subject:cc:in-reply-to:mime-version:content-type
	:content-transfer-encoding:content-disposition:references;
	bh=mQE2DazipyG62ERDPqk3v5dYCNfvK9n3P2YXAGak6Gg=;
	b=vY/Hbxor+BN9W6FSIMBVJr5BcoSgewJjVStjN9psSmoJqTEad+fwZ3NT/68Kl/jx88
	WmDnh2vVEJl6hwaRwNlh7T5VW1tWiHbzd6Atx9A8tH+q5cmoSKD9kGROyXBYtp8sZLVj
	5AyjyOqF+Q9RUu31WIf2YBT0LoZ3wnm/cjH9E=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=message-id:date:from:to:subject:cc:in-reply-to:mime-version
	:content-type:content-transfer-encoding:content-disposition
	:references;
	b=QvxHPRn9gHOhO1ZOT/WoIGA+G7N7b+SIAo3CKO1AgbYihVGap0XBf3RV0y6fFO8bR1
	16LM1fXpZErDAsd14u3hPUMc32slERzqwbyeNg1YCNGVFQJSqOj0YU/fUewUcVPCcScK
	uXmQc8M51BcieenhqR83ZlU4zWUyjA3KwNte4=
Received: by 10.142.240.9 with SMTP id n9mr4713535wfh.79.1220765879357;
	Sat, 06 Sep 2008 22:37:59 -0700 (PDT)
Received: by 10.142.187.4 with HTTP; Sat, 6 Sep 2008 22:37:59 -0700 (PDT)
Message-ID: <f67335450809062237x6136deefhd9a5759e7fed6c74@mail.gmail.com>
Date: Sat, 6 Sep 2008 22:37:59 -0700
From: "Mike Hansen" <mhansen@gmail.com>
To: daly@axiom-developer.org
Subject: Re: [Axiom-developer] Axiom Abbreviated Category and Domain graph
In-Reply-To: <200809070651.m876pmE23687@localhost.localdomain>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <200809070428.m874S1op018090@axiom-developer.org>
	<9d9ff120809062150k70bb58cbocb1423400e3f37cf@mail.gmail.com>
	<200809070651.m876pmE23687@localhost.localdomain>
X-detected-kernel: by monty-python.gnu.org: 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: Sun, 07 Sep 2008 05:38:04 -0000

Hello,

> What I'd like to figure out is how to get the relative coordinates
> of the mouse so I could use the mouse click to choose the algebra
> file. I hope to use this to drive the documentation in the new
> firefox front end; click on a domain and you hyperlink into the
> proper place in the books, right-click and you can choose the kind
> of help you want (source, examples, related work, etc)

You'll probably want to something like
http://apike.ca/prog_svg_jsanim.html.  See here for an example:
http://code.mincus.com/svg/3d.svg

--Mike



From MAILER-DAEMON Sun Sep 07 03:50:04 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcF24-0002XB-9x
	for mharc-axiom-developer@gnu.org; Sun, 07 Sep 2008 03:50:04 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcF21-0002Uc-Sm
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:50:02 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcF1y-0002Qd-DX
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:50:01 -0400
Received: from [199.232.76.173] (port=41776 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcF1y-0002QL-25
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:49:58 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:57612
	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 1KcF1x-0005jc-0N
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:49:57 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m877njr3003414;
	Sun, 7 Sep 2008 02:49:45 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m877njlc003410;
	Sun, 7 Sep 2008 02:49:45 -0500
Date: Sun, 7 Sep 2008 02:49:45 -0500
Message-Id: <200809070749.m877njlc003410@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Axiom Fullname Category and Domain graph
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, 07 Sep 2008 07:50:02 -0000

For a small subset of the algebra, using the full name of the category
or domain, I have created a test page:

<http://daly.axiom-developer.org/dotfull.html>

blue = category, yellow = domain, green = subsumption node

In some cases the signature of the user of a category or a domain
uses a more specific instance rather than the most general value.
For instance, using "1" instead of "Integer". In that case, in order
to make the graph connected there is a new node, I call a subsumption
node that makes the transition from the specific to the more general.
These nodes exist in the algebra but only the runtime can make the
connection.

This graph clearly needs work but its nearly 4am and I need sleep.
It seems that there is a bug computing the length of text versus
the length of the bounding box. Since the bounding box is used for
spacing there can be text overlap unless additional separation is
imposed. I don't seem to be able to get a grip on the text metrics
computation to fix this.

There is no such thing as a simple job.

Tim



From MAILER-DAEMON Sun Sep 07 03:51:25 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcF3N-0003SM-Q3
	for mharc-axiom-developer@gnu.org; Sun, 07 Sep 2008 03:51:25 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcF3L-0003RP-Fm
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:51:23 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcF3J-0003Qa-P1
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:51:23 -0400
Received: from [199.232.76.173] (port=41868 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcF3J-0003QR-Ih
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:51:21 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:41161
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KcF3I-00060b-SV
	for axiom-developer@nongnu.org; Sun, 07 Sep 2008 03:51:21 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=-oelNcs-KPsA:10 a=uqjpmGx_lQoA:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=k22gFYxlAAAA:8 a=fuoYdij8AAAA:8 a=4_ATDL8X6pYgMCOEhtEA:9
	a=XqzgUp4vXk1mfsiG458A:7 a=fcfo5seC0HrBovaQDtJxRKYK-l4A:4
	a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:51706] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id FA/3C-24076-0D973C84; Sun, 07 Sep 2008 02:50:56 -0400
Received: (qmail 3439 invoked from network); 7 Sep 2008 06:51:00 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 7 Sep 2008 06:51:00 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m878IG424020;
	Sun, 7 Sep 2008 04:18:16 -0400
Date: Sun, 7 Sep 2008 04:18:16 -0400
Message-Id: <200809070818.m878IG424020@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: mhansen@gmail.com
In-reply-to: <f67335450809062237x6136deefhd9a5759e7fed6c74@mail.gmail.com>
	(mhansen@gmail.com)
Subject: Re: [Axiom-developer] Axiom Abbreviated Category and Domain graph
References: <200809070428.m874S1op018090@axiom-developer.org>
	<9d9ff120809062150k70bb58cbocb1423400e3f37cf@mail.gmail.com>
	<200809070651.m876pmE23687@localhost.localdomain>
	<f67335450809062237x6136deefhd9a5759e7fed6c74@mail.gmail.com>
X-detected-kernel: 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
Reply-To: daly@axiom-developer.org
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, 07 Sep 2008 07:51:23 -0000

>> What I'd like to figure out is how to get the relative coordinates
>> of the mouse so I could use the mouse click to choose the algebra
>> file. I hope to use this to drive the documentation in the new
>> firefox front end; click on a domain and you hyperlink into the
>> proper place in the books, right-click and you can choose the kind
>> of help you want (source, examples, related work, etc)
>
>You'll probably want to something like
>http://apike.ca/prog_svg_jsanim.html.  See here for an example:
>http://code.mincus.com/svg/3d.svg

Yes, I had to do some ecmascript-ing to get the example to work.
I love the 3d version you reference. I'll look further.
Thanks for the pointers.



From MAILER-DAEMON Mon Sep 08 16:43:56 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcnaW-0008Ij-LU
	for mharc-axiom-developer@gnu.org; Mon, 08 Sep 2008 16:43:56 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcnaU-0008GH-Ny
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 16:43:54 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcnaS-0008EP-Ud
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 16:43:54 -0400
Received: from [199.232.76.173] (port=38269 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcnaS-0008E4-KZ
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 16:43:52 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:51770
	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 1KcnaS-0007Fg-4Z
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 16:43:52 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m88Khmr3011160;
	Mon, 8 Sep 2008 15:43:48 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m88KhmDt011157;
	Mon, 8 Sep 2008 15:43:48 -0500
Date: Mon, 8 Sep 2008 15:43:48 -0500
Message-Id: <200809082043.m88KhmDt011157@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080906.01.tpd.patch (move aggcat.spad to
	bookvol10)
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, 08 Sep 2008 20:43:55 -0000

bookvol10 is the algebra book.
aggcat.spad is gone.
the categories from aggcat are now built directly from bookvol10.
the abbreviation and fullname graph information has been added.

=========================================================================
patch is too large to post. see the website:
<http://axiom-developer.org/axiom-website/patches.html#latest>



From MAILER-DAEMON Mon Sep 08 22:57:08 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KctPf-0006IB-VD
	for mharc-axiom-developer@gnu.org; Mon, 08 Sep 2008 22:57:07 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KctPe-0006Fc-4q
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 22:57:06 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KctPc-0006Du-AW
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 22:57:05 -0400
Received: from [199.232.76.173] (port=47753 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KctPc-0006Dr-3d
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 22:57:04 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:35415
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KctPb-0006XU-PG
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 22:57:03 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=iCfaZEcDcGLdh_EudeEA:9 a=zHj7Jc2wySb27-cb1eMA:7
	a=vY0XF3kGi7Z6XYmZbpq9uQ-ZbfEA:4 a=BcKeTrsrUDYA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.44] ([24.154.1.44:43692] helo=pop-1.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id B2/69-13840-DE5E5C84; Mon, 08 Sep 2008 22:56:45 -0400
Received: (qmail 23324 invoked from network); 9 Sep 2008 02:56:48 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-1.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <aldor-l@aldor.org>; 9 Sep 2008 02:56:48 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m894O6N32312;
	Tue, 9 Sep 2008 00:24:06 -0400
Date: Tue, 9 Sep 2008 00:24:06 -0400
Message-Id: <200809090424.m894O6N32312@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: pip88nl@gmail.com
In-reply-to: <20080909014320.GB30448@xinutec.org> (pip88nl@gmail.com)
References: <20080908143801.GA30448@xinutec.org>
	<20080909014320.GB30448@xinutec.org>
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, aldor-l@aldor.org
Subject: [Axiom-developer] Re: [Aldor-l] Distributing Aldor
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 09 Sep 2008 02:57:06 -0000

Pippijn

>> The other package consists of Rona and all makefiles, scripts and other
>> files that form the build system. The scripts and makefiles are
>> distributed under the terms of the GNU Affero General Public License
>> version 3. This archive can be distributed commercially, the Aldor
>> Software Organisation has no royalty-free licence to do anything beyond
>> the terms of this license with any part of this archive.
>
>The headers and sources are AGPLv3 licenced, but they allow linking with
>differently licenced works. I do not like this exception at all, so I am
>seriously considering to make an exception only for Aldor. Any ideas on
>this issue? I am not sure what to do here.

I wish you would consider simply adopting the Modified BSD license. It
would make it much easier to integrate your work (albeit not Aldor
itself) directly with Axiom. Adding yet-other-licenses to the pile is
only going to make Aldor yet-more-difficult to use.



Consider the practical side of choosing a license.

Adding a license means you would be willing to go to court to enforce
your copyright. If the GPL is violated then, since you are the copyright
holder, it would be up to you to force the issue (assuming you don't
assign the copyright to FSF).

As the license lawyer told me, there are only 2 reasons to go to court
over copyright/trademark/secret (so-called "intellectual property"). 
The first reason is to "make a point", like keeping your copyright.
The second reason is money. Both are very expensive to enforce.

NAG has the potential to make money on their license because you would
only violate it by making money. Their lawyer is smart enough to
figure out that NAG would profit when they took you to court. Of
course, their lawyer has virtually no interest in seeing the language
survive, but if it does then NAG get paid. (Someone actually took his
advice that they strangle the compiler provided they can make money on
the cadaver.  What a horrible waste.)

I don't see any possible scenerio where you'll take someone to court.
So why make a claim you're unwilling to defend? And if you're unwilling
to defend it, then why strangle your work by making it more difficult
to integrate with the only other systems that care? And if you do want
to strangle your work you might as well use the NAG license because you
could let NAG fight in court and then you can claim a percentage of the 
profits (your pound of flesh, so to speak).


Tim



From MAILER-DAEMON Mon Sep 08 23:55:24 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcuK3-0002Se-Ql
	for mharc-axiom-developer@gnu.org; Mon, 08 Sep 2008 23:55:23 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcuK2-0002R4-0i
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 23:55:22 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcuK1-0002QQ-CJ
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 23:55:21 -0400
Received: from [199.232.76.173] (port=45266 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcuK1-0002Q8-5W
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 23:55:21 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:52355
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KcuK0-0005fn-Rq
	for axiom-developer@nongnu.org; Mon, 08 Sep 2008 23:55:21 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=vXfF5hd9Zbe3prN6K1MA:9 a=GLhnKKNmC5GtvSjl-EYA:7
	a=GGb-Yy6V4mnsFs0Hoc7CNSsyY-EA:4 a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.46] ([24.154.1.46:32931] helo=pop-3.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id ED/2A-28608-693F5C84; Mon, 08 Sep 2008 23:55:02 -0400
Received: (qmail 21487 invoked from network); 9 Sep 2008 03:55:04 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-3.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <aldor-l@aldor.org>; 9 Sep 2008 03:55:04 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m895MOb32331;
	Tue, 9 Sep 2008 01:22:24 -0400
Date: Tue, 9 Sep 2008 01:22:24 -0400
Message-Id: <200809090522.m895MOb32331@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: pip88nl@gmail.com
In-reply-to: <20080909031026.GC30448@xinutec.org> (pip88nl@gmail.com)
References: <20080908143801.GA30448@xinutec.org>
	<20080909014320.GB30448@xinutec.org>
	<200809090424.m894O6N32312@localhost.localdomain>
	<20080909031026.GC30448@xinutec.org>
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, aldor-l@aldor.org
Subject: [Axiom-developer] Re: [Aldor-l] Distributing Aldor
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 09 Sep 2008 03:55:22 -0000

>> I wish you would consider simply adopting the Modified BSD license. It
>> would make it much easier to integrate your work (albeit not Aldor
>> itself) directly with Axiom. Adding yet-other-licenses to the pile is
>> only going to make Aldor yet-more-difficult to use.
>
>I chose to licence them as ISC, which is similar to the modified BSD
>licence. Is this in line with what you were saying?

Axiom is licensed under Modified BSD. I've never heard of ISC.

I did learn a few things from the lawyer, such as, most people are
not capable of actually reading and understanding a license. This
is not an issue of being smart. It is an issue of being trained.

The words don't mean what you think they mean. The words MAY have well
defined meanings based on court cases. Unless you are familiar with
the court cases you don't understand what you are reading. Court
cases vary by city, state, federal, and country. I learned
a lot more about IP issues from him than I ever wanted to know.
Licensing is a game and I don't know the rules.

It is a lot like handing Aldor source code to your lawyer.
Without training there is no way he's going to understand all of
the implications of what he's reading.

So I don't know what the implications would be of trying to mix
Modified BSD and ISC. And I'm not sure how ISC fits Axiom's goals.

Axiom is released under the specific goals of
  "teaching, scholarship, and research" 
and is intended for
  "not-for-profit, personal, educational use" (see faq 45)

You are, of course, free to choose any license you want.
But a non-MBSD license just makes it harder for Axiom to 
use your work. NAG already caused grief, why add more?

Tim



From MAILER-DAEMON Tue Sep 09 00:57:36 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KcvIG-0003V6-4i
	for mharc-axiom-developer@gnu.org; Tue, 09 Sep 2008 00:57:36 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KcvIE-0003U7-6Z
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 00:57:34 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KcvIC-0003SR-Cy
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 00:57:33 -0400
Received: from [199.232.76.173] (port=44927 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KcvIB-0003SF-Vt
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 00:57:32 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:40840
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KcvIB-0006Aa-GN
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 00:57:31 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=U22YQL0xj-znksHXBusA:9 a=yQPXZ5EBsYUpni_KhFwA:7
	a=etdz44j-vM5jDOGJOc1s_HsNVeYA:4 a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.44] ([24.154.1.44:34429] helo=pop-1.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id 12/1E-13840-82206C84; Tue, 09 Sep 2008 00:57:12 -0400
Received: (qmail 31732 invoked from network); 9 Sep 2008 04:57:14 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-1.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <aldor-l@aldor.org>; 9 Sep 2008 04:57:14 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m896Oa232348;
	Tue, 9 Sep 2008 02:24:36 -0400
Date: Tue, 9 Sep 2008 02:24:36 -0400
Message-Id: <200809090624.m896Oa232348@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: pip88nl@gmail.com
In-reply-to: <20080909031026.GC30448@xinutec.org> (pip88nl@gmail.com)
References: <20080908143801.GA30448@xinutec.org>
	<20080909014320.GB30448@xinutec.org>
	<200809090424.m894O6N32312@localhost.localdomain>
	<20080909031026.GC30448@xinutec.org>
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, aldor-l@aldor.org
Subject: [Axiom-developer] Re: [Aldor-l] Distributing Aldor
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 09 Sep 2008 04:57:34 -0000

>> I wish you would consider simply adopting the Modified BSD license. It
>> would make it much easier to integrate your work (albeit not Aldor
>> itself) directly with Axiom. Adding yet-other-licenses to the pile is
>> only going to make Aldor yet-more-difficult to use.
>
>I chose to licence them as ISC, which is similar to the modified BSD
>licence. Is this in line with what you were saying?

My opinion of NAG's business decision is purely based on how much
it has inconvenienced me. I'm sure they made the appropriate decision
to achieve their goals. I have the highest regard for the people at NAG
and have had a very good working relationship with them. They did not
have to release Aldor at all so I guess its rather unseemly to fault
them for doing it. However, the Aldor license has caused me to prioritize
the integration of Aldor very low. Any new code I write will certainly
be written in Spad, not Aldor, because I want the system to remain free.

Aldor seems to be a dead end language, given the license issue.
Aldor code can only be layered on top, not be integral to Axiom.

The questions you need to ask yourself are:
  What are your goals?
  What license will achieve those goals?

My advice to use MBSD is based on MY goals, not yours, so you should
discount everything I've said appropriately. My opinions are worth
little, considering the source.

Tim




From MAILER-DAEMON Tue Sep 09 12:20:43 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kd5xL-00088u-NI
	for mharc-axiom-developer@gnu.org; Tue, 09 Sep 2008 12:20:43 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kd5xI-00087y-GO
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 12:20:40 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kd5xE-000875-Gv
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 12:20:40 -0400
Received: from [199.232.76.173] (port=35711 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kd5xE-00086x-Br
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 12:20:36 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:56796
	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 1Kd5xC-0000aZ-L8
	for axiom-developer@nongnu.org; Tue, 09 Sep 2008 12:20:36 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m89GKUr3030578;
	Tue, 9 Sep 2008 11:20:30 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m89GKUtN030574;
	Tue, 9 Sep 2008 11:20:30 -0500
Date: Tue, 9 Sep 2008 11:20:30 -0500
Message-Id: <200809091620.m89GKUtN030574@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080908.01.tpd.patch (bookvol10 latex cleanup)
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, 09 Sep 2008 16:20:40 -0000

Clean up the overlong lines in bookvol10.

========================================================================
diff --git a/books/bookvol10.pamphlet b/books/bookvol10.pamphlet
index 9a74854..86f0b99 100644
--- a/books/bookvol10.pamphlet
+++ b/books/bookvol10.pamphlet
@@ -2166,13 +2166,13 @@ Note that this code is not included in the generated catdef.spad file.
 ++ Keywords:
 ++ References:
 ++ Description:
-++ One-dimensional-array aggregates serves as models for one-dimensional arrays.
-++ Categorically, these aggregates are finite linear aggregates
+++ One-dimensional-array aggregates serves as models for one-dimensional 
+++ arrays. Categorically, these aggregates are finite linear aggregates
 ++ with the \spadatt{shallowlyMutable} property, that is, any component of
 ++ the array may be changed without affecting the
 ++ identity of the overall array.
-++ Array data structures are typically represented by a fixed area in storage and
-++ therefore cannot efficiently grow or shrink on demand as can list structures
+++ Array data structures are typically represented by a fixed area in storage 
+++ and cannot efficiently grow or shrink on demand as can list structures
 ++ (see however \spadtype{FlexibleArray} for a data structure which
 ++ is a cross between a list and an array).
 ++ Iteration over, and access to, elements of arrays is extremely fast
@@ -2436,9 +2436,9 @@ OneDimensionalArrayAggregate(S:Type): Category ==
 ++ Keywords:
 ++ References:
 ++ Description:
-++ A bag aggregate is an aggregate for which one can insert and extract objects,
-++ and where the order in which objects are inserted determines the order
-++ of extraction.
+++ A bag aggregate is an aggregate for which one can insert and extract 
+++ objects, and where the order in which objects are inserted determines 
+++ the order of extraction.
 ++ Examples of bags are stacks, queues, and dequeues.
 BagAggregate(S:Type): Category == HomogeneousAggregate S with
    shallowlyMutable
@@ -2727,7 +2727,8 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
 	  ++ elements \axiom{y = x} removed.
 	  ++ Note: \axiom{remove(y,c) == [x for x in c | x ^= y]}.
 	removeDuplicates: % -> %
-	  ++ removeDuplicates(u) returns a copy of u with all duplicates removed.
+	  ++ removeDuplicates(u) returns a copy of u with all duplicates 
+          ++ removed.
    if S has ConvertibleTo InputForm then ConvertibleTo InputForm
  add
    if % has finiteAggregate then
@@ -2778,9 +2779,65 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |Collection;AL| (QUOTE NIL)) 
 
-(DEFUN |Collection| (#1=#:G82618) (LET (#2=#:G82619) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |Collection;AL|)) (CDR #2#)) (T (SETQ |Collection;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|Collection;| #1#))) |Collection;AL|)) #2#)))) 
-
-(DEFUN |Collection;| (|t#1|) (PROG (#1=#:G82617) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|Collection;CAT|) ((QUOTE T) (LETT |Collection;CAT| (|Join| (|HomogeneousAggregate| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|construct| (|$| (|List| |t#1|))) T) ((|find| ((|Union| |t#1| "failed") (|Mapping| (|Boolean|) |t#1|) |$|)) T) ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$|)) (|has| |$| (ATTRIBUTE |finiteAggregate|))) ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$| |t#1|)) (|has| |$| (ATTRIBUTE |finiteAggregate|))) ((|remove| (|$| (|Mapping| (|Boolean|) |t#1|) |$|)) (|has| |$| (ATTRIBUTE |finiteAggregate|))) ((|select| (|$| (|Mapping| (|Boolean|) |t#1|) |$|)) (|has| |$| (ATTRIBUTE |finiteAggregate|))) ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$| |t#1| |t#1|)) (AND (|has| |t#1| (|SetCategory|)) (|has| |$| (ATTRIBUTE |finiteAggregate|)))) ((|remove| (|$| |t#1| |$|)) (AND (|has| |t#1| (|SetCategory|!
)) (|has| |$| (ATTRIBUTE |finiteAggregate|)))) ((|removeDuplicates| (|$| |$|)) (AND (|has| |t#1| (|SetCategory|)) (|has| |$| (ATTRIBUTE |finiteAggregate|)))))) (QUOTE (((|ConvertibleTo| (|InputForm|)) (|has| |t#1| (|ConvertibleTo| (|InputForm|)))))) (QUOTE ((|List| |t#1|))) NIL)) . #2=(|Collection|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |Collection|) (|devaluate| |t#1|))))))) 
+(DEFUN |Collection| (#1=#:G82618)
+ (LET (#2=#:G82619)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |Collection;AL|)) (CDR #2#))
+   (T
+    (SETQ |Collection;AL|
+     (|cons5|
+      (CONS
+       (|devaluate| #1#)
+       (SETQ #2# (|Collection;| #1#)))
+      |Collection;AL|))
+     #2#)))) 
+
+(DEFUN |Collection;| (|t#1|)
+ (PROG (#1=#:G82617)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|Collection;CAT|)
+       ((QUOTE T)
+        (LETT |Collection;CAT|
+         (|Join|
+          (|HomogeneousAggregate| (QUOTE |t#1|))
+          (|mkCategory|
+           (QUOTE |domain|)
+           (QUOTE (
+            ((|construct| (|$| (|List| |t#1|))) T)
+            ((|find| ((|Union| |t#1| "failed")
+                      (|Mapping| (|Boolean|) |t#1|) |$|))
+              T)
+            ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$|))
+             (|has| |$| (ATTRIBUTE |finiteAggregate|)))
+            ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$| |t#1|))
+             (|has| |$| (ATTRIBUTE |finiteAggregate|)))
+            ((|remove| (|$| (|Mapping| (|Boolean|) |t#1|) |$|))
+             (|has| |$| (ATTRIBUTE |finiteAggregate|)))
+            ((|select| (|$| (|Mapping| (|Boolean|) |t#1|) |$|))
+             (|has| |$| (ATTRIBUTE |finiteAggregate|)))
+            ((|reduce| (|t#1| (|Mapping| |t#1| |t#1| |t#1|) |$| |t#1| |t#1|))
+             (AND
+              (|has| |t#1| (|SetCategory|))
+              (|has| |$| (ATTRIBUTE |finiteAggregate|))))
+            ((|remove| (|$| |t#1| |$|))
+             (AND
+              (|has| |t#1| (|SetCategory|))
+              (|has| |$| (ATTRIBUTE |finiteAggregate|))))
+            ((|removeDuplicates| (|$| |$|))
+             (AND
+              (|has| |t#1| (|SetCategory|))
+              (|has| |$| (ATTRIBUTE |finiteAggregate|))))))
+           (QUOTE (((|ConvertibleTo| (|InputForm|))
+                    (|has| |t#1| (|ConvertibleTo| (|InputForm|))))))
+           (QUOTE ((|List| |t#1|))) NIL))
+         . #2=(|Collection|)))))
+      . #2#)
+    (SETELT #1# 0 (LIST (QUOTE |Collection|) (|devaluate| |t#1|))))))) 
 @
 \section{CLAGG-.lsp BOOTSTRAP}
 {\bf CLAGG-} depends on {\bf CLAGG}. We need to break this cycle to build
@@ -2797,33 +2854,206 @@ Note that this code is not included in the generated catdef.spad file.
 
 (DEFUN |CLAGG-;#;ANni;1| (|c| |$|) (LENGTH (SPADCALL |c| (QREFELT |$| 9)))) 
 
-(DEFUN |CLAGG-;count;MANni;2| (|f| |c| |$|) (PROG (|x| #1=#:G82637 #2=#:G82634 #3=#:G82632 #4=#:G82633) (RETURN (SEQ (PROGN (LETT #4# NIL |CLAGG-;count;MANni;2|) (SEQ (LETT |x| NIL |CLAGG-;count;MANni;2|) (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;count;MANni;2|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;count;MANni;2|) NIL)) (GO G191))) (SEQ (EXIT (COND ((SPADCALL |x| |f|) (PROGN (LETT #2# 1 |CLAGG-;count;MANni;2|) (COND (#4# (LETT #3# (|+| #3# #2#) |CLAGG-;count;MANni;2|)) ((QUOTE T) (PROGN (LETT #3# #2# |CLAGG-;count;MANni;2|) (LETT #4# (QUOTE T) |CLAGG-;count;MANni;2|))))))))) (LETT #1# (CDR #1#) |CLAGG-;count;MANni;2|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) 0))))))) 
-
-(DEFUN |CLAGG-;any?;MAB;3| (|f| |c| |$|) (PROG (|x| #1=#:G82642 #2=#:G82640 #3=#:G82638 #4=#:G82639) (RETURN (SEQ (PROGN (LETT #4# NIL |CLAGG-;any?;MAB;3|) (SEQ (LETT |x| NIL |CLAGG-;any?;MAB;3|) (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;any?;MAB;3|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;any?;MAB;3|) NIL)) (GO G191))) (SEQ (EXIT (PROGN (LETT #2# (SPADCALL |x| |f|) |CLAGG-;any?;MAB;3|) (COND (#4# (LETT #3# (COND (#3# (QUOTE T)) ((QUOTE T) #2#)) |CLAGG-;any?;MAB;3|)) ((QUOTE T) (PROGN (LETT #3# #2# |CLAGG-;any?;MAB;3|) (LETT #4# (QUOTE T) |CLAGG-;any?;MAB;3|))))))) (LETT #1# (CDR #1#) |CLAGG-;any?;MAB;3|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) (QUOTE NIL)))))))) 
-
-(DEFUN |CLAGG-;every?;MAB;4| (|f| |c| |$|) (PROG (|x| #1=#:G82647 #2=#:G82645 #3=#:G82643 #4=#:G82644) (RETURN (SEQ (PROGN (LETT #4# NIL |CLAGG-;every?;MAB;4|) (SEQ (LETT |x| NIL |CLAGG-;every?;MAB;4|) (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;every?;MAB;4|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;every?;MAB;4|) NIL)) (GO G191))) (SEQ (EXIT (PROGN (LETT #2# (SPADCALL |x| |f|) |CLAGG-;every?;MAB;4|) (COND (#4# (LETT #3# (COND (#3# #2#) ((QUOTE T) (QUOTE NIL))) |CLAGG-;every?;MAB;4|)) ((QUOTE T) (PROGN (LETT #3# #2# |CLAGG-;every?;MAB;4|) (LETT #4# (QUOTE T) |CLAGG-;every?;MAB;4|))))))) (LETT #1# (CDR #1#) |CLAGG-;every?;MAB;4|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) (QUOTE T)))))))) 
-
-(DEFUN |CLAGG-;find;MAU;5| (|f| |c| |$|) (SPADCALL |f| (SPADCALL |c| (QREFELT |$| 9)) (QREFELT |$| 18))) 
-
-(DEFUN |CLAGG-;reduce;MAS;6| (|f| |x| |$|) (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 21))) 
-
-(DEFUN |CLAGG-;reduce;MA2S;7| (|f| |x| |s| |$|) (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) |s| (QREFELT |$| 23))) 
-
-(DEFUN |CLAGG-;remove;M2A;8| (|f| |x| |$|) (SPADCALL (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 25)) (QREFELT |$| 26))) 
-
-(DEFUN |CLAGG-;select;M2A;9| (|f| |x| |$|) (SPADCALL (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 28)) (QREFELT |$| 26))) 
-
-(DEFUN |CLAGG-;remove;S2A;10| (|s| |x| |$|) (SPADCALL (CONS (FUNCTION |CLAGG-;remove;S2A;10!0|) (VECTOR |$| |s|)) |x| (QREFELT |$| 31))) 
-
-(DEFUN |CLAGG-;remove;S2A;10!0| (|#1| |$$|) (SPADCALL |#1| (QREFELT |$$| 1) (QREFELT (QREFELT |$$| 0) 30))) 
-
-(DEFUN |CLAGG-;reduce;MA3S;11| (|f| |x| |s1| |s2| |$|) (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) |s1| |s2| (QREFELT |$| 33))) 
-
-(DEFUN |CLAGG-;removeDuplicates;2A;12| (|x| |$|) (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 35)) (QREFELT |$| 26))) 
-
-(DEFUN |Collection&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|Collection&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |Collection&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 37) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasCategory| |#2| (QUOTE (|ConvertibleTo| (|InputForm|)))) (|HasCategory| |#2| (QUOTE (|SetCategory|))) (|HasAttribute| |#1| (QUOTE |finiteAggregate|)))) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|testBitVector| |pv$| 3) (PROGN (QSETREFV |$| 11 (CONS (|dispatchFunction| |CLAGG-;#;ANni;1|) |$|)) (QSETREFV |$| 13 (CONS (|dispatchFunction| |CLAGG-;count;MANni;2|) |$|)) (QSETREFV |$| 15 (CONS (|dispatchFunction| |CLAGG-;any?;MAB;3|) |$|)) (QSETREFV |$| 16 (CONS (|dispatchFunction| |CLAGG-;every?;MAB;4|) |$|)) (QSETREFV |$| 19 (CONS (|dispatchFunction| |CLAGG-;find;MAU;5|) |$|)) (QSETREFV |!
$| 22 (CONS (|dispatchFunction| |CLAGG-;reduce;MAS;6|) |$|)) (QSETREFV |$| 24 (CONS (|dispatchFunction| |CLAGG-;reduce;MA2S;7|) |$|)) (QSETREFV |$| 27 (CONS (|dispatchFunction| |CLAGG-;remove;M2A;8|) |$|)) (QSETREFV |$| 29 (CONS (|dispatchFunction| |CLAGG-;select;M2A;9|) |$|)) (COND ((|testBitVector| |pv$| 2) (PROGN (QSETREFV |$| 32 (CONS (|dispatchFunction| |CLAGG-;remove;S2A;10|) |$|)) (QSETREFV |$| 34 (CONS (|dispatchFunction| |CLAGG-;reduce;MA3S;11|) |$|)) (QSETREFV |$| 36 (CONS (|dispatchFunction| |CLAGG-;removeDuplicates;2A;12|) |$|)))))))) |$|)))) 
-
-(MAKEPROP (QUOTE |Collection&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|List| 7) (0 . |parts|) (|NonNegativeInteger|) (5 . |#|) (|Mapping| 14 7) (10 . |count|) (|Boolean|) (16 . |any?|) (22 . |every?|) (|Union| 7 (QUOTE "failed")) (28 . |find|) (34 . |find|) (|Mapping| 7 7 7) (40 . |reduce|) (46 . |reduce|) (52 . |reduce|) (59 . |reduce|) (66 . |remove|) (72 . |construct|) (77 . |remove|) (83 . |select|) (89 . |select|) (95 . |=|) (101 . |remove|) (107 . |remove|) (113 . |reduce|) (121 . |reduce|) (129 . |removeDuplicates|) (134 . |removeDuplicates|))) (QUOTE #(|select| 139 |removeDuplicates| 145 |remove| 150 |reduce| 162 |find| 183 |every?| 189 |count| 195 |any?| 201 |#| 207)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 36 (QUOTE (1 6 8 0 9 1 0 10 0 11 2 0 10 12 0 13 2 0 14 12 0 15 2 0 14 12 0 16 2 8 17 12 0 18 2 0 17 12 0 19 2 8 7 20 0 21 2 0 7 20 0 22 3 8 7 2!
0 0 7 23 3 0 7 20 0 7 24 2 8 0 12 0 25 1 6 0 8 26 2 0 0 12 0 27 2 8 0 12 0 28 2 0 0 12 0 29 2 7 14 0 0 30 2 6 0 12 0 31 2 0 0 7 0 32 4 8 7 20 0 7 7 33 4 0 7 20 0 7 7 34 1 8 0 0 35 1 0 0 0 36 2 0 0 12 0 29 1 0 0 0 36 2 0 0 7 0 32 2 0 0 12 0 27 4 0 7 20 0 7 7 34 3 0 7 20 0 7 24 2 0 7 20 0 22 2 0 17 12 0 19 2 0 14 12 0 16 2 0 10 12 0 13 2 0 14 12 0 15 1 0 10 0 11)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |CLAGG-;count;MANni;2| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82637 #2=#:G82634 #3=#:G82632 #4=#:G82633)
+  (RETURN
+   (SEQ
+    (PROGN
+     (LETT #4# NIL |CLAGG-;count;MANni;2|)
+     (SEQ
+      (LETT |x| NIL |CLAGG-;count;MANni;2|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;count;MANni;2|)
+      G190
+      (COND
+       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;count;MANni;2|) NIL))
+        (GO G191)))
+      (SEQ
+       (EXIT
+        (COND
+         ((SPADCALL |x| |f|)
+          (PROGN
+           (LETT #2# 1 |CLAGG-;count;MANni;2|)
+           (COND
+            (#4# (LETT #3# (|+| #3# #2#) |CLAGG-;count;MANni;2|))
+            ((QUOTE T)
+             (PROGN
+              (LETT #3# #2# |CLAGG-;count;MANni;2|)
+              (LETT #4# (QUOTE T) |CLAGG-;count;MANni;2|)))))))))
+      (LETT #1# (CDR #1#) |CLAGG-;count;MANni;2|)
+      (GO G190)
+      G191
+      (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) 0))))))) 
+
+(DEFUN |CLAGG-;any?;MAB;3| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82642 #2=#:G82640 #3=#:G82638 #4=#:G82639)
+  (RETURN
+   (SEQ
+    (PROGN
+     (LETT #4# NIL |CLAGG-;any?;MAB;3|)
+     (SEQ
+      (LETT |x| NIL |CLAGG-;any?;MAB;3|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;any?;MAB;3|)
+      G190
+      (COND
+       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;any?;MAB;3|) NIL))
+        (GO G191)))
+      (SEQ
+       (EXIT
+        (PROGN
+         (LETT #2# (SPADCALL |x| |f|) |CLAGG-;any?;MAB;3|)
+         (COND
+          (#4#
+           (LETT #3#
+            (COND (#3# (QUOTE T)) ((QUOTE T) #2#))
+            |CLAGG-;any?;MAB;3|))
+          ((QUOTE T)
+           (PROGN
+            (LETT #3# #2# |CLAGG-;any?;MAB;3|)
+            (LETT #4# (QUOTE T) |CLAGG-;any?;MAB;3|)))))))
+      (LETT #1# (CDR #1#) |CLAGG-;any?;MAB;3|)
+      (GO G190)
+      G191
+      (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) (QUOTE NIL)))))))) 
+
+(DEFUN |CLAGG-;every?;MAB;4| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82647 #2=#:G82645 #3=#:G82643 #4=#:G82644)
+  (RETURN
+   (SEQ
+    (PROGN
+     (LETT #4# NIL |CLAGG-;every?;MAB;4|)
+     (SEQ
+      (LETT |x| NIL |CLAGG-;every?;MAB;4|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 9)) |CLAGG-;every?;MAB;4|)
+      G190
+      (COND
+       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |CLAGG-;every?;MAB;4|) NIL))
+        (GO G191)))
+      (SEQ
+       (EXIT
+        (PROGN
+         (LETT #2# (SPADCALL |x| |f|) |CLAGG-;every?;MAB;4|)
+         (COND
+          (#4#
+           (LETT #3#
+            (COND (#3# #2#) ((QUOTE T) (QUOTE NIL)))
+            |CLAGG-;every?;MAB;4|))
+          ((QUOTE T)
+           (PROGN
+            (LETT #3# #2# |CLAGG-;every?;MAB;4|)
+            (LETT #4# (QUOTE T) |CLAGG-;every?;MAB;4|)))))))
+      (LETT #1# (CDR #1#) |CLAGG-;every?;MAB;4|)
+      (GO G190)
+      G191
+      (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) (QUOTE T)))))))) 
+
+(DEFUN |CLAGG-;find;MAU;5| (|f| |c| |$|)
+ (SPADCALL |f| (SPADCALL |c| (QREFELT |$| 9)) (QREFELT |$| 18))) 
+
+(DEFUN |CLAGG-;reduce;MAS;6| (|f| |x| |$|)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 21))) 
+
+(DEFUN |CLAGG-;reduce;MA2S;7| (|f| |x| |s| |$|)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) |s| (QREFELT |$| 23))) 
+
+(DEFUN |CLAGG-;remove;M2A;8| (|f| |x| |$|)
+ (SPADCALL
+  (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 25))
+  (QREFELT |$| 26))) 
+
+(DEFUN |CLAGG-;select;M2A;9| (|f| |x| |$|)
+ (SPADCALL
+  (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 28))
+  (QREFELT |$| 26))) 
+
+(DEFUN |CLAGG-;remove;S2A;10| (|s| |x| |$|)
+ (SPADCALL
+  (CONS (FUNCTION |CLAGG-;remove;S2A;10!0|) (VECTOR |$| |s|))
+  |x|
+  (QREFELT |$| 31))) 
+
+(DEFUN |CLAGG-;remove;S2A;10!0| (|#1| |$$|)
+ (SPADCALL |#1| (QREFELT |$$| 1) (QREFELT (QREFELT |$$| 0) 30))) 
+
+(DEFUN |CLAGG-;reduce;MA3S;11| (|f| |x| |s1| |s2| |$|)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 9)) |s1| |s2| (QREFELT |$| 33))) 
+
+(DEFUN |CLAGG-;removeDuplicates;2A;12| (|x| |$|) 
+ (SPADCALL
+  (SPADCALL (SPADCALL |x| (QREFELT |$| 9)) (QREFELT |$| 35))
+  (QREFELT |$| 26))) 
+
+(DEFUN |Collection&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|Collection&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |Collection&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 37) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasCategory| |#2| (QUOTE (|ConvertibleTo| (|InputForm|)))) (|HasCategory| |#2| (QUOTE (|SetCategory|))) (|HasAttribute| |#1| (QUOTE |finiteAggregate|)))) . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+     ((|testBitVector| |pv$| 3)
+      (PROGN
+       (QSETREFV |$| 11 (CONS (|dispatchFunction| |CLAGG-;#;ANni;1|) |$|))
+       (QSETREFV |$| 13 (CONS (|dispatchFunction| |CLAGG-;count;MANni;2|) |$|))
+       (QSETREFV |$| 15 (CONS (|dispatchFunction| |CLAGG-;any?;MAB;3|) |$|))
+       (QSETREFV |$| 16 (CONS (|dispatchFunction| |CLAGG-;every?;MAB;4|) |$|))
+       (QSETREFV |$| 19 (CONS (|dispatchFunction| |CLAGG-;find;MAU;5|) |$|))
+       (QSETREFV |$| 22 (CONS (|dispatchFunction| |CLAGG-;reduce;MAS;6|) |$|))
+       (QSETREFV |$| 24 (CONS (|dispatchFunction| |CLAGG-;reduce;MA2S;7|) |$|))
+       (QSETREFV |$| 27 (CONS (|dispatchFunction| |CLAGG-;remove;M2A;8|) |$|))
+       (QSETREFV |$| 29 (CONS (|dispatchFunction| |CLAGG-;select;M2A;9|) |$|))
+       (COND
+        ((|testBitVector| |pv$| 2)
+         (PROGN
+          (QSETREFV |$| 32
+           (CONS (|dispatchFunction| |CLAGG-;remove;S2A;10|) |$|))
+          (QSETREFV |$| 34
+           (CONS (|dispatchFunction| |CLAGG-;reduce;MA3S;11|) |$|))
+          (QSETREFV |$| 36
+           (CONS (|dispatchFunction| |CLAGG-;removeDuplicates;2A;12|)
+                 |$|))))))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |Collection&|)
+ (QUOTE |infovec|)
+ (LIST (QUOTE 
+  #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|List| 7) 
+   (0 . |parts|) (|NonNegativeInteger|) (5 . |#|) (|Mapping| 14 7) 
+   (10 . |count|) (|Boolean|) (16 . |any?|) (22 . |every?|) 
+   (|Union| 7 (QUOTE "failed")) (28 . |find|) (34 . |find|) 
+   (|Mapping| 7 7 7) (40 . |reduce|) (46 . |reduce|) (52 . |reduce|) 
+   (59 . |reduce|) (66 . |remove|) (72 . |construct|) (77 . |remove|) 
+   (83 . |select|) (89 . |select|) (95 . |=|) (101 . |remove|) 
+   (107 . |remove|) (113 . |reduce|) (121 . |reduce|) 
+   (129 . |removeDuplicates|) (134 . |removeDuplicates|))) 
+   (QUOTE #(|select| 139 |removeDuplicates| 145 |remove| 150 |reduce| 
+   162 |find| 183 |every?| 189 |count| 195 |any?| 201 |#| 207))
+   (QUOTE NIL)
+   (CONS 
+    (|makeByteWordVec2| 1 (QUOTE NIL))
+    (CONS 
+     (QUOTE #())
+     (CONS 
+      (QUOTE #()) 
+      (|makeByteWordVec2| 36 
+       (QUOTE (1 6 8 0 9 1 0 10 0 11 2 0 10 12 0 13 2 0 14 12 0 15 2 0 14 
+        12 0 16 2 8 17 12 0 18 2 0 17 12 0 19 2 8 7 20 0 21 2 0 7 20 0 22 
+        3 8 7 20 0 7 23 3 0 7 20 0 7 24 2 8 0 12 0 25 1 6 0 8 26 2 0 0 12 
+        0 27 2 8 0 12 0 28 2 0 0 12 0 29 2 7 14 0 0 30 2 6 0 12 0 31 2 0 0 
+        7 0 32 4 8 7 20 0 7 7 33 4 0 7 20 0 7 7 34 1 8 0 0 35 1 0 0 0 36 2 
+        0 0 12 0 29 1 0 0 0 36 2 0 0 7 0 32 2 0 0 12 0 27 4 0 7 20 0 7 7 34 
+        3 0 7 20 0 7 24 2 0 7 20 0 22 2 0 17 12 0 19 2 0 14 12 0 16 2 0 10 
+        12 0 13 2 0 14 12 0 15 1 0 10 0 11))))))
+    (QUOTE |lookupComplete|))) 
 @
 \section{category DIAGG Dictionary}
 <<category DIAGG Dictionary>>=
@@ -2987,11 +3217,14 @@ DoublyLinkedAggregate(S:Type): Category == RecursiveAggregate S with
      ++ Note: \axiom{next(l) = rest(l)} and \axiom{previous(next(l)) = l}.
    if % has shallowlyMutable then
       concat_!: (%,%) -> %
-	++ concat!(u,v) destructively concatenates doubly-linked aggregate v to the end of doubly-linked aggregate u.
+	++ concat!(u,v) destructively concatenates doubly-linked aggregate v 
+        ++ to the end of doubly-linked aggregate u.
       setprevious_!: (%,%) -> %
-	++ setprevious!(u,v) destructively sets the previous node of doubly-linked aggregate u to v, returning v.
+	++ setprevious!(u,v) destructively sets the previous node of 
+        ++ doubly-linked aggregate u to v, returning v.
       setnext_!: (%,%) -> %
-	++ setnext!(u,v) destructively sets the next node of doubly-linked aggregate u to v, returning v.
+	++ setnext!(u,v) destructively sets the next node of doubly-linked 
+        ++ aggregate u to v, returning v.
 
 @
 <<DLAGG.dotabb>>=
@@ -3085,9 +3318,9 @@ DequeueAggregate(S:Type):
 ++ Keywords:
 ++ References:
 ++ Description:
-++ An extensible aggregate is one which allows insertion and deletion of entries.
-++ These aggregates are models of lists and streams which are represented
-++ by linked structures so as to make insertion, deletion, and
+++ An extensible aggregate is one which allows insertion and deletion of 
+++ entries. These aggregates are models of lists and streams which are 
+++ represented by linked structures so as to make insertion, deletion, and
 ++ concatenation efficient. However, access to elements of these
 ++ extensible aggregates is generally slow since access is made from the end.
 ++ See \spadtype{FlexibleArray} for an exception.
@@ -3173,7 +3406,7 @@ ExtensibleLinearAggregate(S:Type):Category == LinearAggregate S with
 ++ An eltable over domains D and I is a structure which can be viewed
 ++ as a function from D to I.
 ++ Examples of eltable structures range from data structures, e.g. those
-++ of type \spadtype{List}, to algebraic structures, e.g. \spadtype{Polynomial}.
+++ of type \spadtype{List}, to algebraic structures like \spadtype{Polynomial}.
 Eltable(S:SetCategory, Index:Type): Category == with
   elt : (%, S) -> Index
      ++ elt(u,i) (also written: u . i) returns the element of u indexed by i.
@@ -3280,23 +3513,27 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
       ++ of \axiom{a} is examined, and so on. When all the elements of one
       ++ aggregate are examined, the remaining elements of the other
       ++ are appended.
-      ++ For example, \axiom{merge(<,[1,3],[2,7,5])} returns \axiom{[1,2,3,7,5]}.
+      ++ For example, \axiom{merge(<,[1,3],[2,7,5])} returns 
+      ++ \axiom{[1,2,3,7,5]}.
    reverse: % -> %
       ++ reverse(a) returns a copy of \axiom{a} with elements in reverse order.
    sort: ((S,S)->Boolean,%) -> %
-      ++ sort(p,a) returns a copy of \axiom{a} sorted using total ordering predicate p.
+      ++ sort(p,a) returns a copy of \axiom{a} sorted using total ordering 
+      ++ predicate p.
    sorted?: ((S,S)->Boolean,%) -> Boolean
       ++ sorted?(p,a) tests if \axiom{a} is sorted according to predicate p.
    position: (S->Boolean, %) -> Integer
-      ++ position(p,a) returns the index i of the first x in \axiom{a} such that
-      ++ \axiom{p(x)} is true, and \axiom{minIndex(a) - 1} if there is no such x.
+      ++ position(p,a) returns the index i of the first x in \axiom{a} 
+      ++ such that \axiom{p(x)} is true, and \axiom{minIndex(a) - 1} 
+      ++ if there is no such x.
    if S has SetCategory then
       position: (S, %)	-> Integer
 	++ position(x,a) returns the index i of the first occurrence of x in a,
 	++ and \axiom{minIndex(a) - 1} if there is no such x.
       position: (S,%,Integer) -> Integer
 	++ position(x,a,n) returns the index i of the first occurrence of x in
-	++ \axiom{a} where \axiom{i >= n}, and \axiom{minIndex(a) - 1} if no such x is found.
+	++ \axiom{a} where \axiom{i >= n}, and \axiom{minIndex(a) - 1} 
+        ++ if no such x is found.
    if S has OrderedSet then
       OrderedSet
       merge: (%,%) -> %
@@ -3420,13 +3657,15 @@ FiniteSetAggregate(S:SetCategory): Category ==
    if S has Finite then
      universe()	  == {index(i::PositiveInteger) for i in 1..size()$S}
      complement s == difference(universe(), s )
-     size()	  == 2 ** size()$S
-     index i	 == {index(j::PositiveInteger)$S for j in 1..size()$S | bit?(i-1,j-1)}
-     random()	  == index((random()$Integer rem (size()$% + 1))::PositiveInteger)
+     size()  == 2 ** size()$S
+     index i ==
+       {index(j::PositiveInteger)$S for j in 1..size()$S | bit?(i-1,j-1)}
+     random()  == index((random()$Integer rem (size()$% + 1))::PositiveInteger)
 
      lookup s ==
        n:PositiveInteger := 1
-       for x in parts s repeat n := n + 2 ** ((lookup(x) - 1)::NonNegativeInteger)
+       for x in parts s repeat _
+         n := n + 2 ** ((lookup(x) - 1)::NonNegativeInteger)
        n
 
    if S has OrderedSet then
@@ -3482,7 +3721,8 @@ HomogeneousAggregate(S:Type): Category == Aggregate with
      ++ For collections, \axiom{map(f,u) = [f(x) for x in u]}.
    if % has shallowlyMutable then
      map_!: (S->S,%) -> %
-	++ map!(f,u) destructively replaces each element x of u by \axiom{f(x)}.
+	++ map!(f,u) destructively replaces each element x of u 
+        ++ by \axiom{f(x)}.
    if % has finiteAggregate then
       any?: (S->Boolean,%) -> Boolean
 	++ any?(p,u) tests if \axiom{p(x)} is true for any element x of u.
@@ -3504,8 +3744,8 @@ HomogeneousAggregate(S:Type): Category == Aggregate with
 	++ For collections, \axiom{parts([x,y,...,z]) = (x,y,...,z)}.
       if S has SetCategory then
 	count: (S,%) -> NonNegativeInteger
-	  ++ count(x,u) returns the number of occurrences of x in u.
-	  ++ For collections, \axiom{count(x,u) = reduce(+,[x=y for y in u],0)}.
+	  ++ count(x,u) returns the number of occurrences of x in u. For
+	  ++ collections, \axiom{count(x,u) = reduce(+,[x=y for y in u],0)}.
 	member?: (S,%) -> Boolean
 	  ++ member?(x,u) tests if x is a member of u.
 	  ++ For collections,
@@ -3639,35 +3879,281 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |HOAGG-;eval;ALA;1| (|u| |l| |$|) (SPADCALL (CONS (FUNCTION |HOAGG-;eval;ALA;1!0|) (VECTOR |$| |l|)) |u| (QREFELT |$| 11))) 
-
-(DEFUN |HOAGG-;eval;ALA;1!0| (|#1| |$$|) (SPADCALL |#1| (QREFELT |$$| 1) (QREFELT (QREFELT |$$| 0) 9))) 
+(DEFUN |HOAGG-;eval;ALA;1| (|u| |l| |$|) 
+ (SPADCALL
+  (CONS (FUNCTION |HOAGG-;eval;ALA;1!0|) (VECTOR |$| |l|))
+  |u|
+  (QREFELT |$| 11))) 
 
-(DEFUN |HOAGG-;#;ANni;2| (|c| |$|) (LENGTH (SPADCALL |c| (QREFELT |$| 14)))) 
+(DEFUN |HOAGG-;eval;ALA;1!0| (|#1| |$$|)
+ (SPADCALL |#1| (QREFELT |$$| 1) (QREFELT (QREFELT |$$| 0) 9))) 
 
-(DEFUN |HOAGG-;any?;MAB;3| (|f| |c| |$|) (PROG (|x| #1=#:G82396 #2=#:G82393 #3=#:G82391 #4=#:G82392) (RETURN (SEQ (PROGN (LETT #4# NIL |HOAGG-;any?;MAB;3|) (SEQ (LETT |x| NIL |HOAGG-;any?;MAB;3|) (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;any?;MAB;3|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;any?;MAB;3|) NIL)) (GO G191))) (SEQ (EXIT (PROGN (LETT #2# (SPADCALL |x| |f|) |HOAGG-;any?;MAB;3|) (COND (#4# (LETT #3# (COND (#3# (QUOTE T)) ((QUOTE T) #2#)) |HOAGG-;any?;MAB;3|)) ((QUOTE T) (PROGN (LETT #3# #2# |HOAGG-;any?;MAB;3|) (LETT #4# (QUOTE T) |HOAGG-;any?;MAB;3|))))))) (LETT #1# (CDR #1#) |HOAGG-;any?;MAB;3|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) (QUOTE NIL)))))))) 
+(DEFUN |HOAGG-;#;ANni;2| (|c| |$|)
+ (LENGTH (SPADCALL |c| (QREFELT |$| 14)))) 
 
-(DEFUN |HOAGG-;every?;MAB;4| (|f| |c| |$|) (PROG (|x| #1=#:G82401 #2=#:G82399 #3=#:G82397 #4=#:G82398) (RETURN (SEQ (PROGN (LETT #4# NIL |HOAGG-;every?;MAB;4|) (SEQ (LETT |x| NIL |HOAGG-;every?;MAB;4|) (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;every?;MAB;4|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;every?;MAB;4|) NIL)) (GO G191))) (SEQ (EXIT (PROGN (LETT #2# (SPADCALL |x| |f|) |HOAGG-;every?;MAB;4|) (COND (#4# (LETT #3# (COND (#3# #2#) ((QUOTE T) (QUOTE NIL))) |HOAGG-;every?;MAB;4|)) ((QUOTE T) (PROGN (LETT #3# #2# |HOAGG-;every?;MAB;4|) (LETT #4# (QUOTE T) |HOAGG-;every?;MAB;4|))))))) (LETT #1# (CDR #1#) |HOAGG-;every?;MAB;4|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) (QUOTE T)))))))) 
-
-(DEFUN |HOAGG-;count;MANni;5| (|f| |c| |$|) (PROG (|x| #1=#:G82406 #2=#:G82404 #3=#:G82402 #4=#:G82403) (RETURN (SEQ (PROGN (LETT #4# NIL |HOAGG-;count;MANni;5|) (SEQ (LETT |x| NIL |HOAGG-;count;MANni;5|) (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;count;MANni;5|) G190 (COND ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;count;MANni;5|) NIL)) (GO G191))) (SEQ (EXIT (COND ((SPADCALL |x| |f|) (PROGN (LETT #2# 1 |HOAGG-;count;MANni;5|) (COND (#4# (LETT #3# (|+| #3# #2#) |HOAGG-;count;MANni;5|)) ((QUOTE T) (PROGN (LETT #3# #2# |HOAGG-;count;MANni;5|) (LETT #4# (QUOTE T) |HOAGG-;count;MANni;5|))))))))) (LETT #1# (CDR #1#) |HOAGG-;count;MANni;5|) (GO G190) G191 (EXIT NIL)) (COND (#4# #3#) ((QUOTE T) 0))))))) 
+(DEFUN |HOAGG-;any?;MAB;3| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82396 #2=#:G82393 #3=#:G82391 #4=#:G82392)
+  (RETURN 
+   (SEQ
+    (PROGN
+     (LETT #4# NIL |HOAGG-;any?;MAB;3|)
+     (SEQ
+      (LETT |x| NIL |HOAGG-;any?;MAB;3|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;any?;MAB;3|)
+      G190
+      (COND
+       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;any?;MAB;3|) NIL))
+        (GO G191)))
+      (SEQ
+       (EXIT
+        (PROGN
+         (LETT #2# (SPADCALL |x| |f|) |HOAGG-;any?;MAB;3|)
+         (COND
+          (#4#
+           (LETT #3#
+             (COND 
+              (#3# (QUOTE T))
+              ((QUOTE T) #2#))
+             |HOAGG-;any?;MAB;3|))
+          ((QUOTE T)
+           (PROGN
+            (LETT #3# #2# |HOAGG-;any?;MAB;3|)
+            (LETT #4# (QUOTE T) |HOAGG-;any?;MAB;3|)))))))
+      (LETT #1# (CDR #1#) |HOAGG-;any?;MAB;3|) (GO G190) G191 (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) (QUOTE NIL)))))))) 
+
+(DEFUN |HOAGG-;every?;MAB;4| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82401 #2=#:G82399 #3=#:G82397 #4=#:G82398)
+  (RETURN
+   (SEQ
+    (PROGN
+     (LETT #4# NIL |HOAGG-;every?;MAB;4|)
+     (SEQ
+      (LETT |x| NIL |HOAGG-;every?;MAB;4|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;every?;MAB;4|)
+      G190
+      (COND
+        ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;every?;MAB;4|) NIL))
+         (GO G191)))
+      (SEQ
+       (EXIT
+        (PROGN
+         (LETT #2# (SPADCALL |x| |f|) |HOAGG-;every?;MAB;4|)
+         (COND
+          (#4#
+           (LETT #3#
+            (COND (#3# #2#) ((QUOTE T) (QUOTE NIL)))
+            |HOAGG-;every?;MAB;4|))
+          ((QUOTE T)
+           (PROGN
+            (LETT #3# #2# |HOAGG-;every?;MAB;4|)
+            (LETT #4# (QUOTE T) |HOAGG-;every?;MAB;4|)))))))
+      (LETT #1# (CDR #1#) |HOAGG-;every?;MAB;4|)
+      (GO G190)
+      G191
+      (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) (QUOTE T)))))))) 
+
+(DEFUN |HOAGG-;count;MANni;5| (|f| |c| |$|)
+ (PROG (|x| #1=#:G82406 #2=#:G82404 #3=#:G82402 #4=#:G82403)
+  (RETURN
+   (SEQ
+    (PROGN 
+     (LETT #4# NIL |HOAGG-;count;MANni;5|)
+     (SEQ
+      (LETT |x| NIL |HOAGG-;count;MANni;5|)
+      (LETT #1# (SPADCALL |c| (QREFELT |$| 14)) |HOAGG-;count;MANni;5|)
+      G190
+      (COND
+       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#) |HOAGG-;count;MANni;5|) NIL))
+        (GO G191)))
+      (SEQ 
+       (EXIT
+        (COND
+         ((SPADCALL |x| |f|)
+          (PROGN
+           (LETT #2# 1 |HOAGG-;count;MANni;5|)
+           (COND
+            (#4# (LETT #3# (|+| #3# #2#) |HOAGG-;count;MANni;5|))
+            ((QUOTE T)
+             (PROGN
+              (LETT #3# #2# |HOAGG-;count;MANni;5|)
+              (LETT #4# (QUOTE T) |HOAGG-;count;MANni;5|)))))))))
+      (LETT #1# (CDR #1#) |HOAGG-;count;MANni;5|)
+      (GO G190)
+      G191
+      (EXIT NIL))
+     (COND (#4# #3#) ((QUOTE T) 0))))))) 
 
 (DEFUN |HOAGG-;members;AL;6| (|x| |$|) (SPADCALL |x| (QREFELT |$| 14))) 
 
-(DEFUN |HOAGG-;count;SANni;7| (|s| |x| |$|) (SPADCALL (CONS (FUNCTION |HOAGG-;count;SANni;7!0|) (VECTOR |$| |s|)) |x| (QREFELT |$| 24))) 
+(DEFUN |HOAGG-;count;SANni;7| (|s| |x| |$|)
+ (SPADCALL
+  (CONS (FUNCTION |HOAGG-;count;SANni;7!0|) (VECTOR |$| |s|))
+  |x|
+  (QREFELT |$| 24))) 
 
-(DEFUN |HOAGG-;count;SANni;7!0| (|#1| |$$|) (SPADCALL (QREFELT |$$| 1) |#1| (QREFELT (QREFELT |$$| 0) 23))) 
+(DEFUN |HOAGG-;count;SANni;7!0| (|#1| |$$|)
+ (SPADCALL (QREFELT |$$| 1) |#1| (QREFELT (QREFELT |$$| 0) 23))) 
 
-(DEFUN |HOAGG-;member?;SAB;8| (|e| |c| |$|) (SPADCALL (CONS (FUNCTION |HOAGG-;member?;SAB;8!0|) (VECTOR |$| |e|)) |c| (QREFELT |$| 26))) 
+(DEFUN |HOAGG-;member?;SAB;8| (|e| |c| |$|)
+ (SPADCALL
+  (CONS (FUNCTION |HOAGG-;member?;SAB;8!0|) (VECTOR |$| |e|))
+  |c|
+  (QREFELT |$| 26))) 
 
-(DEFUN |HOAGG-;member?;SAB;8!0| (|#1| |$$|) (SPADCALL (QREFELT |$$| 1) |#1| (QREFELT (QREFELT |$$| 0) 23))) 
+(DEFUN |HOAGG-;member?;SAB;8!0| (|#1| |$$|)
+ (SPADCALL (QREFELT |$$| 1) |#1| (QREFELT (QREFELT |$$| 0) 23))) 
 
-(DEFUN |HOAGG-;=;2AB;9| (|x| |y| |$|) (PROG (|b| #1=#:G82416 |a| #2=#:G82415 #3=#:G82412 #4=#:G82410 #5=#:G82411) (RETURN (SEQ (COND ((SPADCALL |x| (SPADCALL |y| (QREFELT |$| 28)) (QREFELT |$| 29)) (PROGN (LETT #5# NIL |HOAGG-;=;2AB;9|) (SEQ (LETT |b| NIL |HOAGG-;=;2AB;9|) (LETT #1# (SPADCALL |y| (QREFELT |$| 14)) |HOAGG-;=;2AB;9|) (LETT |a| NIL |HOAGG-;=;2AB;9|) (LETT #2# (SPADCALL |x| (QREFELT |$| 14)) |HOAGG-;=;2AB;9|) G190 (COND ((OR (ATOM #2#) (PROGN (LETT |a| (CAR #2#) |HOAGG-;=;2AB;9|) NIL) (ATOM #1#) (PROGN (LETT |b| (CAR #1#) |HOAGG-;=;2AB;9|) NIL)) (GO G191))) (SEQ (EXIT (PROGN (LETT #3# (SPADCALL |a| |b| (QREFELT |$| 23)) |HOAGG-;=;2AB;9|) (COND (#5# (LETT #4# (COND (#4# #3#) ((QUOTE T) (QUOTE NIL))) |HOAGG-;=;2AB;9|)) ((QUOTE T) (PROGN (LETT #4# #3# |HOAGG-;=;2AB;9|) (LETT #5# (QUOTE T) |HOAGG-;=;2AB;9|))))))) (LETT #2# (PROG1 (CDR #2#) (LETT #1# (CDR #1#) |HOAGG-;=;2AB;9|)) |HOAGG-;=;2AB;9|) (GO G190) G191 (EXIT NIL)) (COND (#5# #4#) ((QUOTE T) (QUOTE T))))) ((!
QUOTE T) (QUOTE NIL))))))) 
-
-(DEFUN |HOAGG-;coerce;AOf;10| (|x| |$|) (PROG (#1=#:G82420 |a| #2=#:G82421) (RETURN (SEQ (SPADCALL (SPADCALL (PROGN (LETT #1# NIL |HOAGG-;coerce;AOf;10|) (SEQ (LETT |a| NIL |HOAGG-;coerce;AOf;10|) (LETT #2# (SPADCALL |x| (QREFELT |$| 14)) |HOAGG-;coerce;AOf;10|) G190 (COND ((OR (ATOM #2#) (PROGN (LETT |a| (CAR #2#) |HOAGG-;coerce;AOf;10|) NIL)) (GO G191))) (SEQ (EXIT (LETT #1# (CONS (SPADCALL |a| (QREFELT |$| 32)) #1#) |HOAGG-;coerce;AOf;10|))) (LETT #2# (CDR #2#) |HOAGG-;coerce;AOf;10|) (GO G190) G191 (EXIT (NREVERSE0 #1#)))) (QREFELT |$| 34)) (QREFELT |$| 35)))))) 
-
-(DEFUN |HomogeneousAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|HomogeneousAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |HomogeneousAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 38) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasAttribute| |#1| (QUOTE |finiteAggregate|)) (|HasAttribute| |#1| (QUOTE |shallowlyMutable|)) (|HasCategory| |#2| (LIST (QUOTE |Evalable|) (|devaluate| |#2|))) (|HasCategory| |#2| (QUOTE (|SetCategory|))))) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|testBitVector| |pv$| 3) (QSETREFV |$| 12 (CONS (|dispatchFunction| |HOAGG-;eval;ALA;1|) |$|)))) (COND ((|testBitVector| |pv$| 1) (PROGN (QSETREFV |$| 16 (CONS (|dispatchFunction| |HOAGG-;#;ANni;2|) |$|)) (QSETREFV |$| 19 (CONS (|dispatchFunction| |HOAGG-;any?;MAB;3|) |$|)) (QSETREFV |$| 20 (CONS (|dispatchFunc!
tion| |HOAGG-;every?;MAB;4|) |$|)) (QSETREFV |$| 21 (CONS (|dispatchFunction| |HOAGG-;count;MANni;5|) |$|)) (QSETREFV |$| 22 (CONS (|dispatchFunction| |HOAGG-;members;AL;6|) |$|)) (COND ((|testBitVector| |pv$| 4) (PROGN (QSETREFV |$| 25 (CONS (|dispatchFunction| |HOAGG-;count;SANni;7|) |$|)) (QSETREFV |$| 27 (CONS (|dispatchFunction| |HOAGG-;member?;SAB;8|) |$|)) (QSETREFV |$| 30 (CONS (|dispatchFunction| |HOAGG-;=;2AB;9|) |$|)) (QSETREFV |$| 36 (CONS (|dispatchFunction| |HOAGG-;coerce;AOf;10|) |$|)))))))) |$|)))) 
-
-(MAKEPROP (QUOTE |HomogeneousAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|List| 37) (0 . |eval|) (|Mapping| 7 7) (6 . |map|) (12 . |eval|) (|List| 7) (18 . |parts|) (|NonNegativeInteger|) (23 . |#|) (|Boolean|) (|Mapping| 17 7) (28 . |any?|) (34 . |every?|) (40 . |count|) (46 . |members|) (51 . |=|) (57 . |count|) (63 . |count|) (69 . |any?|) (75 . |member?|) (81 . |#|) (86 . |size?|) (92 . |=|) (|OutputForm|) (98 . |coerce|) (|List| |$|) (103 . |commaSeparate|) (108 . |bracket|) (113 . |coerce|) (|Equation| 7))) (QUOTE #(|members| 118 |member?| 123 |every?| 129 |eval| 135 |count| 141 |coerce| 153 |any?| 158 |=| 164 |#| 170)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 36 (QUOTE (2 7 0 0 8 9 2 6 0 10 0 11 2 0 0 0 8 12 1 6 13 0 14 1 0 15 0 16 2 0 17 18 0 19 2 0 17 18 0 20 2 0 15 18 0 21 1 0 13 0 22 2 7 17 0 0 23 2 6 15 18 0 24 2 0 15 7 0 25 2 6 17 18 0 26!
 2 0 17 7 0 27 1 6 15 0 28 2 6 17 0 15 29 2 0 17 0 0 30 1 7 31 0 32 1 31 0 33 34 1 31 0 0 35 1 0 31 0 36 1 0 13 0 22 2 0 17 7 0 27 2 0 17 18 0 20 2 0 0 0 8 12 2 0 15 7 0 25 2 0 15 18 0 21 1 0 31 0 36 2 0 17 18 0 19 2 0 17 0 0 30 1 0 15 0 16)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |HOAGG-;=;2AB;9| (|x| |y| |$|)
+ (PROG (|b| #1=#:G82416 |a| #2=#:G82415 #3=#:G82412 #4=#:G82410 #5=#:G82411)
+  (RETURN 
+   (SEQ 
+    (COND
+     ((SPADCALL |x| (SPADCALL |y| (QREFELT |$| 28)) (QREFELT |$| 29))
+      (PROGN
+       (LETT #5# NIL |HOAGG-;=;2AB;9|)
+       (SEQ
+        (LETT |b| NIL |HOAGG-;=;2AB;9|)
+        (LETT #1# (SPADCALL |y| (QREFELT |$| 14)) |HOAGG-;=;2AB;9|)
+        (LETT |a| NIL |HOAGG-;=;2AB;9|)
+        (LETT #2# (SPADCALL |x| (QREFELT |$| 14)) |HOAGG-;=;2AB;9|)
+        G190
+        (COND
+         ((OR
+           (ATOM #2#)
+           (PROGN (LETT |a| (CAR #2#) |HOAGG-;=;2AB;9|) NIL)
+           (ATOM #1#)
+           (PROGN (LETT |b| (CAR #1#) |HOAGG-;=;2AB;9|) NIL))
+          (GO G191)))
+        (SEQ
+         (EXIT
+          (PROGN
+           (LETT #3# (SPADCALL |a| |b| (QREFELT |$| 23)) |HOAGG-;=;2AB;9|)
+           (COND
+             (#5#
+              (LETT #4#
+               (COND (#4# #3#) ((QUOTE T) (QUOTE NIL)))
+               |HOAGG-;=;2AB;9|))
+             ((QUOTE T)
+              (PROGN
+               (LETT #4# #3# |HOAGG-;=;2AB;9|)
+               (LETT #5# (QUOTE T) |HOAGG-;=;2AB;9|)))))))
+        (LETT #2#
+         (PROG1
+          (CDR #2#)
+          (LETT #1# (CDR #1#) |HOAGG-;=;2AB;9|))
+         |HOAGG-;=;2AB;9|)
+        (GO G190)
+        G191
+        (EXIT NIL))
+       (COND (#5# #4#) ((QUOTE T) (QUOTE T)))))
+     ((QUOTE T) (QUOTE NIL))))))) 
+
+(DEFUN |HOAGG-;coerce;AOf;10| (|x| |$|)
+ (PROG (#1=#:G82420 |a| #2=#:G82421)
+  (RETURN
+   (SEQ
+    (SPADCALL
+     (SPADCALL
+      (PROGN
+       (LETT #1# NIL |HOAGG-;coerce;AOf;10|)
+       (SEQ
+        (LETT |a| NIL |HOAGG-;coerce;AOf;10|)
+        (LETT #2# (SPADCALL |x| (QREFELT |$| 14)) |HOAGG-;coerce;AOf;10|)
+        G190
+        (COND
+         ((OR
+           (ATOM #2#)
+           (PROGN (LETT |a| (CAR #2#) |HOAGG-;coerce;AOf;10|) NIL))
+          (GO G191)))
+        (SEQ
+         (EXIT
+          (LETT #1#
+           (CONS (SPADCALL |a| (QREFELT |$| 32)) #1#)
+           |HOAGG-;coerce;AOf;10|)))
+        (LETT #2# (CDR #2#) |HOAGG-;coerce;AOf;10|)
+        (GO G190)
+        G191
+        (EXIT (NREVERSE0 #1#))))
+      (QREFELT |$| 34))
+     (QREFELT |$| 35)))))) 
+
+(DEFUN |HomogeneousAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|HomogeneousAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |HomogeneousAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 38) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3
+     (LETT |pv$|
+      (|buildPredVector| 0 0
+       (LIST
+        (|HasAttribute| |#1| (QUOTE |finiteAggregate|))
+        (|HasAttribute| |#1| (QUOTE |shallowlyMutable|))
+        (|HasCategory| |#2| (LIST (QUOTE |Evalable|) (|devaluate| |#2|)))
+        (|HasCategory| |#2| (QUOTE (|SetCategory|)))))
+      . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+     ((|testBitVector| |pv$| 3)
+       (QSETREFV |$| 12 (CONS (|dispatchFunction| |HOAGG-;eval;ALA;1|) |$|))))
+    (COND
+     ((|testBitVector| |pv$| 1)
+      (PROGN
+       (QSETREFV |$| 16 (CONS (|dispatchFunction| |HOAGG-;#;ANni;2|) |$|))
+       (QSETREFV |$| 19 (CONS (|dispatchFunction| |HOAGG-;any?;MAB;3|) |$|))
+       (QSETREFV |$| 20 (CONS (|dispatchFunction| |HOAGG-;every?;MAB;4|) |$|))
+       (QSETREFV |$| 21 (CONS (|dispatchFunction| |HOAGG-;count;MANni;5|) |$|))
+       (QSETREFV |$| 22 (CONS (|dispatchFunction| |HOAGG-;members;AL;6|) |$|))
+       (COND
+        ((|testBitVector| |pv$| 4)
+         (PROGN
+          (QSETREFV |$| 25
+           (CONS (|dispatchFunction| |HOAGG-;count;SANni;7|) |$|))
+          (QSETREFV |$| 27
+           (CONS (|dispatchFunction| |HOAGG-;member?;SAB;8|) |$|))
+          (QSETREFV |$| 30
+           (CONS (|dispatchFunction| |HOAGG-;=;2AB;9|) |$|))
+          (QSETREFV |$| 36
+           (CONS (|dispatchFunction| |HOAGG-;coerce;AOf;10|) |$|))))))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |HomogeneousAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|List| 37) 
+   (0 . |eval|) (|Mapping| 7 7) (6 . |map|) (12 . |eval|) (|List| 7) 
+   (18 . |parts|) (|NonNegativeInteger|) (23 . |#|) (|Boolean|) 
+   (|Mapping| 17 7) (28 . |any?|) (34 . |every?|) (40 . |count|) 
+   (46 . |members|) (51 . |=|) (57 . |count|) (63 . |count|) (69 . |any?|) 
+   (75 . |member?|) (81 . |#|) (86 . |size?|) (92 . |=|) (|OutputForm|) 
+   (98 . |coerce|) (|List| |$|) (103 . |commaSeparate|) (108 . |bracket|) 
+   (113 . |coerce|) (|Equation| 7)))
+  (QUOTE #(|members| 118 |member?| 123 |every?| 129 |eval| 135 |count| 141 
+   |coerce| 153 |any?| 158 |=| 164 |#| 170))
+  (QUOTE NIL)
+  (CONS 
+   (|makeByteWordVec2| 1 (QUOTE NIL))
+   (CONS 
+    (QUOTE #())
+    (CONS 
+     (QUOTE #())
+     (|makeByteWordVec2| 36 
+      (QUOTE (2 7 0 0 8 9 2 6 0 10 0 11 2 0 0 0 8 12 1 6 13 0 14 1 0 15 0 
+        16 2 0 17 18 0 19 2 0 17 18 0 20 2 0 15 18 0 21 1 0 13 0 22 2 7 17 
+        0 0 23 2 6 15 18 0 24 2 0 15 7 0 25 2 6 17 18 0 26 2 0 17 7 0 27 1 
+        6 15 0 28 2 6 17 0 15 29 2 0 17 0 0 30 1 7 31 0 32 1 31 0 33 34 1 
+        31 0 0 35 1 0 31 0 36 1 0 13 0 22 2 0 17 7 0 27 2 0 17 18 0 20 2 0 
+        0 0 8 12 2 0 15 7 0 25 2 0 15 18 0 21 1 0 31 0 36 2 0 17 18 0 19 2 
+        0 17 0 0 30 1 0 15 0 16))))))
+  (QUOTE |lookupComplete|))) 
 @
 \section{category IXAGG IndexedAggregate}
 <<category IXAGG IndexedAggregate>>=
@@ -3696,8 +4182,8 @@ IndexedAggregate(Index: SetCategory, Entry: Type): Category ==
       ++ index?(i,u) tests if i is an index of aggregate u.
    indices: % -> List Index
       ++ indices(u) returns a list of indices of aggregate u in no
-      ++ particular order.
-      -- to become indices: % -> Index* and indices: % -> Iterator(Index,Index).
+      ++ particular order. to become indices:
+      --  % -> Index* and indices: % -> Iterator(Index,Index).
 -- map: ((Entry,Entry)->Entry,%,%,Entry) -> %
 --    ++ exists c = map(f,a,b,x), i:Index where
 --    ++    c.i = f(a(i,x),b(i,x)) | index?(i,a) or index?(i,b)
@@ -3855,9 +4341,9 @@ KeyedDictionary(Key:SetCategory, Entry:SetCategory): Category ==
 ++ Most of the exported operations for linear aggregates are non-destructive
 ++ but are not always efficient for a particular aggregate.
 ++ For example, \spadfun{concat} of two lists needs only to copy its first
-++ argument, whereas \spadfun{concat} of two arrays needs to copy both arguments.
-++ Most of the operations exported here apply to infinite objects (e.g. streams)
-++ as well to finite ones.
+++ argument, whereas \spadfun{concat} of two arrays needs to copy both 
+++ arguments. Most of the operations exported here apply to infinite 
+++ objects (e.g. streams) as well to finite ones.
 ++ For finite linear aggregates, see \spadtype{FiniteLinearAggregate}.
 LinearAggregate(S:Type): Category ==
   Join(IndexedAggregate(Integer, S), Collection(S)) with
@@ -3872,11 +4358,12 @@ LinearAggregate(S:Type): Category ==
    concat: (%,%) -> %
       ++ concat(u,v) returns an aggregate consisting of the elements of u
       ++ followed by the elements of v.
-      ++ Note: if \axiom{w = concat(u,v)} then \axiom{w.i = u.i for i in indices u}
+      ++ Note: if \axiom{w = concat(u,v)} then 
+      ++ \axiom{w.i = u.i for i in indices u}
       ++ and \axiom{w.(j + maxIndex u) = v.j for j in indices v}.
    concat: List % -> %
-      ++ concat(u), where u is a lists of aggregates \axiom{[a,b,...,c]}, returns
-      ++ a single aggregate consisting of the elements of \axiom{a}
+      ++ concat(u), where u is a lists of aggregates \axiom{[a,b,...,c]}, 
+      ++ returns a single aggregate consisting of the elements of \axiom{a}
       ++ followed by those
       ++ of b followed ... by the elements of c.
       ++ Note: \axiom{concat(a,b,...,c) = concat(a,concat(b,...,c))}.
@@ -3890,7 +4377,8 @@ LinearAggregate(S:Type): Category ==
       ++ Note: in general, \axiom{a.s = [a.k for i in s]}.
    delete: (%,Integer) -> %
       ++ delete(u,i) returns a copy of u with the \axiom{i}th element deleted.
-      ++ Note: for lists, \axiom{delete(a,i) == concat(a(0..i - 1),a(i + 1,..))}.
+      ++ Note: for lists, 
+      ++ \axiom{delete(a,i) == concat(a(0..i - 1),a(i + 1,..))}.
    delete: (%,UniversalSegment(Integer)) -> %
       ++ delete(u,i..j) returns a copy of u with the \axiom{i}th through
       ++ \axiom{j}th element deleted.
@@ -3950,9 +4438,59 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |LinearAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |LinearAggregate| (#1=#:G85818) (LET (#2=#:G85819) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |LinearAggregate;AL|)) (CDR #2#)) (T (SETQ |LinearAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|LinearAggregate;| #1#))) |LinearAggregate;AL|)) #2#)))) 
-
-(DEFUN |LinearAggregate;| (|t#1|) (PROG (#1=#:G85817) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (|sublisV| (PAIR (QUOTE (#2=#:G85816)) (LIST (QUOTE (|Integer|)))) (COND (|LinearAggregate;CAT|) ((QUOTE T) (LETT |LinearAggregate;CAT| (|Join| (|IndexedAggregate| (QUOTE #2#) (QUOTE |t#1|)) (|Collection| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|new| (|$| (|NonNegativeInteger|) |t#1|)) T) ((|concat| (|$| |$| |t#1|)) T) ((|concat| (|$| |t#1| |$|)) T) ((|concat| (|$| |$| |$|)) T) ((|concat| (|$| (|List| |$|))) T) ((|map| (|$| (|Mapping| |t#1| |t#1| |t#1|) |$| |$|)) T) ((|elt| (|$| |$| (|UniversalSegment| (|Integer|)))) T) ((|delete| (|$| |$| (|Integer|))) T) ((|delete| (|$| |$| (|UniversalSegment| (|Integer|)))) T) ((|insert| (|$| |t#1| |$| (|Integer|))) T) ((|insert| (|$| |$| |$| (|Integer|))) T) ((|setelt| (|t#1| |$| (|UniversalSegment| (|Integer|)) |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))))) NIL (QUOTE ((|Univ!
ersalSegment| (|Integer|)) (|Integer|) (|List| |$|) (|NonNegativeInteger|))) NIL)) . #3=(|LinearAggregate|)))))) . #3#) (SETELT #1# 0 (LIST (QUOTE |LinearAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |LinearAggregate| (#1=#:G85818)
+ (LET (#2=#:G85819)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |LinearAggregate;AL|)) (CDR #2#))
+   (T
+    (SETQ |LinearAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|LinearAggregate;| #1#)))
+      |LinearAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |LinearAggregate;| (|t#1|)
+ (PROG (#1=#:G85817)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (|sublisV|
+       (PAIR (QUOTE (#2=#:G85816)) (LIST (QUOTE (|Integer|))))
+       (COND
+        (|LinearAggregate;CAT|)
+        ((QUOTE T)
+         (LETT |LinearAggregate;CAT|
+          (|Join|
+           (|IndexedAggregate| (QUOTE #2#) (QUOTE |t#1|))
+           (|Collection| (QUOTE |t#1|))
+           (|mkCategory|
+            (QUOTE |domain|)
+            (QUOTE (
+             ((|new| (|$| (|NonNegativeInteger|) |t#1|)) T)
+             ((|concat| (|$| |$| |t#1|)) T)
+             ((|concat| (|$| |t#1| |$|)) T)
+             ((|concat| (|$| |$| |$|)) T)
+             ((|concat| (|$| (|List| |$|))) T)
+             ((|map| (|$| (|Mapping| |t#1| |t#1| |t#1|) |$| |$|)) T)
+             ((|elt| (|$| |$| (|UniversalSegment| (|Integer|)))) T)
+             ((|delete| (|$| |$| (|Integer|))) T)
+             ((|delete| (|$| |$| (|UniversalSegment| (|Integer|)))) T)
+             ((|insert| (|$| |t#1| |$| (|Integer|))) T)
+             ((|insert| (|$| |$| |$| (|Integer|))) T)
+             ((|setelt| (|t#1| |$| (|UniversalSegment| (|Integer|)) |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))))
+            NIL
+            (QUOTE (
+              (|UniversalSegment| (|Integer|))
+              (|Integer|)
+              (|List| |$|)
+              (|NonNegativeInteger|)))
+             NIL))
+          . #3=(|LinearAggregate|))))))
+      . #3#)
+     (SETELT #1# 0 (LIST (QUOTE |LinearAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{LNAGG-.lsp BOOTSTRAP}
 {\bf LNAGG-} depends on {\bf LNAGG}. We need to break this cycle to build
@@ -3967,21 +4505,88 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |LNAGG-;indices;AL;1| (|a| |$|) (PROG (#1=#:G85833 |i| #2=#:G85834) (RETURN (SEQ (PROGN (LETT #1# NIL |LNAGG-;indices;AL;1|) (SEQ (LETT |i| (SPADCALL |a| (QREFELT |$| 9)) |LNAGG-;indices;AL;1|) (LETT #2# (SPADCALL |a| (QREFELT |$| 10)) |LNAGG-;indices;AL;1|) G190 (COND ((|>| |i| #2#) (GO G191))) (SEQ (EXIT (LETT #1# (CONS |i| #1#) |LNAGG-;indices;AL;1|))) (LETT |i| (|+| |i| 1) |LNAGG-;indices;AL;1|) (GO G190) G191 (EXIT (NREVERSE0 #1#)))))))) 
-
-(DEFUN |LNAGG-;index?;IAB;2| (|i| |a| |$|) (COND ((OR (|<| |i| (SPADCALL |a| (QREFELT |$| 9))) (|<| (SPADCALL |a| (QREFELT |$| 10)) |i|)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) 
-
-(DEFUN |LNAGG-;concat;ASA;3| (|a| |x| |$|) (SPADCALL |a| (SPADCALL 1 |x| (QREFELT |$| 16)) (QREFELT |$| 17))) 
-
-(DEFUN |LNAGG-;concat;S2A;4| (|x| |y| |$|) (SPADCALL (SPADCALL 1 |x| (QREFELT |$| 16)) |y| (QREFELT |$| 17))) 
-
-(DEFUN |LNAGG-;insert;SAIA;5| (|x| |a| |i| |$|) (SPADCALL (SPADCALL 1 |x| (QREFELT |$| 16)) |a| |i| (QREFELT |$| 20))) 
-
-(DEFUN |LNAGG-;maxIndex;AI;6| (|l| |$|) (|+| (|-| (SPADCALL |l| (QREFELT |$| 22)) 1) (SPADCALL |l| (QREFELT |$| 9)))) 
-
-(DEFUN |LinearAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|LinearAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |LinearAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 25) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasAttribute| |#1| (QUOTE |shallowlyMutable|)))) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|HasAttribute| |#1| (QUOTE |finiteAggregate|)) (QSETREFV |$| 23 (CONS (|dispatchFunction| |LNAGG-;maxIndex;AI;6|) |$|)))) |$|)))) 
-
-(MAKEPROP (QUOTE |LinearAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|Integer|) (0 . |minIndex|) (5 . |maxIndex|) (|List| 8) |LNAGG-;indices;AL;1| (|Boolean|) |LNAGG-;index?;IAB;2| (|NonNegativeInteger|) (10 . |new|) (16 . |concat|) |LNAGG-;concat;ASA;3| |LNAGG-;concat;S2A;4| (22 . |insert|) |LNAGG-;insert;SAIA;5| (29 . |#|) (34 . |maxIndex|) (|List| |$|))) (QUOTE #(|maxIndex| 39 |insert| 44 |indices| 51 |index?| 56 |concat| 62)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 23 (QUOTE (1 6 8 0 9 1 6 8 0 10 2 6 0 15 7 16 2 6 0 0 0 17 3 6 0 0 0 8 20 1 6 15 0 22 1 0 8 0 23 1 0 8 0 23 3 0 0 7 0 8 21 1 0 11 0 12 2 0 13 8 0 14 2 0 0 0 7 18 2 0 0 7 0 19)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |LNAGG-;indices;AL;1| (|a| |$|)
+ (PROG (#1=#:G85833 |i| #2=#:G85834)
+  (RETURN
+   (SEQ
+    (PROGN
+     (LETT #1# NIL |LNAGG-;indices;AL;1|)
+     (SEQ
+      (LETT |i| (SPADCALL |a| (QREFELT |$| 9)) |LNAGG-;indices;AL;1|)
+      (LETT #2# (SPADCALL |a| (QREFELT |$| 10)) |LNAGG-;indices;AL;1|)
+      G190
+      (COND ((|>| |i| #2#) (GO G191)))
+      (SEQ (EXIT (LETT #1# (CONS |i| #1#) |LNAGG-;indices;AL;1|)))
+      (LETT |i| (|+| |i| 1) |LNAGG-;indices;AL;1|)
+      (GO G190)
+      G191
+      (EXIT (NREVERSE0 #1#)))))))) 
+
+(DEFUN |LNAGG-;index?;IAB;2| (|i| |a| |$|)
+ (COND
+  ((OR 
+     (|<| |i| (SPADCALL |a| (QREFELT |$| 9)))
+     (|<| (SPADCALL |a| (QREFELT |$| 10)) |i|))
+    (QUOTE NIL))
+  ((QUOTE T) (QUOTE T)))) 
+
+(DEFUN |LNAGG-;concat;ASA;3| (|a| |x| |$|)
+ (SPADCALL |a| (SPADCALL 1 |x| (QREFELT |$| 16)) (QREFELT |$| 17))) 
+
+(DEFUN |LNAGG-;concat;S2A;4| (|x| |y| |$|)
+ (SPADCALL (SPADCALL 1 |x| (QREFELT |$| 16)) |y| (QREFELT |$| 17))) 
+
+(DEFUN |LNAGG-;insert;SAIA;5| (|x| |a| |i| |$|)
+ (SPADCALL (SPADCALL 1 |x| (QREFELT |$| 16)) |a| |i| (QREFELT |$| 20))) 
+
+(DEFUN |LNAGG-;maxIndex;AI;6| (|l| |$|)
+ (|+| (|-| (SPADCALL |l| (QREFELT |$| 22)) 1) (SPADCALL |l| (QREFELT |$| 9)))) 
+
+(DEFUN |LinearAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|LinearAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |LinearAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 25) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3
+     (LETT |pv$|
+      (|buildPredVector| 0 0
+       (LIST (|HasAttribute| |#1| (QUOTE |shallowlyMutable|))))
+      . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND 
+     ((|HasAttribute| |#1| (QUOTE |finiteAggregate|))
+      (QSETREFV |$| 23
+       (CONS (|dispatchFunction| |LNAGG-;maxIndex;AI;6|) |$|))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |LinearAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|Integer|) 
+    (0 . |minIndex|) (5 . |maxIndex|) (|List| 8) |LNAGG-;indices;AL;1| 
+    (|Boolean|) |LNAGG-;index?;IAB;2| (|NonNegativeInteger|) (10 . |new|) 
+    (16 . |concat|) |LNAGG-;concat;ASA;3| |LNAGG-;concat;S2A;4| 
+    (22 . |insert|) |LNAGG-;insert;SAIA;5| (29 . |#|) (34 . |maxIndex|) 
+    (|List| |$|)))
+  (QUOTE #(|maxIndex| 39 |insert| 44 |indices| 51 |index?| 56 |concat| 62))
+  (QUOTE NIL)
+  (CONS 
+   (|makeByteWordVec2| 1 (QUOTE NIL))
+   (CONS
+    (QUOTE #())
+    (CONS
+     (QUOTE #())
+     (|makeByteWordVec2| 23 (QUOTE (1 6 8 0 9 1 6 8 0 10 2 6 0 15 7 
+      16 2 6 0 0 0 17 3 6 0 0 0 8 20 1 6 15 0 22 1 0 8 0 23 1 0 8 0 23 3 0 
+      0 7 0 8 21 1 0 11 0 12 2 0 13 8 0 14 2 0 0 0 7 18 2 0 0 7 0 19))))))
+  (QUOTE |lookupComplete|))) 
 @
 \section{category LSAGG ListAggregate}
 <<category LSAGG ListAggregate>>=
@@ -4232,9 +4837,41 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |ListAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |ListAggregate| (#1=#:G87500) (LET (#2=#:G87501) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |ListAggregate;AL|)) (CDR #2#)) (T (SETQ |ListAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|ListAggregate;| #1#))) |ListAggregate;AL|)) #2#)))) 
-
-(DEFUN |ListAggregate;| (|t#1|) (PROG (#1=#:G87499) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|ListAggregate;CAT|) ((QUOTE T) (LETT |ListAggregate;CAT| (|Join| (|StreamAggregate| (QUOTE |t#1|)) (|FiniteLinearAggregate| (QUOTE |t#1|)) (|ExtensibleLinearAggregate| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|list| (|$| |t#1|)) T))) NIL (QUOTE NIL) NIL)) . #2=(|ListAggregate|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |ListAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |ListAggregate| (#1=#:G87500)
+ (LET (#2=#:G87501)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |ListAggregate;AL|)) (CDR #2#))
+   (T
+    (SETQ |ListAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|ListAggregate;| #1#)))
+      |ListAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |ListAggregate;| (|t#1|)
+ (PROG (#1=#:G87499)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|ListAggregate;CAT|)
+       ((QUOTE T)
+        (LETT |ListAggregate;CAT|
+         (|Join|
+          (|StreamAggregate| (QUOTE |t#1|))
+          (|FiniteLinearAggregate| (QUOTE |t#1|))
+          (|ExtensibleLinearAggregate| (QUOTE |t#1|))
+          (|mkCategory|
+           (QUOTE |domain|)
+           (QUOTE (((|list| (|$| |t#1|)) T)))
+           NIL
+           (QUOTE NIL)
+            NIL))
+          . #2=(|ListAggregate|)))))
+     . #2#)
+    (SETELT #1# 0 (LIST (QUOTE |ListAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{LSAGG-.lsp BOOTSTRAP}
 {\bf LSAGG-} depends on {\bf LSAGG}. We need to break this cycle to build
@@ -4249,61 +4886,846 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |LSAGG-;sort!;M2A;1| (|f| |l| |$|) (|LSAGG-;mergeSort| |f| |l| (SPADCALL |l| (QREFELT |$| 9)) |$|)) 
-
-(DEFUN |LSAGG-;list;SA;2| (|x| |$|) (SPADCALL |x| (SPADCALL (QREFELT |$| 12)) (QREFELT |$| 13))) 
-
-(DEFUN |LSAGG-;reduce;MAS;3| (|f| |x| |$|) (COND ((SPADCALL |x| (QREFELT |$| 16)) (|error| "reducing over an empty list needs the 3 argument form")) ((QUOTE T) (SPADCALL |f| (SPADCALL |x| (QREFELT |$| 17)) (SPADCALL |x| (QREFELT |$| 18)) (QREFELT |$| 20))))) 
-
-(DEFUN |LSAGG-;merge;M3A;4| (|f| |p| |q| |$|) (SPADCALL |f| (SPADCALL |p| (QREFELT |$| 22)) (SPADCALL |q| (QREFELT |$| 22)) (QREFELT |$| 23))) 
-
-(DEFUN |LSAGG-;select!;M2A;5| (|f| |x| |$|) (PROG (|y| |z|) (RETURN (SEQ (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) |x|) ((QUOTE T) (SEQ (LETT |y| |x| |LSAGG-;select!;M2A;5|) (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |z| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((SPADCALL (SPADCALL |z| (QREFELT |$| 18)) |f|) (SEQ (LETT |y| |z| |LSAGG-;select!;M2A;5|) (EXIT (LETT |z| (SPADCALL |z| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|)))) ((QUOTE T) (SEQ (LETT |z| (SPADCALL |z| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|) (EXIT (SPADCALL |y| |z| (QREFELT |$| 25)))))))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |x|))))))))!
) 
-
-(DEFUN |LSAGG-;merge!;M3A;6| (|f| |p| |q| |$|) (PROG (|r| |t|) (RETURN (SEQ (COND ((SPADCALL |p| (QREFELT |$| 16)) |q|) ((SPADCALL |q| (QREFELT |$| 16)) |p|) ((SPADCALL |p| |q| (QREFELT |$| 28)) (|error| "cannot merge a list into itself")) ((QUOTE T) (SEQ (COND ((SPADCALL (SPADCALL |p| (QREFELT |$| 18)) (SPADCALL |q| (QREFELT |$| 18)) |f|) (SEQ (LETT |r| (LETT |t| |p| |LSAGG-;merge!;M3A;6|) |LSAGG-;merge!;M3A;6|) (EXIT (LETT |p| (SPADCALL |p| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|)))) ((QUOTE T) (SEQ (LETT |r| (LETT |t| |q| |LSAGG-;merge!;M3A;6|) |LSAGG-;merge!;M3A;6|) (EXIT (LETT |q| (SPADCALL |q| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|))))) (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |p| (QREFELT |$| 16)) (SPADCALL |q| (QREFELT |$| 16))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((SPADCALL (SPADCALL |p| (QREFELT |$| 18)) (SPADCALL |q| (QREFELT |$| 18)) |f|) (SEQ (SPADCALL |t| |p| (QREFELT |$| 25)) (LETT |t| |p| |LSAGG-;merge!;M3A;6|) (EXIT (LETT |!
p| (SPADCALL |p| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|)))) ((QUOTE T) (SEQ (SPADCALL |t| |q| (QREFELT |$| 25)) (LETT |t| |q| |LSAGG-;merge!;M3A;6|) (EXIT (LETT |q| (SPADCALL |q| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|))))))) NIL (GO G190) G191 (EXIT NIL)) (SPADCALL |t| (COND ((SPADCALL |p| (QREFELT |$| 16)) |q|) ((QUOTE T) |p|)) (QREFELT |$| 25)) (EXIT |r|)))))))) 
-
-(DEFUN |LSAGG-;insert!;SAIA;7| (|s| |x| |i| |$|) (PROG (|m| #1=#:G87547 |y| |z|) (RETURN (SEQ (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;insert!;SAIA;7|) (EXIT (COND ((|<| |i| |m|) (|error| "index out of range")) ((EQL |i| |m|) (SPADCALL |s| |x| (QREFELT |$| 13))) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (PROG1 (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;insert!;SAIA;7|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32)) |LSAGG-;insert!;SAIA;7|) (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;insert!;SAIA;7|) (SPADCALL |y| (SPADCALL |s| |z| (QREFELT |$| 13)) (QREFELT |$| 25)) (EXIT |x|))))))))) 
-
-(DEFUN |LSAGG-;insert!;2AIA;8| (|w| |x| |i| |$|) (PROG (|m| #1=#:G87551 |y| |z|) (RETURN (SEQ (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;insert!;2AIA;8|) (EXIT (COND ((|<| |i| |m|) (|error| "index out of range")) ((EQL |i| |m|) (SPADCALL |w| |x| (QREFELT |$| 34))) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (PROG1 (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;insert!;2AIA;8|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32)) |LSAGG-;insert!;2AIA;8|) (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;insert!;2AIA;8|) (SPADCALL |y| |w| (QREFELT |$| 25)) (SPADCALL |y| |z| (QREFELT |$| 34)) (EXIT |x|))))))))) 
-
-(DEFUN |LSAGG-;remove!;M2A;9| (|f| |x| |$|) (PROG (|p| |q|) (RETURN (SEQ (SEQ G190 (COND ((NULL (COND ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|)))) (GO G191))) (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;remove!;M2A;9|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) |x|) ((QUOTE T) (SEQ (LETT |p| |x| |LSAGG-;remove!;M2A;9|) (LETT |q| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;remove!;M2A;9|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |q| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((SPADCALL (SPADCALL |q| (QREFELT |$| 18)) |f|) (LETT |q| (SPADCALL |p| (SPADCALL |q| (QREFELT |$| 17)) (QREFELT |$| 25)) |LSAGG-;remove!;M2A;9|)) ((QUOTE T) (SEQ (LETT |p| |q| |LSAGG-;remove!;M2A;9|) (EXIT (LETT |q| (SPADCALL |q| (QREFELT |$| 17)) |LSAGG-;remove!;M2A;9|))))))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |x|))))))))) 
-
-(DEFUN |LSAGG-;delete!;AIA;10| (|x| |i| |$|) (PROG (|m| #1=#:G87564 |y|) (RETURN (SEQ (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;delete!;AIA;10|) (EXIT (COND ((|<| |i| |m|) (|error| "index out of range")) ((EQL |i| |m|) (SPADCALL |x| (QREFELT |$| 17))) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (PROG1 (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;delete!;AIA;10|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32)) |LSAGG-;delete!;AIA;10|) (SPADCALL |y| (SPADCALL |y| 2 (QREFELT |$| 32)) (QREFELT |$| 25)) (EXIT |x|))))))))) 
-
-(DEFUN |LSAGG-;delete!;AUsA;11| (|x| |i| |$|) (PROG (|l| |m| |h| #1=#:G87569 #2=#:G87570 |t| #3=#:G87571) (RETURN (SEQ (LETT |l| (SPADCALL |i| (QREFELT |$| 39)) |LSAGG-;delete!;AUsA;11|) (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;delete!;AUsA;11|) (EXIT (COND ((|<| |l| |m|) (|error| "index out of range")) ((QUOTE T) (SEQ (LETT |h| (COND ((SPADCALL |i| (QREFELT |$| 40)) (SPADCALL |i| (QREFELT |$| 41))) ((QUOTE T) (SPADCALL |x| (QREFELT |$| 42)))) |LSAGG-;delete!;AUsA;11|) (EXIT (COND ((|<| |h| |l|) |x|) ((EQL |l| |m|) (SPADCALL |x| (PROG1 (LETT #1# (|-| (|+| |h| 1) |m|) |LSAGG-;delete!;AUsA;11|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32))) ((QUOTE T) (SEQ (LETT |t| (SPADCALL |x| (PROG1 (LETT #2# (|-| (|-| |l| 1) |m|) |LSAGG-;delete!;AUsA;11|) (|check-subtype| (|>=| #2# 0) (QUOTE (|NonNegativeInteger|)) #2#)) (QREFELT |$| 32)) |LSAGG-;delete!;AUsA;11|) (SPADCALL |t| (SPADCALL |t| (PROG1 (LETT #3# (|+| (|-| |h| |l|) 2) |LSAGG-;de!
lete!;AUsA;11|) (|check-subtype| (|>=| #3# 0) (QUOTE (|NonNegativeInteger|)) #3#)) (QREFELT |$| 32)) (QREFELT |$| 25)) (EXIT |x|))))))))))))) 
-
-(DEFUN |LSAGG-;find;MAU;12| (|f| |x| |$|) (SEQ (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;find;MAU;12|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) (CONS 1 "failed")) ((QUOTE T) (CONS 0 (SPADCALL |x| (QREFELT |$| 18)))))))) 
-
-(DEFUN |LSAGG-;position;MAI;13| (|f| |x| |$|) (PROG (|k|) (RETURN (SEQ (SEQ (LETT |k| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;position;MAI;13|) G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;position;MAI;13|))) (LETT |k| (|+| |k| 1) |LSAGG-;position;MAI;13|) (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) (|-| (SPADCALL |x| (QREFELT |$| 31)) 1)) ((QUOTE T) |k|))))))) 
-
-(DEFUN |LSAGG-;mergeSort| (|f| |p| |n| |$|) (PROG (#1=#:G87593 |l| |q|) (RETURN (SEQ (COND ((EQL |n| 2) (COND ((SPADCALL (SPADCALL (SPADCALL |p| (QREFELT |$| 17)) (QREFELT |$| 18)) (SPADCALL |p| (QREFELT |$| 18)) |f|) (LETT |p| (SPADCALL |p| (QREFELT |$| 47)) |LSAGG-;mergeSort|))))) (EXIT (COND ((|<| |n| 3) |p|) ((QUOTE T) (SEQ (LETT |l| (PROG1 (LETT #1# (QUOTIENT2 |n| 2) |LSAGG-;mergeSort|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) |LSAGG-;mergeSort|) (LETT |q| (SPADCALL |p| |l| (QREFELT |$| 48)) |LSAGG-;mergeSort|) (LETT |p| (|LSAGG-;mergeSort| |f| |p| |l| |$|) |LSAGG-;mergeSort|) (LETT |q| (|LSAGG-;mergeSort| |f| |q| (|-| |n| |l|) |$|) |LSAGG-;mergeSort|) (EXIT (SPADCALL |f| |p| |q| (QREFELT |$| 23))))))))))) 
-
-(DEFUN |LSAGG-;sorted?;MAB;15| (|f| |l| |$|) (PROG (#1=#:G87603 |p|) (RETURN (SEQ (EXIT (COND ((SPADCALL |l| (QREFELT |$| 16)) (QUOTE T)) ((QUOTE T) (SEQ (LETT |p| (SPADCALL |l| (QREFELT |$| 17)) |LSAGG-;sorted?;MAB;15|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |p| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((NULL (SPADCALL (SPADCALL |l| (QREFELT |$| 18)) (SPADCALL |p| (QREFELT |$| 18)) |f|)) (PROGN (LETT #1# (QUOTE NIL) |LSAGG-;sorted?;MAB;15|) (GO #1#))) ((QUOTE T) (LETT |p| (SPADCALL (LETT |l| |p| |LSAGG-;sorted?;MAB;15|) (QREFELT |$| 17)) |LSAGG-;sorted?;MAB;15|))))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (QUOTE T)))))) #1# (EXIT #1#))))) 
-
-(DEFUN |LSAGG-;reduce;MA2S;16| (|f| |x| |i| |$|) (PROG (|r|) (RETURN (SEQ (LETT |r| |i| |LSAGG-;reduce;MA2S;16|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |r| (SPADCALL |r| (SPADCALL |x| (QREFELT |$| 18)) |f|) |LSAGG-;reduce;MA2S;16|) (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reduce;MA2S;16|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |r|))))) 
-
-(DEFUN |LSAGG-;reduce;MA3S;17| (|f| |x| |i| |a| |$|) (PROG (|r|) (RETURN (SEQ (LETT |r| |i| |LSAGG-;reduce;MA3S;17|) (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL |r| |a| (QREFELT |$| 51))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |r| (SPADCALL |r| (SPADCALL |x| (QREFELT |$| 18)) |f|) |LSAGG-;reduce;MA3S;17|) (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reduce;MA3S;17|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |r|))))) 
-
-(DEFUN |LSAGG-;new;NniSA;18| (|n| |s| |$|) (PROG (|k| |l|) (RETURN (SEQ (LETT |l| (SPADCALL (QREFELT |$| 12)) |LSAGG-;new;NniSA;18|) (SEQ (LETT |k| 1 |LSAGG-;new;NniSA;18|) G190 (COND ((QSGREATERP |k| |n|) (GO G191))) (SEQ (EXIT (LETT |l| (SPADCALL |s| |l| (QREFELT |$| 13)) |LSAGG-;new;NniSA;18|))) (LETT |k| (QSADD1 |k|) |LSAGG-;new;NniSA;18|) (GO G190) G191 (EXIT NIL)) (EXIT |l|))))) 
-
-(DEFUN |LSAGG-;map;M3A;19| (|f| |x| |y| |$|) (PROG (|z|) (RETURN (SEQ (LETT |z| (SPADCALL (QREFELT |$| 12)) |LSAGG-;map;M3A;19|) (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL |y| (QREFELT |$| 16))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |z| (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) (SPADCALL |y| (QREFELT |$| 18)) |f|) |z| (QREFELT |$| 13)) |LSAGG-;map;M3A;19|) (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;map;M3A;19|) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;map;M3A;19|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (SPADCALL |z| (QREFELT |$| 47))))))) 
-
-(DEFUN |LSAGG-;reverse!;2A;20| (|x| |$|) (PROG (|z| |y|) (RETURN (SEQ (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL (LETT |y| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reverse!;2A;20|) (QREFELT |$| 16))) |x|) ((QUOTE T) (SEQ (SPADCALL |x| (SPADCALL (QREFELT |$| 12)) (QREFELT |$| 25)) (SEQ G190 (COND ((NULL (COND ((SPADCALL |y| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;reverse!;2A;20|) (SPADCALL |y| |x| (QREFELT |$| 25)) (LETT |x| |y| |LSAGG-;reverse!;2A;20|) (EXIT (LETT |y| |z| |LSAGG-;reverse!;2A;20|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |x|)))))))) 
-
-(DEFUN |LSAGG-;copy;2A;21| (|x| |$|) (PROG (|k| |y|) (RETURN (SEQ (LETT |y| (SPADCALL (QREFELT |$| 12)) |LSAGG-;copy;2A;21|) (SEQ (LETT |k| 0 |LSAGG-;copy;2A;21|) G190 (COND ((NULL (COND ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (COND ((EQL |k| 1000) (COND ((SPADCALL |x| (QREFELT |$| 56)) (EXIT (|error| "cyclic list")))))) (LETT |y| (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |y| (QREFELT |$| 13)) |LSAGG-;copy;2A;21|) (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;copy;2A;21|))) (LETT |k| (QSADD1 |k|) |LSAGG-;copy;2A;21|) (GO G190) G191 (EXIT NIL)) (EXIT (SPADCALL |y| (QREFELT |$| 47))))))) 
-
-(DEFUN |LSAGG-;copyInto!;2AIA;22| (|y| |x| |s| |$|) (PROG (|m| #1=#:G87636 |z|) (RETURN (SEQ (LETT |m| (SPADCALL |y| (QREFELT |$| 31)) |LSAGG-;copyInto!;2AIA;22|) (EXIT (COND ((|<| |s| |m|) (|error| "index out of range")) ((QUOTE T) (SEQ (LETT |z| (SPADCALL |y| (PROG1 (LETT #1# (|-| |s| |m|) |LSAGG-;copyInto!;2AIA;22|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32)) |LSAGG-;copyInto!;2AIA;22|) (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |z| (QREFELT |$| 16)) (SPADCALL |x| (QREFELT |$| 16))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (SPADCALL |z| (SPADCALL |x| (QREFELT |$| 18)) (QREFELT |$| 58)) (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;copyInto!;2AIA;22|) (EXIT (LETT |z| (SPADCALL |z| (QREFELT |$| 17)) |LSAGG-;copyInto!;2AIA;22|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |y|))))))))) 
-
-(DEFUN |LSAGG-;position;SA2I;23| (|w| |x| |s| |$|) (PROG (|m| #1=#:G87644 |k|) (RETURN (SEQ (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;position;SA2I;23|) (EXIT (COND ((|<| |s| |m|) (|error| "index out of range")) ((QUOTE T) (SEQ (LETT |x| (SPADCALL |x| (PROG1 (LETT #1# (|-| |s| |m|) |LSAGG-;position;SA2I;23|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 32)) |LSAGG-;position;SA2I;23|) (SEQ (LETT |k| |s| |LSAGG-;position;SA2I;23|) G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL |w| (SPADCALL |x| (QREFELT |$| 18)) (QREFELT |$| 51))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;position;SA2I;23|))) (LETT |k| (|+| |k| 1) |LSAGG-;position;SA2I;23|) (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) (|-| (SPADCALL |x| (QREFELT |$| 31)) 1)) ((QUOTE T) |k|))))))))))) 
-
-(DEFUN |LSAGG-;removeDuplicates!;2A;24| (|l| |$|) (PROG (|p|) (RETURN (SEQ (LETT |p| |l| |LSAGG-;removeDuplicates!;2A;24|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |p| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |p| (SPADCALL |p| (SPADCALL (CONS (FUNCTION |LSAGG-;removeDuplicates!;2A;24!0|) (VECTOR |$| |p|)) (SPADCALL |p| (QREFELT |$| 17)) (QREFELT |$| 61)) (QREFELT |$| 25)) |LSAGG-;removeDuplicates!;2A;24|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |l|))))) 
-
-(DEFUN |LSAGG-;removeDuplicates!;2A;24!0| (|#1| |$$|) (PROG (|$|) (LETT |$| (QREFELT |$$| 0) |LSAGG-;removeDuplicates!;2A;24|) (RETURN (PROGN (SPADCALL |#1| (SPADCALL (QREFELT |$$| 1) (QREFELT |$| 18)) (QREFELT |$| 51)))))) 
-
-(DEFUN |LSAGG-;<;2AB;25| (|x| |y| |$|) (PROG (#1=#:G87662) (RETURN (SEQ (EXIT (SEQ (SEQ G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL |y| (QREFELT |$| 16))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((NULL (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) (SPADCALL |y| (QREFELT |$| 18)) (QREFELT |$| 51))) (PROGN (LETT #1# (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) (SPADCALL |y| (QREFELT |$| 18)) (QREFELT |$| 63)) |LSAGG-;<;2AB;25|) (GO #1#))) ((QUOTE T) (SEQ (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;<;2AB;25|) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;<;2AB;25|))))))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 16)) (COND ((SPADCALL |y| (QREFELT |$| 16)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) ((QUOTE T) (QUOTE NIL)))))) #1# (EXIT #1#))))) 
-
-(DEFUN |ListAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|ListAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |ListAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 66) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|HasCategory| |#2| (QUOTE (|SetCategory|))) (QSETREFV |$| 52 (CONS (|dispatchFunction| |LSAGG-;reduce;MA3S;17|) |$|)))) (COND ((|HasCategory| |#2| (QUOTE (|SetCategory|))) (PROGN (QSETREFV |$| 60 (CONS (|dispatchFunction| |LSAGG-;position;SA2I;23|) |$|)) (QSETREFV |$| 62 (CONS (|dispatchFunction| |LSAGG-;removeDuplicates!;2A;24|) |$|))))) (COND ((|HasCategory| |#2| (QUOTE (|OrderedSet|))) (QSETREFV |$| 64 (CONS (|dispatchFunction| |LSAGG-;<;2AB;25|) |$|)))) |$|)))) 
-
-(MAKEPROP (QUOTE |ListAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|NonNegativeInteger|) (0 . |#|) (|Mapping| 15 7 7) |LSAGG-;sort!;M2A;1| (5 . |empty|) (9 . |concat|) |LSAGG-;list;SA;2| (|Boolean|) (15 . |empty?|) (20 . |rest|) (25 . |first|) (|Mapping| 7 7 7) (30 . |reduce|) |LSAGG-;reduce;MAS;3| (37 . |copy|) (42 . |merge!|) |LSAGG-;merge;M3A;4| (49 . |setrest!|) (|Mapping| 15 7) |LSAGG-;select!;M2A;5| (55 . |eq?|) |LSAGG-;merge!;M3A;6| (|Integer|) (61 . |minIndex|) (66 . |rest|) |LSAGG-;insert!;SAIA;7| (72 . |concat!|) |LSAGG-;insert!;2AIA;8| |LSAGG-;remove!;M2A;9| |LSAGG-;delete!;AIA;10| (|UniversalSegment| 30) (78 . |lo|) (83 . |hasHi|) (88 . |hi|) (93 . |maxIndex|) |LSAGG-;delete!;AUsA;11| (|Union| 7 (QUOTE "failed")) |LSAGG-;find;MAU;12| |LSAGG-;position;MAI;13| (98 . |reverse!|) (103 . |split!|) |LSAGG-;sorted?;MAB;15| |LSAGG-;reduce;MA2S;16| (109 . |=|) (115 . |reduce|) |LSAGG-;new;NniSA;18| |LSAGG-;map;M3A;1!
9| |LSAGG-;reverse!;2A;20| (123 . |cyclic?|) |LSAGG-;copy;2A;21| (128 . |setfirst!|) |LSAGG-;copyInto!;2AIA;22| (134 . |position|) (141 . |remove!|) (147 . |removeDuplicates!|) (152 . |<|) (158 . |<|) (|Mapping| 7 7))) (QUOTE #(|sorted?| 164 |sort!| 170 |select!| 176 |reverse!| 182 |removeDuplicates!| 187 |remove!| 192 |reduce| 198 |position| 219 |new| 232 |merge!| 238 |merge| 245 |map| 252 |list| 259 |insert!| 264 |find| 278 |delete!| 284 |copyInto!| 296 |copy| 303 |<| 308)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 64 (QUOTE (1 6 8 0 9 0 6 0 12 2 6 0 7 0 13 1 6 15 0 16 1 6 0 0 17 1 6 7 0 18 3 6 7 19 0 7 20 1 6 0 0 22 3 6 0 10 0 0 23 2 6 0 0 0 25 2 6 15 0 0 28 1 6 30 0 31 2 6 0 0 8 32 2 6 0 0 0 34 1 38 30 0 39 1 38 15 0 40 1 38 30 0 41 1 6 30 0 42 1 6 0 0 47 2 6 0 0 30 48 2 7 15 0 0 51 4 0 7 19 0 7 7 52 1 6 15 0 56 2 6 7 0 7 58 3 0 30 7 0 30 60 2 6 0 26 0 61 1 0 0 0 62 2 7 15 0 0 63 2 0 15 0 0 64 2 0 15 10 0!
 49 2 0 0 10 0 11 2 0 0 26 0 27 1 0 0 0 55 1 0 0 0 62 2 0 0 2!
6 0 36 3 0 7 19 0 7 50 4 0 7 19 0 7 7 52 2 0 7 19 0 21 2 0 30 26 0 46 3 0 30 7 0 30 60 2 0 0 8 7 53 3 0 0 10 0 0 29 3 0 0 10 0 0 24 3 0 0 19 0 0 54 1 0 0 7 14 3 0 0 7 0 30 33 3 0 0 0 0 30 35 2 0 44 26 0 45 2 0 0 0 38 43 2 0 0 0 30 37 3 0 0 0 0 30 59 1 0 0 0 57 2 0 15 0 0 64)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |LSAGG-;sort!;M2A;1| (|f| |l| |$|)
+ (|LSAGG-;mergeSort| |f| |l| (SPADCALL |l| (QREFELT |$| 9)) |$|)) 
+
+(DEFUN |LSAGG-;list;SA;2| (|x| |$|)
+ (SPADCALL |x| (SPADCALL (QREFELT |$| 12)) (QREFELT |$| 13))) 
+
+(DEFUN |LSAGG-;reduce;MAS;3| (|f| |x| |$|)
+ (COND
+  ((SPADCALL |x| (QREFELT |$| 16))
+    (|error| "reducing over an empty list needs the 3 argument form"))
+  ((QUOTE T) 
+    (SPADCALL |f|
+     (SPADCALL |x| (QREFELT |$| 17))
+     (SPADCALL |x| (QREFELT |$| 18))
+     (QREFELT |$| 20))))) 
+
+(DEFUN |LSAGG-;merge;M3A;4| (|f| |p| |q| |$|)
+ (SPADCALL |f|
+  (SPADCALL |p| (QREFELT |$| 22))
+  (SPADCALL |q| (QREFELT |$| 22))
+  (QREFELT |$| 23))) 
+
+(DEFUN |LSAGG-;select!;M2A;5| (|f| |x| |$|)
+ (PROG (|y| |z|)
+  (RETURN
+   (SEQ
+    (SEQ G190
+     (COND
+      ((NULL
+        (COND
+         ((OR
+           (SPADCALL |x| (QREFELT |$| 16))
+           (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|))
+          (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (EXIT
+       (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT
+     (COND
+      ((SPADCALL |x| (QREFELT |$| 16)) |x|)
+      ((QUOTE T)
+       (SEQ 
+        (LETT |y| |x| |LSAGG-;select!;M2A;5|)
+        (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|)
+        (SEQ 
+         G190
+         (COND
+          ((NULL
+            (COND
+             ((SPADCALL |z| (QREFELT |$| 16)) (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ
+          (EXIT
+           (COND
+            ((SPADCALL (SPADCALL |z| (QREFELT |$| 18)) |f|)
+              (SEQ
+               (LETT |y| |z| |LSAGG-;select!;M2A;5|)
+               (EXIT
+                (LETT |z|
+                 (SPADCALL |z| (QREFELT |$| 17))
+                 |LSAGG-;select!;M2A;5|))))
+            ((QUOTE T)
+             (SEQ
+              (LETT |z| (SPADCALL |z| (QREFELT |$| 17)) |LSAGG-;select!;M2A;5|)
+              (EXIT (SPADCALL |y| |z| (QREFELT |$| 25))))))))
+         NIL
+         (GO G190)
+         G191
+         (EXIT NIL))
+        (EXIT |x|))))))))) 
+
+(DEFUN |LSAGG-;merge!;M3A;6| (|f| |p| |q| |$|)
+ (PROG (|r| |t|)
+  (RETURN
+   (SEQ
+    (COND
+     ((SPADCALL |p| (QREFELT |$| 16)) |q|)
+     ((SPADCALL |q| (QREFELT |$| 16)) |p|)
+     ((SPADCALL |p| |q| (QREFELT |$| 28))
+       (|error| "cannot merge a list into itself"))
+     ((QUOTE T)
+      (SEQ
+       (COND 
+        ((SPADCALL
+          (SPADCALL |p| (QREFELT |$| 18))
+          (SPADCALL |q| (QREFELT |$| 18))
+          |f|)
+         (SEQ
+          (LETT |r| (LETT |t| |p| |LSAGG-;merge!;M3A;6|) |LSAGG-;merge!;M3A;6|)
+          (EXIT
+           (LETT |p| (SPADCALL |p| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|))))
+        ((QUOTE T)
+         (SEQ
+          (LETT |r| (LETT |t| |q| |LSAGG-;merge!;M3A;6|) |LSAGG-;merge!;M3A;6|)
+          (EXIT
+           (LETT |q| (SPADCALL |q| (QREFELT |$| 17)) |LSAGG-;merge!;M3A;6|)))))
+       (SEQ 
+        G190 
+        (COND
+         ((NULL
+            (COND
+             ((OR 
+               (SPADCALL |p| (QREFELT |$| 16))
+               (SPADCALL |q| (QREFELT |$| 16)))
+              (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+          (GO G191)))
+        (SEQ
+         (EXIT
+          (COND
+           ((SPADCALL
+              (SPADCALL |p| (QREFELT |$| 18))
+              (SPADCALL |q| (QREFELT |$| 18))
+              |f|)
+            (SEQ
+             (SPADCALL |t| |p| (QREFELT |$| 25))
+             (LETT |t| |p| |LSAGG-;merge!;M3A;6|)
+             (EXIT
+              (LETT |p|
+               (SPADCALL |p| (QREFELT |$| 17))
+               |LSAGG-;merge!;M3A;6|))))
+           ((QUOTE T)
+            (SEQ
+             (SPADCALL |t| |q| (QREFELT |$| 25))
+             (LETT |t| |q| |LSAGG-;merge!;M3A;6|)
+             (EXIT
+              (LETT |q|
+               (SPADCALL |q| (QREFELT |$| 17))
+               |LSAGG-;merge!;M3A;6|)))))))
+        NIL
+        (GO G190)
+        G191
+        (EXIT NIL))
+       (SPADCALL |t|
+        (COND
+         ((SPADCALL |p| (QREFELT |$| 16)) |q|)
+         ((QUOTE T) |p|))
+        (QREFELT |$| 25))
+       (EXIT |r|)))))))) 
+
+(DEFUN |LSAGG-;insert!;SAIA;7| (|s| |x| |i| |$|)
+ (PROG (|m| #1=#:G87547 |y| |z|)
+  (RETURN
+   (SEQ
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;insert!;SAIA;7|)
+    (EXIT
+     (COND
+      ((|<| |i| |m|) (|error| "index out of range"))
+      ((EQL |i| |m|) (SPADCALL |s| |x| (QREFELT |$| 13)))
+      ((QUOTE T)
+       (SEQ
+        (LETT |y|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;insert!;SAIA;7|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 32))
+         |LSAGG-;insert!;SAIA;7|)
+        (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;insert!;SAIA;7|)
+        (SPADCALL |y| (SPADCALL |s| |z| (QREFELT |$| 13)) (QREFELT |$| 25))
+        (EXIT |x|))))))))) 
+
+(DEFUN |LSAGG-;insert!;2AIA;8| (|w| |x| |i| |$|)
+ (PROG (|m| #1=#:G87551 |y| |z|)
+  (RETURN
+   (SEQ
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;insert!;2AIA;8|)
+    (EXIT
+     (COND
+      ((|<| |i| |m|) (|error| "index out of range"))
+      ((EQL |i| |m|) (SPADCALL |w| |x| (QREFELT |$| 34)))
+      ((QUOTE T)
+       (SEQ
+        (LETT |y|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;insert!;2AIA;8|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 32))
+         |LSAGG-;insert!;2AIA;8|)
+        (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;insert!;2AIA;8|)
+        (SPADCALL |y| |w| (QREFELT |$| 25))
+        (SPADCALL |y| |z| (QREFELT |$| 34))
+        (EXIT |x|))))))))) 
+
+(DEFUN |LSAGG-;remove!;M2A;9| (|f| |x| |$|)
+ (PROG (|p| |q|)
+  (RETURN
+   (SEQ
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+        (COND
+         ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL))
+         ((QUOTE T) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|))))
+       (GO G191)))
+     (SEQ
+      (EXIT
+       (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;remove!;M2A;9|)))
+      NIL
+      (GO G190)
+      G191
+      (EXIT NIL))
+    (EXIT
+     (COND
+      ((SPADCALL |x| (QREFELT |$| 16)) |x|)
+      ((QUOTE T)
+       (SEQ
+        (LETT |p| |x| |LSAGG-;remove!;M2A;9|)
+        (LETT |q| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;remove!;M2A;9|)
+        (SEQ
+         G190
+         (COND
+          ((NULL
+             (COND 
+              ((SPADCALL |q| (QREFELT |$| 16)) (QUOTE NIL))
+              ((QUOTE T) (QUOTE T))))
+            (GO G191)))
+         (SEQ
+          (EXIT
+           (COND
+            ((SPADCALL (SPADCALL |q| (QREFELT |$| 18)) |f|)
+              (LETT |q|
+               (SPADCALL |p| (SPADCALL |q| (QREFELT |$| 17)) (QREFELT |$| 25))
+               |LSAGG-;remove!;M2A;9|))
+            ((QUOTE T)
+              (SEQ 
+               (LETT |p| |q| |LSAGG-;remove!;M2A;9|)
+               (EXIT
+                (LETT |q|
+                  (SPADCALL |q| (QREFELT |$| 17))
+                  |LSAGG-;remove!;M2A;9|)))))))
+         NIL
+         (GO G190)
+         G191
+         (EXIT NIL))
+        (EXIT |x|))))))))) 
+
+(DEFUN |LSAGG-;delete!;AIA;10| (|x| |i| |$|) 
+ (PROG (|m| #1=#:G87564 |y|)
+  (RETURN
+   (SEQ
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;delete!;AIA;10|)
+    (EXIT
+     (COND
+      ((|<| |i| |m|) (|error| "index out of range"))
+      ((EQL |i| |m|) (SPADCALL |x| (QREFELT |$| 17)))
+      ((QUOTE T)
+       (SEQ
+        (LETT |y|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# (|-| (|-| |i| 1) |m|) |LSAGG-;delete!;AIA;10|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 32))
+         |LSAGG-;delete!;AIA;10|)
+        (SPADCALL |y| (SPADCALL |y| 2 (QREFELT |$| 32)) (QREFELT |$| 25))
+        (EXIT |x|))))))))) 
+
+(DEFUN |LSAGG-;delete!;AUsA;11| (|x| |i| |$|)
+ (PROG (|l| |m| |h| #1=#:G87569 #2=#:G87570 |t| #3=#:G87571)
+  (RETURN
+   (SEQ
+    (LETT |l| (SPADCALL |i| (QREFELT |$| 39)) |LSAGG-;delete!;AUsA;11|)
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;delete!;AUsA;11|)
+    (EXIT
+     (COND
+      ((|<| |l| |m|) (|error| "index out of range"))
+      ((QUOTE T)
+       (SEQ
+        (LETT |h|
+         (COND
+          ((SPADCALL |i| (QREFELT |$| 40)) (SPADCALL |i| (QREFELT |$| 41)))
+          ((QUOTE T) (SPADCALL |x| (QREFELT |$| 42))))
+         |LSAGG-;delete!;AUsA;11|)
+        (EXIT
+         (COND
+          ((|<| |h| |l|) |x|)
+          ((EQL |l| |m|)
+           (SPADCALL |x|
+            (PROG1
+             (LETT #1# (|-| (|+| |h| 1) |m|) |LSAGG-;delete!;AUsA;11|)
+             (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+            (QREFELT |$| 32)))
+          ((QUOTE T)
+           (SEQ
+            (LETT |t|
+             (SPADCALL |x|
+              (PROG1
+               (LETT #2# (|-| (|-| |l| 1) |m|) |LSAGG-;delete!;AUsA;11|)
+               (|check-subtype| (|>=| #2# 0)
+                 (QUOTE (|NonNegativeInteger|)) #2#))
+              (QREFELT |$| 32))
+             |LSAGG-;delete!;AUsA;11|)
+            (SPADCALL |t|
+             (SPADCALL |t|
+              (PROG1
+               (LETT #3# (|+| (|-| |h| |l|) 2) |LSAGG-;delete!;AUsA;11|)
+               (|check-subtype| (|>=| #3# 0)
+                (QUOTE (|NonNegativeInteger|)) #3#))
+              (QREFELT |$| 32))
+             (QREFELT |$| 25))
+            (EXIT |x|))))))))))))) 
+
+(DEFUN |LSAGG-;find;MAU;12| (|f| |x| |$|)
+ (SEQ
+  (SEQ
+   G190 
+   (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191)))
+   (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;find;MAU;12|)))
+   NIL
+   (GO G190)
+   G191
+   (EXIT NIL))
+  (EXIT
+   (COND
+    ((SPADCALL |x| (QREFELT |$| 16)) (CONS 1 "failed"))
+    ((QUOTE T) (CONS 0 (SPADCALL |x| (QREFELT |$| 18)))))))) 
+
+(DEFUN |LSAGG-;position;MAI;13| (|f| |x| |$|)
+ (PROG (|k|)
+  (RETURN
+   (SEQ 
+    (SEQ
+     (LETT |k| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;position;MAI;13|)
+     G190
+     (COND
+      ((NULL
+        (COND
+         ((OR
+           (SPADCALL |x| (QREFELT |$| 16))
+           (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |f|))
+          (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (EXIT
+       (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;position;MAI;13|)))
+     (LETT |k| (|+| |k| 1) |LSAGG-;position;MAI;13|)
+     (GO G190)
+     G191 
+     (EXIT NIL))
+    (EXIT
+     (COND
+      ((SPADCALL |x| (QREFELT |$| 16)) (|-| (SPADCALL |x| (QREFELT |$| 31)) 1))
+      ((QUOTE T) |k|))))))) 
+
+(DEFUN |LSAGG-;mergeSort| (|f| |p| |n| |$|)
+ (PROG (#1=#:G87593 |l| |q|)
+  (RETURN
+   (SEQ
+    (COND
+     ((EQL |n| 2)
+      (COND
+       ((SPADCALL 
+         (SPADCALL (SPADCALL |p| (QREFELT |$| 17)) (QREFELT |$| 18))
+         (SPADCALL |p| (QREFELT |$| 18)) |f|)
+        (LETT |p| (SPADCALL |p| (QREFELT |$| 47)) |LSAGG-;mergeSort|)))))
+    (EXIT
+     (COND
+      ((|<| |n| 3) |p|)
+      ((QUOTE T)
+       (SEQ
+        (LETT |l|
+         (PROG1
+          (LETT #1# (QUOTIENT2 |n| 2) |LSAGG-;mergeSort|)
+          (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+         |LSAGG-;mergeSort|)
+        (LETT |q| (SPADCALL |p| |l| (QREFELT |$| 48)) |LSAGG-;mergeSort|)
+        (LETT |p| (|LSAGG-;mergeSort| |f| |p| |l| |$|) |LSAGG-;mergeSort|)
+        (LETT |q|
+          (|LSAGG-;mergeSort| |f| |q| (|-| |n| |l|) |$|)
+          |LSAGG-;mergeSort|)
+        (EXIT (SPADCALL |f| |p| |q| (QREFELT |$| 23))))))))))) 
+
+(DEFUN |LSAGG-;sorted?;MAB;15| (|f| |l| |$|)
+ (PROG (#1=#:G87603 |p|)
+  (RETURN
+   (SEQ
+    (EXIT
+     (COND
+      ((SPADCALL |l| (QREFELT |$| 16)) (QUOTE T))
+      ((QUOTE T)
+       (SEQ
+        (LETT |p| (SPADCALL |l| (QREFELT |$| 17)) |LSAGG-;sorted?;MAB;15|)
+        (SEQ 
+         G190 
+         (COND 
+          ((NULL
+            (COND
+             ((SPADCALL |p| (QREFELT |$| 16)) (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ
+          (EXIT
+           (COND
+            ((NULL
+              (SPADCALL
+               (SPADCALL |l| (QREFELT |$| 18))
+               (SPADCALL |p| (QREFELT |$| 18))
+               |f|))
+              (PROGN (LETT #1# (QUOTE NIL) |LSAGG-;sorted?;MAB;15|) (GO #1#)))
+            ((QUOTE T)
+             (LETT |p|
+              (SPADCALL
+               (LETT |l| |p| |LSAGG-;sorted?;MAB;15|)
+               (QREFELT |$| 17))
+              |LSAGG-;sorted?;MAB;15|)))))
+          NIL 
+          (GO G190) 
+          G191 
+          (EXIT NIL))
+        (EXIT (QUOTE T))))))
+    #1# 
+    (EXIT #1#))))) 
+
+(DEFUN |LSAGG-;reduce;MA2S;16| (|f| |x| |i| |$|)
+ (PROG (|r|)
+  (RETURN
+   (SEQ
+    (LETT |r| |i| |LSAGG-;reduce;MA2S;16|)
+    (SEQ
+     G190 
+     (COND
+      ((NULL
+        (COND
+         ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (LETT |r|
+       (SPADCALL |r| (SPADCALL |x| (QREFELT |$| 18)) |f|)
+       |LSAGG-;reduce;MA2S;16|)
+      (EXIT
+       (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reduce;MA2S;16|)))
+     NIL 
+     (GO G190) 
+     G191 
+     (EXIT NIL))
+    (EXIT |r|))))) 
+
+(DEFUN |LSAGG-;reduce;MA3S;17| (|f| |x| |i| |a| |$|)
+ (PROG (|r|)
+  (RETURN
+   (SEQ 
+    (LETT |r| |i| |LSAGG-;reduce;MA3S;17|)
+    (SEQ
+     G190
+     (COND
+      ((NULL
+        (COND
+         ((OR
+            (SPADCALL |x| (QREFELT |$| 16))
+            (SPADCALL |r| |a| (QREFELT |$| 51)))
+           (QUOTE NIL))
+         ((QUOTE T) (QUOTE T)))) (GO G191)))
+     (SEQ
+      (LETT |r|
+       (SPADCALL |r| (SPADCALL |x| (QREFELT |$| 18)) |f|)
+       |LSAGG-;reduce;MA3S;17|)
+      (EXIT
+       (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reduce;MA3S;17|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |r|))))) 
+
+(DEFUN |LSAGG-;new;NniSA;18| (|n| |s| |$|)
+ (PROG (|k| |l|)
+  (RETURN
+   (SEQ 
+    (LETT |l| (SPADCALL (QREFELT |$| 12)) |LSAGG-;new;NniSA;18|)
+    (SEQ 
+     (LETT |k| 1 |LSAGG-;new;NniSA;18|)
+     G190 
+     (COND ((QSGREATERP |k| |n|) (GO G191)))
+     (SEQ
+      (EXIT
+       (LETT |l| (SPADCALL |s| |l| (QREFELT |$| 13)) |LSAGG-;new;NniSA;18|)))
+     (LETT |k| (QSADD1 |k|) |LSAGG-;new;NniSA;18|)
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |l|))))) 
+
+(DEFUN |LSAGG-;map;M3A;19| (|f| |x| |y| |$|) 
+ (PROG (|z|) 
+  (RETURN 
+   (SEQ 
+    (LETT |z| (SPADCALL (QREFELT |$| 12)) |LSAGG-;map;M3A;19|)
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+        (COND
+         ((OR (SPADCALL |x| (QREFELT |$| 16)) (SPADCALL |y| (QREFELT |$| 16)))
+           (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ 
+      (LETT |z|
+       (SPADCALL
+        (SPADCALL
+          (SPADCALL |x| (QREFELT |$| 18))
+          (SPADCALL |y| (QREFELT |$| 18))
+          |f|)
+         |z| 
+         (QREFELT |$| 13))
+       |LSAGG-;map;M3A;19|)
+      (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;map;M3A;19|)
+      (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;map;M3A;19|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT (SPADCALL |z| (QREFELT |$| 47))))))) 
+
+(DEFUN |LSAGG-;reverse!;2A;20| (|x| |$|)
+ (PROG (|z| |y|)
+  (RETURN
+   (SEQ
+    (COND
+     ((OR
+       (SPADCALL |x| (QREFELT |$| 16))
+       (SPADCALL
+        (LETT |y| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;reverse!;2A;20|)
+        (QREFELT |$| 16)))
+      |x|)
+     ((QUOTE T)
+      (SEQ
+       (SPADCALL |x| (SPADCALL (QREFELT |$| 12)) (QREFELT |$| 25))
+       (SEQ 
+        G190 
+        (COND
+         ((NULL
+           (COND
+            ((SPADCALL |y| (QREFELT |$| 16)) (QUOTE NIL))
+            ((QUOTE T) (QUOTE T))))
+          (GO G191)))
+        (SEQ
+         (LETT |z| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;reverse!;2A;20|)
+         (SPADCALL |y| |x| (QREFELT |$| 25))
+         (LETT |x| |y| |LSAGG-;reverse!;2A;20|)
+         (EXIT (LETT |y| |z| |LSAGG-;reverse!;2A;20|)))
+         NIL
+         (GO G190)
+         G191
+         (EXIT NIL))
+       (EXIT |x|)))))))) 
+
+(DEFUN |LSAGG-;copy;2A;21| (|x| |$|)
+ (PROG (|k| |y|)
+  (RETURN
+   (SEQ
+    (LETT |y| (SPADCALL (QREFELT |$| 12)) |LSAGG-;copy;2A;21|)
+    (SEQ
+     (LETT |k| 0 |LSAGG-;copy;2A;21|)
+     G190
+     (COND
+      ((NULL
+        (COND
+         ((SPADCALL |x| (QREFELT |$| 16)) (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (COND
+       ((EQL |k| 1000)
+         (COND
+           ((SPADCALL |x| (QREFELT |$| 56)) (EXIT (|error| "cyclic list"))))))
+      (LETT |y|
+       (SPADCALL (SPADCALL |x| (QREFELT |$| 18)) |y| (QREFELT |$| 13))
+       |LSAGG-;copy;2A;21|)
+      (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;copy;2A;21|)))
+     (LETT |k| (QSADD1 |k|) |LSAGG-;copy;2A;21|)
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT (SPADCALL |y| (QREFELT |$| 47))))))) 
+
+(DEFUN |LSAGG-;copyInto!;2AIA;22| (|y| |x| |s| |$|)
+ (PROG (|m| #1=#:G87636 |z|)
+  (RETURN 
+   (SEQ 
+    (LETT |m| (SPADCALL |y| (QREFELT |$| 31)) |LSAGG-;copyInto!;2AIA;22|)
+    (EXIT
+     (COND
+      ((|<| |s| |m|) (|error| "index out of range"))
+      ((QUOTE T)
+       (SEQ
+        (LETT |z|
+         (SPADCALL |y|
+          (PROG1
+           (LETT #1# (|-| |s| |m|) |LSAGG-;copyInto!;2AIA;22|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 32))
+         |LSAGG-;copyInto!;2AIA;22|)
+        (SEQ 
+         G190 
+         (COND
+          ((NULL
+            (COND
+             ((OR
+               (SPADCALL |z| (QREFELT |$| 16))
+               (SPADCALL |x| (QREFELT |$| 16)))
+              (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ 
+          (SPADCALL |z| (SPADCALL |x| (QREFELT |$| 18)) (QREFELT |$| 58))
+          (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;copyInto!;2AIA;22|)
+          (EXIT 
+           (LETT |z|
+            (SPADCALL |z| (QREFELT |$| 17))
+            |LSAGG-;copyInto!;2AIA;22|)))
+         NIL
+         (GO G190)
+         G191
+         (EXIT NIL))
+        (EXIT |y|))))))))) 
+
+(DEFUN |LSAGG-;position;SA2I;23| (|w| |x| |s| |$|)
+ (PROG (|m| #1=#:G87644 |k|)
+  (RETURN
+   (SEQ
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 31)) |LSAGG-;position;SA2I;23|)
+    (EXIT
+     (COND
+      ((|<| |s| |m|) (|error| "index out of range"))
+      ((QUOTE T)
+       (SEQ
+        (LETT |x|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# (|-| |s| |m|) |LSAGG-;position;SA2I;23|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 32))
+         |LSAGG-;position;SA2I;23|)
+        (SEQ
+         (LETT |k| |s| |LSAGG-;position;SA2I;23|)
+         G190
+         (COND
+          ((NULL
+            (COND
+             ((OR
+               (SPADCALL |x| (QREFELT |$| 16))
+               (SPADCALL |w| (SPADCALL |x| (QREFELT |$| 18)) (QREFELT |$| 51)))
+              (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ 
+          (EXIT 
+           (LETT |x|
+            (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;position;SA2I;23|)))
+         (LETT |k| (|+| |k| 1) |LSAGG-;position;SA2I;23|)
+         (GO G190) 
+         G191 
+         (EXIT NIL))
+        (EXIT
+         (COND
+          ((SPADCALL |x| (QREFELT |$| 16))
+            (|-| (SPADCALL |x| (QREFELT |$| 31)) 1))
+          ((QUOTE T) |k|))))))))))) 
+
+(DEFUN |LSAGG-;removeDuplicates!;2A;24| (|l| |$|)
+ (PROG (|p|)
+  (RETURN
+   (SEQ
+    (LETT |p| |l| |LSAGG-;removeDuplicates!;2A;24|)
+    (SEQ
+     G190
+     (COND
+      ((NULL
+        (COND 
+         ((SPADCALL |p| (QREFELT |$| 16)) (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (EXIT
+       (LETT |p|
+        (SPADCALL |p|
+         (SPADCALL
+          (CONS
+           (FUNCTION |LSAGG-;removeDuplicates!;2A;24!0|)
+           (VECTOR |$| |p|))
+          (SPADCALL |p| (QREFELT |$| 17))
+          (QREFELT |$| 61))
+         (QREFELT |$| 25))
+        |LSAGG-;removeDuplicates!;2A;24|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |l|))))) 
+
+(DEFUN |LSAGG-;removeDuplicates!;2A;24!0| (|#1| |$$|)
+ (PROG (|$|)
+  (LETT |$| (QREFELT |$$| 0) |LSAGG-;removeDuplicates!;2A;24|)
+  (RETURN
+   (PROGN
+    (SPADCALL |#1|
+     (SPADCALL (QREFELT |$$| 1) (QREFELT |$| 18))
+     (QREFELT |$| 51)))))) 
+
+(DEFUN |LSAGG-;<;2AB;25| (|x| |y| |$|)
+ (PROG (#1=#:G87662)
+  (RETURN
+   (SEQ
+    (EXIT
+     (SEQ
+      (SEQ 
+       G190 
+       (COND
+        ((NULL
+          (COND
+           ((OR
+              (SPADCALL |x| (QREFELT |$| 16))
+              (SPADCALL |y| (QREFELT |$| 16)))
+             (QUOTE NIL))
+           ((QUOTE T) (QUOTE T))))
+         (GO G191)))
+       (SEQ 
+        (EXIT 
+         (COND 
+          ((NULL 
+            (SPADCALL 
+             (SPADCALL |x| (QREFELT |$| 18))
+             (SPADCALL |y| (QREFELT |$| 18))
+             (QREFELT |$| 51)))
+            (PROGN 
+             (LETT #1#
+               (SPADCALL
+                (SPADCALL |x| (QREFELT |$| 18))
+                (SPADCALL |y| (QREFELT |$| 18))
+               (QREFELT |$| 63))
+              |LSAGG-;<;2AB;25|)
+             (GO #1#)))
+          ((QUOTE T)
+           (SEQ 
+            (LETT |x| (SPADCALL |x| (QREFELT |$| 17)) |LSAGG-;<;2AB;25|)
+            (EXIT 
+             (LETT |y| (SPADCALL |y| (QREFELT |$| 17)) |LSAGG-;<;2AB;25|)))))))
+       NIL
+       (GO G190)
+       G191
+       (EXIT NIL))
+      (EXIT
+       (COND
+        ((SPADCALL |x| (QREFELT |$| 16))
+          (COND
+           ((SPADCALL |y| (QREFELT |$| 16)) (QUOTE NIL))
+           ((QUOTE T) (QUOTE T))))
+        ((QUOTE T) (QUOTE NIL))))))
+    #1# 
+    (EXIT #1#))))) 
+
+(DEFUN |ListAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|ListAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |ListAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 66) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+     ((|HasCategory| |#2| (QUOTE (|SetCategory|)))
+       (QSETREFV |$| 52
+         (CONS (|dispatchFunction| |LSAGG-;reduce;MA3S;17|) |$|))))
+    (COND
+     ((|HasCategory| |#2| (QUOTE (|SetCategory|)))
+       (PROGN
+        (QSETREFV |$| 60
+         (CONS (|dispatchFunction| |LSAGG-;position;SA2I;23|) |$|))
+        (QSETREFV |$| 62
+         (CONS (|dispatchFunction| |LSAGG-;removeDuplicates!;2A;24|) |$|)))))
+    (COND
+     ((|HasCategory| |#2| (QUOTE (|OrderedSet|)))
+       (QSETREFV |$| 64 (CONS (|dispatchFunction| |LSAGG-;<;2AB;25|) |$|))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |ListAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) 
+   (|NonNegativeInteger|) (0 . |#|) (|Mapping| 15 7 7) |LSAGG-;sort!;M2A;1| 
+   (5 . |empty|) (9 . |concat|) |LSAGG-;list;SA;2| (|Boolean|) 
+   (15 . |empty?|) (20 . |rest|) (25 . |first|) (|Mapping| 7 7 7) 
+   (30 . |reduce|) |LSAGG-;reduce;MAS;3| (37 . |copy|) (42 . |merge!|) 
+   |LSAGG-;merge;M3A;4| (49 . |setrest!|) (|Mapping| 15 7) 
+   |LSAGG-;select!;M2A;5| (55 . |eq?|) |LSAGG-;merge!;M3A;6| 
+   (|Integer|) (61 . |minIndex|) (66 . |rest|) |LSAGG-;insert!;SAIA;7| 
+   (72 . |concat!|) |LSAGG-;insert!;2AIA;8| |LSAGG-;remove!;M2A;9| 
+   |LSAGG-;delete!;AIA;10| (|UniversalSegment| 30) (78 . |lo|) 
+   (83 . |hasHi|) (88 . |hi|) (93 . |maxIndex|) |LSAGG-;delete!;AUsA;11| 
+   (|Union| 7 (QUOTE "failed")) |LSAGG-;find;MAU;12| 
+   |LSAGG-;position;MAI;13| (98 . |reverse!|) (103 . |split!|) 
+   |LSAGG-;sorted?;MAB;15| |LSAGG-;reduce;MA2S;16| (109 . |=|) 
+   (115 . |reduce|) |LSAGG-;new;NniSA;18| |LSAGG-;map;M3A;19| 
+   |LSAGG-;reverse!;2A;20| (123 . |cyclic?|) |LSAGG-;copy;2A;21| 
+   (128 . |setfirst!|) |LSAGG-;copyInto!;2AIA;22| (134 . |position|) 
+   (141 . |remove!|) (147 . |removeDuplicates!|) (152 . |<|) (158 . |<|) 
+   (|Mapping| 7 7)))
+  (QUOTE #(|sorted?| 164 |sort!| 170 |select!| 176 |reverse!| 182 
+    |removeDuplicates!| 187 |remove!| 192 |reduce| 198 |position| 219 
+    |new| 232 |merge!| 238 |merge| 245 |map| 252 |list| 259 |insert!| 
+    264 |find| 278 |delete!| 284 |copyInto!| 296 |copy| 303 |<| 308))
+   (QUOTE NIL)
+   (CONS 
+    (|makeByteWordVec2| 1 (QUOTE NIL))
+    (CONS 
+     (QUOTE #())
+     (CONS 
+      (QUOTE #())
+      (|makeByteWordVec2| 64 (QUOTE (1 6 8 0 9 0 6 0 12 2 6 0 7 0 13 1 6 
+       15 0 16 1 6 0 0 17 1 6 7 0 18 3 6 7 19 0 7 20 1 6 0 0 22 3 6 0 10 
+       0 0 23 2 6 0 0 0 25 2 6 15 0 0 28 1 6 30 0 31 2 6 0 0 8 32 2 6 0 0 
+       0 34 1 38 30 0 39 1 38 15 0 40 1 38 30 0 41 1 6 30 0 42 1 6 0 0 47 
+       2 6 0 0 30 48 2 7 15 0 0 51 4 0 7 19 0 7 7 52 1 6 15 0 56 2 6 7 0 
+       7 58 3 0 30 7 0 30 60 2 6 0 26 0 61 1 0 0 0 62 2 7 15 0 0 63 2 0 15 
+       0 0 64 2 0 15 10 0 49 2 0 0 10 0 11 2 0 0 26 0 27 1 0 0 0 55 1 0 0 
+       0 62 2 0 0 26 0 36 3 0 7 19 0 7 50 4 0 7 19 0 7 7 52 2 0 7 19 0 21 
+       2 0 30 26 0 46 3 0 30 7 0 30 60 2 0 0 8 7 53 3 0 0 10 0 0 29 3 0 0 
+       10 0 0 24 3 0 0 19 0 0 54 1 0 0 7 14 3 0 0 7 0 30 33 3 0 0 0 0 30 
+       35 2 0 44 26 0 45 2 0 0 0 38 43 2 0 0 0 30 37 3 0 0 0 0 30 59 1 0 
+       0 0 57 2 0 15 0 0 64))))))
+   (QUOTE |lookupComplete|))) 
 @
 \section{category MDAGG MultiDictionary}
 <<category MDAGG MultiDictionary>>=
@@ -4613,9 +6035,55 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |RecursiveAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |RecursiveAggregate| (#1=#:G84501) (LET (#2=#:G84502) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |RecursiveAggregate;AL|)) (CDR #2#)) (T (SETQ |RecursiveAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|RecursiveAggregate;| #1#))) |RecursiveAggregate;AL|)) #2#)))) 
-
-(DEFUN |RecursiveAggregate;| (|t#1|) (PROG (#1=#:G84500) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|RecursiveAggregate;CAT|) ((QUOTE T) (LETT |RecursiveAggregate;CAT| (|Join| (|HomogeneousAggregate| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|children| ((|List| |$|) |$|)) T) ((|nodes| ((|List| |$|) |$|)) T) ((|leaf?| ((|Boolean|) |$|)) T) ((|value| (|t#1| |$|)) T) ((|elt| (|t#1| |$| "value")) T) ((|cyclic?| ((|Boolean|) |$|)) T) ((|leaves| ((|List| |t#1|) |$|)) T) ((|distance| ((|Integer|) |$| |$|)) T) ((|child?| ((|Boolean|) |$| |$|)) (|has| |t#1| (|SetCategory|))) ((|node?| ((|Boolean|) |$| |$|)) (|has| |t#1| (|SetCategory|))) ((|setchildren!| (|$| |$| (|List| |$|))) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setelt| (|t#1| |$| "value" |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setvalue!| (|t#1| |$| |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))))) NIL (QUOTE ((|List| |$|) (|Boolean|) (|In!
teger|) (|List| |t#1|))) NIL)) . #2=(|RecursiveAggregate|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |RecursiveAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |RecursiveAggregate| (#1=#:G84501)
+ (LET (#2=#:G84502)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |RecursiveAggregate;AL|)) (CDR #2#))
+   (T 
+    (SETQ |RecursiveAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|RecursiveAggregate;| #1#)))
+      |RecursiveAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |RecursiveAggregate;| (|t#1|)
+ (PROG (#1=#:G84500)
+  (RETURN
+   (PROG1 
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|RecursiveAggregate;CAT|)
+       ((QUOTE T)
+        (LETT |RecursiveAggregate;CAT|
+         (|Join|
+          (|HomogeneousAggregate| (QUOTE |t#1|))
+          (|mkCategory|
+           (QUOTE |domain|)
+           (QUOTE (
+            ((|children| ((|List| |$|) |$|)) T)
+            ((|nodes| ((|List| |$|) |$|)) T)
+            ((|leaf?| ((|Boolean|) |$|)) T)
+            ((|value| (|t#1| |$|)) T)
+            ((|elt| (|t#1| |$| "value")) T)
+            ((|cyclic?| ((|Boolean|) |$|)) T)
+            ((|leaves| ((|List| |t#1|) |$|)) T)
+            ((|distance| ((|Integer|) |$| |$|)) T)
+            ((|child?| ((|Boolean|) |$| |$|)) (|has| |t#1| (|SetCategory|)))
+            ((|node?| ((|Boolean|) |$| |$|)) (|has| |t#1| (|SetCategory|)))
+            ((|setchildren!| (|$| |$| (|List| |$|)))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setelt| (|t#1| |$| "value" |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setvalue!| (|t#1| |$| |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))))
+           NIL 
+           (QUOTE ((|List| |$|) (|Boolean|) (|Integer|) (|List| |t#1|)))
+           NIL))
+         . #2=(|RecursiveAggregate|)))))
+      . #2#)
+    (SETELT #1# 0 (LIST (QUOTE |RecursiveAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{RCAGG-.lsp BOOTSTRAP}
 {\bf RCAGG-} depends on {\bf RCAGG}. We need to break this cycle to build
@@ -4630,15 +6098,62 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |RCAGG-;elt;AvalueS;1| (|x| G84515 |$|) (SPADCALL |x| (QREFELT |$| 8))) 
-
-(DEFUN |RCAGG-;setelt;Avalue2S;2| (|x| G84517 |y| |$|) (SPADCALL |x| |y| (QREFELT |$| 11))) 
-
-(DEFUN |RCAGG-;child?;2AB;3| (|x| |l| |$|) (SPADCALL |x| (SPADCALL |l| (QREFELT |$| 14)) (QREFELT |$| 17))) 
-
-(DEFUN |RecursiveAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|RecursiveAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |RecursiveAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 19) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasAttribute| |#1| (QUOTE |shallowlyMutable|)) (|HasCategory| |#2| (QUOTE (|SetCategory|))))) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|testBitVector| |pv$| 1) (QSETREFV |$| 12 (CONS (|dispatchFunction| |RCAGG-;setelt;Avalue2S;2|) |$|)))) (COND ((|testBitVector| |pv$| 2) (QSETREFV |$| 18 (CONS (|dispatchFunction| |RCAGG-;child?;2AB;3|) |$|)))) |$|)))) 
-
-(MAKEPROP (QUOTE |RecursiveAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (0 . |value|) (QUOTE "value") |RCAGG-;elt;AvalueS;1| (5 . |setvalue!|) (11 . |setelt|) (|List| |$|) (18 . |children|) (|Boolean|) (|List| 6) (23 . |member?|) (29 . |child?|))) (QUOTE #(|setelt| 35 |elt| 42 |child?| 48)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 18 (QUOTE (1 6 7 0 8 2 6 7 0 7 11 3 0 7 0 9 7 12 1 6 13 0 14 2 16 15 6 0 17 2 0 15 0 0 18 3 0 7 0 9 7 12 2 0 7 0 9 10 2 0 15 0 0 18)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |RCAGG-;elt;AvalueS;1| (|x| G84515 |$|)
+ (SPADCALL |x| (QREFELT |$| 8))) 
+
+(DEFUN |RCAGG-;setelt;Avalue2S;2| (|x| G84517 |y| |$|)
+ (SPADCALL |x| |y| (QREFELT |$| 11))) 
+
+(DEFUN |RCAGG-;child?;2AB;3| (|x| |l| |$|)
+ (SPADCALL |x| (SPADCALL |l| (QREFELT |$| 14)) (QREFELT |$| 17))) 
+
+(DEFUN |RecursiveAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|RecursiveAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |RecursiveAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 19) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3
+     (LETT |pv$|
+      (|buildPredVector| 0 0 
+       (LIST
+        (|HasAttribute| |#1| (QUOTE |shallowlyMutable|))
+        (|HasCategory| |#2| (QUOTE (|SetCategory|)))))
+      . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+     ((|testBitVector| |pv$| 1)
+      (QSETREFV |$| 12
+       (CONS (|dispatchFunction| |RCAGG-;setelt;Avalue2S;2|) |$|))))
+    (COND
+     ((|testBitVector| |pv$| 2)
+      (QSETREFV |$| 18 (CONS (|dispatchFunction| |RCAGG-;child?;2AB;3|) |$|))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |RecursiveAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) 
+   (0 . |value|) (QUOTE "value") |RCAGG-;elt;AvalueS;1| (5 . |setvalue!|)
+   (11 . |setelt|) (|List| |$|) (18 . |children|) (|Boolean|) (|List| 6)
+   (23 . |member?|) (29 . |child?|)))
+  (QUOTE #(|setelt| 35 |elt| 42 |child?| 48))
+  (QUOTE NIL)
+  (CONS (|makeByteWordVec2| 1 (QUOTE NIL))
+ (CONS 
+  (QUOTE #())
+  (CONS
+   (QUOTE #())
+   (|makeByteWordVec2| 18 (QUOTE (1 6 7 0 8 2 6 7 0 7 11 3 0 7 0 9 7 12 
+     1 6 13 0 14 2 16 15 6 0 17 2 0 15 0 0 18 3 0 7 0 9 7 12 2 0 7 0 9 
+     10 2 0 15 0 0 18))))))
+  (QUOTE |lookupComplete|))) 
 @
 \section{category SETAGG SetAggregate}
 <<category SETAGG SetAggregate>>=
@@ -4698,7 +6213,8 @@ SetAggregate(S:SetCategory):
      ++ are members of set aggregate u or set aggregate v but not both.
      ++ If u and v have no elements in common, \axiom{symmetricDifference(u,v)}
      ++ returns a copy of u.
-     ++ Note: \axiom{symmetricDifference(u,v) = union(difference(u,v),difference(v,u))}
+     ++ Note: \axiom{symmetricDifference(u,v) = 
+     ++  union(difference(u,v),difference(v,u))}
    subset?     : (%, %) -> Boolean
      ++ subset?(u,v) tests if u is a subset of v.
      ++ Note: equivalent to
@@ -4749,9 +6265,53 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |SetAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |SetAggregate| (#1=#:G83200) (LET (#2=#:G83201) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |SetAggregate;AL|)) (CDR #2#)) (T (SETQ |SetAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|SetAggregate;| #1#))) |SetAggregate;AL|)) #2#)))) 
-
-(DEFUN |SetAggregate;| (|t#1|) (PROG (#1=#:G83199) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|SetAggregate;CAT|) ((QUOTE T) (LETT |SetAggregate;CAT| (|Join| (|SetCategory|) (|Collection| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|<| ((|Boolean|) |$| |$|)) T) ((|brace| (|$|)) T) ((|brace| (|$| (|List| |t#1|))) T) ((|set| (|$|)) T) ((|set| (|$| (|List| |t#1|))) T) ((|intersect| (|$| |$| |$|)) T) ((|difference| (|$| |$| |$|)) T) ((|difference| (|$| |$| |t#1|)) T) ((|symmetricDifference| (|$| |$| |$|)) T) ((|subset?| ((|Boolean|) |$| |$|)) T) ((|union| (|$| |$| |$|)) T) ((|union| (|$| |$| |t#1|)) T) ((|union| (|$| |t#1| |$|)) T))) (QUOTE ((|partiallyOrderedSet| T))) (QUOTE ((|Boolean|) (|List| |t#1|))) NIL)) . #2=(|SetAggregate|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |SetAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |SetAggregate| (#1=#:G83200)
+ (LET (#2=#:G83201)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |SetAggregate;AL|)) (CDR #2#))
+   (T
+    (SETQ |SetAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|SetAggregate;| #1#)))
+      |SetAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |SetAggregate;| (|t#1|)
+ (PROG (#1=#:G83199)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|SetAggregate;CAT|)
+       ((QUOTE T)
+        (LETT |SetAggregate;CAT|
+         (|Join|
+          (|SetCategory|)
+          (|Collection| (QUOTE |t#1|))
+          (|mkCategory| 
+           (QUOTE |domain|)
+           (QUOTE (
+            ((|<| ((|Boolean|) |$| |$|)) T)
+            ((|brace| (|$|)) T)
+            ((|brace| (|$| (|List| |t#1|))) T)
+            ((|set| (|$|)) T)
+            ((|set| (|$| (|List| |t#1|))) T)
+            ((|intersect| (|$| |$| |$|)) T)
+            ((|difference| (|$| |$| |$|)) T)
+            ((|difference| (|$| |$| |t#1|)) T)
+            ((|symmetricDifference| (|$| |$| |$|)) T)
+            ((|subset?| ((|Boolean|) |$| |$|)) T)
+            ((|union| (|$| |$| |$|)) T)
+            ((|union| (|$| |$| |t#1|)) T)
+            ((|union| (|$| |t#1| |$|)) T))) 
+           (QUOTE ((|partiallyOrderedSet| T)))
+           (QUOTE ((|Boolean|) (|List| |t#1|)))
+           NIL))
+         . #2=(|SetAggregate|)))))
+      . #2#)
+    (SETELT #1# 0 (LIST (QUOTE |SetAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{SETAGG-.lsp BOOTSTRAP}
 {\bf SETAGG-} depends on {\bf SETAGG}. We need to break this cycle to build
@@ -4766,17 +6326,55 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |SETAGG-;symmetricDifference;3A;1| (|x| |y| |$|) (SPADCALL (SPADCALL |x| |y| (QREFELT |$| 8)) (SPADCALL |y| |x| (QREFELT |$| 8)) (QREFELT |$| 9))) 
-
-(DEFUN |SETAGG-;union;ASA;2| (|s| |x| |$|) (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 9))) 
-
-(DEFUN |SETAGG-;union;S2A;3| (|x| |s| |$|) (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 9))) 
-
-(DEFUN |SETAGG-;difference;ASA;4| (|s| |x| |$|) (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 8))) 
-
-(DEFUN |SetAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |SetAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 16) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) |$|)))) 
-
-(MAKEPROP (QUOTE |SetAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (0 . |difference|) (6 . |union|) |SETAGG-;symmetricDifference;3A;1| (|List| 7) (12 . |brace|) |SETAGG-;union;ASA;2| |SETAGG-;union;S2A;3| |SETAGG-;difference;ASA;4|)) (QUOTE #(|union| 17 |symmetricDifference| 29 |difference| 35)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 15 (QUOTE (2 6 0 0 0 8 2 6 0 0 0 9 1 6 0 11 12 2 0 0 7 0 14 2 0 0 0 7 13 2 0 0 0 0 10 2 0 0 0 7 15)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |SETAGG-;symmetricDifference;3A;1| (|x| |y| |$|)
+ (SPADCALL
+  (SPADCALL |x| |y| (QREFELT |$| 8))
+  (SPADCALL |y| |x| (QREFELT |$| 8))
+  (QREFELT |$| 9))) 
+
+(DEFUN |SETAGG-;union;ASA;2| (|s| |x| |$|)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 9))) 
+
+(DEFUN |SETAGG-;union;S2A;3| (|x| |s| |$|)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 9))) 
+
+(DEFUN |SETAGG-;difference;ASA;4| (|s| |x| |$|)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (QREFELT |$| 12)) (QREFELT |$| 8))) 
+
+(DEFUN |SetAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |SetAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 16) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |SetAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) 
+    (0 . |difference|) (6 . |union|) |SETAGG-;symmetricDifference;3A;1| 
+    (|List| 7) (12 . |brace|) |SETAGG-;union;ASA;2| |SETAGG-;union;S2A;3| 
+    |SETAGG-;difference;ASA;4|))
+  (QUOTE #(|union| 17 |symmetricDifference| 29 |difference| 35))
+  (QUOTE NIL)
+  (CONS 
+   (|makeByteWordVec2| 1 (QUOTE NIL))
+   (CONS 
+    (QUOTE #())
+    (CONS 
+     (QUOTE #())
+     (|makeByteWordVec2| 15 (QUOTE (2 6 0 0 0 8 2 6 0 0 0 9 1 6 0 11 12 2 
+       0 0 7 0 14 2 0 0 0 7 13 2 0 0 0 0 10 2 0 0 0 7 15))))))
+  (QUOTE |lookupComplete|))) 
 @
 \section{category SKAGG StackAggregate}
 <<category SKAGG StackAggregate>>=
@@ -4854,10 +6452,12 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
       ++ in s by upper case characters.
     prefix?	    : (%, %) -> Boolean
       ++ prefix?(s,t) tests if the string s is the initial substring of t.
-      ++ Note: \axiom{prefix?(s,t) == reduce(and,[s.i = t.i for i in 0..maxIndex s])}.
+      ++ Note: \axiom{prefix?(s,t) == 
+      ++   reduce(and,[s.i = t.i for i in 0..maxIndex s])}.
     suffix?	    : (%, %) -> Boolean
       ++ suffix?(s,t) tests if the string s is the final substring of t.
-      ++ Note: \axiom{suffix?(s,t) == reduce(and,[s.i = t.(n - m + i) for i in 0..maxIndex s])}
+      ++ Note: \axiom{suffix?(s,t) == 
+      ++  reduce(and,[s.i = t.(n - m + i) for i in 0..maxIndex s])}
       ++ where m and n denote the maxIndex of s and t respectively.
     substring?: (%, %, Integer) -> Boolean
       ++ substring?(s,t,i) tests if s is a substring of t beginning at
@@ -4877,7 +6477,8 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
       ++ multiple and consecutive occurrences of character c.
       ++ Typically c is the blank character.
     replace	    : (%, UniversalSegment(Integer), %) -> %
-      ++ replace(s,i..j,t) replaces the substring \axiom{s(i..j)} of s by string t.
+      ++ replace(s,i..j,t) replaces the substring \axiom{s(i..j)} 
+      ++ of s by string t.
     position	    : (%, %, Integer) -> Integer
       ++ position(s,t,i) returns the position j of the substring s in string t,
       ++ where \axiom{j >= i} is required.
@@ -4890,7 +6491,8 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
     split: (%, Character) -> List %
       ++ split(s,c) returns a list of substrings delimited by character c.
     split: (%, CharacterClass) -> List %
-      ++ split(s,cc) returns a list of substrings delimited by characters in cc.
+      ++ split(s,cc) returns a list of substrings delimited by 
+      ++ characters in cc.
 
     trim: (%, Character) -> %
       ++ trim(s,c) returns s with all characters c deleted from right
@@ -4899,20 +6501,25 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
     trim: (%, CharacterClass) -> %
       ++ trim(s,cc) returns s with all characters in cc deleted from right
       ++ and left ends.
-      ++ For example, \axiom{trim("(abc)", charClass "()")} returns \axiom{"abc"}.
+      ++ For example, \axiom{trim("(abc)", charClass "()")} 
+      ++ returns \axiom{"abc"}.
     leftTrim: (%, Character) -> %
       ++ leftTrim(s,c) returns s with all leading characters c deleted.
-      ++ For example, \axiom{leftTrim("  abc  ", char " ")} returns \axiom{"abc  "}.
+      ++ For example, \axiom{leftTrim("  abc  ", char " ")} 
+      ++ returns \axiom{"abc  "}.
     leftTrim: (%, CharacterClass) -> %
       ++ leftTrim(s,cc) returns s with all leading characters in cc deleted.
-      ++ For example, \axiom{leftTrim("(abc)", charClass "()")} returns \axiom{"abc)"}.
+      ++ For example, \axiom{leftTrim("(abc)", charClass "()")} 
+      ++ returns \axiom{"abc)"}.
     rightTrim: (%, Character) -> %
       ++ rightTrim(s,c) returns s with all trailing occurrences of c deleted.
-      ++ For example, \axiom{rightTrim("  abc  ", char " ")} returns \axiom{"  abc"}.
+      ++ For example, \axiom{rightTrim("  abc  ", char " ")} 
+      ++ returns \axiom{"  abc"}.
     rightTrim: (%, CharacterClass) -> %
       ++ rightTrim(s,cc) returns s with all trailing occurences of
       ++ characters in cc deleted.
-      ++ For example, \axiom{rightTrim("(abc)", charClass "()")} returns \axiom{"(abc"}.
+      ++ For example, \axiom{rightTrim("(abc)", charClass "()")} 
+      ++ returns \axiom{"(abc"}.
     elt: (%, %) -> %
       ++ elt(s,t) returns the concatenation of s and t. It is provided to
       ++ allow juxtaposition of strings to work as concatenation.
@@ -4962,11 +6569,13 @@ StreamAggregate(S:Type): Category ==
       explicitlyFinite?: % -> Boolean
 	++ explicitlyFinite?(s) tests if the stream has a finite
 	++ number of elements, and false otherwise.
-	++ Note: for many datatypes, \axiom{explicitlyFinite?(s) = not possiblyInfinite?(s)}.
+	++ Note: for many datatypes, 
+        ++ \axiom{explicitlyFinite?(s) = not possiblyInfinite?(s)}.
       possiblyInfinite?: % -> Boolean
 	++ possiblyInfinite?(s) tests if the stream s could possibly
 	++ have an infinite number of elements.
-	++ Note: for many datatypes, \axiom{possiblyInfinite?(s) = not explictlyFinite?(s)}.
+	++ Note: for many datatypes, 
+        ++ \axiom{possiblyInfinite?(s) = not explictlyFinite?(s)}.
  add
    c2: (%, %) -> S
 
@@ -4980,7 +6589,8 @@ StreamAggregate(S:Type): Category ==
 
    elt(x:%, i:Integer) ==
      i := i - minIndex x
-     (i < 0) or empty?(x := rest(x, i::NonNegativeInteger)) => error "index out of range"
+     (i < 0) or empty?(x := rest(x, i::NonNegativeInteger)) => _
+         error "index out of range"
      first x
 
    elt(x:%, i:UniversalSegment(Integer)) ==
@@ -5011,7 +6621,8 @@ StreamAggregate(S:Type): Category ==
 
      setelt(x:%, i:Integer, s:S) ==
       i := i - minIndex x
-      (i < 0) or empty?(x := rest(x,i::NonNegativeInteger)) => error "index out of range"
+      (i < 0) or empty?(x := rest(x,i::NonNegativeInteger)) => _
+          error "index out of range"
       setfirst_!(x, s)
 
      setelt(x:%, i:UniversalSegment(Integer), s:S) ==
@@ -5058,9 +6669,42 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |StreamAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |StreamAggregate| (#1=#:G87035) (LET (#2=#:G87036) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |StreamAggregate;AL|)) (CDR #2#)) (T (SETQ |StreamAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|StreamAggregate;| #1#))) |StreamAggregate;AL|)) #2#)))) 
-
-(DEFUN |StreamAggregate;| (|t#1|) (PROG (#1=#:G87034) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|StreamAggregate;CAT|) ((QUOTE T) (LETT |StreamAggregate;CAT| (|Join| (|UnaryRecursiveAggregate| (QUOTE |t#1|)) (|LinearAggregate| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|explicitlyFinite?| ((|Boolean|) |$|)) T) ((|possiblyInfinite?| ((|Boolean|) |$|)) T))) NIL (QUOTE ((|Boolean|))) NIL)) . #2=(|StreamAggregate|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |StreamAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |StreamAggregate| (#1=#:G87035)
+ (LET (#2=#:G87036)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |StreamAggregate;AL|)) (CDR #2#))
+   (T
+    (SETQ |StreamAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|StreamAggregate;| #1#)))
+      |StreamAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |StreamAggregate;| (|t#1|)
+ (PROG (#1=#:G87034)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|StreamAggregate;CAT|)
+       ((QUOTE T)
+        (LETT |StreamAggregate;CAT|
+         (|Join|
+          (|UnaryRecursiveAggregate| (QUOTE |t#1|))
+          (|LinearAggregate| (QUOTE |t#1|))
+          (|mkCategory|
+           (QUOTE |domain|)
+           (QUOTE (
+            ((|explicitlyFinite?| ((|Boolean|) |$|)) T)
+            ((|possiblyInfinite?| ((|Boolean|) |$|)) T)))
+           NIL
+           (QUOTE ((|Boolean|)))
+           NIL))
+         . #2=(|StreamAggregate|)))))
+      . #2#)
+    (SETELT #1# 0 (LIST (QUOTE |StreamAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{STAGG-.lsp BOOTSTRAP}
 {\bf STAGG-} depends on {\bf STAGG}. We need to break this cycle to build
@@ -5075,35 +6719,312 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |STAGG-;explicitlyFinite?;AB;1| (|x| |$|) (COND ((SPADCALL |x| (QREFELT |$| 9)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) 
+(DEFUN |STAGG-;explicitlyFinite?;AB;1| (|x| |$|)
+ (COND ((SPADCALL |x| (QREFELT |$| 9)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) 
 
-(DEFUN |STAGG-;possiblyInfinite?;AB;2| (|x| |$|) (SPADCALL |x| (QREFELT |$| 9))) 
+(DEFUN |STAGG-;possiblyInfinite?;AB;2| (|x| |$|)
+ (SPADCALL |x| (QREFELT |$| 9))) 
 
-(DEFUN |STAGG-;first;ANniA;3| (|x| |n| |$|) (PROG (#1=#:G87053 |i|) (RETURN (SEQ (SPADCALL (PROGN (LETT #1# NIL |STAGG-;first;ANniA;3|) (SEQ (LETT |i| 1 |STAGG-;first;ANniA;3|) G190 (COND ((QSGREATERP |i| |n|) (GO G191))) (SEQ (EXIT (LETT #1# (CONS (|STAGG-;c2| |x| (LETT |x| (SPADCALL |x| (QREFELT |$| 12)) |STAGG-;first;ANniA;3|) |$|) #1#) |STAGG-;first;ANniA;3|))) (LETT |i| (QSADD1 |i|) |STAGG-;first;ANniA;3|) (GO G190) G191 (EXIT (NREVERSE0 #1#)))) (QREFELT |$| 14)))))) 
-
-(DEFUN |STAGG-;c2| (|x| |r| |$|) (COND ((SPADCALL |x| (QREFELT |$| 17)) (|error| "Index out of range")) ((QUOTE T) (SPADCALL |x| (QREFELT |$| 18))))) 
-
-(DEFUN |STAGG-;elt;AIS;5| (|x| |i| |$|) (PROG (#1=#:G87056) (RETURN (SEQ (LETT |i| (|-| |i| (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;elt;AIS;5|) (COND ((OR (|<| |i| 0) (SPADCALL (LETT |x| (SPADCALL |x| (PROG1 (LETT #1# |i| |STAGG-;elt;AIS;5|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 21)) |STAGG-;elt;AIS;5|) (QREFELT |$| 17))) (EXIT (|error| "index out of range")))) (EXIT (SPADCALL |x| (QREFELT |$| 18))))))) 
-
-(DEFUN |STAGG-;elt;AUsA;6| (|x| |i| |$|) (PROG (|l| #1=#:G87060 |h| #2=#:G87062 #3=#:G87063) (RETURN (SEQ (LETT |l| (|-| (SPADCALL |i| (QREFELT |$| 24)) (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;elt;AUsA;6|) (EXIT (COND ((|<| |l| 0) (|error| "index out of range")) ((NULL (SPADCALL |i| (QREFELT |$| 25))) (SPADCALL (SPADCALL |x| (PROG1 (LETT #1# |l| |STAGG-;elt;AUsA;6|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 21)) (QREFELT |$| 26))) ((QUOTE T) (SEQ (LETT |h| (|-| (SPADCALL |i| (QREFELT |$| 27)) (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;elt;AUsA;6|) (EXIT (COND ((|<| |h| |l|) (SPADCALL (QREFELT |$| 28))) ((QUOTE T) (SPADCALL (SPADCALL |x| (PROG1 (LETT #2# |l| |STAGG-;elt;AUsA;6|) (|check-subtype| (|>=| #2# 0) (QUOTE (|NonNegativeInteger|)) #2#)) (QREFELT |$| 21)) (PROG1 (LETT #3# (|+| (|-| |h| |l|) 1) |STAGG-;elt;AUsA;6|) (|check-subtype| (|>=| #3# 0) (QUOTE (|NonNegativeInteger|)) #3#)) (QREFELT |$| 29))))))))))))) 
-
-(DEFUN |STAGG-;concat;3A;7| (|x| |y| |$|) (SPADCALL (SPADCALL |x| (QREFELT |$| 26)) |y| (QREFELT |$| 31))) 
-
-(DEFUN |STAGG-;concat;LA;8| (|l| |$|) (COND ((NULL |l|) (SPADCALL (QREFELT |$| 28))) ((QUOTE T) (SPADCALL (SPADCALL (|SPADfirst| |l|) (QREFELT |$| 26)) (SPADCALL (CDR |l|) (QREFELT |$| 34)) (QREFELT |$| 31))))) 
-
-(DEFUN |STAGG-;map!;M2A;9| (|f| |l| |$|) (PROG (|y|) (RETURN (SEQ (LETT |y| |l| |STAGG-;map!;M2A;9|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |l| (QREFELT |$| 17)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (SPADCALL |l| (SPADCALL (SPADCALL |l| (QREFELT |$| 18)) |f|) (QREFELT |$| 36)) (EXIT (LETT |l| (SPADCALL |l| (QREFELT |$| 12)) |STAGG-;map!;M2A;9|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |y|))))) 
-
-(DEFUN |STAGG-;fill!;ASA;10| (|x| |s| |$|) (PROG (|y|) (RETURN (SEQ (LETT |y| |x| |STAGG-;fill!;ASA;10|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |y| (QREFELT |$| 17)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (SPADCALL |y| |s| (QREFELT |$| 36)) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 12)) |STAGG-;fill!;ASA;10|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |x|))))) 
-
-(DEFUN |STAGG-;setelt;AI2S;11| (|x| |i| |s| |$|) (PROG (#1=#:G87081) (RETURN (SEQ (LETT |i| (|-| |i| (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;setelt;AI2S;11|) (COND ((OR (|<| |i| 0) (SPADCALL (LETT |x| (SPADCALL |x| (PROG1 (LETT #1# |i| |STAGG-;setelt;AI2S;11|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 21)) |STAGG-;setelt;AI2S;11|) (QREFELT |$| 17))) (EXIT (|error| "index out of range")))) (EXIT (SPADCALL |x| |s| (QREFELT |$| 36))))))) 
-
-(DEFUN |STAGG-;setelt;AUs2S;12| (|x| |i| |s| |$|) (PROG (|l| |h| #1=#:G87086 #2=#:G87087 |z| |y|) (RETURN (SEQ (LETT |l| (|-| (SPADCALL |i| (QREFELT |$| 24)) (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;setelt;AUs2S;12|) (EXIT (COND ((|<| |l| 0) (|error| "index out of range")) ((QUOTE T) (SEQ (LETT |h| (COND ((SPADCALL |i| (QREFELT |$| 25)) (|-| (SPADCALL |i| (QREFELT |$| 27)) (SPADCALL |x| (QREFELT |$| 20)))) ((QUOTE T) (SPADCALL |x| (QREFELT |$| 41)))) |STAGG-;setelt;AUs2S;12|) (EXIT (COND ((|<| |h| |l|) |s|) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (PROG1 (LETT #1# |l| |STAGG-;setelt;AUs2S;12|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 21)) |STAGG-;setelt;AUs2S;12|) (LETT |z| (SPADCALL |y| (PROG1 (LETT #2# (|+| (|-| |h| |l|) 1) |STAGG-;setelt;AUs2S;12|) (|check-subtype| (|>=| #2# 0) (QUOTE (|NonNegativeInteger|)) #2#)) (QREFELT |$| 21)) |STAGG-;setelt;AUs2S;12|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |y| |z| (QREFELT |$| 42)) (QUOTE NIL)!
) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (SPADCALL |y| |s| (QREFELT |$| 36)) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 12)) |STAGG-;setelt;AUs2S;12|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |s|))))))))))))) 
-
-(DEFUN |STAGG-;concat!;3A;13| (|x| |y| |$|) (SEQ (COND ((SPADCALL |x| (QREFELT |$| 17)) |y|) ((QUOTE T) (SEQ (SPADCALL (SPADCALL |x| (QREFELT |$| 44)) |y| (QREFELT |$| 45)) (EXIT |x|)))))) 
-
-(DEFUN |StreamAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|StreamAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |StreamAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 51) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|HasAttribute| |#1| (QUOTE |shallowlyMutable|)) (PROGN (QSETREFV |$| 32 (CONS (|dispatchFunction| |STAGG-;concat;3A;7|) |$|)) (QSETREFV |$| 35 (CONS (|dispatchFunction| |STAGG-;concat;LA;8|) |$|)) (QSETREFV |$| 38 (CONS (|dispatchFunction| |STAGG-;map!;M2A;9|) |$|)) (QSETREFV |$| 39 (CONS (|dispatchFunction| |STAGG-;fill!;ASA;10|) |$|)) (QSETREFV |$| 40 (CONS (|dispatchFunction| |STAGG-;setelt;AI2S;11|) |$|)) (QSETREFV |$| 43 (CONS (|dispatchFunction| |STAGG-;setelt;AUs2S;12|) |$|)) (QSETREFV |$| 46 (CONS (|dispatchFunction| |STAGG-!
;concat!;3A;13|) |$|))))) |$|)))) 
-
-(MAKEPROP (QUOTE |StreamAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|Boolean|) (0 . |cyclic?|) |STAGG-;explicitlyFinite?;AB;1| |STAGG-;possiblyInfinite?;AB;2| (5 . |rest|) (|List| 7) (10 . |construct|) (|NonNegativeInteger|) |STAGG-;first;ANniA;3| (15 . |empty?|) (20 . |first|) (|Integer|) (25 . |minIndex|) (30 . |rest|) |STAGG-;elt;AIS;5| (|UniversalSegment| 19) (36 . |lo|) (41 . |hasHi|) (46 . |copy|) (51 . |hi|) (56 . |empty|) (60 . |first|) |STAGG-;elt;AUsA;6| (66 . |concat!|) (72 . |concat|) (|List| |$|) (78 . |concat|) (83 . |concat|) (88 . |setfirst!|) (|Mapping| 7 7) (94 . |map!|) (100 . |fill!|) (106 . |setelt|) (113 . |maxIndex|) (118 . |eq?|) (124 . |setelt|) (131 . |tail|) (136 . |setrest!|) (142 . |concat!|) (QUOTE "rest") (QUOTE "last") (QUOTE "first") (QUOTE "value"))) (QUOTE #(|setelt| 148 |possiblyInfinite?| 162 |map!| 167 |first| 173 |fill!| 179 |explicitlyFinite?| 185 |elt| 190 |concat!| 202 |concat!
| 208)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 46 (QUOTE (1 6 8 0 9 1 6 0 0 12 1 6 0 13 14 1 6 8 0 17 1 6 7 0 18 1 6 19 0 20 2 6 0 0 15 21 1 23 19 0 24 1 23 8 0 25 1 6 0 0 26 1 23 19 0 27 0 6 0 28 2 6 0 0 15 29 2 6 0 0 0 31 2 0 0 0 0 32 1 6 0 33 34 1 0 0 33 35 2 6 7 0 7 36 2 0 0 37 0 38 2 0 0 0 7 39 3 0 7 0 19 7 40 1 6 19 0 41 2 6 8 0 0 42 3 0 7 0 23 7 43 1 6 0 0 44 2 6 0 0 0 45 2 0 0 0 0 46 3 0 7 0 19 7 40 3 0 7 0 23 7 43 1 0 8 0 11 2 0 0 37 0 38 2 0 0 0 15 16 2 0 0 0 7 39 1 0 8 0 10 2 0 7 0 19 22 2 0 0 0 23 30 2 0 0 0 0 46 1 0 0 33 35 2 0 0 0 0 32)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |STAGG-;first;ANniA;3| (|x| |n| |$|)
+ (PROG (#1=#:G87053 |i|) 
+  (RETURN 
+   (SEQ 
+    (SPADCALL
+     (PROGN
+      (LETT #1# NIL |STAGG-;first;ANniA;3|)
+      (SEQ
+       (LETT |i| 1 |STAGG-;first;ANniA;3|)
+       G190
+       (COND ((QSGREATERP |i| |n|) (GO G191)))
+       (SEQ
+        (EXIT
+         (LETT #1#
+          (CONS
+           (|STAGG-;c2| |x|
+            (LETT |x| (SPADCALL |x| (QREFELT |$| 12)) |STAGG-;first;ANniA;3|)
+            |$|)
+            #1#)
+          |STAGG-;first;ANniA;3|)))
+       (LETT |i| (QSADD1 |i|) |STAGG-;first;ANniA;3|)
+       (GO G190)
+       G191
+       (EXIT (NREVERSE0 #1#))))
+     (QREFELT |$| 14)))))) 
+
+(DEFUN |STAGG-;c2| (|x| |r| |$|)
+ (COND
+   ((SPADCALL |x| (QREFELT |$| 17)) (|error| "Index out of range"))
+   ((QUOTE T) (SPADCALL |x| (QREFELT |$| 18))))) 
+
+(DEFUN |STAGG-;elt;AIS;5| (|x| |i| |$|)
+ (PROG (#1=#:G87056)
+  (RETURN
+   (SEQ
+    (LETT |i| (|-| |i| (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;elt;AIS;5|)
+    (COND
+     ((OR 
+       (|<| |i| 0)
+       (SPADCALL
+        (LETT |x|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# |i| |STAGG-;elt;AIS;5|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 21))
+         |STAGG-;elt;AIS;5|)
+        (QREFELT |$| 17)))
+      (EXIT (|error| "index out of range"))))
+    (EXIT (SPADCALL |x| (QREFELT |$| 18))))))) 
+
+(DEFUN |STAGG-;elt;AUsA;6| (|x| |i| |$|)
+ (PROG (|l| #1=#:G87060 |h| #2=#:G87062 #3=#:G87063)
+  (RETURN
+   (SEQ
+    (LETT |l|
+     (|-| (SPADCALL |i| (QREFELT |$| 24)) (SPADCALL |x| (QREFELT |$| 20)))
+     |STAGG-;elt;AUsA;6|)
+    (EXIT
+     (COND
+      ((|<| |l| 0) (|error| "index out of range"))
+      ((NULL (SPADCALL |i| (QREFELT |$| 25)))
+        (SPADCALL
+         (SPADCALL |x| 
+          (PROG1 
+           (LETT #1# |l| |STAGG-;elt;AUsA;6|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 21))
+         (QREFELT |$| 26)))
+      ((QUOTE T)
+       (SEQ
+        (LETT |h|
+         (|-| (SPADCALL |i| (QREFELT |$| 27)) (SPADCALL |x| (QREFELT |$| 20)))
+         |STAGG-;elt;AUsA;6|)
+        (EXIT
+         (COND
+          ((|<| |h| |l|) (SPADCALL (QREFELT |$| 28)))
+          ((QUOTE T)
+           (SPADCALL
+            (SPADCALL |x|
+             (PROG1
+              (LETT #2# |l| |STAGG-;elt;AUsA;6|)
+              (|check-subtype|
+                (|>=| #2# 0) (QUOTE (|NonNegativeInteger|)) #2#))
+             (QREFELT |$| 21))
+            (PROG1
+             (LETT #3# (|+| (|-| |h| |l|) 1) |STAGG-;elt;AUsA;6|)
+             (|check-subtype| (|>=| #3# 0) (QUOTE (|NonNegativeInteger|)) #3#))
+            (QREFELT |$| 29))))))))))))) 
+
+(DEFUN |STAGG-;concat;3A;7| (|x| |y| |$|)
+ (SPADCALL (SPADCALL |x| (QREFELT |$| 26)) |y| (QREFELT |$| 31))) 
+
+(DEFUN |STAGG-;concat;LA;8| (|l| |$|)
+ (COND
+  ((NULL |l|) (SPADCALL (QREFELT |$| 28)))
+  ((QUOTE T)
+   (SPADCALL
+    (SPADCALL (|SPADfirst| |l|) (QREFELT |$| 26))
+    (SPADCALL (CDR |l|) (QREFELT |$| 34))
+    (QREFELT |$| 31))))) 
+
+(DEFUN |STAGG-;map!;M2A;9| (|f| |l| |$|)
+ (PROG (|y|)
+  (RETURN
+   (SEQ
+    (LETT |y| |l| |STAGG-;map!;M2A;9|)
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+        (COND
+         ((SPADCALL |l| (QREFELT |$| 17)) (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (SPADCALL |l|
+       (SPADCALL (SPADCALL |l| (QREFELT |$| 18)) |f|) (QREFELT |$| 36))
+      (EXIT (LETT |l| (SPADCALL |l| (QREFELT |$| 12)) |STAGG-;map!;M2A;9|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |y|))))) 
+
+(DEFUN |STAGG-;fill!;ASA;10| (|x| |s| |$|)
+ (PROG (|y|)
+  (RETURN
+   (SEQ 
+    (LETT |y| |x| |STAGG-;fill!;ASA;10|)
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+        (COND 
+         ((SPADCALL |y| (QREFELT |$| 17)) (QUOTE NIL)) ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (SPADCALL |y| |s| (QREFELT |$| 36))
+      (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 12)) |STAGG-;fill!;ASA;10|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |x|))))) 
+
+(DEFUN |STAGG-;setelt;AI2S;11| (|x| |i| |s| |$|)
+ (PROG (#1=#:G87081)
+  (RETURN
+   (SEQ
+    (LETT |i|
+     (|-| |i| (SPADCALL |x| (QREFELT |$| 20))) |STAGG-;setelt;AI2S;11|)
+    (COND
+     ((OR 
+       (|<| |i| 0)
+       (SPADCALL
+        (LETT |x|
+         (SPADCALL |x|
+          (PROG1
+           (LETT #1# |i| |STAGG-;setelt;AI2S;11|)
+           (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+          (QREFELT |$| 21))
+         |STAGG-;setelt;AI2S;11|)
+        (QREFELT |$| 17)))
+      (EXIT (|error| "index out of range"))))
+    (EXIT (SPADCALL |x| |s| (QREFELT |$| 36))))))) 
+
+(DEFUN |STAGG-;setelt;AUs2S;12| (|x| |i| |s| |$|)
+ (PROG (|l| |h| #1=#:G87086 #2=#:G87087 |z| |y|)
+  (RETURN
+   (SEQ 
+    (LETT |l| 
+     (|-| (SPADCALL |i| (QREFELT |$| 24)) (SPADCALL |x| (QREFELT |$| 20)))
+      |STAGG-;setelt;AUs2S;12|)
+    (EXIT
+     (COND
+      ((|<| |l| 0) (|error| "index out of range"))
+      ((QUOTE T)
+       (SEQ
+        (LETT |h|
+         (COND
+          ((SPADCALL |i| (QREFELT |$| 25))
+            (|-|
+             (SPADCALL |i| (QREFELT |$| 27))
+             (SPADCALL |x| (QREFELT |$| 20))))
+          ((QUOTE T) (SPADCALL |x| (QREFELT |$| 41))))
+         |STAGG-;setelt;AUs2S;12|)
+        (EXIT
+         (COND
+          ((|<| |h| |l|) |s|)
+          ((QUOTE T)
+            (SEQ
+             (LETT |y|
+              (SPADCALL |x|
+               (PROG1
+                (LETT #1# |l| |STAGG-;setelt;AUs2S;12|)
+                (|check-subtype|
+                 (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+               (QREFELT |$| 21))
+              |STAGG-;setelt;AUs2S;12|)
+             (LETT |z|
+              (SPADCALL |y|
+               (PROG1
+                (LETT #2# (|+| (|-| |h| |l|) 1) |STAGG-;setelt;AUs2S;12|)
+                (|check-subtype|
+                  (|>=| #2# 0) (QUOTE (|NonNegativeInteger|)) #2#))
+               (QREFELT |$| 21))
+              |STAGG-;setelt;AUs2S;12|)
+             (SEQ 
+               G190 
+               (COND
+                ((NULL
+                  (COND
+                   ((SPADCALL |y| |z| (QREFELT |$| 42)) (QUOTE NIL))
+                   ((QUOTE T) (QUOTE T))))
+                 (GO G191)))
+               (SEQ
+                (SPADCALL |y| |s| (QREFELT |$| 36))
+                (EXIT
+                 (LETT |y|
+                  (SPADCALL |y| (QREFELT |$| 12))
+                  |STAGG-;setelt;AUs2S;12|)))
+               NIL
+               (GO G190)
+               G191
+               (EXIT NIL))
+             (EXIT |s|))))))))))))) 
+
+(DEFUN |STAGG-;concat!;3A;13| (|x| |y| |$|)
+ (SEQ
+  (COND
+   ((SPADCALL |x| (QREFELT |$| 17)) |y|)
+   ((QUOTE T)
+     (SEQ
+      (SPADCALL (SPADCALL |x| (QREFELT |$| 44)) |y| (QREFELT |$| 45))
+      (EXIT |x|)))))) 
+
+(DEFUN |StreamAggregate&| (|#1| |#2|) 
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|StreamAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |StreamAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 51) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+     ((|HasAttribute| |#1| (QUOTE |shallowlyMutable|))
+      (PROGN
+       (QSETREFV |$| 32 (CONS (|dispatchFunction| |STAGG-;concat;3A;7|) |$|))
+       (QSETREFV |$| 35 (CONS (|dispatchFunction| |STAGG-;concat;LA;8|) |$|))
+       (QSETREFV |$| 38 (CONS (|dispatchFunction| |STAGG-;map!;M2A;9|) |$|))
+       (QSETREFV |$| 39 (CONS (|dispatchFunction| |STAGG-;fill!;ASA;10|) |$|))
+       (QSETREFV |$| 40
+         (CONS (|dispatchFunction| |STAGG-;setelt;AI2S;11|) |$|))
+       (QSETREFV |$| 43
+         (CONS (|dispatchFunction| |STAGG-;setelt;AUs2S;12|) |$|))
+       (QSETREFV |$| 46
+         (CONS (|dispatchFunction| |STAGG-;concat!;3A;13|) |$|)))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |StreamAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) 
+   (|Boolean|) (0 . |cyclic?|) |STAGG-;explicitlyFinite?;AB;1| 
+   |STAGG-;possiblyInfinite?;AB;2| (5 . |rest|) (|List| 7) 
+   (10 . |construct|) (|NonNegativeInteger|) |STAGG-;first;ANniA;3| 
+   (15 . |empty?|) (20 . |first|) (|Integer|) (25 . |minIndex|) 
+   (30 . |rest|) |STAGG-;elt;AIS;5| (|UniversalSegment| 19) (36 . |lo|) 
+   (41 . |hasHi|) (46 . |copy|) (51 . |hi|) (56 . |empty|) (60 . |first|) 
+   |STAGG-;elt;AUsA;6| (66 . |concat!|) (72 . |concat|) (|List| |$|) 
+   (78 . |concat|) (83 . |concat|) (88 . |setfirst!|) (|Mapping| 7 7) 
+   (94 . |map!|) (100 . |fill!|) (106 . |setelt|) (113 . |maxIndex|) 
+   (118 . |eq?|) (124 . |setelt|) (131 . |tail|) (136 . |setrest!|) 
+   (142 . |concat!|) (QUOTE "rest") (QUOTE "last") (QUOTE "first") 
+   (QUOTE "value")))
+  (QUOTE #(|setelt| 148 |possiblyInfinite?| 162 |map!| 167 |first| 173 
+    |fill!| 179 |explicitlyFinite?| 185 |elt| 190 |concat!| 202 |concat| 208))
+  (QUOTE NIL)
+  (CONS 
+   (|makeByteWordVec2| 1 (QUOTE NIL))
+   (CONS 
+    (QUOTE #())
+    (CONS 
+     (QUOTE #())
+     (|makeByteWordVec2| 46 (QUOTE (1 6 8 0 9 1 6 0 0 12 1 6 0 13 14 1 6 
+       8 0 17 1 6 7 0 18 1 6 19 0 20 2 6 0 0 15 21 1 23 19 0 24 1 23 8 
+       0 25 1 6 0 0 26 1 23 19 0 27 0 6 0 28 2 6 0 0 15 29 2 6 0 0 0 31 
+       2 0 0 0 0 32 1 6 0 33 34 1 0 0 33 35 2 6 7 0 7 36 2 0 0 37 0 38 2 
+       0 0 0 7 39 3 0 7 0 19 7 40 1 6 19 0 41 2 6 8 0 0 42 3 0 7 0 23 7 43 
+       1 6 0 0 44 2 6 0 0 0 45 2 0 0 0 0 46 3 0 7 0 19 7 40 3 0 7 0 23 7 43 
+       1 0 8 0 11 2 0 0 37 0 38 2 0 0 0 15 16 2 0 0 0 7 39 1 0 8 0 10 2 0 7 
+       0 19 22 2 0 0 0 23 30 2 0 0 0 0 46 1 0 0 33 35 2 0 0 0 0 32))))))
+  (QUOTE |lookupComplete|))) 
 @
 \section{category TBAGG TableAggregate}
 <<category TBAGG TableAggregate>>=
@@ -5176,7 +7097,7 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 --    z
 
    if % has finiteAggregate then
-     parts(t:%):List Record(key:Key,entry:Entry)	     == [[k, t.k] for k in keys t]
+     parts(t:%):List Record(key:Key,entry:Entry) == [[k, t.k] for k in keys t]
      parts(t:%):List Entry   == [t.k for k in keys t]
      entries(t:%):List Entry == parts(t)
 
@@ -5187,13 +7108,14 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 	 (e := search(k, t)) case "failed" or (e::Entry) ^= s.k => return false
        true
 
-     map(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry), t: %): % ==
+     map(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry),t:%):%==
        z := table()
        for k in keys t repeat
 	 ke: Record(key:Key,entry:Entry) := f [k, t.k]
 	 z ke.key := ke.entry
        z
-     map_!(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry), t: %): % ==
+     map_!(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry),t:%):%_
+      ==
        lke: List Record(key:Key,entry:Entry) := nil()
        for k in keys t repeat
 	 lke := cons(f [k, remove_!(k,t)::Entry], lke)
@@ -5206,8 +7128,10 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
        empty? ks => error "Cannot extract from an empty aggregate"
        [first ks, t first ks]
 
-     find(f: Record(key:Key,entry:Entry)->Boolean, t:%): Union(Record(key:Key,entry:Entry), "failed") ==
-       for ke in parts(t)@List(Record(key:Key,entry:Entry)) repeat if f ke then return ke
+     find(f: Record(key:Key,entry:Entry)->Boolean, t:%):_
+           Union(Record(key:Key,entry:Entry), "failed") ==
+       for ke in parts(t)@List(Record(key:Key,entry:Entry)) _
+          repeat if f ke then return ke
        "failed"
 
      index?(k: Key, t: %): Boolean ==
@@ -5284,9 +7208,11 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
       ++ first(u) returns the first element of u
       ++ (equivalently, the value at the current node).
    elt: (%,"first") -> S
-      ++ elt(u,"first") (also written: \axiom{u . first}) is equivalent to first u.
+      ++ elt(u,"first") (also written: \axiom{u . first}) 
+      ++ is equivalent to first u.
    first: (%,NonNegativeInteger) -> %
-      ++ first(u,n) returns a copy of the first n (\axiom{n >= 0}) elements of u.
+      ++ first(u,n) returns a copy of the first n (\axiom{n >= 0}) 
+      ++ elements of u.
    rest: % -> %
       ++ rest(u) returns an aggregate consisting of all but the first
       ++ element of u
@@ -5301,7 +7227,8 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
       ++ last(u) resturn the last element of u.
       ++ Note: for lists, \axiom{last(u) = u . (maxIndex u) = u . (# u - 1)}.
    elt: (%,"last") -> S
-      ++ elt(u,"last") (also written: \axiom{u . last}) is equivalent to last u.
+      ++ elt(u,"last") (also written: \axiom{u . last}) is equivalent 
+      ++ to last u.
    last: (%,NonNegativeInteger) -> %
       ++ last(u,n) returns a copy of the last n (\axiom{n >= 0}) nodes of u.
       ++ Note: \axiom{last(u,n)} is a list of n elements.
@@ -5334,9 +7261,9 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
       cycleSplit_!: % -> %
 	++ cycleSplit!(u) splits the aggregate by dropping off the cycle.
 	++ The value returned is the cycle entry, or nil if none exists.
-	++ For example, if \axiom{w = concat(u,v)} is the cyclic list where v is
-	++ the head of the cycle, \axiom{cycleSplit!(w)} will drop v off w thus
-	++ destructively changing w to u, and returning v.
+	++ For example, if \axiom{w = concat(u,v)} is the cyclic list where 
+	++ v is the head of the cycle, \axiom{cycleSplit!(w)} will drop v 
+	++ off w thus destructively changing w to u, and returning v.
       setfirst_!: (%,S) -> S
 	++ setfirst!(u,x) destructively changes the first element of a to x.
       setelt: (%,"first",S) -> S
@@ -5345,8 +7272,8 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
       setrest_!: (%,%) -> %
 	++ setrest!(u,v) destructively changes the rest of u to v.
       setelt: (%,"rest",%) -> %
-	++ setelt(u,"rest",v) (also written: \axiom{u.rest := v}) is equivalent to
-	++ \axiom{setrest!(u,v)}.
+	++ setelt(u,"rest",v) (also written: \axiom{u.rest := v}) is 
+	++ equivalent to \axiom{setrest!(u,v)}.
       setlast_!: (%,S) -> S
 	++ setlast!(u,x) destructively changes the last element of u to x.
       setelt: (%,"last",S) -> S
@@ -5538,9 +7465,78 @@ Note that this code is not included in the generated catdef.spad file.
 
 (SETQ |UnaryRecursiveAggregate;AL| (QUOTE NIL)) 
 
-(DEFUN |UnaryRecursiveAggregate| (#1=#:G84596) (LET (#2=#:G84597) (COND ((SETQ #2# (|assoc| (|devaluate| #1#) |UnaryRecursiveAggregate;AL|)) (CDR #2#)) (T (SETQ |UnaryRecursiveAggregate;AL| (|cons5| (CONS (|devaluate| #1#) (SETQ #2# (|UnaryRecursiveAggregate;| #1#))) |UnaryRecursiveAggregate;AL|)) #2#)))) 
-
-(DEFUN |UnaryRecursiveAggregate;| (|t#1|) (PROG (#1=#:G84595) (RETURN (PROG1 (LETT #1# (|sublisV| (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|))) (COND (|UnaryRecursiveAggregate;CAT|) ((QUOTE T) (LETT |UnaryRecursiveAggregate;CAT| (|Join| (|RecursiveAggregate| (QUOTE |t#1|)) (|mkCategory| (QUOTE |domain|) (QUOTE (((|concat| (|$| |$| |$|)) T) ((|concat| (|$| |t#1| |$|)) T) ((|first| (|t#1| |$|)) T) ((|elt| (|t#1| |$| "first")) T) ((|first| (|$| |$| (|NonNegativeInteger|))) T) ((|rest| (|$| |$|)) T) ((|elt| (|$| |$| "rest")) T) ((|rest| (|$| |$| (|NonNegativeInteger|))) T) ((|last| (|t#1| |$|)) T) ((|elt| (|t#1| |$| "last")) T) ((|last| (|$| |$| (|NonNegativeInteger|))) T) ((|tail| (|$| |$|)) T) ((|second| (|t#1| |$|)) T) ((|third| (|t#1| |$|)) T) ((|cycleEntry| (|$| |$|)) T) ((|cycleLength| ((|NonNegativeInteger|) |$|)) T) ((|cycleTail| (|$| |$|)) T) ((|concat!| (|$| |$| |$|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|concat!| (|$| |$| |t#1|)) (|has| |$| (ATTRIBUTE |s!
hallowlyMutable|))) ((|cycleSplit!| (|$| |$|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setfirst!| (|t#1| |$| |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setelt| (|t#1| |$| "first" |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setrest!| (|$| |$| |$|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setelt| (|$| |$| "rest" |$|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setlast!| (|t#1| |$| |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|setelt| (|t#1| |$| "last" |t#1|)) (|has| |$| (ATTRIBUTE |shallowlyMutable|))) ((|split!| (|$| |$| (|Integer|))) (|has| |$| (ATTRIBUTE |shallowlyMutable|))))) NIL (QUOTE ((|Integer|) (|NonNegativeInteger|))) NIL)) . #2=(|UnaryRecursiveAggregate|))))) . #2#) (SETELT #1# 0 (LIST (QUOTE |UnaryRecursiveAggregate|) (|devaluate| |t#1|))))))) 
+(DEFUN |UnaryRecursiveAggregate| (#1=#:G84596)
+ (LET (#2=#:G84597)
+  (COND
+   ((SETQ #2# (|assoc| (|devaluate| #1#) |UnaryRecursiveAggregate;AL|))
+     (CDR #2#))
+   (T
+    (SETQ |UnaryRecursiveAggregate;AL|
+     (|cons5|
+      (CONS (|devaluate| #1#) (SETQ #2# (|UnaryRecursiveAggregate;| #1#)))
+      |UnaryRecursiveAggregate;AL|))
+    #2#)))) 
+
+(DEFUN |UnaryRecursiveAggregate;| (|t#1|)
+ (PROG (#1=#:G84595)
+  (RETURN
+   (PROG1
+    (LETT #1#
+     (|sublisV|
+      (PAIR (QUOTE (|t#1|)) (LIST (|devaluate| |t#1|)))
+      (COND
+       (|UnaryRecursiveAggregate;CAT|)
+       ((QUOTE T)
+        (LETT |UnaryRecursiveAggregate;CAT|
+         (|Join|
+          (|RecursiveAggregate| (QUOTE |t#1|))
+          (|mkCategory|
+           (QUOTE |domain|)
+           (QUOTE (
+            ((|concat| (|$| |$| |$|)) T)
+            ((|concat| (|$| |t#1| |$|)) T)
+            ((|first| (|t#1| |$|)) T)
+            ((|elt| (|t#1| |$| "first")) T)
+            ((|first| (|$| |$| (|NonNegativeInteger|))) T)
+            ((|rest| (|$| |$|)) T)
+            ((|elt| (|$| |$| "rest")) T)
+            ((|rest| (|$| |$| (|NonNegativeInteger|))) T)
+            ((|last| (|t#1| |$|)) T)
+            ((|elt| (|t#1| |$| "last")) T)
+            ((|last| (|$| |$| (|NonNegativeInteger|))) T)
+            ((|tail| (|$| |$|)) T)
+            ((|second| (|t#1| |$|)) T)
+            ((|third| (|t#1| |$|)) T)
+            ((|cycleEntry| (|$| |$|)) T)
+            ((|cycleLength| ((|NonNegativeInteger|) |$|)) T)
+            ((|cycleTail| (|$| |$|)) T)
+            ((|concat!| (|$| |$| |$|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|concat!| (|$| |$| |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|cycleSplit!| (|$| |$|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setfirst!| (|t#1| |$| |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setelt| (|t#1| |$| "first" |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setrest!| (|$| |$| |$|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setelt| (|$| |$| "rest" |$|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setlast!| (|t#1| |$| |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|setelt| (|t#1| |$| "last" |t#1|))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))
+            ((|split!| (|$| |$| (|Integer|)))
+              (|has| |$| (ATTRIBUTE |shallowlyMutable|)))))
+           NIL
+           (QUOTE ((|Integer|) (|NonNegativeInteger|)))
+           NIL))
+         . #2=(|UnaryRecursiveAggregate|)))))
+     . #2#)
+    (SETELT #1# 0
+     (LIST (QUOTE |UnaryRecursiveAggregate|) (|devaluate| |t#1|))))))) 
 @
 \section{URAGG-.lsp BOOTSTRAP}
 {\bf URAGG-} depends on {\bf URAGG}. We need to break this cycle to build
@@ -5555,75 +7551,674 @@ Note that this code is not included in the generated catdef.spad file.
 
 (|/VERSIONCHECK| 2) 
 
-(DEFUN |URAGG-;elt;AfirstS;1| (|x| G84610 |$|) (SPADCALL |x| (QREFELT |$| 8))) 
-
-(DEFUN |URAGG-;elt;AlastS;2| (|x| G84612 |$|) (SPADCALL |x| (QREFELT |$| 11))) 
-
-(DEFUN |URAGG-;elt;ArestA;3| (|x| G84614 |$|) (SPADCALL |x| (QREFELT |$| 14))) 
-
-(DEFUN |URAGG-;second;AS;4| (|x| |$|) (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (QREFELT |$| 8))) 
-
-(DEFUN |URAGG-;third;AS;5| (|x| |$|) (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (QREFELT |$| 14)) (QREFELT |$| 8))) 
-
-(DEFUN |URAGG-;cyclic?;AB;6| (|x| |$|) (COND ((OR (SPADCALL |x| (QREFELT |$| 20)) (SPADCALL (|URAGG-;findCycle| |x| |$|) (QREFELT |$| 20))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) 
-
-(DEFUN |URAGG-;last;AS;7| (|x| |$|) (SPADCALL (SPADCALL |x| (QREFELT |$| 22)) (QREFELT |$| 8))) 
-
-(DEFUN |URAGG-;nodes;AL;8| (|x| |$|) (PROG (|l|) (RETURN (SEQ (LETT |l| NIL |URAGG-;nodes;AL;8|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |x| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |l| (CONS |x| |l|) |URAGG-;nodes;AL;8|) (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;nodes;AL;8|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (NREVERSE |l|)))))) 
-
-(DEFUN |URAGG-;children;AL;9| (|x| |$|) (PROG (|l|) (RETURN (SEQ (LETT |l| NIL |URAGG-;children;AL;9|) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 20)) |l|) ((QUOTE T) (CONS (SPADCALL |x| (QREFELT |$| 14)) |l|)))))))) 
-
-(DEFUN |URAGG-;leaf?;AB;10| (|x| |$|) (SPADCALL |x| (QREFELT |$| 20))) 
-
-(DEFUN |URAGG-;value;AS;11| (|x| |$|) (COND ((SPADCALL |x| (QREFELT |$| 20)) (|error| "value of empty object")) ((QUOTE T) (SPADCALL |x| (QREFELT |$| 8))))) 
-
-(DEFUN |URAGG-;less?;ANniB;12| (|l| |n| |$|) (PROG (|i|) (RETURN (SEQ (LETT |i| |n| |URAGG-;less?;ANniB;12|) (SEQ G190 (COND ((NULL (COND ((|<| 0 |i|) (COND ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) ((QUOTE T) (QUOTE NIL)))) (GO G191))) (SEQ (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;less?;ANniB;12|) (EXIT (LETT |i| (|-| |i| 1) |URAGG-;less?;ANniB;12|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (|<| 0 |i|)))))) 
-
-(DEFUN |URAGG-;more?;ANniB;13| (|l| |n| |$|) (PROG (|i|) (RETURN (SEQ (LETT |i| |n| |URAGG-;more?;ANniB;13|) (SEQ G190 (COND ((NULL (COND ((|<| 0 |i|) (COND ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) ((QUOTE T) (QUOTE NIL)))) (GO G191))) (SEQ (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;more?;ANniB;13|) (EXIT (LETT |i| (|-| |i| 1) |URAGG-;more?;ANniB;13|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((ZEROP |i|) (COND ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) ((QUOTE T) (QUOTE NIL)))))))) 
-
-(DEFUN |URAGG-;size?;ANniB;14| (|l| |n| |$|) (PROG (|i|) (RETURN (SEQ (LETT |i| |n| |URAGG-;size?;ANniB;14|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (|<| 0 |i|)))) (GO G191))) (SEQ (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;size?;ANniB;14|) (EXIT (LETT |i| (|-| |i| 1) |URAGG-;size?;ANniB;14|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |l| (QREFELT |$| 20)) (ZEROP |i|)) ((QUOTE T) (QUOTE NIL)))))))) 
-
-(DEFUN |URAGG-;#;ANni;15| (|x| |$|) (PROG (|k|) (RETURN (SEQ (SEQ (LETT |k| 0 |URAGG-;#;ANni;15|) G190 (COND ((NULL (COND ((SPADCALL |x| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (COND ((EQL |k| 1000) (COND ((SPADCALL |x| (QREFELT |$| 33)) (EXIT (|error| "cyclic list")))))) (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;#;ANni;15|))) (LETT |k| (QSADD1 |k|) |URAGG-;#;ANni;15|) (GO G190) G191 (EXIT NIL)) (EXIT |k|))))) 
-
-(DEFUN |URAGG-;tail;2A;16| (|x| |$|) (PROG (|k| |y|) (RETURN (SEQ (COND ((SPADCALL |x| (QREFELT |$| 20)) (|error| "empty list")) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;tail;2A;16|) (SEQ (LETT |k| 0 |URAGG-;tail;2A;16|) G190 (COND ((NULL (COND ((SPADCALL |y| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (COND ((EQL |k| 1000) (COND ((SPADCALL |x| (QREFELT |$| 33)) (EXIT (|error| "cyclic list")))))) (EXIT (LETT |y| (SPADCALL (LETT |x| |y| |URAGG-;tail;2A;16|) (QREFELT |$| 14)) |URAGG-;tail;2A;16|))) (LETT |k| (QSADD1 |k|) |URAGG-;tail;2A;16|) (GO G190) G191 (EXIT NIL)) (EXIT |x|)))))))) 
-
-(DEFUN |URAGG-;findCycle| (|x| |$|) (PROG (#1=#:G84667 |y|) (RETURN (SEQ (EXIT (SEQ (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;findCycle|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |y| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (COND ((SPADCALL |x| |y| (QREFELT |$| 36)) (PROGN (LETT #1# |x| |URAGG-;findCycle|) (GO #1#)))) (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;findCycle|) (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;findCycle|) (COND ((SPADCALL |y| (QREFELT |$| 20)) (PROGN (LETT #1# |y| |URAGG-;findCycle|) (GO #1#)))) (COND ((SPADCALL |x| |y| (QREFELT |$| 36)) (PROGN (LETT #1# |y| |URAGG-;findCycle|) (GO #1#)))) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;findCycle|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |y|))) #1# (EXIT #1#))))) 
-
-(DEFUN |URAGG-;cycleTail;2A;18| (|x| |$|) (PROG (|y| |z|) (RETURN (SEQ (COND ((SPADCALL (LETT |y| (LETT |x| (SPADCALL |x| (QREFELT |$| 37)) |URAGG-;cycleTail;2A;18|) |URAGG-;cycleTail;2A;18|) (QREFELT |$| 20)) |x|) ((QUOTE T) (SEQ (LETT |z| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleTail;2A;18|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |x| |z| (QREFELT |$| 36)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |y| |z| |URAGG-;cycleTail;2A;18|) (EXIT (LETT |z| (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleTail;2A;18|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |y|)))))))) 
-
-(DEFUN |URAGG-;cycleEntry;2A;19| (|x| |$|) (PROG (|l| |z| |k| |y|) (RETURN (SEQ (COND ((SPADCALL |x| (QREFELT |$| 20)) |x|) ((SPADCALL (LETT |y| (|URAGG-;findCycle| |x| |$|) |URAGG-;cycleEntry;2A;19|) (QREFELT |$| 20)) |y|) ((QUOTE T) (SEQ (LETT |z| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|) (SEQ (LETT |l| 1 |URAGG-;cycleEntry;2A;19|) G190 (COND ((NULL (COND ((SPADCALL |y| |z| (QREFELT |$| 36)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |z| (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|))) (LETT |l| (QSADD1 |l|) |URAGG-;cycleEntry;2A;19|) (GO G190) G191 (EXIT NIL)) (LETT |y| |x| |URAGG-;cycleEntry;2A;19|) (SEQ (LETT |k| 1 |URAGG-;cycleEntry;2A;19|) G190 (COND ((QSGREATERP |k| |l|) (GO G191))) (SEQ (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|))) (LETT |k| (QSADD1 |k|) |URAGG-;cycleEntry;2A;19|) (GO G190) G191 (EXIT NIL)) (SEQ G190 (COND ((NULL (COND ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE NIL)!
) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|))) NIL (GO G190) G191 (EXIT NIL)) (EXIT |x|)))))))) 
-
-(DEFUN |URAGG-;cycleLength;ANni;20| (|x| |$|) (PROG (|k| |y|) (RETURN (SEQ (COND ((OR (SPADCALL |x| (QREFELT |$| 20)) (SPADCALL (LETT |x| (|URAGG-;findCycle| |x| |$|) |URAGG-;cycleLength;ANni;20|) (QREFELT |$| 20))) 0) ((QUOTE T) (SEQ (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleLength;ANni;20|) (SEQ (LETT |k| 1 |URAGG-;cycleLength;ANni;20|) G190 (COND ((NULL (COND ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleLength;ANni;20|))) (LETT |k| (QSADD1 |k|) |URAGG-;cycleLength;ANni;20|) (GO G190) G191 (EXIT NIL)) (EXIT |k|)))))))) 
-
-(DEFUN |URAGG-;rest;ANniA;21| (|x| |n| |$|) (PROG (|i|) (RETURN (SEQ (SEQ (LETT |i| 1 |URAGG-;rest;ANniA;21|) G190 (COND ((QSGREATERP |i| |n|) (GO G191))) (SEQ (EXIT (COND ((SPADCALL |x| (QREFELT |$| 20)) (|error| "Index out of range")) ((QUOTE T) (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;rest;ANniA;21|))))) (LETT |i| (QSADD1 |i|) |URAGG-;rest;ANniA;21|) (GO G190) G191 (EXIT NIL)) (EXIT |x|))))) 
-
-(DEFUN |URAGG-;last;ANniA;22| (|x| |n| |$|) (PROG (|m| #1=#:G84694) (RETURN (SEQ (LETT |m| (SPADCALL |x| (QREFELT |$| 42)) |URAGG-;last;ANniA;22|) (EXIT (COND ((|<| |m| |n|) (|error| "index out of range")) ((QUOTE T) (SPADCALL (SPADCALL |x| (PROG1 (LETT #1# (|-| |m| |n|) |URAGG-;last;ANniA;22|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 43)) (QREFELT |$| 44))))))))) 
-
-(DEFUN |URAGG-;=;2AB;23| (|x| |y| |$|) (PROG (|k| #1=#:G84705) (RETURN (SEQ (EXIT (COND ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE T)) ((QUOTE T) (SEQ (SEQ (LETT |k| 0 |URAGG-;=;2AB;23|) G190 (COND ((NULL (COND ((OR (SPADCALL |x| (QREFELT |$| 20)) (SPADCALL |y| (QREFELT |$| 20))) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (COND ((EQL |k| 1000) (COND ((SPADCALL |x| (QREFELT |$| 33)) (EXIT (|error| "cyclic list")))))) (COND ((NULL (SPADCALL (SPADCALL |x| (QREFELT |$| 8)) (SPADCALL |y| (QREFELT |$| 8)) (QREFELT |$| 46))) (EXIT (PROGN (LETT #1# (QUOTE NIL) |URAGG-;=;2AB;23|) (GO #1#))))) (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;=;2AB;23|) (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;=;2AB;23|))) (LETT |k| (QSADD1 |k|) |URAGG-;=;2AB;23|) (GO G190) G191 (EXIT NIL)) (EXIT (COND ((SPADCALL |x| (QREFELT |$| 20)) (SPADCALL |y| (QREFELT |$| 20))) ((QUOTE T) (QUOTE NIL)))))))) #1# (EXIT #1#))))) 
-
-(DEFUN |URAGG-;node?;2AB;24| (|u| |v| |$|) (PROG (|k| #1=#:G84711) (RETURN (SEQ (EXIT (SEQ (SEQ (LETT |k| 0 |URAGG-;node?;2AB;24|) G190 (COND ((NULL (COND ((SPADCALL |v| (QREFELT |$| 20)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (EXIT (COND ((SPADCALL |u| |v| (QREFELT |$| 48)) (PROGN (LETT #1# (QUOTE T) |URAGG-;node?;2AB;24|) (GO #1#))) ((QUOTE T) (SEQ (COND ((EQL |k| 1000) (COND ((SPADCALL |v| (QREFELT |$| 33)) (EXIT (|error| "cyclic list")))))) (EXIT (LETT |v| (SPADCALL |v| (QREFELT |$| 14)) |URAGG-;node?;2AB;24|))))))) (LETT |k| (QSADD1 |k|) |URAGG-;node?;2AB;24|) (GO G190) G191 (EXIT NIL)) (EXIT (SPADCALL |u| |v| (QREFELT |$| 48))))) #1# (EXIT #1#))))) 
-
-(DEFUN |URAGG-;setelt;Afirst2S;25| (|x| G84713 |a| |$|) (SPADCALL |x| |a| (QREFELT |$| 50))) 
-
-(DEFUN |URAGG-;setelt;Alast2S;26| (|x| G84715 |a| |$|) (SPADCALL |x| |a| (QREFELT |$| 52))) 
-
-(DEFUN |URAGG-;setelt;Arest2A;27| (|x| G84717 |a| |$|) (SPADCALL |x| |a| (QREFELT |$| 54))) 
-
-(DEFUN |URAGG-;concat;3A;28| (|x| |y| |$|) (SPADCALL (SPADCALL |x| (QREFELT |$| 44)) |y| (QREFELT |$| 56))) 
-
-(DEFUN |URAGG-;setlast!;A2S;29| (|x| |s| |$|) (SEQ (COND ((SPADCALL |x| (QREFELT |$| 20)) (|error| "setlast: empty list")) ((QUOTE T) (SEQ (SPADCALL (SPADCALL |x| (QREFELT |$| 22)) |s| (QREFELT |$| 50)) (EXIT |s|)))))) 
-
-(DEFUN |URAGG-;setchildren!;ALA;30| (|u| |lv| |$|) (COND ((EQL (LENGTH |lv|) 1) (SPADCALL |u| (|SPADfirst| |lv|) (QREFELT |$| 54))) ((QUOTE T) (|error| "wrong number of children specified")))) 
-
-(DEFUN |URAGG-;setvalue!;A2S;31| (|u| |s| |$|) (SPADCALL |u| |s| (QREFELT |$| 50))) 
-
-(DEFUN |URAGG-;split!;AIA;32| (|p| |n| |$|) (PROG (#1=#:G84725 |q|) (RETURN (SEQ (COND ((|<| |n| 1) (|error| "index out of range")) ((QUOTE T) (SEQ (LETT |p| (SPADCALL |p| (PROG1 (LETT #1# (|-| |n| 1) |URAGG-;split!;AIA;32|) (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#)) (QREFELT |$| 43)) |URAGG-;split!;AIA;32|) (LETT |q| (SPADCALL |p| (QREFELT |$| 14)) |URAGG-;split!;AIA;32|) (SPADCALL |p| (SPADCALL (QREFELT |$| 61)) (QREFELT |$| 54)) (EXIT |q|)))))))) 
-
-(DEFUN |URAGG-;cycleSplit!;2A;33| (|x| |$|) (PROG (|y| |z|) (RETURN (SEQ (COND ((OR (SPADCALL (LETT |y| (SPADCALL |x| (QREFELT |$| 37)) |URAGG-;cycleSplit!;2A;33|) (QREFELT |$| 20)) (SPADCALL |x| |y| (QREFELT |$| 36))) |y|) ((QUOTE T) (SEQ (LETT |z| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleSplit!;2A;33|) (SEQ G190 (COND ((NULL (COND ((SPADCALL |z| |y| (QREFELT |$| 36)) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191))) (SEQ (LETT |x| |z| |URAGG-;cycleSplit!;2A;33|) (EXIT (LETT |z| (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleSplit!;2A;33|))) NIL (GO G190) G191 (EXIT NIL)) (SPADCALL |x| (SPADCALL (QREFELT |$| 61)) (QREFELT |$| 54)) (EXIT |y|)))))))) 
-
-(DEFUN |UnaryRecursiveAggregate&| (|#1| |#2|) (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|) (RETURN (PROGN (LETT |DV$1| (|devaluate| |#1|) . #1=(|UnaryRecursiveAggregate&|)) (LETT |DV$2| (|devaluate| |#2|) . #1#) (LETT |dv$| (LIST (QUOTE |UnaryRecursiveAggregate&|) |DV$1| |DV$2|) . #1#) (LETT |$| (GETREFV 66) . #1#) (QSETREFV |$| 0 |dv$|) (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 (LIST (|HasAttribute| |#1| (QUOTE |shallowlyMutable|)))) . #1#)) (|stuffDomainSlots| |$|) (QSETREFV |$| 6 |#1|) (QSETREFV |$| 7 |#2|) (COND ((|HasAttribute| |#1| (QUOTE |finiteAggregate|)) (QSETREFV |$| 45 (CONS (|dispatchFunction| |URAGG-;last;ANniA;22|) |$|)))) (COND ((|HasCategory| |#2| (QUOTE (|SetCategory|))) (PROGN (QSETREFV |$| 47 (CONS (|dispatchFunction| |URAGG-;=;2AB;23|) |$|)) (QSETREFV |$| 49 (CONS (|dispatchFunction| |URAGG-;node?;2AB;24|) |$|))))) (COND ((|testBitVector| |pv$| 1) (PROGN (QSETREFV |$| 51 (CONS (|dispatchFunction| |URAGG-;setelt;Afirst2S;25|) |$|)) (QSETREFV |$| 53 (CO!
NS (|dispatchFunction| |URAGG-;setelt;Alast2S;26|) |$|)) (QSETREFV |$| 55 (CONS (|dispatchFunction| |URAGG-;setelt;Arest2A;27|) |$|)) (QSETREFV |$| 57 (CONS (|dispatchFunction| |URAGG-;concat;3A;28|) |$|)) (QSETREFV |$| 58 (CONS (|dispatchFunction| |URAGG-;setlast!;A2S;29|) |$|)) (QSETREFV |$| 59 (CONS (|dispatchFunction| |URAGG-;setchildren!;ALA;30|) |$|)) (QSETREFV |$| 60 (CONS (|dispatchFunction| |URAGG-;setvalue!;A2S;31|) |$|)) (QSETREFV |$| 63 (CONS (|dispatchFunction| |URAGG-;split!;AIA;32|) |$|)) (QSETREFV |$| 64 (CONS (|dispatchFunction| |URAGG-;cycleSplit!;2A;33|) |$|))))) |$|)))) 
-
-(MAKEPROP (QUOTE |UnaryRecursiveAggregate&|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (0 . |first|) (QUOTE "first") |URAGG-;elt;AfirstS;1| (5 . |last|) (QUOTE "last") |URAGG-;elt;AlastS;2| (10 . |rest|) (QUOTE "rest") |URAGG-;elt;ArestA;3| |URAGG-;second;AS;4| |URAGG-;third;AS;5| (|Boolean|) (15 . |empty?|) |URAGG-;cyclic?;AB;6| (20 . |tail|) |URAGG-;last;AS;7| (|List| |$|) |URAGG-;nodes;AL;8| |URAGG-;children;AL;9| |URAGG-;leaf?;AB;10| |URAGG-;value;AS;11| (|NonNegativeInteger|) |URAGG-;less?;ANniB;12| |URAGG-;more?;ANniB;13| |URAGG-;size?;ANniB;14| (25 . |cyclic?|) |URAGG-;#;ANni;15| |URAGG-;tail;2A;16| (30 . |eq?|) (36 . |cycleEntry|) |URAGG-;cycleTail;2A;18| |URAGG-;cycleEntry;2A;19| |URAGG-;cycleLength;ANni;20| |URAGG-;rest;ANniA;21| (41 . |#|) (46 . |rest|) (52 . |copy|) (57 . |last|) (63 . |=|) (69 . |=|) (75 . |=|) (81 . |node?|) (87 . |setfirst!|) (93 . |setelt|) (100 . |setlast!|) (106 . |setelt|) (113 . |setrest!|) (1!
19 . |setelt|) (126 . |concat!|) (132 . |concat|) (138 . |setlast!|) (144 . |setchildren!|) (150 . |setvalue!|) (156 . |empty|) (|Integer|) (160 . |split!|) (166 . |cycleSplit!|) (QUOTE "value"))) (QUOTE #(|value| 171 |third| 176 |tail| 181 |split!| 186 |size?| 192 |setvalue!| 198 |setlast!| 204 |setelt| 210 |setchildren!| 231 |second| 237 |rest| 242 |nodes| 248 |node?| 253 |more?| 259 |less?| 265 |leaf?| 271 |last| 276 |elt| 287 |cyclic?| 305 |cycleTail| 310 |cycleSplit!| 315 |cycleLength| 320 |cycleEntry| 325 |concat| 330 |children| 336 |=| 341 |#| 347)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) (CONS (QUOTE #()) (CONS (QUOTE #()) (|makeByteWordVec2| 64 (QUOTE (1 6 7 0 8 1 6 7 0 11 1 6 0 0 14 1 6 19 0 20 1 6 0 0 22 1 6 19 0 33 2 6 19 0 0 36 1 6 0 0 37 1 6 29 0 42 2 6 0 0 29 43 1 6 0 0 44 2 0 0 0 29 45 2 7 19 0 0 46 2 0 19 0 0 47 2 6 19 0 0 48 2 0 19 0 0 49 2 6 7 0 7 50 3 0 7 0 9 7 51 2 6 7 0 7 52 3 0 7 0 12 7 53 2 6 0 0 0 54 3 0 0 0 15 0 55 2 6 0 0 0 56 2 0 0 0 !
0 57 2 0 7 0 7 58 2 0 0 0 24 59 2 0 7 0 7 60 0 6 0 61 2 0 0 0!
 62 63 1 0 0 0 64 1 0 7 0 28 1 0 7 0 18 1 0 0 0 35 2 0 0 0 62 63 2 0 19 0 29 32 2 0 7 0 7 60 2 0 7 0 7 58 3 0 7 0 12 7 53 3 0 0 0 15 0 55 3 0 7 0 9 7 51 2 0 0 0 24 59 1 0 7 0 17 2 0 0 0 29 41 1 0 24 0 25 2 0 19 0 0 49 2 0 19 0 29 31 2 0 19 0 29 30 1 0 19 0 27 2 0 0 0 29 45 1 0 7 0 23 2 0 7 0 12 13 2 0 0 0 15 16 2 0 7 0 9 10 1 0 19 0 21 1 0 0 0 38 1 0 0 0 64 1 0 29 0 40 1 0 0 0 39 2 0 0 0 0 57 1 0 24 0 26 2 0 19 0 0 47 1 0 29 0 34)))))) (QUOTE |lookupComplete|))) 
+(DEFUN |URAGG-;elt;AfirstS;1| (|x| G84610 |$|)
+ (SPADCALL |x| (QREFELT |$| 8))) 
+
+(DEFUN |URAGG-;elt;AlastS;2| (|x| G84612 |$|)
+ (SPADCALL |x| (QREFELT |$| 11))) 
+
+(DEFUN |URAGG-;elt;ArestA;3| (|x| G84614 |$|)
+ (SPADCALL |x| (QREFELT |$| 14))) 
+
+(DEFUN |URAGG-;second;AS;4| (|x| |$|)
+ (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (QREFELT |$| 8))) 
+
+(DEFUN |URAGG-;third;AS;5| (|x| |$|)
+ (SPADCALL
+  (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (QREFELT |$| 14))
+  (QREFELT |$| 8))) 
+
+(DEFUN |URAGG-;cyclic?;AB;6| (|x| |$|)
+ (COND
+  ((OR
+    (SPADCALL |x| (QREFELT |$| 20))
+    (SPADCALL (|URAGG-;findCycle| |x| |$|) (QREFELT |$| 20)))
+     (QUOTE NIL))
+   ((QUOTE T) (QUOTE T)))) 
+
+(DEFUN |URAGG-;last;AS;7| (|x| |$|)
+ (SPADCALL (SPADCALL |x| (QREFELT |$| 22)) (QREFELT |$| 8))) 
+
+(DEFUN |URAGG-;nodes;AL;8| (|x| |$|)
+ (PROG (|l|)
+  (RETURN
+   (SEQ
+    (LETT |l| NIL |URAGG-;nodes;AL;8|)
+    (SEQ 
+     G190
+     (COND
+      ((NULL
+        (COND
+          ((SPADCALL |x| (QREFELT |$| 20)) (QUOTE NIL))
+          ((QUOTE T) (QUOTE T))))
+        (GO G191)))
+     (SEQ
+      (LETT |l| (CONS |x| |l|) |URAGG-;nodes;AL;8|)
+      (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;nodes;AL;8|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT (NREVERSE |l|)))))) 
+
+(DEFUN |URAGG-;children;AL;9| (|x| |$|)
+ (PROG (|l|)
+  (RETURN
+   (SEQ
+    (LETT |l| NIL |URAGG-;children;AL;9|)
+    (EXIT
+     (COND
+      ((SPADCALL |x| (QREFELT |$| 20)) |l|)
+      ((QUOTE T) (CONS (SPADCALL |x| (QREFELT |$| 14)) |l|)))))))) 
+
+(DEFUN |URAGG-;leaf?;AB;10| (|x| |$|)
+ (SPADCALL |x| (QREFELT |$| 20))) 
+
+(DEFUN |URAGG-;value;AS;11| (|x| |$|)
+ (COND
+  ((SPADCALL |x| (QREFELT |$| 20)) (|error| "value of empty object"))
+  ((QUOTE T) (SPADCALL |x| (QREFELT |$| 8))))) 
+
+(DEFUN |URAGG-;less?;ANniB;12| (|l| |n| |$|)
+ (PROG (|i|)
+  (RETURN
+   (SEQ
+    (LETT |i| |n| |URAGG-;less?;ANniB;12|)
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+        (COND
+         ((|<| 0 |i|)
+          (COND
+           ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL))
+           ((QUOTE T) (QUOTE T))))
+         ((QUOTE T) (QUOTE NIL))))
+       (GO G191)))
+     (SEQ 
+      (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;less?;ANniB;12|)
+      (EXIT (LETT |i| (|-| |i| 1) |URAGG-;less?;ANniB;12|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT (|<| 0 |i|)))))) 
+
+(DEFUN |URAGG-;more?;ANniB;13| (|l| |n| |$|)
+ (PROG (|i|)
+  (RETURN
+   (SEQ
+    (LETT |i| |n| |URAGG-;more?;ANniB;13|)
+    (SEQ
+     G190
+     (COND
+      ((NULL
+       (COND
+        ((|<| 0 |i|)
+         (COND
+          ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL))
+          ((QUOTE T) (QUOTE T))))
+        ((QUOTE T) (QUOTE NIL))))
+       (GO G191)))
+     (SEQ
+      (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;more?;ANniB;13|)
+      (EXIT (LETT |i| (|-| |i| 1) |URAGG-;more?;ANniB;13|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT
+     (COND
+      ((ZEROP |i|)
+       (COND
+        ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL))
+        ((QUOTE T) (QUOTE T))))
+      ((QUOTE T) (QUOTE NIL)))))))) 
+
+(DEFUN |URAGG-;size?;ANniB;14| (|l| |n| |$|)
+ (PROG (|i|)
+  (RETURN
+   (SEQ
+    (LETT |i| |n| |URAGG-;size?;ANniB;14|)
+    (SEQ 
+     G190 
+     (COND
+      ((NULL
+       (COND
+        ((SPADCALL |l| (QREFELT |$| 20)) (QUOTE NIL))
+        ((QUOTE T) (|<| 0 |i|))))
+       (GO G191)))
+     (SEQ
+      (LETT |l| (SPADCALL |l| (QREFELT |$| 14)) |URAGG-;size?;ANniB;14|)
+      (EXIT (LETT |i| (|-| |i| 1) |URAGG-;size?;ANniB;14|)))
+     NIL
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT
+     (COND
+      ((SPADCALL |l| (QREFELT |$| 20)) (ZEROP |i|))
+      ((QUOTE T) (QUOTE NIL)))))))) 
+
+(DEFUN |URAGG-;#;ANni;15| (|x| |$|)
+ (PROG (|k|)
+  (RETURN
+   (SEQ
+    (SEQ
+     (LETT |k| 0 |URAGG-;#;ANni;15|)
+     G190
+     (COND
+      ((NULL
+        (COND
+         ((SPADCALL |x| (QREFELT |$| 20)) (QUOTE NIL))
+         ((QUOTE T) (QUOTE T))))
+       (GO G191)))
+     (SEQ
+      (COND
+       ((EQL |k| 1000)
+         (COND
+          ((SPADCALL |x| (QREFELT |$| 33)) (EXIT (|error| "cyclic list"))))))
+       (EXIT (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;#;ANni;15|)))
+     (LETT |k| (QSADD1 |k|) |URAGG-;#;ANni;15|)
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |k|))))) 
+
+(DEFUN |URAGG-;tail;2A;16| (|x| |$|)
+ (PROG (|k| |y|)
+  (RETURN
+   (SEQ
+    (COND
+     ((SPADCALL |x| (QREFELT |$| 20)) (|error| "empty list"))
+     ((QUOTE T)
+      (SEQ
+       (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;tail;2A;16|)
+       (SEQ
+        (LETT |k| 0 |URAGG-;tail;2A;16|)
+        G190
+        (COND
+         ((NULL
+           (COND
+            ((SPADCALL |y| (QREFELT |$| 20)) (QUOTE NIL))
+            ((QUOTE T) (QUOTE T))))
+          (GO G191)))
+        (SEQ
+         (COND
+          ((EQL |k| 1000)
+            (COND
+             ((SPADCALL |x| (QREFELT |$| 33))
+               (EXIT (|error| "cyclic list"))))))
+         (EXIT 
+          (LETT |y|
+           (SPADCALL (LETT |x| |y| |URAGG-;tail;2A;16|) (QREFELT |$| 14))
+           |URAGG-;tail;2A;16|)))
+        (LETT |k| (QSADD1 |k|) |URAGG-;tail;2A;16|)
+        (GO G190)
+        G191
+        (EXIT NIL))
+       (EXIT |x|)))))))) 
+
+(DEFUN |URAGG-;findCycle| (|x| |$|)
+ (PROG (#1=#:G84667 |y|)
+  (RETURN
+   (SEQ
+    (EXIT
+     (SEQ
+      (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;findCycle|)
+      (SEQ 
+       G190 
+       (COND
+        ((NULL
+          (COND
+           ((SPADCALL |y| (QREFELT |$| 20)) (QUOTE NIL))
+           ((QUOTE T) (QUOTE T))))
+         (GO G191)))
+       (SEQ
+        (COND
+         ((SPADCALL |x| |y| (QREFELT |$| 36))
+           (PROGN (LETT #1# |x| |URAGG-;findCycle|) (GO #1#))))
+        (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;findCycle|)
+        (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;findCycle|)
+        (COND
+         ((SPADCALL |y| (QREFELT |$| 20))
+           (PROGN (LETT #1# |y| |URAGG-;findCycle|) (GO #1#))))
+        (COND
+         ((SPADCALL |x| |y| (QREFELT |$| 36))
+           (PROGN (LETT #1# |y| |URAGG-;findCycle|) (GO #1#))))
+        (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;findCycle|)))
+       NIL
+       (GO G190)
+       G191
+       (EXIT NIL))
+      (EXIT |y|)))
+    #1#
+    (EXIT #1#))))) 
+
+(DEFUN |URAGG-;cycleTail;2A;18| (|x| |$|)
+ (PROG (|y| |z|)
+  (RETURN
+   (SEQ
+    (COND
+     ((SPADCALL
+       (LETT |y|
+        (LETT |x| (SPADCALL |x| (QREFELT |$| 37)) |URAGG-;cycleTail;2A;18|)
+        |URAGG-;cycleTail;2A;18|)
+       (QREFELT |$| 20))
+      |x|)
+     ((QUOTE T)
+       (SEQ
+        (LETT |z| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleTail;2A;18|)
+        (SEQ 
+         G190
+         (COND
+          ((NULL
+            (COND
+             ((SPADCALL |x| |z| (QREFELT |$| 36)) (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ
+          (LETT |y| |z| |URAGG-;cycleTail;2A;18|)
+          (EXIT
+           (LETT |z|
+            (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleTail;2A;18|)))
+         NIL
+         (GO G190)
+         G191
+         (EXIT NIL))
+        (EXIT |y|)))))))) 
+
+(DEFUN |URAGG-;cycleEntry;2A;19| (|x| |$|)
+ (PROG (|l| |z| |k| |y|)
+  (RETURN
+   (SEQ
+    (COND
+     ((SPADCALL |x| (QREFELT |$| 20)) |x|)
+     ((SPADCALL
+       (LETT |y| (|URAGG-;findCycle| |x| |$|) |URAGG-;cycleEntry;2A;19|)
+       (QREFELT |$| 20))
+      |y|)
+     ((QUOTE T)
+      (SEQ
+       (LETT |z| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|)
+       (SEQ
+        (LETT |l| 1 |URAGG-;cycleEntry;2A;19|)
+        G190
+        (COND 
+         ((NULL
+           (COND
+            ((SPADCALL |y| |z| (QREFELT |$| 36)) (QUOTE NIL))
+            ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+        (SEQ
+         (EXIT
+          (LETT |z|
+           (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|)))
+        (LETT |l|
+         (QSADD1 |l|) |URAGG-;cycleEntry;2A;19|) (GO G190) G191 (EXIT NIL))
+       (LETT |y| |x| |URAGG-;cycleEntry;2A;19|)
+       (SEQ
+        (LETT |k| 1 |URAGG-;cycleEntry;2A;19|)
+        G190
+        (COND ((QSGREATERP |k| |l|) (GO G191)))
+        (SEQ
+         (EXIT
+          (LETT |y|
+           (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|)))
+        (LETT |k| (QSADD1 |k|) |URAGG-;cycleEntry;2A;19|)
+        (GO G190)
+        G191
+        (EXIT NIL))
+       (SEQ 
+        G190 
+        (COND
+          ((NULL
+            (COND
+             ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+        (SEQ
+         (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|)
+         (EXIT
+          (LETT |y|
+           (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleEntry;2A;19|)))
+        NIL
+        (GO G190)
+        G191 
+        (EXIT NIL))
+       (EXIT |x|)))))))) 
+
+(DEFUN |URAGG-;cycleLength;ANni;20| (|x| |$|)
+ (PROG (|k| |y|)
+  (RETURN
+   (SEQ
+    (COND
+     ((OR
+       (SPADCALL |x| (QREFELT |$| 20))
+       (SPADCALL
+        (LETT |x| (|URAGG-;findCycle| |x| |$|) |URAGG-;cycleLength;ANni;20|)
+        (QREFELT |$| 20)))
+       0)
+     ((QUOTE T)
+      (SEQ
+       (LETT |y| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleLength;ANni;20|)
+       (SEQ
+        (LETT |k| 1 |URAGG-;cycleLength;ANni;20|)
+        G190
+        (COND
+         ((NULL
+           (COND
+             ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+          (GO G191)))
+        (SEQ
+         (EXIT
+          (LETT |y|
+           (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;cycleLength;ANni;20|)))
+        (LETT |k| (QSADD1 |k|) |URAGG-;cycleLength;ANni;20|)
+        (GO G190)
+         G191
+         (EXIT NIL))
+       (EXIT |k|)))))))) 
+
+(DEFUN |URAGG-;rest;ANniA;21| (|x| |n| |$|)
+ (PROG (|i|)
+  (RETURN
+   (SEQ
+    (SEQ
+     (LETT |i| 1 |URAGG-;rest;ANniA;21|)
+     G190
+     (COND ((QSGREATERP |i| |n|) (GO G191)))
+     (SEQ
+      (EXIT
+       (COND
+        ((SPADCALL |x| (QREFELT |$| 20)) (|error| "Index out of range"))
+        ((QUOTE T)
+          (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;rest;ANniA;21|)))))
+     (LETT |i| (QSADD1 |i|) |URAGG-;rest;ANniA;21|)
+     (GO G190)
+     G191
+     (EXIT NIL))
+    (EXIT |x|))))) 
+
+(DEFUN |URAGG-;last;ANniA;22| (|x| |n| |$|)
+ (PROG (|m| #1=#:G84694)
+  (RETURN
+   (SEQ
+    (LETT |m| (SPADCALL |x| (QREFELT |$| 42)) |URAGG-;last;ANniA;22|)
+    (EXIT
+     (COND
+      ((|<| |m| |n|) (|error| "index out of range"))
+      ((QUOTE T)
+       (SPADCALL
+        (SPADCALL |x|
+         (PROG1
+          (LETT #1# (|-| |m| |n|) |URAGG-;last;ANniA;22|)
+          (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+         (QREFELT |$| 43))
+        (QREFELT |$| 44))))))))) 
+
+(DEFUN |URAGG-;=;2AB;23| (|x| |y| |$|)
+ (PROG (|k| #1=#:G84705) 
+  (RETURN
+   (SEQ
+    (EXIT
+     (COND
+      ((SPADCALL |x| |y| (QREFELT |$| 36)) (QUOTE T))
+      ((QUOTE T)
+       (SEQ
+        (SEQ
+         (LETT |k| 0 |URAGG-;=;2AB;23|)
+         G190 
+         (COND
+          ((NULL
+            (COND
+             ((OR
+               (SPADCALL |x| (QREFELT |$| 20))
+               (SPADCALL |y| (QREFELT |$| 20)))
+               (QUOTE NIL))
+             ((QUOTE T) (QUOTE T))))
+           (GO G191)))
+         (SEQ 
+          (COND
+           ((EQL |k| 1000)
+            (COND
+             ((SPADCALL |x| (QREFELT |$| 33))
+               (EXIT (|error| "cyclic list"))))))
+          (COND
+           ((NULL
+             (SPADCALL
+              (SPADCALL |x| (QREFELT |$| 8))
+              (SPADCALL |y| (QREFELT |$| 8))
+              (QREFELT |$| 46)))
+            (EXIT (PROGN (LETT #1# (QUOTE NIL) |URAGG-;=;2AB;23|) (GO #1#)))))
+          (LETT |x| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;=;2AB;23|)
+          (EXIT (LETT |y| (SPADCALL |y| (QREFELT |$| 14)) |URAGG-;=;2AB;23|)))
+         (LETT |k| (QSADD1 |k|) |URAGG-;=;2AB;23|)
+         (GO G190)
+         G191
+         (EXIT NIL))
+        (EXIT
+         (COND
+          ((SPADCALL |x| (QREFELT |$| 20)) (SPADCALL |y| (QREFELT |$| 20)))
+          ((QUOTE T) (QUOTE NIL))))))))
+    #1# 
+    (EXIT #1#))))) 
+
+(DEFUN |URAGG-;node?;2AB;24| (|u| |v| |$|)
+ (PROG (|k| #1=#:G84711)
+  (RETURN
+   (SEQ
+    (EXIT
+     (SEQ
+      (SEQ
+       (LETT |k| 0 |URAGG-;node?;2AB;24|)
+       G190
+       (COND
+         ((NULL 
+          (COND 
+           ((SPADCALL |v| (QREFELT |$| 20)) (QUOTE NIL))
+           ((QUOTE T) (QUOTE T)))) 
+        (GO G191)))
+       (SEQ 
+        (EXIT 
+         (COND 
+          ((SPADCALL |u| |v| (QREFELT |$| 48))
+            (PROGN (LETT #1# (QUOTE T) |URAGG-;node?;2AB;24|) (GO #1#)))
+          ((QUOTE T)
+           (SEQ
+            (COND
+             ((EQL |k| 1000)
+              (COND
+               ((SPADCALL |v| (QREFELT |$| 33))
+                 (EXIT (|error| "cyclic list"))))))
+            (EXIT
+             (LETT |v|
+              (SPADCALL |v| (QREFELT |$| 14))
+              |URAGG-;node?;2AB;24|)))))))
+       (LETT |k| (QSADD1 |k|) |URAGG-;node?;2AB;24|) (GO G190) G191 (EXIT NIL))
+      (EXIT (SPADCALL |u| |v| (QREFELT |$| 48)))))
+    #1# (EXIT #1#))))) 
+
+(DEFUN |URAGG-;setelt;Afirst2S;25| (|x| G84713 |a| |$|)
+ (SPADCALL |x| |a| (QREFELT |$| 50))) 
+
+(DEFUN |URAGG-;setelt;Alast2S;26| (|x| G84715 |a| |$|) 
+ (SPADCALL |x| |a| (QREFELT |$| 52))) 
+
+(DEFUN |URAGG-;setelt;Arest2A;27| (|x| G84717 |a| |$|)
+ (SPADCALL |x| |a| (QREFELT |$| 54))) 
+
+(DEFUN |URAGG-;concat;3A;28| (|x| |y| |$|)
+ (SPADCALL (SPADCALL |x| (QREFELT |$| 44)) |y| (QREFELT |$| 56))) 
+
+(DEFUN |URAGG-;setlast!;A2S;29| (|x| |s| |$|)
+ (SEQ
+  (COND
+   ((SPADCALL |x| (QREFELT |$| 20)) (|error| "setlast: empty list"))
+   ((QUOTE T)
+    (SEQ
+     (SPADCALL (SPADCALL |x| (QREFELT |$| 22)) |s| (QREFELT |$| 50))
+     (EXIT |s|)))))) 
+
+(DEFUN |URAGG-;setchildren!;ALA;30| (|u| |lv| |$|)
+ (COND
+  ((EQL (LENGTH |lv|) 1) (SPADCALL |u| (|SPADfirst| |lv|) (QREFELT |$| 54)))
+  ((QUOTE T) (|error| "wrong number of children specified")))) 
+
+(DEFUN |URAGG-;setvalue!;A2S;31| (|u| |s| |$|)
+ (SPADCALL |u| |s| (QREFELT |$| 50))) 
+
+(DEFUN |URAGG-;split!;AIA;32| (|p| |n| |$|)
+ (PROG (#1=#:G84725 |q|)
+  (RETURN
+   (SEQ
+    (COND
+     ((|<| |n| 1) (|error| "index out of range"))
+     ((QUOTE T)
+      (SEQ
+       (LETT |p|
+        (SPADCALL |p|
+         (PROG1
+          (LETT #1# (|-| |n| 1) |URAGG-;split!;AIA;32|)
+          (|check-subtype| (|>=| #1# 0) (QUOTE (|NonNegativeInteger|)) #1#))
+         (QREFELT |$| 43))
+        |URAGG-;split!;AIA;32|)
+       (LETT |q| (SPADCALL |p| (QREFELT |$| 14)) |URAGG-;split!;AIA;32|)
+       (SPADCALL |p| (SPADCALL (QREFELT |$| 61)) (QREFELT |$| 54))
+       (EXIT |q|)))))))) 
+
+(DEFUN |URAGG-;cycleSplit!;2A;33| (|x| |$|)
+ (PROG (|y| |z|)
+  (RETURN
+   (SEQ
+    (COND
+     ((OR 
+       (SPADCALL
+        (LETT |y| (SPADCALL |x| (QREFELT |$| 37)) |URAGG-;cycleSplit!;2A;33|)
+        (QREFELT |$| 20))
+       (SPADCALL |x| |y| (QREFELT |$| 36))) |y|)
+     ((QUOTE T)
+      (SEQ
+       (LETT |z| (SPADCALL |x| (QREFELT |$| 14)) |URAGG-;cycleSplit!;2A;33|)
+       (SEQ G190
+        (COND 
+         ((NULL
+           (COND
+            ((SPADCALL |z| |y| (QREFELT |$| 36)) (QUOTE NIL))
+            ((QUOTE T) (QUOTE T))))
+          (GO G191)))
+        (SEQ
+         (LETT |x| |z| |URAGG-;cycleSplit!;2A;33|)
+         (EXIT
+          (LETT |z|
+           (SPADCALL |z| (QREFELT |$| 14)) |URAGG-;cycleSplit!;2A;33|)))
+        NIL
+        (GO G190)
+        G191
+        (EXIT NIL))
+       (SPADCALL |x|
+        (SPADCALL (QREFELT |$| 61)) (QREFELT |$| 54)) (EXIT |y|)))))))) 
+
+(DEFUN |UnaryRecursiveAggregate&| (|#1| |#2|)
+ (PROG (|DV$1| |DV$2| |dv$| |$| |pv$|)
+  (RETURN
+   (PROGN
+    (LETT |DV$1| (|devaluate| |#1|) . #1=(|UnaryRecursiveAggregate&|))
+    (LETT |DV$2| (|devaluate| |#2|) . #1#)
+    (LETT |dv$| (LIST (QUOTE |UnaryRecursiveAggregate&|) |DV$1| |DV$2|) . #1#)
+    (LETT |$| (GETREFV 66) . #1#)
+    (QSETREFV |$| 0 |dv$|)
+    (QSETREFV |$| 3
+     (LETT |pv$|
+      (|buildPredVector| 0 0
+       (LIST (|HasAttribute| |#1| (QUOTE |shallowlyMutable|))))
+      . #1#))
+    (|stuffDomainSlots| |$|)
+    (QSETREFV |$| 6 |#1|)
+    (QSETREFV |$| 7 |#2|)
+    (COND
+      ((|HasAttribute| |#1| (QUOTE |finiteAggregate|))
+        (QSETREFV |$| 45
+          (CONS (|dispatchFunction| |URAGG-;last;ANniA;22|) |$|))))
+    (COND
+     ((|HasCategory| |#2| (QUOTE (|SetCategory|)))
+      (PROGN
+       (QSETREFV |$| 47 (CONS (|dispatchFunction| |URAGG-;=;2AB;23|) |$|))
+       (QSETREFV |$| 49
+        (CONS (|dispatchFunction| |URAGG-;node?;2AB;24|) |$|)))))
+    (COND
+     ((|testBitVector| |pv$| 1)
+      (PROGN
+       (QSETREFV |$| 51
+        (CONS (|dispatchFunction| |URAGG-;setelt;Afirst2S;25|) |$|))
+       (QSETREFV |$| 53
+        (CONS (|dispatchFunction| |URAGG-;setelt;Alast2S;26|) |$|))
+       (QSETREFV |$| 55
+        (CONS (|dispatchFunction| |URAGG-;setelt;Arest2A;27|) |$|))
+       (QSETREFV |$| 57
+        (CONS (|dispatchFunction| |URAGG-;concat;3A;28|) |$|))
+       (QSETREFV |$| 58
+        (CONS (|dispatchFunction| |URAGG-;setlast!;A2S;29|) |$|))
+       (QSETREFV |$| 59
+        (CONS (|dispatchFunction| |URAGG-;setchildren!;ALA;30|) |$|))
+       (QSETREFV |$| 60
+        (CONS (|dispatchFunction| |URAGG-;setvalue!;A2S;31|) |$|))
+       (QSETREFV |$| 63
+        (CONS (|dispatchFunction| |URAGG-;split!;AIA;32|) |$|))
+       (QSETREFV |$| 64
+        (CONS (|dispatchFunction| |URAGG-;cycleSplit!;2A;33|) |$|)))))
+    |$|)))) 
+
+(MAKEPROP
+ (QUOTE |UnaryRecursiveAggregate&|)
+ (QUOTE |infovec|)
+ (LIST
+  (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) 
+   (0 . |first|) (QUOTE "first") |URAGG-;elt;AfirstS;1| (5 . |last|) 
+   (QUOTE "last") |URAGG-;elt;AlastS;2| (10 . |rest|) (QUOTE "rest") 
+   |URAGG-;elt;ArestA;3| |URAGG-;second;AS;4| |URAGG-;third;AS;5| 
+   (|Boolean|) (15 . |empty?|) |URAGG-;cyclic?;AB;6| (20 . |tail|) 
+   |URAGG-;last;AS;7| (|List| |$|) |URAGG-;nodes;AL;8| 
+   |URAGG-;children;AL;9| |URAGG-;leaf?;AB;10| |URAGG-;value;AS;11| 
+   (|NonNegativeInteger|) |URAGG-;less?;ANniB;12| |URAGG-;more?;ANniB;13| 
+   |URAGG-;size?;ANniB;14| (25 . |cyclic?|) |URAGG-;#;ANni;15| 
+   |URAGG-;tail;2A;16| (30 . |eq?|) (36 . |cycleEntry|) 
+   |URAGG-;cycleTail;2A;18| |URAGG-;cycleEntry;2A;19| 
+   |URAGG-;cycleLength;ANni;20| |URAGG-;rest;ANniA;21| (41 . |#|) 
+   (46 . |rest|) (52 . |copy|) (57 . |last|) (63 . |=|) (69 . |=|) 
+   (75 . |=|) (81 . |node?|) (87 . |setfirst!|) (93 . |setelt|) 
+   (100 . |setlast!|) (106 . |setelt|) (113 . |setrest!|) 
+   (119 . |setelt|) (126 . |concat!|) (132 . |concat|) (138 . |setlast!|) 
+   (144 . |setchildren!|) (150 . |setvalue!|) (156 . |empty|) (|Integer|) 
+   (160 . |split!|) (166 . |cycleSplit!|) (QUOTE "value")))
+  (QUOTE #(|value| 171 |third| 176 |tail| 181 |split!| 186 |size?| 192 
+   |setvalue!| 198 |setlast!| 204 |setelt| 210 |setchildren!| 231 |second| 
+   237 |rest| 242 |nodes| 248 |node?| 253 |more?| 259 |less?| 265 |leaf?| 
+   271 |last| 276 |elt| 287 |cyclic?| 305 |cycleTail| 310 |cycleSplit!| 
+   315 |cycleLength| 320 |cycleEntry| 325 |concat| 330 |children| 336 |=| 
+   341 |#| 347))
+  (QUOTE NIL)
+  (CONS 
+   (|makeByteWordVec2| 1 (QUOTE NIL))
+   (CONS 
+    (QUOTE #())
+    (CONS 
+     (QUOTE #())
+     (|makeByteWordVec2| 64 (QUOTE (1 6 7 0 8 1 6 7 0 11 1 6 0 0 14 1 6 
+       19 0 20 1 6 0 0 22 1 6 19 0 33 2 6 19 0 0 36 1 6 0 0 37 1 6 29 0 
+       42 2 6 0 0 29 43 1 6 0 0 44 2 0 0 0 29 45 2 7 19 0 0 46 2 0 19 0 
+       0 47 2 6 19 0 0 48 2 0 19 0 0 49 2 6 7 0 7 50 3 0 7 0 9 7 51 2 6 
+       7 0 7 52 3 0 7 0 12 7 53 2 6 0 0 0 54 3 0 0 0 15 0 55 2 6 0 0 0 56 
+       2 0 0 0 0 57 2 0 7 0 7 58 2 0 0 0 24 59 2 0 7 0 7 60 0 6 0 61 2 0 
+       0 0 62 63 1 0 0 0 64 1 0 7 0 28 1 0 7 0 18 1 0 0 0 35 2 0 0 0 62 63 
+       2 0 19 0 29 32 2 0 7 0 7 60 2 0 7 0 7 58 3 0 7 0 12 7 53 3 0 0 0 15 
+       0 55 3 0 7 0 9 7 51 2 0 0 0 24 59 1 0 7 0 17 2 0 0 0 29 41 1 0 24 0 
+       25 2 0 19 0 0 49 2 0 19 0 29 31 2 0 19 0 29 30 1 0 19 0 27 2 0 0 0 
+       29 45 1 0 7 0 23 2 0 7 0 12 13 2 0 0 0 15 16 2 0 7 0 9 10 1 0 19 0 
+       21 1 0 0 0 38 1 0 0 0 64 1 0 29 0 40 1 0 0 0 39 2 0 0 0 0 57 1 0 24 
+       0 26 2 0 19 0 0 47 1 0 29 0 34))))))
+  (QUOTE |lookupComplete|))) 
 @
 <<algebra>>=
 <<category AGG Aggregate>>
diff --git a/changelog b/changelog
index 283d330..67e1cd4 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080908 tpd books/bookvol10 latex cleanup
 20080906 tpd src/algebra/aggcat.spad removed, merged into bookvol10
 20080906 tpd src/algebra/Makefile merge aggcat.spad
 20080906 tpd src/Makefile merge aggcat.spad



From MAILER-DAEMON Thu Sep 11 10:18:43 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kdn0N-0005aX-5S
	for mharc-axiom-developer@gnu.org; Thu, 11 Sep 2008 10:18:43 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kdn0L-0005Xq-5x
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 10:18:41 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kdn0J-0005V0-7t
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 10:18:40 -0400
Received: from [199.232.76.173] (port=42885 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kdn0I-0005Uf-VP
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 10:18:39 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:37906
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kdn0I-0001uO-OS
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 10:18:38 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=O8TykVrRuLEA:10 a=m0KhyCQU6C0A:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=FFBvU6-hAAAA:8 a=yRZBGNWeAAAA:8 a=aJhmaQQwAAAA:8
	a=-Dk0hJnTAAAA:8 a=DIuwlW7QAAAA:8 a=M7JO-GbyxjfHZBbRgxQA:9
	a=tmNDh8lJhu_V5q-TLr0A:7 a=OGSRIW6WZbbIglPfAbdkCIYOIWYA:4
	a=rPt6xJ-oxjAA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:58078] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id AA/BD-28556-4A829C84; Thu, 11 Sep 2008 10:18:12 -0400
Received: (qmail 18218 invoked from network); 11 Sep 2008 14:18:17 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <axiom-developer@nongnu.org>; 11 Sep 2008 14:18:17 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8BFjsD02008;
	Thu, 11 Sep 2008 11:45:54 -0400
Date: Thu, 11 Sep 2008 11:45:54 -0400
Message-Id: <200809111545.m8BFjsD02008@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Genre and OS details not
	recognized.
Subject: [Axiom-developer] [kaufmann@cs.utexas.edu: FWD: Special issue on
	Programming Languages and Mechanized Mathematics Systems (JAR)]
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 11 Sep 2008 14:18:41 -0000

------- Start of forwarded message -------
Date: Thu, 11 Sep 2008 08:24:25 -0500
From: Matt Kaufmann <kaufmann@cs.utexas.edu>
To: acl2@lists.cc.utexas.edu
Subject: FWD: Special issue on Programming Languages and Mechanized Mathematics Systems (JAR)

				CALL FOR PAPERS

Special issue on Programming Languages and Mechanized Mathematics Systems

	      	 	Journal of Automated Reasoning

[See HTML version at http://www.cas.mcmaster.ca/~carette/jplmms/cfp.html ]

Context

   This special issue is focused on the intersection of programming
   languages (PL) and mechanized mathematics systems (MMS). The latter
   category subsumes present-day computer algebra systems (CAS),
   interactive proof assistants (PA), and automated theorem provers (ATP),
   all heading towards fully integrated mechanized mathematical assistants
   that are expected to emerge eventually.

   The two subjects of PL and MMS meet in many interesting ways, in
   particular in the following main topics of this journal issue.

     * Dedicated input languages for MMS: covers all aspects of languages
       intended for the user to deploy or extend the system, both
       algorithmic and declarative ones. Typical examples are tactic
       definition languages such as Ltac in Coq, mathematical proof
       languages as in Mizar or Isar, or specialized programming languages
       built into CA systems. Of particular interest are the semantics of
       those languages, especially when current ones are untyped.
     * Mathematical modeling languages used for programming: covers the
       relation of logical descriptions vs. algorithmic content. For
       instance the logic of ACL2 extends a version of Lisp, that of Coq
       is close to Haskell, and some portions of HOL are similar to ML and
       Haskell, while Maple tries to do both simultaneously. Such
       mathematical languages offer rich specification capabilities, which
       are rarely available in regular programming languages. How can
       programming benefit from mathematical concepts, without limiting
       mathematics to the computational worldview?
     * Programming languages with mathematical specifications: covers
       advanced "mathematical" concepts in programming languages that
       improve the expressive power of functional specifications, type
       systems, module systems etc. Programming languages with dependent
       types are of particular interest here, as is intensionality vs
       extensionality.
     * Language elements for program verification: covers specific means
       built into a language to facilitate correctness proofs using MMS.
       For example, logical annotations within programs may be turned into
       verification conditions to be solved in a proof assistant
       eventually. How need MMS and PL to be improved to make this work
       conveniently and in a mathematically appealing way?

   These topics have been addressed in the PLMMS 2007
   http://www.cas.mcmaster.ca/plmms07/ and PLMMS 2008
   http://events.cs.bham.ac.uk/cicm08/workshops/plmms/ workshops
   (associated with Calculemus http://www.calculemus.net/). While the
   journal issue emerges from that community, submission is open to
   everyone interested in any of these topics!

Submission

   Manuscripts should not have been previously published in archival
   journals nor have been submitted to, or be in consideration for, any
   journal or conference. Significantly revised and enhanced papers
   published in workshop or conference proceedings are welcome. All
   submissions will be reviewed according to scholarly standards for
   scientific journal publications. See also the general JAR submission
   policies.

   We suggest a page limit of approximately 25 pages, using the LaTeX
   macros ftp://ftp.springer.de/pub/tex/latex/svjour3/global.zip
   provided by Springer. Instead of using the Springer online
   submission system, please submit papers in PDF through EasyChair
   http://www.easychair.org/conferences/?conf=jplmms2008

Important dates

     * Submission deadline: 10th November 2008.
     * Notification: January 16th 2009.
     * Final versions: March 30th 2009.

Editors of the special issue

     * Jacques Carette (McMaster University, Canada)
     * Makarius Wenzel (Technische Universitaet Muenchen, Germany)
     * Freek Wiedijk   (Radboud University Nijmegen, Netherlands)




From MAILER-DAEMON Thu Sep 11 14:40:29 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kdr5f-0005dj-Ec
	for mharc-axiom-developer@gnu.org; Thu, 11 Sep 2008 14:40:27 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kdr5X-0005ak-9f
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 14:40:19 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kdr5V-0005a0-P1
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 14:40:18 -0400
Received: from [199.232.76.173] (port=49288 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kdr5V-0005Zu-DT
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 14:40:17 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:52258
	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 1Kdr5V-0006lU-Js
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 14:40:17 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8BIeCr3031024;
	Thu, 11 Sep 2008 13:40:12 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8BIe7VM031015;
	Thu, 11 Sep 2008 13:40:07 -0500
Date: Thu, 11 Sep 2008 13:40:07 -0500
Message-Id: <200809111840.m8BIe7VM031015@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080911.01.tpd.patch (bookvol11 fix firefox
	background image)
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, 11 Sep 2008 18:40:19 -0000

The bigbayou image was not copied to the proper place so it was not
showing up in the firefox background on the root page. This fixes the
problem.
======================================================================
diff --git a/books/bookvol11.pamphlet b/books/bookvol11.pamphlet
index babf7bd..a74adfe 100644
--- a/books/bookvol11.pamphlet
+++ b/books/bookvol11.pamphlet
@@ -238,6 +238,7 @@ untangle them from this file, along with any support files
 referenced by the pages.
 <<*>>=
 BOOK=${SPD}/books/bookvol11.pamphlet
+OUT=${MNT}/${SYS}/doc/hypertex
 
 %.xhtml: ${BOOK}
 	@ echo making $*.xhtml
@@ -251,6 +252,8 @@ all: ${PAGES}
 	@ ${TANGLE} -R"rcm3720.input"  ${BOOK} >rcm3720.input
 	@ ${TANGLE} -R"strang.input"   ${BOOK} >strang.input
 	@ ${TANGLE} -R"signatures.txt" ${BOOK} >signatures.txt
+	@ cp ${SPD}/books/ps/doctitle.png ${OUT}/doctitle.png
+	@ cp ${SPD}/books/ps/bigbayou.png ${OUT}/bigbayou.png
 
 @
 
diff --git a/changelog b/changelog
index a72a157..a9d52fa 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080911 tpd books/bookvol11 fix background image
 20080909 tpd books/bookvol0 change \over to \frac
 20080908 tpd books/bookvol10 latex cleanup
 20080906 tpd src/algebra/aggcat.spad removed, merged into bookvol10



From MAILER-DAEMON Thu Sep 11 21:34:25 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KdxYG-0004Ky-Ps
	for mharc-axiom-developer@gnu.org; Thu, 11 Sep 2008 21:34:24 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KdxYE-0004J4-8g
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 21:34:22 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KdxYB-0004I9-SM
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 21:34:21 -0400
Received: from [199.232.76.173] (port=57560 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KdxYB-0004I6-Lw
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 21:34:19 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:57674
	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 1KdxYB-0005aj-A2
	for axiom-developer@nongnu.org; Thu, 11 Sep 2008 21:34:19 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8C1YFr3019219;
	Thu, 11 Sep 2008 20:34:15 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8C1YFw8019215;
	Thu, 11 Sep 2008 20:34:15 -0500
Date: Thu, 11 Sep 2008 20:34:15 -0500
Message-Id: <200809120134.m8C1YFw8019215@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080911.02.tpd.patch (bookvol10 merge
	coerce.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, 12 Sep 2008 01:34:22 -0000

bookvol10 (algebra) now contains src/algebra/coerce.spad.
======================================================================
The patch is too large to post.



From MAILER-DAEMON Sat Sep 13 01:44:27 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KeNvm-00070I-UI
	for mharc-axiom-developer@gnu.org; Sat, 13 Sep 2008 01:44:27 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KeNvl-0006yc-DM
	for axiom-developer@nongnu.org; Sat, 13 Sep 2008 01:44:25 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KeNvi-0006v6-W9
	for axiom-developer@nongnu.org; Sat, 13 Sep 2008 01:44:24 -0400
Received: from [199.232.76.173] (port=38303 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KeNvi-0006uw-Rn
	for axiom-developer@nongnu.org; Sat, 13 Sep 2008 01:44:22 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:40585
	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 1KeNvi-00074s-Dr
	for axiom-developer@nongnu.org; Sat, 13 Sep 2008 01:44:22 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8D5iIr3012102;
	Sat, 13 Sep 2008 00:44:18 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8D5iH2D012099;
	Sat, 13 Sep 2008 00:44:18 -0500
Date: Sat, 13 Sep 2008 00:44:18 -0500
Message-Id: <200809130544.m8D5iH2D012099@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080912.01.tpd.patch (split bookvol10 into 10,
	10.1..4)
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, 13 Sep 2008 05:44:25 -0000

bookvol10 is the algebra book. It is now 5 volumes:
  bookvol10   Axiom Algebra: Implementation
  bookvol10.1 Axiom Algebra: Theory
  bookvol10.2 Axiom Algebra: Categories
  bookvol10.3 Axiom Algebra: Domains
  bookvol10.4 Axiom Algebra: Packages

bookvol10.2 also contains new documentation and relationship graphs.

The algebra code is automatically extracted from the volumes during build.

The abbreviations graphs and fullname graphs are now automatically
generated in scaled vector graphic (SVG) format with hyperlinks back
to the correct volume.

Oh, and as an aside, I timed the git vs svn commit (1.4Meg patch upload):

        git         SVN
real  0m2.998s    2m14.187s
user  0m0.055s    0m0.521s
sys   0m0.193s    0m1.018s

====================================================================
The patch is too large to attach. See:
<http://axiom-developer.org/axiom-website/patches.htmll#latest>



From MAILER-DAEMON Tue Sep 16 10:42:24 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kfbl2-0000Bj-10
	for mharc-axiom-developer@gnu.org; Tue, 16 Sep 2008 10:42:24 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kfbkz-0000As-Nm
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 10:42:21 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kfbkx-0000A9-Rg
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 10:42:21 -0400
Received: from [199.232.76.173] (port=57285 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kfbkx-00009y-Dw
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 10:42:19 -0400
Received: from matrix.start.ca ([204.101.248.1]:53525)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wilsons@start.ca>) id 1Kfbkx-00070N-1O
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 10:42:19 -0400
Received: from lattice.localdomain (pool3-130.adsl.user.start.ca
	[207.61.212.130])
	by matrix.start.ca (8.13.6/8.12.11) with ESMTP id m8GEgD0d022234;
	Tue, 16 Sep 2008 10:42:13 -0400
To: axiom-devel <axiom-developer@nongnu.org>
From: Stephen Wilson <wilsons@start.ca>
Date: Tue, 16 Sep 2008 10:41:53 -0400
Message-ID: <877i9cm9u6.fsf@lattice.localdomain>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.4-2.6
Cc: Stephen Wilson <wilsons@start.ca>
Subject: [Axiom-developer] Of possible interest to 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: Tue, 16 Sep 2008 14:42:22 -0000

*,

I sent the following message to Tim.  Posting here to archive any discussion it
generates.

Unfortunately, these are still early days, and I am not yet ready to release
the code.  On the other hand, the design space is still fairly open, and I would
be thrilled to discuss the possibilities with anyone who takes interest.

Take care,
Steve

Stephen Wilson <wilsons@start.ca> writes:
> Hi Tim,
>
> I thought I would send you an email letting you know of some work that I am
> doing.  I do not know if this would interest you or the Axiom project so will
> try to keep this message short.
>
> As you may recall, I have an interest in compilers.  I wanted to improve SPAD
> and help rewrite it in CL.  The boot code almost killed me and so I started
> thinking about doing things from scratch.  That was about a year ago, I think.
> Since then I have been thinking about the problem and eventually made a decision
> to implement a compiler for a "small" version of SPAD, and then use that as a
> staging ground for a more powerful system.
>
> The work to produce a small language and compiler is still ongoing, but quite a
> bit of progress has been made.  The system is implemented as a set of lisp
> macros (for now).  An incomplete example:
>
>    (defdomain polynomial-ring ((R ring) (E ordered-monoid))
>       (:satisfies ordered-monoid (retractable-to S))
>       (:carrier rep (record (c R) (k R)))
>       ...)
>
> The system is in its infancy and is not ready for general consumption.  But even
> now I am coming upon questions of design which would be influenced by the
> possibility that such work might be of benefit to Axiom.
>
> Although the above is not much to go on, I am curious about any thoughts you
> might have.  Although the language is currently small, it has well defined
> semantics, an ever cleaner implementation, lots of comments (could become
> literate), etc.  As it is lisp all the way down, with a rich ast (hierarchy of
> CLOS classes) representing domains and categories, I think there is a lot of
> potential (time will tell).
>
> Is this something of interest to Axiom?  If so, I would appreciate having a
> dialogue about the issues, on axiom-devel if you prefer, as it would help me
> develop a picture of where this effort is headed in the long term.
>
>
> Thanks for you time,
> Steve




From MAILER-DAEMON Wed Sep 17 00:16:19 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KfoSg-00008A-S6
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 00:16:18 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KfoSe-00006N-Cf
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:16:16 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KfoSd-00006B-PL
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:16:15 -0400
Received: from [199.232.76.173] (port=58230 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KfoSd-000068-Id
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:16:15 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:51843
	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 1KfoSd-0001Ne-J6
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:16:15 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8H4GBr3004518;
	Tue, 16 Sep 2008 23:16:11 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8H4GBbQ004515;
	Tue, 16 Sep 2008 23:16:11 -0500
Date: Tue, 16 Sep 2008 23:16:11 -0500
Message-Id: <200809170416.m8H4GBbQ004515@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080916.01.tpd.patch (bookvol10.2 document
	additional categories)
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, 17 Sep 2008 04:16:16 -0000

bookvol10.2 axiom categories now has partial graphs, function lists,
function origin information, and function/category cross references.
It also contains information for automatically graphing the abbreviated
and full name category graphs and recreating the partial graphs.
====================================================================
The patch is too big to post. See:
<http://axiom-developer.org/axiom-website/patches.html>



From MAILER-DAEMON Wed Sep 17 00:27:39 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kfodf-0003co-Rf
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 00:27:39 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kfode-0003av-Ab
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:27:38 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kfodc-0003aj-RC
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:27:37 -0400
Received: from [199.232.76.173] (port=33467 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kfodc-0003ag-Ik
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:27:36 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:43469
	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 1Kfodc-0003eu-EW
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:27:36 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8H4RXr3006695;
	Tue, 16 Sep 2008 23:27:33 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8H4RXMD006692;
	Tue, 16 Sep 2008 23:27:33 -0500
Date: Tue, 16 Sep 2008 23:27:33 -0500
Message-Id: <200809170427.m8H4RXMD006692@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Of possible interest to 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: Wed, 17 Sep 2008 04:27:38 -0000

Stephen,

(sorry for the delay but I have a major power outage due to Ike,
which will likely last until friday so online time is limited).

Actually I think this is an excellent idea. If there were
defcategory, defdomain, and defpackage macros that could be used
as compile targets it would greatly simplify the spad compiler.
Clever use of defgenerics and class/type connections could produce
very clean code. 

I'd like to see a one-to-one mapping of spad language constructs
to CLOS constructs. It would make it possible to expand the compiler
to handle things like dynamic extends easily. These would be done
with new defgeneric definitions are either compile or runtime. The
underlying lisp system could simply make the magic happen since CLOS
generics can be written at any time.

If the CLOS mappings are defined it becomes possible to unify the
interpreter and compiler. One could even consider playing with the
MOPs to handle add-chain lookups. 

It would even greatly expand the error message and debugging ability
since it would be trivial to add wrappers and whoppers.

So the upsides are cleaner semantic definitions, simpler lisp code,
a clearly defined dynamic extend mechanism, compiler/interpreter
unification, better error and debugging. I'm hard pressed to think
of a downside.

I really like this idea a lot. I want it now. When can I have it? :-)

Tim



From MAILER-DAEMON Wed Sep 17 00:29:27 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KfofP-0004Pi-2T
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 00:29:27 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KfofN-0004Pd-15
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:29:25 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KfofM-0004PQ-Gy
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:29:24 -0400
Received: from [199.232.76.173] (port=33513 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KfofM-0004PM-FB
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:29:24 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:43499
	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 1KfofM-0003y6-BJ
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:29:24 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8H4TLr3007102;
	Tue, 16 Sep 2008 23:29:21 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8H4TKeu007099;
	Tue, 16 Sep 2008 23:29:20 -0500
Date: Tue, 16 Sep 2008 23:29:20 -0500
Message-Id: <200809170429.m8H4TKeu007099@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Of possible interest to 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: Wed, 17 Sep 2008 04:29:25 -0000

Stephen,

The latest documentation work is creating a full graph of the Axiom
algebra as part of the bookvol10* buildout. This could be useful in
guiding your work in building a CLOS version.

Tim



From MAILER-DAEMON Wed Sep 17 00:40:14 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kfopq-0008LC-Bd
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 00:40:14 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kfopo-0008Jh-Cq
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:40:12 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kfopm-0008IP-Hg
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:40:11 -0400
Received: from [199.232.76.173] (port=59265 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kfopm-0008II-AB
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:40:10 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:46034
	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 1Kfopm-0005zi-4E
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 00:40:10 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8H4e6r3009107;
	Tue, 16 Sep 2008 23:40:06 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8H4e5V9009103;
	Tue, 16 Sep 2008 23:40:05 -0500
Date: Tue, 16 Sep 2008 23:40:05 -0500
Message-Id: <200809170440.m8H4e5V9009103@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080917.01.tpd.patch (bookvol10.2 remove dup
	function defn in FLAGG)
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, 17 Sep 2008 04:40:12 -0000

reverse occurs twice in the implementation of FiniteLinearAggregate.
One copy is removed.
=====================================================================
diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index f39cf6a..9ae7057 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -5106,7 +5106,6 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
     if % has shallowlyMutable then
       reverse x	 == reverse_! copy x
       sort(f, l) == sort_!(f, copy l)
-      reverse x	 == reverse_! copy x
 
       if S has OrderedSet then
 	sort_! l == sort_!(_<$S, l)
diff --git a/changelog b/changelog
index 301732a..29c2f46 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080917 tpd books/bookvol10.2 remove duplicate function def in FLAGG	
 20080916 tpd books/ps/v102streamaggregate.ps
 20080916 tpd books/ps/v102listaggregate.ps
 20080916 tpd books/ps/v102finitelinearaggregate.ps corrected diagram



From MAILER-DAEMON Wed Sep 17 21:50:30 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kg8f8-0003e6-Bk
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 21:50:30 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kg8f6-0003de-R2
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:50:28 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kg8f6-0003dS-7M
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:50:28 -0400
Received: from [199.232.76.173] (port=47332 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kg8f6-0003dI-4U
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:50:28 -0400
Received: from matrix.start.ca ([204.101.248.1]:56699)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wilsons@start.ca>) id 1Kg8f5-0000hz-Os
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:50:28 -0400
Received: from lattice.localdomain (pool4-040.adsl.user.start.ca
	[207.61.214.40])
	by matrix.start.ca (8.13.6/8.12.11) with ESMTP id m8I1oGqm020707;
	Wed, 17 Sep 2008 21:50:16 -0400
To: daly@axiom-developer.org
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170427.m8H4RXMD006692@axiom-developer.org>
From: Stephen Wilson <wilsons@start.ca>
Date: Wed, 17 Sep 2008 21:50:00 -0400
In-Reply-To: <200809170427.m8H4RXMD006692@axiom-developer.org>
	(daly@axiom-developer.org's message of "Tue\,
	16 Sep 2008 23\:27\:33 -0500")
Message-ID: <878wtqkyt3.fsf@lattice.localdomain>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.4-2.6
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: Thu, 18 Sep 2008 01:50:29 -0000

daly@axiom-developer.org writes:

> Stephen,
>
> (sorry for the delay but I have a major power outage due to Ike,
> which will likely last until friday so online time is limited).
>
> Actually I think this is an excellent idea. If there were
> defcategory, defdomain, and defpackage macros that could be used
> as compile targets it would greatly simplify the spad compiler.

For any infix syntax, all that is needed is a parser which emits lists of tokens
instead of lists of symbols (so that the tokens can contain line/column info).

The current implementation takes care of type checking and code generation.

> I'd like to see a one-to-one mapping of spad language constructs
> to CLOS constructs. It would make it possible to expand the compiler
> to handle things like dynamic extends easily. These would be done
> with new defgeneric definitions are either compile or runtime. The
> underlying lisp system could simply make the magic happen since CLOS
> generics can be written at any time.

The current code uses CLOS as the basis for its ast.  There are classes to
represent domains and categories.  So a particular domain like Integer would be
an instance of the CLOS class DOMAIN, and a domain constructor like List would
be an instance of the class FUNCTOR.  Expressions like List(Integer) are of type
FUNCTOR-APPLICATION, etc. 

One of the main issues in designing this system is developing a protocol for
building, inspecting, and modifying domain instances.  The typechecker uses this
protocol to build the AST from s-expressions, the code generator uses it to
resolve abstract function calls and lay out efficient call tables, etc.  A
program to construct a graph of the algebra would use one of the iterators
defined over an objects set of supersignatures, etc.

The overall result is a new language extension to lisp, written in lisp, that
supports Spad-like semantics -- just like CLOS itself.  Even though we could
have a distinct CLOS class to represent every domain and category in the system,
I have not yet found a case where there there is a clear advantage.  I thought
about that route and decided that I wanted all of the information and behaviour
for a domain to be contained in its instance, rather than define properties
`from the outside' using specializations on generics.

What we can do though is define entirely new types of domains.  For example,
there are a few primitive domains that I use to test the system.  They get
defined by a DEFPRIMITIVE macro and result in objects of type PRIMITIVE-DOMAIN,
or PRIMITIVE-FUNCTOR (which themselves are sub-classes of DOMAIN and FUNCTOR).
The signatures and declarations are typechecked just like normal user domains.
The main differences are that their function bodies are plain lisp, and you can
specify a few extra options that are not available to normal domains (like what
the lisp type of the carrier is, or provide a macro expander to inline primitive
expressions during code generation, etc).  Here, the API defines generics we can
specialize on to accommodate these difference.

One place where there is a direct mapping is wrt expressions.  For example,
there is a CLOS class which represents IF statements.  The typechecker for
expression statements is just a bunch of methods on the generic CHECKEXPR.

It is absolutely trivial to add new expressions.  But I need to spend a lot more
time thinking about what the primitives should be.  For example, should I follow
Aldor and include GOTO in the language as a primitive for iteration? 


> If the CLOS mappings are defined it becomes possible to unify the
> interpreter and compiler. One could even consider playing with the
> MOPs to handle add-chain lookups. 

I spent a fair bit of time a while ago trying to use the MOP to implement
spad-like semantics, but I was not happy with the result.  I have not
implemented sub-domains yet, but there should not be any complications (just
questions about semantics.

> It would even greatly expand the error message and debugging ability
> since it would be trivial to add wrappers and whoppers.

An interpreter and debugger which operates over the expression AST should be
relatively straight forward.  Given a parser which generates lists of tokens
with line/number information we could have a very interactive and productive
environment.

We can supply our own implementation of wrappers and whoppers which take into
account the calling conventions of domain functions.


> So the upsides are cleaner semantic definitions, simpler lisp code,
> a clearly defined dynamic extend mechanism, compiler/interpreter
> unification, better error and debugging. I'm hard pressed to think
> of a downside.

I hope the explanations above clarify the approach I have taken.  I think it
will provide all of the advantages you list.

> I really like this idea a lot. I want it now. When can I have it? :-)

I hope soon.  There are a few things I really need to do before I can release it
for experimentation.

I would like to implement `inner domains' so that we can have domain valued
exports.  The mechanics are in place already, I just need to write the code.

Having that, I can write a package similar to Aldors "Machine" package, giving a
full set of primitive types to work with.

Currently, the only way to do iteration is via recursion.  I think I might
introduce GOTO, and implement generators or simple coroutines down the road.

The last, and most important issue, is to firm up a user package which gives a
public environment to define and evaluate expressions without having to be in
one of the internal packages of the compiler.  I have simple browser functions
defined so you can type "(browse 'monoid)" and get output describing the
category.  There is also a macro to call domain functions from lisp code without
needing to know the mangled symbol name that actually implements the function:
"(domcall integer + (-> (% %) %) 2 3)".


So a lot of the basics are there.  Just a few more cycles and I should have
something that I feel comfortable with releasing.


Thanks for the feedback on this!  Its very much appreciated!

Steve



From MAILER-DAEMON Wed Sep 17 21:57:41 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kg8m5-0006kD-NJ
	for mharc-axiom-developer@gnu.org; Wed, 17 Sep 2008 21:57:41 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kg8m4-0006ji-R1
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:57:40 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kg8m3-0006j2-Fz
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:57:40 -0400
Received: from [199.232.76.173] (port=54259 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kg8m2-0006iv-Te
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:57:38 -0400
Received: from matrix.start.ca ([204.101.248.1]:58466)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wilsons@start.ca>) id 1Kg8m2-0002jO-KE
	for axiom-developer@nongnu.org; Wed, 17 Sep 2008 21:57:38 -0400
Received: from lattice.localdomain (pool4-040.adsl.user.start.ca
	[207.61.214.40])
	by matrix.start.ca (8.13.6/8.12.11) with ESMTP id m8I1vRTd024385;
	Wed, 17 Sep 2008 21:57:27 -0400
To: daly@axiom-developer.org
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170429.m8H4TKeu007099@axiom-developer.org>
From: Stephen Wilson <wilsons@start.ca>
Date: Wed, 17 Sep 2008 21:57:12 -0400
In-Reply-To: <200809170429.m8H4TKeu007099@axiom-developer.org>
	(daly@axiom-developer.org's message of "Tue\,
	16 Sep 2008 23\:29\:20 -0500")
Message-ID: <87zlm6jjwn.fsf@lattice.localdomain>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.4-2.6
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: Thu, 18 Sep 2008 01:57:41 -0000

daly@axiom-developer.org writes:

> Stephen,
>
> The latest documentation work is creating a full graph of the Axiom
> algebra as part of the bookvol10* buildout. This could be useful in
> guiding your work in building a CLOS version.

I have been watching your progress and bookvol10 is looking very good.

It should be fairly easy to write a lisp package which traverses the in-memory
algebra lattice in various ways and produces graphviz output.  We could graph
the entier hierarchy, or just a "local view" of a domain and, say, its direct
supersignatures.  Or a who-calls graph for a particular function, etc.  This
would happen dynamically at runtime.


Steve



From MAILER-DAEMON Thu Sep 18 01:31:47 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgC7H-0001sm-JP
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 01:31:47 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgC7F-0001sC-2X
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 01:31:45 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgC7C-0001rv-O3
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 01:31:43 -0400
Received: from [199.232.76.173] (port=50323 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgC7C-0001rr-71
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 01:31:42 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:49602
	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 1KgC7C-0000fJ-AB
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 01:31:42 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8I5Vbr3002592;
	Thu, 18 Sep 2008 00:31:37 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8I5VbRx002587;
	Thu, 18 Sep 2008 00:31:37 -0500
Date: Thu, 18 Sep 2008 00:31:37 -0500
Message-Id: <200809180531.m8I5VbRx002587@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080917.02.wsp.patch (mkfunc.spad add parse
	function)
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, 18 Sep 2008 05:31:45 -0000

Add the parse function to InputForm domain.
======================================================================
diff --git a/changelog b/changelog
index 29c2f46..c184379 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+20080917 wsp src/algebra/mkfunc.spad add parse to InputForm
 20080917 tpd books/bookvol10.2 remove duplicate function def in FLAGG	
 20080916 tpd books/ps/v102streamaggregate.ps
 20080916 tpd books/ps/v102listaggregate.ps
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet
index 6a34b58..6f7c67a 100644
--- a/src/algebra/mkfunc.spad.pamphlet
+++ b/src/algebra/mkfunc.spad.pamphlet
@@ -68,6 +68,8 @@ InputForm():
       ++ unparse(f) returns a string s such that the parser
       ++ would transform s to f.
       ++ Error: if f is not the parsed form of a string.
+    parse : String -> %
+      ++ parse is the inverse of unparse. It parses a string to InputForm.
     declare  : List %   -> Symbol
       ++ declare(t) returns a name f such that f has been
       ++ declared to the interpreter to be of type t, but has
@@ -139,6 +141,9 @@ InputForm():
       atom?(s:% := form2String(x)$Lisp) => strsym s
       concat [strsym a for a in destruct s]
 
+    parse(s:String):% ==
+      ncParseFromString(s)$Lisp
+
     declare signature ==
       declare(name := new()$Symbol, signature)$Lisp
       name



From MAILER-DAEMON Thu Sep 18 03:51:11 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgEIB-0005oC-H1
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 03:51:11 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgEI9-0005lk-VW
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 03:51:10 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgEI6-0005is-R6
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 03:51:09 -0400
Received: from [199.232.76.173] (port=49235 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgEI6-0005ip-Kz
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 03:51:06 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:59218
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KgEI6-0008Fj-Sm
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 03:51:07 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=VmPXIYu10wUA:10 a=uxAgfx96Y54A:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=37mPLz1kAAAA:8 a=FZ5dj7wXKg66F3FA41QA:9
	a=XbiK4-JCWzLiajfkpasA:7 a=iPZuz4azyjolYBszS613YcSAlgcA:4
	a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:43461] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id 46/5C-09072-44AF1D84; Thu, 18 Sep 2008 02:50:44 -0400
Received: (qmail 6977 invoked from network); 18 Sep 2008 06:50:47 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 18 Sep 2008 06:50:47 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8I6Lu101615;
	Thu, 18 Sep 2008 02:21:56 -0400
Date: Thu, 18 Sep 2008 02:21:56 -0400
Message-Id: <200809180621.m8I6Lu101615@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: wilsons@start.ca
In-reply-to: <87zlm6jjwn.fsf@lattice.localdomain> (message from Stephen Wilson
	on Wed, 17 Sep 2008 21:57:12 -0400)
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170429.m8H4TKeu007099@axiom-developer.org>
	<87zlm6jjwn.fsf@lattice.localdomain>
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
Reply-To: daly@axiom-developer.org
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, 18 Sep 2008 07:51:10 -0000

>> The latest documentation work is creating a full graph of the Axiom
>> algebra as part of the bookvol10* buildout. This could be useful in
>> guiding your work in building a CLOS version.
>
>I have been watching your progress and bookvol10 is looking very good.
>
>It should be fairly easy to write a lisp package which traverses the in-memory
>algebra lattice in various ways and produces graphviz output.  We could graph
>the entier hierarchy, or just a "local view" of a domain and, say, its direct
>supersignatures.  Or a who-calls graph for a particular function, etc.  This
>would happen dynamically at runtime.

Look at <http://daly.axiom-developer.org/bookvol10.2.pdf> which is the 
latest incarnation I'm testing.

The key innovation here is that I've figured out how to connect the
graphviz graph directly to the PDF files. So once I put up the next
version of the system you should be able to look at the graphviz category
graph, click on a box, and go directly to the page in the PDF. Try:

<http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SETCAT>
 
or 

<http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SetCategory>

I've also figured out some more tricks to use Axiom to dynamically
generate information but I haven't had time to code them yet.

The literate documentation is getting more interesting.

Tim




From MAILER-DAEMON Thu Sep 18 06:48:58 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgH4D-00087l-8h
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 06:48:58 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgH48-00085v-09
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 06:48:52 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgH44-000853-15
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 06:48:50 -0400
Received: from [199.232.76.173] (port=40460 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgH43-00084c-4j
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 06:48:47 -0400
Received: from tomts43.bellnexxia.net ([209.226.175.110]:32888
	helo=tomts43-srv.bellnexxia.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <dastew@sympatico.ca>) id 1KgH42-0004sC-Gm
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 06:48:46 -0400
Received: from toip3.srvr.bell.ca ([209.226.175.86])
	by tomts43-srv.bellnexxia.net
	(InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id
	<20080918104844.VDVF1582.tomts43-srv.bellnexxia.net@toip3.srvr.bell.ca>
	for <axiom-developer@nongnu.org>; Thu, 18 Sep 2008 06:48:44 -0400
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AocBAL3I0UhBX4au/2dsb2JhbAAIuWmBZw
Received: from bas3-london14-1096779438.dsl.bell.ca (HELO [192.168.1.105])
	([65.95.134.174])
	by toip3.srvr.bell.ca with ESMTP; 18 Sep 2008 06:44:23 -0400
Message-ID: <48D23225.7080709@sympatico.ca>
Date: Thu, 18 Sep 2008 06:49:09 -0400
From: Doug Stewart <dastew@sympatico.ca>
User-Agent: Thunderbird 2.0.0.16 (X11/20080724)
MIME-Version: 1.0
CC: axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170429.m8H4TKeu007099@axiom-developer.org>	<87zlm6jjwn.fsf@lattice.localdomain>
	<200809180621.m8I6Lu101615@localhost.localdomain>
In-Reply-To: <200809180621.m8I6Lu101615@localhost.localdomain>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 8 (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: Thu, 18 Sep 2008 10:48:52 -0000

root wrote:
>>> The latest documentation work is creating a full graph of the Axiom
>>> algebra as part of the bookvol10* buildout. This could be useful in
>>> guiding your work in building a CLOS version.
>>>       
>> I have been watching your progress and bookvol10 is looking very good.
>>
>> It should be fairly easy to write a lisp package which traverses the in-memory
>> algebra lattice in various ways and produces graphviz output.  We could graph
>> the entier hierarchy, or just a "local view" of a domain and, say, its direct
>> supersignatures.  Or a who-calls graph for a particular function, etc.  This
>> would happen dynamically at runtime.
>>     
>
> Look at <http://daly.axiom-developer.org/bookvol10.2.pdf> which is the 
> latest incarnation I'm testing.
>
> The key innovation here is that I've figured out how to connect the
> graphviz graph directly to the PDF files. So once I put up the next
> version of the system you should be able to look at the graphviz category
> graph, click on a box, and go directly to the page in the PDF. Try:
>
> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SETCAT>
>  
> or 
>
> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SetCategory>
>
> I've also figured out some more tricks to use Axiom to dynamically
> generate information but I haven't had time to code them yet.
>
> The literate documentation is getting more interesting.
>
> Tim
>
>
>
> _______________________________________________
> Axiom-developer mailing list
> Axiom-developer@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
>
>   
I find this project VERY interesting, but I don't know enough about the 
terminology used to get the complete picture. For example I read the 
first paragraph and was lost.

"
In general, we use several colors in the graph images. The lightblue 
color indi-
cates a category that is in the direct inheritance path. The green 
(#00EE00)
color indicates a category or domain used in the exports. The seagreen (a
dark green, indicates a category or domain which is used but does not corre-
spond to the signature of an existing category. The system can infer 
that this
subsumption node matches the category. A yellow color indicates a 
domain.

"
Where am I to find out exactly what you mean by:
category
domain
exports
signature
subsumption node
etc.

I have vague idea of what they mean but I think I should know these 
precisely if I am to learn this system.

Doug





From MAILER-DAEMON Thu Sep 18 08:24:15 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgIYR-0002uV-25
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 08:24:15 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgIYP-0002u8-I6
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:24:13 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgIYN-0002tT-UW
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:24:13 -0400
Received: from [199.232.76.173] (port=54568 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgIYN-0002tL-LX
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:24:11 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:47674
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KgIYN-0001wd-6G
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:24:11 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=VmPXIYu10wUA:10 a=uxAgfx96Y54A:10
	a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=37mPLz1kAAAA:8 a=Zq2Uc435aKTiwQm-VyAA:9
	a=T4o-77dg4f1P0q4xzd0A:7 a=70N6uejDaHesdZLri4PnruFQl10A:4
	a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.44] ([24.154.1.44:43838] helo=pop-1.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id C3/85-09072-05842D84; Thu, 18 Sep 2008 08:23:44 -0400
Received: (qmail 18973 invoked from network); 18 Sep 2008 12:23:48 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-1.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <axiom-developer@nongnu.org>; 18 Sep 2008 12:23:48 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8IBt1O02002;
	Thu, 18 Sep 2008 07:55:01 -0400
Date: Thu, 18 Sep 2008 07:55:01 -0400
Message-Id: <200809181155.m8IBt1O02002@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: dastew@sympatico.ca
In-reply-to: <48D23225.7080709@sympatico.ca> (message from Doug Stewart on
	Thu, 18 Sep 2008 06:49:09 -0400)
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170429.m8H4TKeu007099@axiom-developer.org>	<87zlm6jjwn.fsf@lattice.localdomain>
	<200809180621.m8I6Lu101615@localhost.localdomain>
	<48D23225.7080709@sympatico.ca>
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
Reply-To: daly@axiom-developer.org
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, 18 Sep 2008 12:24:13 -0000

>>>> The latest documentation work is creating a full graph of the Axiom
>>>> algebra as part of the bookvol10* buildout. This could be useful in
>>>> guiding your work in building a CLOS version.
>>>>       
>>> I have been watching your progress and bookvol10 is looking very good.
>>>
>>> It should be fairly easy to write a lisp package which traverses the in-memory
>>> algebra lattice in various ways and produces graphviz output.  We could graph
>>> the entier hierarchy, or just a "local view" of a domain and, say, its direct
>>> supersignatures.  Or a who-calls graph for a particular function, etc.  This
>>> would happen dynamically at runtime.
>>>     
>>
>> Look at <http://daly.axiom-developer.org/bookvol10.2.pdf> which is the 
>> latest incarnation I'm testing.
>>
>> The key innovation here is that I've figured out how to connect the
>> graphviz graph directly to the PDF files. So once I put up the next
>> version of the system you should be able to look at the graphviz category
>> graph, click on a box, and go directly to the page in the PDF. Try:
>>
>> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SETCAT>
>>  
>> or 
>>
>> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SetCategory>
>>
>> I've also figured out some more tricks to use Axiom to dynamically
>> generate information but I haven't had time to code them yet.
>>
>> The literate documentation is getting more interesting.
>>
>> Tim

>I find this project VERY interesting, but I don't know enough about the 
>terminology used to get the complete picture. For example I read the 
>first paragraph and was lost.
>
>"
>In general, we use several colors in the graph images. The lightblue 
>color indi-
>cates a category that is in the direct inheritance path. The green 
>(#00EE00)
>color indicates a category or domain used in the exports. The seagreen (a
>dark green, indicates a category or domain which is used but does not corre-
>spond to the signature of an existing category. The system can infer 
>that this
>subsumption node matches the category. A yellow color indicates a 
>domain.
>
>"
>Where am I to find out exactly what you mean by:
>category
>domain
>exports
>signature
>subsumption node
>etc.
>
>I have vague idea of what they mean but I think I should know these 
>precisely if I am to learn this system.

You need to look at bookvol0, the Jenks and Sutor book at
<http://axiom-developer.org/axiom-website/documentation.html>

Tim



From MAILER-DAEMON Thu Sep 18 08:34:44 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgIia-0001V5-KR
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 08:34:44 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgIiX-0001Ru-5G
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:34:41 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgIiU-0001PW-5B
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:34:40 -0400
Received: from [199.232.76.173] (port=46035 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgIiT-0001PO-VQ
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:34:38 -0400
Received: from tomts16.bellnexxia.net ([209.226.175.4]:57218
	helo=tomts16-srv.bellnexxia.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <dastew@sympatico.ca>) id 1KgIiT-0003RA-Gu
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 08:34:37 -0400
Received: from toip5.srvr.bell.ca ([209.226.175.88])
	by tomts16-srv.bellnexxia.net
	(InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id
	<20080918123435.IFMS1723.tomts16-srv.bellnexxia.net@toip5.srvr.bell.ca>
	for <axiom-developer@nongnu.org>; Thu, 18 Sep 2008 08:34:35 -0400
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AocBAB3o0UhBX4au/2dsb2JhbAAIuXKBZw
Received: from bas3-london14-1096779438.dsl.bell.ca (HELO [192.168.1.105])
	([65.95.134.174])
	by toip5.srvr.bell.ca with ESMTP; 18 Sep 2008 08:40:45 -0400
Message-ID: <48D24AF4.2050605@sympatico.ca>
Date: Thu, 18 Sep 2008 08:35:00 -0400
From: Doug Stewart <dastew@sympatico.ca>
User-Agent: Thunderbird 2.0.0.16 (X11/20080724)
MIME-Version: 1.0
To: daly@axiom-developer.org
Subject: Re: [Axiom-developer] Of possible interest to Axiom
References: <200809170429.m8H4TKeu007099@axiom-developer.org>	<87zlm6jjwn.fsf@lattice.localdomain>	<200809180621.m8I6Lu101615@localhost.localdomain>
	<48D23225.7080709@sympatico.ca>
	<200809181155.m8IBt1O02002@localhost.localdomain>
In-Reply-To: <200809181155.m8IBt1O02002@localhost.localdomain>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by monty-python.gnu.org: Solaris 8 (1)
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: Thu, 18 Sep 2008 12:34:41 -0000

root wrote:
>>>>> The latest documentation work is creating a full graph of the Axiom
>>>>> algebra as part of the bookvol10* buildout. This could be useful in
>>>>> guiding your work in building a CLOS version.
>>>>>       
>>>>>           
>>>> I have been watching your progress and bookvol10 is looking very good.
>>>>
>>>> It should be fairly easy to write a lisp package which traverses the in-memory
>>>> algebra lattice in various ways and produces graphviz output.  We could graph
>>>> the entier hierarchy, or just a "local view" of a domain and, say, its direct
>>>> supersignatures.  Or a who-calls graph for a particular function, etc.  This
>>>> would happen dynamically at runtime.
>>>>     
>>>>         
>>> Look at <http://daly.axiom-developer.org/bookvol10.2.pdf> which is the 
>>> latest incarnation I'm testing.
>>>
>>> The key innovation here is that I've figured out how to connect the
>>> graphviz graph directly to the PDF files. So once I put up the next
>>> version of the system you should be able to look at the graphviz category
>>> graph, click on a box, and go directly to the page in the PDF. Try:
>>>
>>> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SETCAT>
>>>  
>>> or 
>>>
>>> <http://daly.axiom-developer.org/bookvol10.2.pdf#nameddest=SetCategory>
>>>
>>> I've also figured out some more tricks to use Axiom to dynamically
>>> generate information but I haven't had time to code them yet.
>>>
>>> The literate documentation is getting more interesting.
>>>
>>> Tim
>>>       
>
>   
>> I find this project VERY interesting, but I don't know enough about the 
>> terminology used to get the complete picture. For example I read the 
>> first paragraph and was lost.
>>
>> "
>> In general, we use several colors in the graph images. The lightblue 
>> color indi-
>> cates a category that is in the direct inheritance path. The green 
>> (#00EE00)
>> color indicates a category or domain used in the exports. The seagreen (a
>> dark green, indicates a category or domain which is used but does not corre-
>> spond to the signature of an existing category. The system can infer 
>> that this
>> subsumption node matches the category. A yellow color indicates a 
>> domain.
>>
>> "
>> Where am I to find out exactly what you mean by:
>> category
>> domain
>> exports
>> signature
>> subsumption node
>> etc.
>>
>> I have vague idea of what they mean but I think I should know these 
>> precisely if I am to learn this system.
>>     
>
> You need to look at bookvol0, the Jenks and Sutor book at
> <http://axiom-developer.org/axiom-website/documentation.html>
>
> Tim
>
>   
Thanks and wow!!!!
This system you have developed (literate programming is WOW!!!) is 
excellent!

Doug



From MAILER-DAEMON Thu Sep 18 09:25:02 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgJVG-0001a7-Mp
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 09:25:02 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KfUOS-0004YZ-C2
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 02:50:36 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KfUOR-0004YD-16
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 02:50:35 -0400
Received: from [199.232.76.173] (port=41492 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KfUOQ-0004Y9-Pd
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 02:50:34 -0400
Received: from mx20.gnu.org ([199.232.41.8]:36500)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <wilsons@start.ca>) id 1KfUOQ-00053h-4O
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 02:50:34 -0400
Received: from matrix.start.ca ([204.101.248.1])
	by mx20.gnu.org with esmtp (Exim 4.60)
	(envelope-from <wilsons@start.ca>) id 1KfUOO-0005ND-AH
	for axiom-developer@nongnu.org; Tue, 16 Sep 2008 02:50:32 -0400
Received: from lattice.localdomain (pool3-130.adsl.user.start.ca
	[207.61.212.130])
	by matrix.start.ca (8.13.6/8.12.11) with ESMTP id m8G6oSj9004965;
	Tue, 16 Sep 2008 02:50:28 -0400
To: axiom-devel <axiom-developer@nongnu.org>
From: Stephen Wilson <wilsons@start.ca>
Date: Tue, 16 Sep 2008 02:50:05 -0400
Message-ID: <87myi8mvoi.fsf@lattice.localdomain>
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
X-detected-kernel: by mx20.gnu.org: Linux 2.4-2.6
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
	seldom 2.4 (older, 4)
X-Mailman-Approved-At: Thu, 18 Sep 2008 09:25:01 -0400
Cc: 
Subject: [Axiom-developer] Of possible interest to 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: Tue, 16 Sep 2008 06:50:36 -0000


*,

I sent the following message to Tim.  Posting here to archive any discussion it
generates.

Unfortunately, these are still early days, and I am not yet ready to release
the code.  On the other hand, the design space is still fairly open, and I would
be thrilled to discuss the possibilities with anyone who takes interest.

Take care,
Steve

Stephen Wilson <wilsons@start.ca> writes:
> Hi Tim,
>
> I thought I would send you an email letting you know of some work that I am
> doing.  I do not know if this would interest you or the Axiom project so will
> try to keep this message short.
>
> As you may recall, I have an interest in compilers.  I wanted to improve SPAD
> and help rewrite it in CL.  The boot code almost killed me and so I started
> thinking about doing things from scratch.  That was about a year ago, I think.
> Since then I have been thinking about the problem and eventually made a decision
> to implement a compiler for a "small" version of SPAD, and then use that as a
> staging ground for a more powerful system.
>
> The work to produce a small language and compiler is still ongoing, but quite a
> bit of progress has been made.  The system is implemented as a set of lisp
> macros (for now).  An incomplete example:
>
>    (defdomain polynomial-ring ((R ring) (E ordered-monoid))
>       (:satisfies ordered-monoid (retractable-to S))
>       (:carrier rep (record (c R) (k R)))
>       ...)
>
> The system is in its infancy and is not ready for general consumption.  But even
> now I am coming upon questions of design which would be influenced by the
> possibility that such work might be of benefit to Axiom.
>
> Although the above is not much to go on, I am curious about any thoughts you
> might have.  Although the language is currently small, it has well defined
> semantics, an ever cleaner implementation, lots of comments (could become
> literate), etc.  As it is lisp all the way down, with a rich ast (hierarchy of
> CLOS classes) representing domains and categories, I think there is a lot of
> potential (time will tell).
>
> Is this something of interest to Axiom?  If so, I would appreciate having a
> dialogue about the issues, on axiom-devel if you prefer, as it would help me
> develop a picture of where this effort is headed in the long term.
>
>
> Thanks for you time,
> Steve




From MAILER-DAEMON Thu Sep 18 13:20:11 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgNAo-0003XJ-Pi
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 13:20:11 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgNAm-0003WM-IP
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 13:20:08 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgNAh-0003V7-1M
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 13:20:07 -0400
Received: from [199.232.76.173] (port=49274 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgNAg-0003V4-Pp
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 13:20:02 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:39398
	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 1KgNAf-0001ID-99
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 13:20:02 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8IHJvr3031225;
	Thu, 18 Sep 2008 12:19:57 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8IHJvpj031222;
	Thu, 18 Sep 2008 12:19:57 -0500
Date: Thu, 18 Sep 2008 12:19:57 -0500
Message-Id: <200809181719.m8IHJvpj031222@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080918.01.tpd.patch (bookvol10.2 add BASTYPE,
	SETCAT, ABELSG)
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, 18 Sep 2008 17:20:08 -0000

This patch moves BASTYPE, SETCAT, and ABELSG from catdef.spad to bookvol10.2

In addition all of the categories can now be reached from the graph
of categories, indexing directly into the PDF for the related page.
=======================================================================
diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 9ae7057..87e140e 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -6,9 +6,29 @@
 \makeindex
 \usepackage{graphicx}
 %%
+%% Note that this file will eventually generate a dvi file
+%% which will eventually be processed by dvipdfm to create a pdf.
+%% The categories/domains/packages will be placed in a graphviz graph.
+%% The graphviz dot syntax allows an href parameter.
+%% The href parameter will reference this file. 
+%% pdf href syntax allows named destinations.
+%% This macro creates a named destination using \special
+%% Thus, you reference http://thispdf#nameddest=ABBREV 
+%% and you end up at the right page.
+%% This macro is called implicitly by \pagehead so every 
+%% category/domain/package can be referenced by fullname or abbrev.
+%%
+%% dest will give the ability to use nameddest= in html pdfs
+%%
+\newcommand{\dest}[1]{% e.g. \dest{abb}
+\special{pdf:dest (#1) [ @thispage /FitH @ypos ]}}
+%%
+%%
 %% pagehead consolidates standard page indexing
 %%
 \newcommand{\pagehead}[2]{% e.g. \pagehead{name}{abb}
+\dest{#1}%
+\dest{#2}%
 \section{#1 (#2)}
 \label{#1}%
 \label{#2}%
@@ -36,7 +56,6 @@
 \newcommand{\cross}[2]{% e.g. \pagefrom{cat}{funcname}
 \index{#1!#2}%
 \index{#2!#1}}
-%%
 
 
 % special meanings for math characters
@@ -262,6 +281,7 @@ A ``yellow'' color indicates a domain.
 This is the root of the category hierarchy and is not represented by code.
 
 {\bf See:}\\
+\pageto{BasicType}{BASTYPE}
 \pageto{Eltable}{ELTAB}
 \pageto{CoercibleTo}{KOERCE}
 \pageto{ConvertibleTo}{KONVERT}
@@ -269,6 +289,75 @@ This is the root of the category hierarchy and is not represented by code.
 \pageto{Type}{TYPE}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{BasicType}{BASTYPE}
+\pagepic{ps/v102basictype.ps}{BASTYPE}
+
+{\bf See:}\\
+\pagefrom{Category}{CATEGORY}
+
+{\bf Exports:}\\
+\begin{tabular}{ll}
+ ?=? &  ?\~{}=?
+\end{tabular}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ ?=? : (%,%) -> Boolean                
+\end{verbatim}
+
+These are implemented by this category:
+\begin{verbatim}
+ ?~=? : (%,%) -> Boolean
+\end{verbatim}
+
+<<category BASTYPE BasicType>>=
+)abbrev category BASTYPE BasicType
+--% BasicType
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ \spadtype{BasicType} is the basic category for describing a collection
+++ of elements with \spadop{=} (equality).
+BasicType(): Category == with
+      "=": (%,%) -> Boolean    ++ x=y tests if x and y are equal.
+      "~=": (%,%) -> Boolean   ++ x~=y tests if x and y are not equal.
+   add
+      _~_=(x:%,y:%) : Boolean == not(x=y)
+
+@
+<<BASTYPE.dotabb>>=
+"BASTYPE"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"];
+"BASTYPE" -> "CATEGORY"
+
+@
+<<BASTYPE.dotfull>>=
+"BasicType()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"];
+"BasicType()" -> "Category"
+
+@
+<<BASTYPE.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"Category" [color=lightblue];
+}
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \pagehead{CoercibleTo}{KOERCE}
 \pagepic{ps/v102koerce.ps}{KOERCE}
 
@@ -302,17 +391,20 @@ CoercibleTo(S:Type): Category == with
 
 @
 <<KOERCE.dotabb>>=
-"KOERCE" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KOERCE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
 "KOERCE" -> "CATEGORY"
 
 @
 <<KOERCE.dotfull>>=
-"CoercibleTo(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CoercibleTo(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
 "CoercibleTo(a:Type)" -> "Category"
 
-"CoercibleTo(OutputForm)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"CoercibleTo(OutputForm)"
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
 "CoercibleTo(OutputForm)" ->
     "CoercibleTo(a:Type)"
+
 @
 <<KOERCE.dotpic>>=
 digraph pic {
@@ -320,10 +412,10 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"CoercibleTo(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CoercibleTo(a:Type)" [color=lightblue];
 "CoercibleTo(a:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -363,73 +455,74 @@ ConvertibleTo(S:Type): Category == with
 
 @
 <<KONVERT.dotabb>>=
-"KONVERT" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KONVERT"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "KONVERT" -> "CATEGORY"
 
 @
 <<KONVERT.dotfull>>=
 "ConvertibleTo(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(a:Type)" -> "Category"
 
 "ConvertibleTo(DoubleFloat)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(DoubleFloat)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Float)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Float)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(InputForm)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(InputForm)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Integer)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Integer)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Integer))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Integer))" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Float))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Float))" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Complex(Float))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Complex(Float))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Complex(DoubleFloat))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Complex(DoubleFloat))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(String)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(String)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Symbol)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Symbol)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(SExpression)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(SExpression)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Base))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Base))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(List(Integer))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(List(Integer))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(List(Character))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(List(Character))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
 "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))" ->
     "ConvertibleTo(a:Type)"
 @
@@ -439,11 +532,10 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"ConvertibleTo(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ConvertibleTo(a:Type)" [color=lightblue];
 "ConvertibleTo(a:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -491,13 +583,13 @@ Eltable(S:SetCategory, Index:Type): Category == with
 
 @
 <<ELTAB.dotabb>>=
-"ELTAB" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ELTAB" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"];
 "ELTAB" -> "CATEGORY"
 
 @
 <<ELTAB.dotfull>>=
 "Eltable(a:SetCategory,b:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"];
 "Eltable(a:SetCategory,b:Type)" -> "Category"
 
 @
@@ -507,11 +599,10 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Eltable(a:SetCategory,b:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Eltable(a:SetCategory,b:Type)" [color=lightblue];
 "Eltable(a:SetCategory,b:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -568,45 +659,46 @@ RetractableTo(S: Type): Category == with
 
 @
 <<RETRACT.dotabb>>=
-"RETRACT" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RETRACT"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RETRACT" -> "CATEGORY"
 
 @
 <<RETRACT.dotfull>>=
 "RetractableTo(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(a:Type)" -> "Category"
 
 "RetractableTo(SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(SetCategory)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Symbol)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(Symbol)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Integer)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(Integer)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(NonNegativeInteger)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(NonNegativeInteger)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Fraction(Integer))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(Fraction(Integer))" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Float)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(Float)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Kernel(ExpressionSpace))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(Kernel(ExpressionSpace))" -> "RetractableTo(a:Type)"
 
 "RetractableTo(CommutativeRing)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
 "RetractableTo(CommutativeRing)" -> "RetractableTo(a:Type)"
 @
 <<RETRACT.dotpic>>=
@@ -615,11 +707,10 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"RetractableTo(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RetractableTo(a:Type)" [color=lightblue];
 "RetractableTo(a:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -641,12 +732,12 @@ Type(): Category == with nil
 
 @
 <<TYPE.dotabb>>=
-"TYPE" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"TYPE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"];
 "TYPE" -> "CATEGORY"
 
 @
 <<TYPE.dotfull>>=
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"];
 "Type()" -> "Category"
 
 @
@@ -656,10 +747,10 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -748,12 +839,13 @@ Aggregate: Category == Type with
 
 @
 <<AGG.dotabb>>=
-"AGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"];
 "AGG" -> "TYPE"
 
 @
 <<AGG.dotfull>>=
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"];
 "Aggregate()" -> "Type()"
 
 @
@@ -763,13 +855,13 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -862,13 +954,13 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category ==
 
 @
 <<ELTAGG.dotabb>>=
-"ELTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ELTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
 "ELTAGG" -> "ELTAB"
 
 @
 <<ELTAGG.dotfull>>=
 "EltableAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
 "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)"
 
 @
@@ -878,20 +970,237 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"EltableAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"EltableAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)"
 
-"Eltable(a:SetCategory,b:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Eltable(a:SetCategory,b:Type)" [color=lightblue];
 "Eltable(a:SetCategory,b:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
+}
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{SetCategory}{SETCAT}
+\pagepic{ps/v102setcategory.ps}{SETCAT}
+
+{\bf See:}\\
+\pageto{AbelianSemiGroup}{ABELSG}
+\pageto{HomogeneousAggregate}{HOAGG}
+
+{\bf Exports:}\\
+\begin{tabular}{lllll}
+coerce & hash & latex & ?=? & ?\~{}=?
+\end{tabular}
+
+\cross{SETCAT}{coerce}
+\cross{SETCAT}{hash}
+\cross{SETCAT}{latex}
+\cross{SETCAT}{?=?}
+\cross{SETCAT}{?\~{}=?}
+
+These are implemented by this category:
+\begin{verbatim}
+ hash : % -> SingleInteger            
+ latex : % -> String
+\end{verbatim}
+
+These exports come from BasicType():
+\begin{verbatim}
+ ?=? : (%,%) -> Boolean               
+ ?~=? : (%,%) -> Boolean              
+\end{verbatim}
+
+These exports come from CoercibleTo(OutputForm):
+\begin{verbatim}
+ coerce : % -> OutputForm
+\end{verbatim}
+
+<<category SETCAT SetCategory>>=
+)abbrev category SETCAT SetCategory
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++   09/09/92   RSS   added latex and hash
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ \spadtype{SetCategory} is the basic category for describing a collection
+++ of elements with \spadop{=} (equality) and \spadfun{coerce} to output form.
+++
+++ Conditional Attributes:
+++    canonical\tab{15}data structure equality is the same as \spadop{=}
+SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with
+    --operations
+      hash: % -> SingleInteger  ++ hash(s) calculates a hash code for s.
+      latex: % -> String       ++ latex(s) returns a LaTeX-printable output
+                               ++ representation of s.
+  add
+      hash(s : %):  SingleInteger == 0$SingleInteger
+      latex(s : %): String       == "\mbox{\bf Unimplemented}"
+
+@
+<<SETCAT.dotabb>>=
+"SETCAT" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
+"SETCAT" -> "BASTYPE"
+"SETCAT" -> "KOERCE"
+
+@
+<<SETCAT.dotfull>>=
+"SetCategory()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+@
+<<SETCAT.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"Category" [color=lightblue];
+
 }
 
 @
 \chapter{Category Layer 3}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{AbelianSemiGroup}{ABELSG}
+\pagepic{ps/v102abeliansemigroup.ps}{ABELSG}
+
+{\bf See:}\\
+\pagefrom{SetCategory}{SETCAT}
+
+{\bf Exports:}\\
+\begin{tabular}{lllllll}
+ coerce & hash & latex & ?*? & ?+? & ?=? & ?\~{}=? 
+\end{tabular}
+
+\cross{ABELSG}{coerce}
+\cross{ABELSG}{hash}
+\cross{ABELSG}{latex}
+\cross{ABELSG}{?*?}
+\cross{ABELSG}{?+?}
+\cross{ABELSG}{?=?}
+\cross{ABELSG}{?\~{}=?}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ ?+? : (%,%) -> %
+\end{verbatim}
+
+These are implemented by this category:
+\begin{verbatim}
+ ?*? : (PositiveInteger,%) -> %       
+\end{verbatim}
+
+These exports come from SetCategory():
+\begin{verbatim}
+ coerce : % -> OutputForm
+ hash : % -> SingleInteger            
+ latex : % -> String
+ ?=? : (%,%) -> Boolean               
+ ?~=? : (%,%) -> Boolean              
+\end{verbatim}
+
+<<category ABELSG AbelianSemiGroup>>=
+)abbrev category ABELSG AbelianSemiGroup
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ the class of all additive (commutative) semigroups, i.e.
+++ a set with a commutative and associative operation \spadop{+}.
+++
+++ Axioms:
+++   \spad{associative("+":(%,%)->%)}\tab{30}\spad{ (x+y)+z = x+(y+z) }
+++   \spad{commutative("+":(%,%)->%)}\tab{30}\spad{ x+y = y+x }
+AbelianSemiGroup(): Category == SetCategory with
+    --operations
+      "+": (%,%) -> %                  ++ x+y computes the sum of x and y.
+      "*": (PositiveInteger,%) -> %
+        ++ n*x computes the left-multiplication of x by the positive integer n.
+        ++ This is equivalent to adding x to itself n times.
+    add
+      import RepeatedDoubling(%)
+      if not (% has Ring) then
+        n:PositiveInteger * x:% == double(n,x)
+
+@
+<<ABELSG.dotabb>>=
+"ABELSG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
+"ABELSG" -> "SETCAT"
+"ABELSG" -> "REPDB"
+
+@
+<<ABELSG.dotfull>>=
+"AbelianSemiGroup()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
+"AbelianSemiGroup()" -> "SetCategory()"
+"AbelianSemiGroup()" -> "RepeatedDoubling(S:SetCategory)"
+
+<<ABELSG.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"AbelianSemiGroup()" [color=lightblue];
+"AbelianSemiGroup()" -> "SetCategory()"
+"AbelianSemiGroup()" -> "RepeatedDoubling(S:AbelianSemiGroup)"
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" ->
+    "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"RepeatedDoubling(S:AbelianSemiGroup)" [color="#00EE00"];
+"RepeatedDoubling(S:AbelianSemiGroup)" -> "RepeatedDoubling(S:SetCategory)"
+
+"RepeatedDoubling(S:SetCategory)" [color="#00EE00"];
+"RepeatedDoubling(S:SetCategory)" -> "Package"
+
+"Package" [color="#00EE00"];
+
+"Category" [color=lightblue];
+}
+
+@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \pagehead{HomogeneousAggregate}{HOAGG}
 \pagepic{ps/v102homogeneousaggregate.ps}{HOAGG}
 
@@ -1070,13 +1379,13 @@ HomogeneousAggregate(S:Type): Category == Aggregate with
 
 @
 <<HOAGG.dotabb>>=
-"HOAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HOAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"];
 "HOAGG" -> "AGG"
 
 @
 <<HOAGG.dotfull>>=
 "HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
 @
@@ -1086,23 +1395,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 "HomogeneousAggregate(a:Type)" -> "Evalable(a:Type)"
-"HomogeneousAggregate(a:Type)" -> "SetCategory"
+"HomogeneousAggregate(a:Type)" -> "SetCategory()"
 
-"Evalable(a:Type)" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"Evalable(a:Type)" [color="#00EE00"];
 
-"SetCategory" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"SetCategory()" [color="#00EE00"];
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.pamphlet"];
+"Category" [color=lightblue];
 
 }
 
@@ -1242,16 +1550,17 @@ BagAggregate(S:Type): Category == HomogeneousAggregate S with
 
 @
 <<BGAGG.dotabb>>=
-"BGAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BGAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
 "BGAGG" -> "HOAGG"
 
 @
 <<BGAGG.dotfull>>=
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
 "BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
 @
@@ -1261,20 +1570,19 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -1483,15 +1791,17 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
 
 @
 <<CLAGG.dotabb>>=
-"CLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
 "CLAGG" -> "HOAGG"
 
 @
 <<CLAGG.dotfull>>=
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)"
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
 @
@@ -1501,29 +1811,26 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 "Collection(a:Type)" -> "ConvertibleTo(InputForm)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"ConvertibleTo(InputForm)"
-    [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"ConvertibleTo(InputForm)" [color="#00EE00"];
 "ConvertibleTo(InputForm)" -> "ConvertibleTo(a:Type)"
 
-"ConvertibleTo(a:Type)"
-    [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"ConvertibleTo(a:Type)" [color="#00EE00"];
 "ConvertibleTo(a:Type)" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -1741,26 +2048,26 @@ IndexedAggregate(Index: SetCategory, Entry: Type): Category ==
 
 @
 <<IXAGG.dotabb>>=
-"IXAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IXAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
 "IXAGG" -> "HOAGG"
 "IXAGG" -> "ELTAGG"
 
 @
 <<IXAGG.dotfull>>=
 "IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "EltableAggregate(a:SetCategory,b:Type)"
 
 "IndexedAggregate(a:SetCategory,b:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
 "IndexedAggregate(a:SetCategory,b:SetCategory)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
 "IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
@@ -1771,32 +2078,28 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "EltableAggregate(a:SetCategory,b:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"EltableAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"EltableAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)"
 
-"Eltable(a:SetCategory,b:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Eltable(a:SetCategory,b:Type)" [color=lightblue];
 "Eltable(a:SetCategory,b:Type)" -> "Category"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -1982,13 +2285,13 @@ RecursiveAggregate(S:Type): Category == HomogeneousAggregate(S) with
 
 @
 <<RCAGG.dotabb>>=
-"RCAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RCAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"];
 "RCAGG" -> "HOAGG"
 
 @
 <<RCAGG.dotfull>>=
 "RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
 @
@@ -1998,21 +2301,19 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RecursiveAggregate(a:Type)" [color=lightblue];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -2268,13 +2569,13 @@ BinaryRecursiveAggregate(S:Type):Category == RecursiveAggregate S with
 
 @
 <<BRAGG.dotabb>>=
-"BRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"];
 "BRAGG" -> "RCAGG"
 
 @
 <<BRAGG.dotfull>>=
 "BinaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"];
 "BinaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -2284,25 +2585,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"BinaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BinaryRecursiveAggregate(a:Type)" [color=lightblue];
 "BinaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
-"RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RecursiveAggregate(a:Type)" [color=lightblue];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -2487,14 +2785,14 @@ DictionaryOperations(S:SetCategory): Category ==
 
 @
 <<DIOPS.dotabb>>=
-"DIOPS" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DIOPS" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"];
 "DIOPS" -> "BGAGG"
 "DIOPS" -> "CLAGG"
 
 @
 <<DIOPS.dotfull>>=
 "DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
@@ -2505,35 +2803,32 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DictionaryOperations(a:SetCategory)" [color=lightblue];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
-"BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:SetCategory)" [color=seagreen];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)" [color=seagreen];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -2718,13 +3013,13 @@ DoublyLinkedAggregate(S:Type): Category == RecursiveAggregate S with
 
 @
 <<DLAGG.dotabb>>=
-"DLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"];
 "DLAGG" -> "RCAGG"
 
 @
 <<DLAGG.dotfull>>=
 "DoublyLinkedAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"];
 "DoublyLinkedAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -2734,25 +3029,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"DoublyLinkedAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DoublyLinkedAggregate(a:Type)" [color=lightblue];
 "DoublyLinkedAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
-"RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RecursiveAggregate(a:Type)" [color=lightblue];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -3013,13 +3305,14 @@ LinearAggregate(S:Type): Category ==
 
 @
 <<LNAGG.dotabb>>=
-"LNAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LNAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"];
 "LNAGG" -> "IXAGG"
 "LNAGG" -> "CLAGG"
 
 @
 <<LNAGG.dotfull>>=
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" 
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
@@ -3030,34 +3323,31 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.pamphlet"];
+"Category" [color=lightblue];
 
 }
 @
@@ -3185,21 +3475,21 @@ PriorityQueueAggregate(S:OrderedSet): Category == BagAggregate S with
 
 @
 <<PRQAGG.dotabb>>=
-"PRQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"PRQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
 "PRQAGG" -> "BGAGG"
 
 @
 <<PRQAGG.dotfull>>=
 "PriorityQueueAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "PriorityQueueAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:SetCategory)" -> "PriorityQueueAggregate(a:Type)"
 
 "PriorityQueueAggregate(a:OrderedSet)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:OrderedSet)" ->
    "PriorityQueueAggregate(a:SetCategory)"
 
@@ -3210,24 +3500,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"PriorityQueueAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"PriorityQueueAggregate(a:Type)" [color=lightblue];
 "PriorityQueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -3374,16 +3662,17 @@ QueueAggregate(S:Type): Category == BagAggregate S with
 
 @
 <<QUAGG.dotabb>>=
-"QUAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"QUAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
 "QUAGG" -> "BGAGG"
 
 @
 <<QUAGG.dotfull>>=
-"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"QueueAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
 "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "QueueAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
 "QueueAggregate(a:SetCategory)" -> "QueueAggregate(a:Type)"
 
 @
@@ -3393,23 +3682,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"QueueAggregate(a:Type)" [color=lightblue];
 "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -3546,16 +3834,17 @@ StackAggregate(S:Type): Category == BagAggregate S with
 
 @
 <<SKAGG.dotabb>>=
-"SKAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"SKAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
 "SKAGG" -> "BGAGG"
 
 @
 <<SKAGG.dotfull>>=
-"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StackAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
 "StackAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "StackAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
 "StackAggregate(a:SetCategory)" -> "StackAggregate(a:Type)"
 
 @
@@ -3565,23 +3854,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StackAggregate(a:Type)" [color=lightblue];
 "StackAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -4016,13 +4304,13 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
 
 @
 <<URAGG.dotabb>>=
-"URAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"URAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"];
 "URAGG" -> "RCAGG"
 
 @
 <<URAGG.dotfull>>=
 "UnaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"];
 "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -4032,25 +4320,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"UnaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"UnaryRecursiveAggregate(a:Type)" [color=lightblue];
 "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
-"RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RecursiveAggregate(a:Type)" [color=lightblue];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -4222,17 +4507,17 @@ Dictionary(S:SetCategory): Category ==
 
 @
 <<DIAGG.dotabb>>=
-"DIAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DIAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
 "DIAGG" -> "DIOPS"
 
 @
 <<DIAGG.dotfull>>=
 "Dictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
 "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
 "Dictionary(Record(a:SetCategory,b:SetCategory))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
 "Dictionary(Record(a:SetCategory,b:SetCategory))" ->
     "Dictionary(a:SetCategory)"
 
@@ -4243,39 +4528,35 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Dictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Dictionary(a:SetCategory)" [color=lightblue];
 "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
-"DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DictionaryOperations(a:SetCategory)" [color=lightblue];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
-"BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:SetCategory)" [color=seagreen];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)" [color=seagreen];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
-"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
 
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Type()" [color=lightblue];
 "Type()" -> "Category"
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category" [color=lightblue];
 }
 
 @
@@ -4470,18 +4751,19 @@ DequeueAggregate(S:Type):
 
 @
 <<DQAGG.dotabb>>=
-"DQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
 "DQAGG" -> "SKAGG"
 "DQAGG" -> "QUAGG"
 
 @
 <<DQAGG.dotfull>>=
-"DequeueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DequeueAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
 "DequeueAggregate(a:Type)" -> "StackAggregate(a:Type)"
 "DequeueAggregate(a:Type)" -> "QueueAggregate(a:Type)"
 
 "DequeueAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
 "DequeueAggregate(a:SetCategory)" -> "DequeueAggregate(a:Type)"
 
 @
@@ -4491,24 +4773,23 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"DequeueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DequeueAggregate(a:Type)" [color=lightblue];
 "DequeueAggregate(a:Type)" -> "StackAggregate(a:Type)"
 "DequeueAggregate(a:Type)" -> "QueueAggregate(a:Type)"
 
-"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StackAggregate(a:Type)" [color=lightblue];
 "StackAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
-"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"QueueAggregate(a:Type)" [color=lightblue];
 "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "..."
 
-"..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"..." [color=lightblue];
 }
 
 @
@@ -4769,13 +5050,13 @@ ExtensibleLinearAggregate(S:Type):Category == LinearAggregate S with
 
 @
 <<ELAGG.dotabb>>=
-"ELAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ELAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"];
 "ELAGG" -> "LNAGG"
 
 @
 <<ELAGG.dotfull>>=
 "ExtensibleLinearAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"];
 "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
 @
@@ -4785,32 +5066,28 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"ExtensibleLinearAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ExtensibleLinearAggregate(a:Type)" [color=lightblue];
 "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "..."
 
-"..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"..." [color=lightblue];
 }
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -5112,13 +5389,13 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
 
 @
 <<FLAGG.dotabb>>=
-"FLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"];
 "FLAGG" -> "LNAGG"
 
 @
 <<FLAGG.dotfull>>=
 "FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
 @
@@ -5128,35 +5405,31 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FiniteLinearAggregate(a:Type)" [color=lightblue];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 "FiniteLinearAggregate(a:Type)" -> "OrderedSet"
 
-"OrderedSet" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"OrderedSet" [color="#00EE00"];
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "..."
 
-"..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"..." [color=lightblue];
 }
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -5165,7 +5438,6 @@ digraph pic {
 
 {\bf See:}\\
 \pagefrom{DictionaryOperations}{DIOPS}
-<<category MDAGG MultiDictionary>>=
 
 {\bf Exports:}\\
 \begin{tabular}{lllll}
@@ -5214,9 +5486,9 @@ digraph pic {
 \cross{MDAGG}{select}
 \cross{MDAGG}{select!}
 \cross{MDAGG}{size?}
-\cross{MDAGG}{#?}
+\cross{MDAGG}{\#?}
 \cross{MDAGG}{?=?}
-\cross{MDAGG}{?~=?}
+\cross{MDAGG}{?\~{}=?}
 
 These are directly exported but not implemented:
 \begin{verbatim}
@@ -5288,6 +5560,7 @@ These exports come from DictionaryOperations(a:SetCategory):
  ?~=? : (%,%) -> Boolean if S has SETCAT
 \end{verbatim}
 
+<<category MDAGG MultiDictionary>>=
 )abbrev category MDAGG MultiDictionary
 ++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks
 ++ Date Created: August 87 through August 88
@@ -5319,13 +5592,13 @@ MultiDictionary(S:SetCategory): Category == DictionaryOperations S with
 
 @
 <<MDAGG.dotabb>>=
-"MDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"MDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"];
 "MDAGG" -> "DIOPS"
 
 @
 <<MDAGG.dotfull>>=
 "MultiDictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"];
 "MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
 @
@@ -5335,33 +5608,29 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"MultiDictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"MultiDictionary(a:SetCategory)" [color=lightblue];
 "MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
-"DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DictionaryOperations(a:SetCategory)" [color=lightblue];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
-"BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:SetCategory)" [color=seagreen];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)" [color=seagreen];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "..."
 
-"..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"..." [color=lightblue];
 }
 
 @
@@ -5684,13 +5953,14 @@ StreamAggregate(S:Type): Category ==
 
 @
 <<STAGG.dotabb>>=
-"STAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"STAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"];
 "STAGG" -> "RCAGG"
 "STAGG" -> "LNAGG"
 
 @
 <<STAGG.dotfull>>=
-"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StreamAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"];
 "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)"
 "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
@@ -5701,40 +5971,35 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StreamAggregate(a:Type)" [color=lightblue];
 "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)"
 "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"UnaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"UnaryRecursiveAggregate(a:Type)" [color=lightblue];
 "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
-"RecursiveAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"RecursiveAggregate(a:Type)" [color=lightblue];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
-"HomogeneousAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HomogeneousAggregate(a:Type)" [color=lightblue];
 "HomogeneousAggregate(a:Type)" -> "..."
 
-"..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"..." [color=lightblue];
 
 }
 @
@@ -6189,23 +6454,23 @@ OneDimensionalArrayAggregate(S:Type): Category ==
 
 @
 <<A1AGG.dotabb>>=
-"A1AGG" [color=lightblue,style=filled];
+"A1AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
 "A1AGG" -> "FLAGG"
 
 @
 <<A1AGG.dotfull>>=
 "OneDimensionalArrayAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(a:Type)" -> 
     "FiniteLinearAggregate(a:Type)"
 
 "OneDimensionalArrayAggregate(Character)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(Character)" ->
     "OneDimensionalArrayAggregate(a:Type)"
 
 "OneDimensionalArrayAggregate(Boolean)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(Boolean)" ->    
     "OneDimensionalArrayAggregate(a:Type)"
 
@@ -6216,25 +6481,22 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"OneDimensionalArrayAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"OneDimensionalArrayAggregate(a:Type)" [color=lightblue];
 "OneDimensionalArrayAggregate(a:Type)" -> 
     "FiniteLinearAggregate(a:Type)"
 
-"FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FiniteLinearAggregate(a:Type)" [color=lightblue];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "CLAGG..."
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" -> "IXAGG..."
 
-"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CLAGG..." [color=lightblue];
+"IXAGG..." [color=lightblue];
 }
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6424,13 +6686,13 @@ KeyedDictionary(Key:SetCategory, Entry:SetCategory): Category ==
 
 @
 <<KDAGG.dotabb>>=
-"KDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"];
 "KDAGG" -> "DIAGG"
 
 @
 <<KDAGG.dotfull>>=
 "KeyedDictionary(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"];
 "KeyedDictionary(a:SetCategory,b:SetCategory)" -> 
     "Dictionary(Record(a:SetCategory,b:SetCategory))"
 
@@ -6441,39 +6703,34 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"KeyedDictionary(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KeyedDictionary(a:SetCategory,b:SetCategory)" [color=lightblue];
 "KeyedDictionary(a:SetCategory,b:SetCategory)" -> 
     "Dictionary(Record(a:SetCategory,b:SetCategory))"
 
-"Dictionary(Record(a:SetCategory,b:SetCategory))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Dictionary(Record(a:SetCategory,b:SetCategory))" [color=seagreen];
 "Dictionary(Record(a:SetCategory,b:SetCategory))" ->
     "Dictionary(a:SetCategory)"
 
-"Dictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Dictionary(a:SetCategory)" [color=lightblue];
 "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
-"DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DictionaryOperations(a:SetCategory)" [color=lightblue];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
-"BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:SetCategory)" [color=seagreen];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HOAGG..."
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)" [color=seagreen];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HOAGG..."
 
-"HOAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"HOAGG..." [color=lightblue];
 }
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6985,19 +7242,20 @@ ListAggregate(S:Type): Category == Join(StreamAggregate S,
 
 @
 <<LSAGG.dotabb>>=
-"LSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
 "LSAGG" -> "FLAGG"
 "LSAGG" -> "ELAGG"
 
 @
 <<LSAGG.dotfull>>=
-"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ListAggregate(a:Type)"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
 "ListAggregate(a:Type)" -> "StreamAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)"
 
 "ListAggregate(Record(a:SetCategory,b:SetCategory))" 
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+ [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
 "ListAggregate(Record(a:SetCategory,b:SetCategory))" ->
     "ListAggregate(a:Type)"
 
@@ -7008,34 +7266,31 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ListAggregate(a:Type)" [color=lightblue];
 "ListAggregate(a:Type)" -> "StreamAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)"
 
-"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StreamAggregate(a:Type)" [color=lightblue];
 "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)"
 "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FiniteLinearAggregate(a:Type)" [color=lightblue];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"ExtensibleLinearAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ExtensibleLinearAggregate(a:Type)" [color=lightblue];
 "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"UnaryRecursiveAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"UnaryRecursiveAggregate(a:Type)" [color=lightblue];
 "UnaryRecursiveAggregate(a:Type)" -> "RCAGG..."
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IXAGG..."
 "LinearAggregate(a:Type)" -> "CLAGG..."
 
-"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"RCAGG..."  [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CLAGG..." [color=lightblue];
+"IXAGG..." [color=lightblue];
+"RCAGG..." [color=lightblue];
 }
 
 @
@@ -7418,12 +7673,13 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
 
 @
 <<SRAGG.dotabb>>=
-"SRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"SRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"];
 "SRAGG" -> "A1AGG"
 
 @
 <<SRAGG.dotfull>>=
-"StringAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StringAggregate()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"];
 "StringAggregate()" -> "OneDimensionalArrayAggregate(Character)"
 
 @
@@ -7433,33 +7689,29 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"StringAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"StringAggregate()" [color=lightblue];
 "StringAggregate()" -> "OneDimensionalArrayAggregate(Character)"
 
-"OneDimensionalArrayAggregate(Character)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"OneDimensionalArrayAggregate(Character)" [color=seagreen];
 "OneDimensionalArrayAggregate(Character)" ->
     "OneDimensionalArrayAggregate(a:Type)"
 
-"OneDimensionalArrayAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"OneDimensionalArrayAggregate(a:Type)" [color=lightblue];
 "OneDimensionalArrayAggregate(a:Type)" -> 
     "FiniteLinearAggregate(a:Type)"
 
-"FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FiniteLinearAggregate(a:Type)" [color=lightblue];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
-"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"LinearAggregate(a:Type)" [color=lightblue];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "CLAGG..."
 
-"IndexedAggregate(b:Integer,a:Type)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(b:Integer,a:Type)" [color=seagreen];
 "IndexedAggregate(b:Integer,a:Type)" -> "IXAGG..."
 
-"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CLAGG..." [color=lightblue];
+"IXAGG..." [color=lightblue];
 }
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7789,14 +8041,14 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 
 @
 <<TBAGG.dotabb>>=
-"TBAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"TBAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"];
 "TBAGG" -> "KDAGG"
 "TBAGG" -> "IXAGG"
 
 @
 <<TBAGG.dotfull>>=
 "TableAggregate(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"];
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
     "KeyedDictionary(a:SetCategory,b:SetCategory)"
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
@@ -7809,57 +8061,49 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"TableAggregate(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"TableAggregate(a:SetCategory,b:SetCategory)" [color=lightblue];
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
     "KeyedDictionary(a:SetCategory,b:SetCategory)"
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
     "IndexedAggregate(a:SetCategory,b:SetCategory)"
 
-"IndexedAggregate(a:SetCategory,b:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:SetCategory)" [color=seagreen];
 "IndexedAggregate(a:SetCategory,b:SetCategory)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
-"IndexedAggregate(a:SetCategory,b:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue];
 "IndexedAggregate(a:SetCategory,b:Type)" -> "HOAGG..."
 "IndexedAggregate(a:SetCategory,b:Type)" -> "ELTAGG..."
 
-"KeyedDictionary(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KeyedDictionary(a:SetCategory,b:SetCategory)" [color=lightblue];
 "KeyedDictionary(a:SetCategory,b:SetCategory)" -> 
     "Dictionary(Record(a:SetCategory,b:SetCategory))"
 
-"Dictionary(Record(a:SetCategory,b:SetCategory))"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Dictionary(Record(a:SetCategory,b:SetCategory))" [color=seagreen];
 "Dictionary(Record(a:SetCategory,b:SetCategory))" ->
     "Dictionary(a:SetCategory)"
 
-"Dictionary(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Dictionary(a:SetCategory)" [color=lightblue];
 "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
-"DictionaryOperations(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"DictionaryOperations(a:SetCategory)" [color=lightblue];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
-"BagAggregate(a:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:SetCategory)" [color=seagreen];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
-"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BagAggregate(a:Type)" [color=lightblue];
 "BagAggregate(a:Type)" -> "HOAGG..."
 
-"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"Collection(a:SetCategory)" [color=seagreen];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
-"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Collection(a:Type)" [color=lightblue];
 "Collection(a:Type)" -> "HOAGG..."
 
-"ELTAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"HOAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ELTAGG..." [color=lightblue];
+"HOAGG..." [color=lightblue];
 }
 @
 \chapter{Category Layer 8}
@@ -8236,14 +8480,14 @@ AssociationListAggregate(Key:SetCategory,Entry:SetCategory): Category ==
 
 @
 <<ALAGG.dotabb>>=
-"ALAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ALAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"];
 "ALAGG" -> "TBAGG"
 "ALAGG" -> "LSAGG"
 
 @
 <<ALAGG.dotfull>>=
 "AssociationListAggregate(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"];
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
     "TableAggregate(a:SetCategory,b:SetCategory)"
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
@@ -8256,43 +8500,37 @@ digraph pic {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"AssociationListAggregate(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"AssociationListAggregate(a:SetCategory,b:SetCategory)" [color=lightblue];
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
     "TableAggregate(a:SetCategory,b:SetCategory)"
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
     "ListAggregate(Record(a:SetCategory,b:SetCategory))"
 
-"TableAggregate(a:SetCategory,b:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"TableAggregate(a:SetCategory,b:SetCategory)" [color=lightblue];
 "TableAggregate(a:SetCategory,b:SetCategory)" -> "KDAGG..."
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
     "IndexedAggregate(a:SetCategory,b:SetCategory)"
 
-"IndexedAggregate(a:SetCategory,b:SetCategory)"
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"IndexedAggregate(a:SetCategory,b:SetCategory)" [color=seagreen];
 "IndexedAggregate(a:SetCategory,b:SetCategory)" -> "IXAGG..."
 
-"ListAggregate(Record(a:SetCategory,b:SetCategory))" 
-    [color=seagreen,href="books/bookvol10.2.pamphlet"];
+"ListAggregate(Record(a:SetCategory,b:SetCategory))" [color=seagreen];
 "ListAggregate(Record(a:SetCategory,b:SetCategory))" -> 
     "ListAggregate(a:Type)"
 
-"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ListAggregate(a:Type)" [color=lightblue];
 "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)"
 
-"FiniteLinearAggregate(a:Type)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FiniteLinearAggregate(a:Type)" [color=lightblue];
 "FiniteLinearAggregate(a:Type)" -> "LSAGG..."
 
-"ExtensibleLinearAggregate(a:Type)" 
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"ExtensibleLinearAggregate(a:Type)" [color=lightblue];
 "ExtensibleLinearAggregate(a:Type)" -> "LSAGG..."
 
-"KDAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
-"LSAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"KDAGG..." [color=lightblue];
+"IXAGG..." [color=lightblue];
+"LSAGG..." [color=lightblue];
 }
 
 @
@@ -8397,14 +8635,14 @@ FiniteSetAggregate(S:SetCategory): Category ==
 
 @
 <<FSAGG.dotabb>>=
-"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"];
 "FSAGG" -> "DIAGG"
 "FSAGG" -> "SETAGG"
 
 @
 <<FSAGG.dotfull>>=
 "FiniteSetAggregate(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"];
 "FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)"
 "FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)"
 
@@ -8459,14 +8697,15 @@ BitAggregate(): Category ==
 
 @
 <<BTAGG.dotabb>>=
-"BTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"];
 "BTAGG" -> "ORDSET"
 "BTAGG" -> "LOGIC"
 "BTAGG" -> "A1AGG"
 
 @
 <<BTAGG.dotfull>>=
-"BitAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"BitAggregate()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"];
 "BitAggregate()" -> "OrderedSet()"
 "BitAggregate()" -> "Logic()"
 "BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)"
@@ -8492,14 +8731,15 @@ MultisetAggregate(S:SetCategory):
 
 @
 <<MSETAGG.dotabb>>=
-"MSETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"MSETAGG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"];
 "MSETAGG" -> "MDAGG"
 "MSETAGG" -> "SETAGG"
 
 @
 <<MSETAGG.dotfull>>=
 "MultisetAggregate(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"];
 "MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)"
 "MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)"
 
@@ -8531,14 +8771,14 @@ OrderedMultisetAggregate(S:OrderedSet): Category ==
 
 @
 <<OMSAGG.dotabb>>=
-"OMSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"OMSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
 "OMSAGG" -> "MSETAGG"
 "OMSAGG" -> "PRQAGG"
 
 @
 <<OMSAGG.dotfull>>=
 "OrderedMultisetAggregate(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
 "OrderedMultisetAggregate(a:SetCategory)" -> "MultisetAggregate(a:SetCategory)"
 "OrderedMultisetAggregate(a:SetCategory)" -> 
    "PriorityQueueAggregate(a:SetCategory)"
@@ -8625,14 +8865,14 @@ SetAggregate(S:SetCategory):
 
 @
 <<SETAGG.dotabb>>=
-"SETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"SETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
 "SETAGG" -> "SETCAT"
 "SETAGG" -> "CLAGG"
 
 @
 <<SETAGG.dotfull>>=
 "SetAggregate(a:SetCategory)"
-    [color=lightblue,href="books/bookvol10.2.pamphlet"];
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
 "SetAggregate(a:SetCategory)" -> "SetCategory()"
 "SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)"
 
@@ -8641,22 +8881,141 @@ SetAggregate(S:SetCategory):
 \pagehead{Evalable}{EVALAB}
 \pageto{HomogeneousAggregate}{HOAGG}
 <<EVALAB.dotfull>>=
-"Evalable(a:Type)" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"Evalable(a:Type)"
+ [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"];
 @
 
 \pagehead{OrderedSet}{ORDSET}
 \pageto{FiniteLinearAggregate}{FLAGG}
 <<ORDSET.dotfull>>=
-"OrderedSet" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
-@
-
-\pagehead{SetCategory}{SETCAT}
-\pageto{HomogeneousAggregate}{HOAGG}
-<<SETCAT.dotfull>>=
-"SetCategory" [color="#00EE00",href="books/bookvol10.2.pamphlet"];
+"OrderedSet"
+ [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
 @
 
 \chapter{The bootstrap code}
+\section{ABELSG.lsp BOOTSTRAP}
+{\bf ABELSG} needs
+{\bf SETCAT} which needs
+{\bf SINT} which needs 
+{\bf UFD} which needs
+{\bf GCDDOM} which needs
+{\bf COMRING} which needs
+{\bf RING} which needs
+{\bf RNG} which needs
+{\bf ABELGRP} which needs
+{\bf CABMON} which needs
+{\bf ABELMON} which needs
+{\bf ABELSG}. 
+We break this chain with {\bf ABELSG.lsp} which we
+cache here. We need to break this cycle to build
+the algebra. So we keep a cached copy of the translated {\bf ABELSG}
+category which we can write into the {\bf MID} directory. We compile 
+the lisp code and copy the {\bf ABELSG.o} file to the {\bf OUT} directory.
+This is eventually forcibly replaced by a recompiled version.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<ABELSG.lsp BOOTSTRAP>>=
+
+(|/VERSIONCHECK| 2) 
+
+(SETQ |AbelianSemiGroup;AL| (QUOTE NIL)) 
+
+(DEFUN |AbelianSemiGroup| NIL 
+  (LET (#:G82568) 
+    (COND 
+      (|AbelianSemiGroup;AL|)
+      (T (SETQ |AbelianSemiGroup;AL| (|AbelianSemiGroup;|)))))) 
+
+(DEFUN |AbelianSemiGroup;| NIL 
+  (PROG (#1=#:G82566) 
+    (RETURN 
+      (PROG1 
+        (LETT #1# 
+          (|Join| 
+            (|SetCategory|)
+            (|mkCategory| 
+              (QUOTE |domain|)
+              (QUOTE (
+                ((|+| (|$| |$| |$|)) T)
+                ((|*| (|$| (|PositiveInteger|) |$|)) T)))
+              NIL
+              (QUOTE ((|PositiveInteger|)))
+              NIL))
+            |AbelianSemiGroup|)
+        (SETELT #1# 0 (QUOTE (|AbelianSemiGroup|))))))) 
+
+(MAKEPROP (QUOTE |AbelianSemiGroup|) (QUOTE NILADIC) T) 
+@
+\section{ABELSG-.lsp BOOTSTRAP}
+{\bf ABELSG-} needs
+{\bf SETCAT} which needs
+{\bf SINT} which needs 
+{\bf UFD} which needs
+{\bf GCDDOM} which needs
+{\bf COMRING} which needs
+{\bf RING} which needs
+{\bf RNG} which needs
+{\bf ABELGRP} which needs
+{\bf CABMON} which needs
+{\bf ABELMON} which needs
+{\bf ABELSG-}. 
+We break this chain with {\bf ABELSG-.lsp} which we
+cache here. We need to break this cycle to build
+the algebra. So we keep a cached copy of the translated {\bf ABELSG-}
+category which we can write into the {\bf MID} directory. We compile 
+the lisp code and copy the {\bf ABELSG-.o} file to the {\bf OUT} directory.
+This is eventually forcibly replaced by a recompiled version.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<ABELSG-.lsp BOOTSTRAP>>=
+
+(|/VERSIONCHECK| 2) 
+
+(DEFUN |ABELSG-;*;Pi2S;1| (|n| |x| |$|) (SPADCALL |n| |x| (QREFELT |$| 9))) 
+
+(DEFUN |AbelianSemiGroup&| (|#1|) 
+  (PROG (|DV$1| |dv$| |$| |pv$|) 
+    (RETURN 
+      (PROGN 
+        (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianSemiGroup&|))
+        (LETT |dv$| (LIST (QUOTE |AbelianSemiGroup&|) |DV$1|) . #1#)
+        (LETT |$| (GETREFV 11) . #1#)
+        (QSETREFV |$| 0 |dv$|)
+        (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+        (|stuffDomainSlots| |$|)
+        (QSETREFV |$| 6 |#1|)
+        (COND 
+          ((|HasCategory| |#1| (QUOTE (|Ring|))))
+          ((QUOTE T) 
+            (QSETREFV |$| 10 
+              (CONS (|dispatchFunction| |ABELSG-;*;Pi2S;1|) |$|))))
+        |$|)))) 
+
+(MAKEPROP 
+  (QUOTE |AbelianSemiGroup&|)
+  (QUOTE |infovec|)
+  (LIST 
+    (QUOTE 
+      #(NIL NIL NIL NIL NIL NIL
+        (|local| |#1|)
+        (|PositiveInteger|)
+        (|RepeatedDoubling| 6)
+        (0 . |double|)
+        (6 . |*|)))
+    (QUOTE #(|*| 12))
+    (QUOTE NIL)
+    (CONS
+      (|makeByteWordVec2| 1 (QUOTE NIL))
+      (CONS 
+        (QUOTE #()) 
+        (CONS 
+          (QUOTE #())
+          (|makeByteWordVec2| 10 
+            (QUOTE (2 8 6 7 6 9 2 0 0 7 0 10 2 0 0 7 0 10))))))
+    (QUOTE |lookupComplete|))) 
+@
 \section{ALAGG.lsp BOOTSTRAP}
 {\bf ALAGG} depends on a chain of files. We need to break this cycle to build
 the algebra. So we keep a cached copy of the translated {\bf ALAGG}
@@ -10747,6 +11106,132 @@ Note that this code is not included in the generated catdef.spad file.
        0 0 7 0 14 2 0 0 0 7 13 2 0 0 0 0 10 2 0 0 0 7 15))))))
   (QUOTE |lookupComplete|))) 
 @
+\section{SETCAT.lsp BOOTSTRAP}
+{\bf SETCAT} needs 
+{\bf SINT} which needs 
+{\bf UFD} which needs
+{\bf GCDDOM} which needs
+{\bf COMRING} which needs
+{\bf RING} which needs
+{\bf RNG} which needs
+{\bf ABELGRP} which needs
+{\bf CABMON} which needs
+{\bf ABELMON} which needs
+{\bf ABELSG} which needs
+{\bf SETCAT}. We break this chain with {\bf SETCAT.lsp} which we
+cache here. We need to break this cycle to build
+the algebra. So we keep a cached copy of the translated {\bf SETCAT}
+category which we can write into the {\bf MID} directory. We compile 
+the lisp code and copy the {\bf SETCAT.o} file to the {\bf OUT} directory.
+This is eventually forcibly replaced by a recompiled version.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<SETCAT.lsp BOOTSTRAP>>=
+
+(|/VERSIONCHECK| 2) 
+
+(SETQ |SetCategory;AL| (QUOTE NIL)) 
+
+(DEFUN |SetCategory| NIL 
+  (LET (#:G82359) 
+    (COND 
+      (|SetCategory;AL|) 
+      (T (SETQ |SetCategory;AL| (|SetCategory;|)))))) 
+
+(DEFUN |SetCategory;| NIL 
+  (PROG (#1=#:G82357) 
+    (RETURN 
+      (PROG1 
+        (LETT #1# 
+          (|sublisV| 
+            (PAIR 
+              (QUOTE (#2=#:G82356))
+              (LIST (QUOTE (|OutputForm|))))
+            (|Join| 
+              (|BasicType|)
+              (|CoercibleTo| (QUOTE #2#))
+              (|mkCategory| 
+                (QUOTE |domain|)
+                (QUOTE (
+                  ((|hash| ((|SingleInteger|) |$|)) T)
+                  ((|latex| ((|String|) |$|)) T)))
+                NIL
+                (QUOTE ((|String|) (|SingleInteger|)))
+                NIL)))
+          |SetCategory|)
+        (SETELT #1# 0 (QUOTE (|SetCategory|))))))) 
+
+(MAKEPROP (QUOTE |SetCategory|) (QUOTE NILADIC) T) 
+
+@
+\section{SETCAT-.lsp BOOTSTRAP}
+{\bf SETCAT-} is the implementation of the operations exported
+by {\bf SETCAT}. It comes into existance whenever {\bf SETCAT}
+gets compiled by Axiom. However this will not happen at the
+lisp level so we also cache this information here. See the
+explanation under the {\bf SETCAT.lsp} section for more details.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<SETCAT-.lsp BOOTSTRAP>>=
+
+(|/VERSIONCHECK| 2) 
+
+(PUT 
+  (QUOTE |SETCAT-;hash;SSi;1|)
+  (QUOTE |SPADreplace|)
+  (QUOTE (XLAM (|s|) 0))) 
+
+(DEFUN |SETCAT-;hash;SSi;1| (|s| |$|) 0) 
+
+(PUT 
+  (QUOTE |SETCAT-;latex;SS;2|)
+  (QUOTE |SPADreplace|)
+  (QUOTE (XLAM (|s|) "\\mbox{\\bf Unimplemented}"))) 
+
+(DEFUN |SETCAT-;latex;SS;2| (|s| |$|) 
+  "\\mbox{\\bf Unimplemented}") 
+
+(DEFUN |SetCategory&| (|#1|) 
+ (PROG (|DV$1| |dv$| |$| |pv$|)
+   (RETURN 
+     (PROGN 
+       (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetCategory&|))
+       (LETT |dv$| (LIST (QUOTE |SetCategory&|) |DV$1|) . #1#)
+       (LETT |$| (GETREFV 11) . #1#)
+       (QSETREFV |$| 0 |dv$|)
+       (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+       (|stuffDomainSlots| |$|)
+       (QSETREFV |$| 6 |#1|)
+       |$|)))) 
+
+(MAKEPROP
+  (QUOTE |SetCategory&|)
+  (QUOTE |infovec|)
+  (LIST 
+    (QUOTE
+      #(NIL NIL NIL NIL NIL NIL 
+        (|local| |#1|)
+        (|SingleInteger|)
+        |SETCAT-;hash;SSi;1| 
+        (|String|)
+        |SETCAT-;latex;SS;2|))
+    (QUOTE 
+      #(|latex| 0 |hash| 5))
+    (QUOTE NIL) 
+    (CONS 
+      (|makeByteWordVec2| 1 (QUOTE NIL))
+      (CONS 
+        (QUOTE #())
+        (CONS 
+          (QUOTE #())
+          (|makeByteWordVec2| 
+            10 
+            (QUOTE (1 0 9 0 10 1 0 7 0 8))))))
+    (QUOTE |lookupComplete|))) 
+
+@
 \section{STAGG.lsp BOOTSTRAP}
 {\bf STAGG} depends on a chain of files. We need to break this cycle to build
 the algebra. So we keep a cached copy of the translated {\bf STAGG}
@@ -11895,9 +12380,11 @@ Note that this code is not included in the generated catdef.spad file.
 @
 \chapter{Chunk collections}
 <<algebra>>=
+<<category ABELSG AbelianSemiGroup>>
 <<category AGG Aggregate>>
 <<category ALAGG AssociationListAggregate>>
 <<category A1AGG OneDimensionalArrayAggregate>>
+<<category BASTYPE BasicType>>
 <<category BGAGG BagAggregate>>
 <<category BRAGG BinaryRecursiveAggregate>>
 <<category BTAGG BitAggregate>>
@@ -11926,6 +12413,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<category RCAGG RecursiveAggregate>>
 <<category RETRACT RetractableTo>>
 <<category SETAGG SetAggregate>>
+<<category SETCAT SetCategory>>
 <<category SKAGG StackAggregate>>
 <<category SRAGG StringAggregate>>
 <<category STAGG StreamAggregate>>
@@ -11939,11 +12427,14 @@ digraph dotabb {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"CATEGORY" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"CATEGORY"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"];
 
+<<ABELSG.dotabb>>
 <<AGG.dotabb>>
 <<ALAGG.dotabb>>
 <<A1AGG.dotabb>>
+<<BASTYPE.dotabb>>
 <<BGAGG.dotabb>>
 <<BRAGG.dotabb>>
 <<BTAGG.dotabb>>
@@ -11972,6 +12463,7 @@ digraph dotabb {
 <<RCAGG.dotabb>>
 <<RETRACT.dotabb>>
 <<SETAGG.dotabb>>
+<<SETCAT.dotabb>>
 <<SKAGG.dotabb>>
 <<SRAGG.dotabb>>
 <<STAGG.dotabb>>
@@ -11988,11 +12480,14 @@ digraph dotfull {
  bgcolor="#FFFF66";
  node [shape=box, color=white, style=filled];
 
-"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"];
+"Category"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"];
 
+<<ABELSG.dotfull>>
 <<AGG.dotfull>>
 <<ALAGG.dotfull>>
 <<A1AGG.dotfull>>
+<<BASTYPE.dotfull>>
 <<BGAGG.dotfull>>
 <<BRAGG.dotfull>>
 <<BTAGG.dotfull>>
@@ -12021,6 +12516,7 @@ digraph dotfull {
 <<RCAGG.dotfull>>
 <<RETRACT.dotfull>>
 <<SETAGG.dotfull>>
+<<SETCAT.dotfull>>
 <<SKAGG.dotfull>>
 <<SRAGG.dotfull>>
 <<STAGG.dotfull>>
diff --git a/books/ps/v102abeliansemigroup.ps b/books/ps/v102abeliansemigroup.ps
new file mode 100644
index 0000000..c21f701
--- /dev/null
+++ b/books/ps/v102abeliansemigroup.ps
@@ -0,0 +1,677 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 530 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 530 368
+%%PageOrientation: Portrait
+gsave
+36 36 494 332 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+492 330 lineto
+492 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+492 330 lineto
+492 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% AbelianSemiGroup()
+[ /Rect [ 195 288 329 324 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 329 324 moveto
+195 324 lineto
+195 288 lineto
+329 288 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 329 324 moveto
+195 324 lineto
+195 288 lineto
+329 288 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+202 301 moveto
+(AbelianSemiGroup\(\))
+[9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()
+[ /Rect [ 117 216 211 252 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 211 252 moveto
+117 252 lineto
+117 216 lineto
+211 216 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 211 252 moveto
+117 252 lineto
+117 216 lineto
+211 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+124 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% AbelianSemiGroup()->SetCategory()
+newpath 237 288 moveto
+225 279 210 268 196 258 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 198 255 moveto
+188 252 lineto
+194 261 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 198 255 moveto
+188 252 lineto
+194 261 lineto
+closepath
+stroke
+end grestore
+% RepeatedDoubling(S:AbelianSemiGroup)
+[ /Rect [ 236 216 486 252 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 486 252 moveto
+236 252 lineto
+236 216 lineto
+486 216 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 486 252 moveto
+236 252 lineto
+236 216 lineto
+486 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+244 229 moveto
+(RepeatedDoubling\(S:AbelianSemiGroup\))
+[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 7.68 3.84 9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56]
+xshow
+end grestore
+end grestore
+% AbelianSemiGroup()->RepeatedDoubling(S:AbelianSemiGroup)
+newpath 287 288 moveto
+299 279 314 268 328 258 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 330 261 moveto
+336 252 lineto
+326 255 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 330 261 moveto
+336 252 lineto
+326 255 lineto
+closepath
+stroke
+end grestore
+% BasicType()
+[ /Rect [ 0 72 84 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 121 216 moveto
+104 207 86 195 73 180 curveto
+59 162 51 137 47 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 50 117 moveto
+45 108 lineto
+44 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 50 117 moveto
+45 108 lineto
+44 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+[ /Rect [ 82 144 246 180 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+90 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 164 216 moveto
+164 208 164 199 164 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 168 190 moveto
+164 180 lineto
+161 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 168 190 moveto
+164 180 lineto
+161 190 lineto
+closepath
+stroke
+end grestore
+% RepeatedDoubling(S:SetCategory)
+[ /Rect [ 264 144 474 180 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 474 180 moveto
+264 180 lineto
+264 144 lineto
+474 144 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 474 180 moveto
+264 180 lineto
+264 144 lineto
+474 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+271 157 moveto
+(RepeatedDoubling\(S:SetCategory\))
+[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 7.68 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56]
+xshow
+end grestore
+end grestore
+% RepeatedDoubling(S:AbelianSemiGroup)->RepeatedDoubling(S:SetCategory)
+newpath 363 216 moveto
+364 208 365 199 366 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 369 190 moveto
+367 180 lineto
+363 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 369 190 moveto
+367 180 lineto
+363 190 lineto
+closepath
+stroke
+end grestore
+% Category
+[ /Rect [ 71 0 139 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+79 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 58 72 moveto
+66 63 75 53 82 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+[ /Rect [ 102 72 234 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+110 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 165 144 moveto
+166 136 166 127 166 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 152 72 moveto
+144 63 135 53 128 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+stroke
+end grestore
+% Package
+[ /Rect [ 338 72 400 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 400 108 moveto
+338 108 lineto
+338 72 lineto
+400 72 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 400 108 moveto
+338 108 lineto
+338 72 lineto
+400 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+345 85 moveto
+(Package)
+[7.44 6.24 6 6.96 6.24 6.72 6.24]
+xshow
+end grestore
+end grestore
+% RepeatedDoubling(S:SetCategory)->Package
+newpath 369 144 moveto
+369 136 369 127 369 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 373 118 moveto
+369 108 lineto
+366 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 373 118 moveto
+369 108 lineto
+366 118 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v102basictype.ps b/books/ps/v102basictype.ps
new file mode 100644
index 0000000..87d2ee1
--- /dev/null
+++ b/books/ps/v102basictype.ps
@@ -0,0 +1,299 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 128 152
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 128 152
+%%PageOrientation: Portrait
+gsave
+36 36 92 116 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 114 lineto
+90 114 lineto
+90 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 114 lineto
+90 114 lineto
+90 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% BasicType()
+[ /Rect [ 0 72 84 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% Category
+[ /Rect [ 8 0 76 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 76 36 moveto
+8 36 lineto
+8 0 lineto
+76 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 76 36 moveto
+8 36 lineto
+8 0 lineto
+76 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+16 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 42 72 moveto
+42 64 42 55 42 46 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 46 46 moveto
+42 36 lineto
+39 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 46 46 moveto
+42 36 lineto
+39 46 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v102setcategory.ps b/books/ps/v102setcategory.ps
new file mode 100644
index 0000000..ba73fd5
--- /dev/null
+++ b/books/ps/v102setcategory.ps
@@ -0,0 +1,473 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 290 296
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 290 296
+%%PageOrientation: Portrait
+gsave
+36 36 254 260 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 258 lineto
+252 258 lineto
+252 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 258 lineto
+252 258 lineto
+252 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% SetCategory()
+[ /Rect [ 58 216 152 252 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+65 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% BasicType()
+[ /Rect [ 0 72 84 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 93 216 moveto
+86 206 78 192 73 180 curveto
+64 160 55 136 50 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+[ /Rect [ 82 144 246 180 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+90 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 120 216 moveto
+127 207 135 197 143 188 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+stroke
+end grestore
+% Category
+[ /Rect [ 71 0 139 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+79 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 58 72 moveto
+66 63 75 53 82 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+[ /Rect [ 102 72 234 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+110 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 165 144 moveto
+166 136 166 127 166 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 152 72 moveto
+144 63 135 53 128 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index c184379..74e0af1 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+20080917 tpd src/algebra/catdef.spad remove BASTYPE, SETCAT, ABELSG
+20080917 tpd books/ps/v102abeliansemigroup.ps ABELSG graph
+20080917 tpd books/ps/v102setcategory.ps SETCAT graph
+20080917 tpd books/ps/v102basictype.ps BASTYPE graph
+20080917 tpd books/bookvol10.2 add pdf destinations
+20080917 tpd books/bookvol10.2 add BASTYPE, SETCAT, ABELSG	
 20080917 wsp src/algebra/mkfunc.spad add parse to InputForm
 20080917 tpd books/bookvol10.2 remove duplicate function def in FLAGG	
 20080916 tpd books/ps/v102streamaggregate.ps
diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet
index b16f4b2..bd42900 100644
--- a/src/algebra/catdef.spad.pamphlet
+++ b/src/algebra/catdef.spad.pamphlet
@@ -374,168 +374,11 @@ Note that this code is not included in the generated catdef.spad file.
    (QUOTE |lookupComplete|))) 
 
 @
-\section{category ABELSG AbelianSemiGroup}
-<<dot>>=
-"ABELSG" -> "SETCAT"
-"AbelianSemiGroup()" -> "SetCategory()"
-@
-<<category ABELSG AbelianSemiGroup>>=
-)abbrev category ABELSG AbelianSemiGroup
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ the class of all additive (commutative) semigroups, i.e.
-++ a set with a commutative and associative operation \spadop{+}.
-++
-++ Axioms:
-++   \spad{associative("+":(%,%)->%)}\tab{30}\spad{ (x+y)+z = x+(y+z) }
-++   \spad{commutative("+":(%,%)->%)}\tab{30}\spad{ x+y = y+x }
-AbelianSemiGroup(): Category == SetCategory with
-    --operations
-      "+": (%,%) -> %                  ++ x+y computes the sum of x and y.
-      "*": (PositiveInteger,%) -> %
-        ++ n*x computes the left-multiplication of x by the positive integer n.
-        ++ This is equivalent to adding x to itself n times.
-    add
-      import RepeatedDoubling(%)
-      if not (% has Ring) then
-        n:PositiveInteger * x:% == double(n,x)
-
-@
-\section{ABELSG.lsp BOOTSTRAP}
-{\bf ABELSG} needs
-{\bf SETCAT} which needs
-{\bf SINT} which needs 
-{\bf UFD} which needs
-{\bf GCDDOM} which needs
-{\bf COMRING} which needs
-{\bf RING} which needs
-{\bf RNG} which needs
-{\bf ABELGRP} which needs
-{\bf CABMON} which needs
-{\bf ABELMON} which needs
-{\bf ABELSG}. 
-We break this chain with {\bf ABELSG.lsp} which we
-cache here. We need to break this cycle to build
-the algebra. So we keep a cached copy of the translated {\bf ABELSG}
-category which we can write into the {\bf MID} directory. We compile 
-the lisp code and copy the {\bf ABELSG.o} file to the {\bf OUT} directory.
-This is eventually forcibly replaced by a recompiled version.
-
-Note that this code is not included in the generated catdef.spad file.
-
-<<ABELSG.lsp BOOTSTRAP>>=
-
-(|/VERSIONCHECK| 2) 
-
-(SETQ |AbelianSemiGroup;AL| (QUOTE NIL)) 
-
-(DEFUN |AbelianSemiGroup| NIL 
-  (LET (#:G82568) 
-    (COND 
-      (|AbelianSemiGroup;AL|)
-      (T (SETQ |AbelianSemiGroup;AL| (|AbelianSemiGroup;|)))))) 
-
-(DEFUN |AbelianSemiGroup;| NIL 
-  (PROG (#1=#:G82566) 
-    (RETURN 
-      (PROG1 
-        (LETT #1# 
-          (|Join| 
-            (|SetCategory|)
-            (|mkCategory| 
-              (QUOTE |domain|)
-              (QUOTE (
-                ((|+| (|$| |$| |$|)) T)
-                ((|*| (|$| (|PositiveInteger|) |$|)) T)))
-              NIL
-              (QUOTE ((|PositiveInteger|)))
-              NIL))
-            |AbelianSemiGroup|)
-        (SETELT #1# 0 (QUOTE (|AbelianSemiGroup|))))))) 
-
-(MAKEPROP (QUOTE |AbelianSemiGroup|) (QUOTE NILADIC) T) 
-@
-\section{ABELSG-.lsp BOOTSTRAP}
-{\bf ABELSG-} needs
-{\bf SETCAT} which needs
-{\bf SINT} which needs 
-{\bf UFD} which needs
-{\bf GCDDOM} which needs
-{\bf COMRING} which needs
-{\bf RING} which needs
-{\bf RNG} which needs
-{\bf ABELGRP} which needs
-{\bf CABMON} which needs
-{\bf ABELMON} which needs
-{\bf ABELSG-}. 
-We break this chain with {\bf ABELSG-.lsp} which we
-cache here. We need to break this cycle to build
-the algebra. So we keep a cached copy of the translated {\bf ABELSG-}
-category which we can write into the {\bf MID} directory. We compile 
-the lisp code and copy the {\bf ABELSG-.o} file to the {\bf OUT} directory.
-This is eventually forcibly replaced by a recompiled version.
-
-Note that this code is not included in the generated catdef.spad file.
-
-<<ABELSG-.lsp BOOTSTRAP>>=
-
-(|/VERSIONCHECK| 2) 
-
-(DEFUN |ABELSG-;*;Pi2S;1| (|n| |x| |$|) (SPADCALL |n| |x| (QREFELT |$| 9))) 
-
-(DEFUN |AbelianSemiGroup&| (|#1|) 
-  (PROG (|DV$1| |dv$| |$| |pv$|) 
-    (RETURN 
-      (PROGN 
-        (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianSemiGroup&|))
-        (LETT |dv$| (LIST (QUOTE |AbelianSemiGroup&|) |DV$1|) . #1#)
-        (LETT |$| (GETREFV 11) . #1#)
-        (QSETREFV |$| 0 |dv$|)
-        (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
-        (|stuffDomainSlots| |$|)
-        (QSETREFV |$| 6 |#1|)
-        (COND 
-          ((|HasCategory| |#1| (QUOTE (|Ring|))))
-          ((QUOTE T) 
-            (QSETREFV |$| 10 
-              (CONS (|dispatchFunction| |ABELSG-;*;Pi2S;1|) |$|))))
-        |$|)))) 
-
-(MAKEPROP 
-  (QUOTE |AbelianSemiGroup&|)
-  (QUOTE |infovec|)
-  (LIST 
-    (QUOTE 
-      #(NIL NIL NIL NIL NIL NIL
-        (|local| |#1|)
-        (|PositiveInteger|)
-        (|RepeatedDoubling| 6)
-        (0 . |double|)
-        (6 . |*|)))
-    (QUOTE #(|*| 12))
-    (QUOTE NIL)
-    (CONS
-      (|makeByteWordVec2| 1 (QUOTE NIL))
-      (CONS 
-        (QUOTE #()) 
-        (CONS 
-          (QUOTE #())
-          (|makeByteWordVec2| 10 
-            (QUOTE (2 8 6 7 6 9 2 0 0 7 0 10 2 0 0 7 0 10))))))
-    (QUOTE |lookupComplete|))) 
-@
 \section{category ALGEBRA Algebra}
 <<dot>>=
 "ALGEBRA" -> "RING"
 "Algebra(a:CommutativeRing)" -> "Ring()"
+"Algebra(a:Field)" -> "Algebra(a:CommutativeRing)"
 "ALGEBRA" -> "MODULE"
 "Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)"
 "Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)"
@@ -569,33 +412,6 @@ Algebra(R:CommutativeRing): Category ==
   coerce(x:R):% == x * 1$%
 
 @
-\section{category BASTYPE BasicType}
-<<dot>>=
-"BASTYPE" -> "CATEGORY"
-"BasicType()" -> "Category"
-@
-<<category BASTYPE BasicType>>=
-)abbrev category BASTYPE BasicType
---% BasicType
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ \spadtype{BasicType} is the basic category for describing a collection
-++ of elements with \spadop{=} (equality).
-BasicType(): Category == with
-      "=": (%,%) -> Boolean    ++ x=y tests if x and y are equal.
-      "~=": (%,%) -> Boolean   ++ x~=y tests if x and y are not equal.
-   add
-      _~_=(x:%,y:%) : Boolean == not(x=y)
-
-@
 \section{category BMODULE BiModule}
 <<dot>>=
 "BMODULE" -> "LMODULE"
@@ -2987,6 +2803,8 @@ LeftModule(R:Rng):Category == AbelianGroup with
 "LINEXP" -> "RING"
 "LinearlyExplicitRingOver(a:Ring)" -> "Ring()"
 "LinearlyExplicitRingOver(Integer)" -> "LinearlyExplicitRingOver(a:Ring)"
+"LinearlyExplicitRingOver(Fraction(Integer))" -> 
+    "LinearlyExplicitRingOver(a:Ring)"
 @
 <<category LINEXP LinearlyExplicitRingOver>>=
 )abbrev category LINEXP LinearlyExplicitRingOver
@@ -4184,167 +4002,6 @@ SemiGroup(): Category == SetCategory with
       _^(x:%, n:PositiveInteger):% == x ** n
 
 @
-\section{category SETCAT SetCategory}
-<<dot>>=
-"SETCAT" -> "BASTYPE"
-"SetCategory()" -> "BasicType()"
-"SETCAT" -> "KOERCE"
-"SetCategory()" -> "CoercibleTo(OutputForm)"
-@
-<<category SETCAT SetCategory>>=
-)abbrev category SETCAT SetCategory
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++   09/09/92   RSS   added latex and hash
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ \spadtype{SetCategory} is the basic category for describing a collection
-++ of elements with \spadop{=} (equality) and \spadfun{coerce} to output form.
-++
-++ Conditional Attributes:
-++    canonical\tab{15}data structure equality is the same as \spadop{=}
-SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with
-    --operations
-      hash: % -> SingleInteger  ++ hash(s) calculates a hash code for s.
-      latex: % -> String       ++ latex(s) returns a LaTeX-printable output
-                               ++ representation of s.
-  add
-      hash(s : %):  SingleInteger == 0$SingleInteger
-      latex(s : %): String       == "\mbox{\bf Unimplemented}"
-
-@
-\section{SETCAT.lsp BOOTSTRAP}
-{\bf SETCAT} needs 
-{\bf SINT} which needs 
-{\bf UFD} which needs
-{\bf GCDDOM} which needs
-{\bf COMRING} which needs
-{\bf RING} which needs
-{\bf RNG} which needs
-{\bf ABELGRP} which needs
-{\bf CABMON} which needs
-{\bf ABELMON} which needs
-{\bf ABELSG} which needs
-{\bf SETCAT}. We break this chain with {\bf SETCAT.lsp} which we
-cache here. We need to break this cycle to build
-the algebra. So we keep a cached copy of the translated {\bf SETCAT}
-category which we can write into the {\bf MID} directory. We compile 
-the lisp code and copy the {\bf SETCAT.o} file to the {\bf OUT} directory.
-This is eventually forcibly replaced by a recompiled version.
-
-Note that this code is not included in the generated catdef.spad file.
-
-<<SETCAT.lsp BOOTSTRAP>>=
-
-(|/VERSIONCHECK| 2) 
-
-(SETQ |SetCategory;AL| (QUOTE NIL)) 
-
-(DEFUN |SetCategory| NIL 
-  (LET (#:G82359) 
-    (COND 
-      (|SetCategory;AL|) 
-      (T (SETQ |SetCategory;AL| (|SetCategory;|)))))) 
-
-(DEFUN |SetCategory;| NIL 
-  (PROG (#1=#:G82357) 
-    (RETURN 
-      (PROG1 
-        (LETT #1# 
-          (|sublisV| 
-            (PAIR 
-              (QUOTE (#2=#:G82356))
-              (LIST (QUOTE (|OutputForm|))))
-            (|Join| 
-              (|BasicType|)
-              (|CoercibleTo| (QUOTE #2#))
-              (|mkCategory| 
-                (QUOTE |domain|)
-                (QUOTE (
-                  ((|hash| ((|SingleInteger|) |$|)) T)
-                  ((|latex| ((|String|) |$|)) T)))
-                NIL
-                (QUOTE ((|String|) (|SingleInteger|)))
-                NIL)))
-          |SetCategory|)
-        (SETELT #1# 0 (QUOTE (|SetCategory|))))))) 
-
-(MAKEPROP (QUOTE |SetCategory|) (QUOTE NILADIC) T) 
-
-@
-\section{SETCAT-.lsp BOOTSTRAP}
-{\bf SETCAT-} is the implementation of the operations exported
-by {\bf SETCAT}. It comes into existance whenever {\bf SETCAT}
-gets compiled by Axiom. However this will not happen at the
-lisp level so we also cache this information here. See the
-explanation under the {\bf SETCAT.lsp} section for more details.
-
-Note that this code is not included in the generated catdef.spad file.
-
-<<SETCAT-.lsp BOOTSTRAP>>=
-
-(|/VERSIONCHECK| 2) 
-
-(PUT 
-  (QUOTE |SETCAT-;hash;SSi;1|)
-  (QUOTE |SPADreplace|)
-  (QUOTE (XLAM (|s|) 0))) 
-
-(DEFUN |SETCAT-;hash;SSi;1| (|s| |$|) 0) 
-
-(PUT 
-  (QUOTE |SETCAT-;latex;SS;2|)
-  (QUOTE |SPADreplace|)
-  (QUOTE (XLAM (|s|) "\\mbox{\\bf Unimplemented}"))) 
-
-(DEFUN |SETCAT-;latex;SS;2| (|s| |$|) 
-  "\\mbox{\\bf Unimplemented}") 
-
-(DEFUN |SetCategory&| (|#1|) 
- (PROG (|DV$1| |dv$| |$| |pv$|)
-   (RETURN 
-     (PROGN 
-       (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetCategory&|))
-       (LETT |dv$| (LIST (QUOTE |SetCategory&|) |DV$1|) . #1#)
-       (LETT |$| (GETREFV 11) . #1#)
-       (QSETREFV |$| 0 |dv$|)
-       (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
-       (|stuffDomainSlots| |$|)
-       (QSETREFV |$| 6 |#1|)
-       |$|)))) 
-
-(MAKEPROP
-  (QUOTE |SetCategory&|)
-  (QUOTE |infovec|)
-  (LIST 
-    (QUOTE
-      #(NIL NIL NIL NIL NIL NIL 
-        (|local| |#1|)
-        (|SingleInteger|)
-        |SETCAT-;hash;SSi;1| 
-        (|String|)
-        |SETCAT-;latex;SS;2|))
-    (QUOTE 
-      #(|latex| 0 |hash| 5))
-    (QUOTE NIL) 
-    (CONS 
-      (|makeByteWordVec2| 1 (QUOTE NIL))
-      (CONS 
-        (QUOTE #())
-        (CONS 
-          (QUOTE #())
-          (|makeByteWordVec2| 
-            10 
-            (QUOTE (1 0 9 0 10 1 0 7 0 8))))))
-    (QUOTE |lookupComplete|))) 
-
-@
 \section{category STEP StepThrough}
 <<dot>>=
 "STEP" -> "SETCAT"
@@ -4664,13 +4321,10 @@ VectorSpace(S:Field): Category ==  Module(S) with
 <<*>>=
 <<license>>
 
-<<category BASTYPE BasicType>>
-<<category SETCAT SetCategory>>
 <<category STEP StepThrough>>
 <<category SGROUP SemiGroup>>
 <<category MONOID Monoid>>
 <<category GROUP Group>>
-<<category ABELSG AbelianSemiGroup>>
 <<category ABELMON AbelianMonoid>>
 <<category CABMON CancellationAbelianMonoid>>
 <<category ABELGRP AbelianGroup>>



From MAILER-DAEMON Thu Sep 18 17:10:27 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgQlf-0003fH-5u
	for mharc-axiom-developer@gnu.org; Thu, 18 Sep 2008 17:10:27 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgQld-0003f5-8U
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 17:10:25 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgQlb-0003ek-L6
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 17:10:24 -0400
Received: from [199.232.76.173] (port=56267 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgQlb-0003eh-Gu
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 17:10:23 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:59511
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KgQla-0001iC-RS
	for axiom-developer@nongnu.org; Thu, 18 Sep 2008 17:10:23 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=9x1qJYSYWOoMgoVr+WVG7Q==:17 a=-dqM1Y88AAAA:8
	a=xISmL4L4AAAA:8 a=3YT7c7PGAAAA:8 a=ocjqINiyD8kPfRtSvWEA:9
	a=GLmlPk6Nu6yiollq1BfmUpMGzEoA:4 a=NWVoK91CQyQA:10
	a=y2_PF03JgXQA:10 a=mE_Hua_5vXkA:10 a=Jq1Ux-uvPpwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.46] ([24.154.1.46:56067] helo=pop-3.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id EB/51-28080-EA3C2D84; Thu, 18 Sep 2008 17:10:07 -0400
Received: (qmail 31290 invoked from network); 18 Sep 2008 21:10:02 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-3.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 18 Sep 2008 21:10:02 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8IKfAQ02272;
	Thu, 18 Sep 2008 16:41:10 -0400
Date: Thu, 18 Sep 2008 16:41:10 -0400
Message-Id: <200809182041.m8IKfAQ02272@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: 
Subject: [Axiom-developer] Lisp50@OOPSLA
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, 18 Sep 2008 21:10:25 -0000


Lisp50@OOPSLA
...celebrating the 50th birthday of Lisp at OOPSLA 2008

Monday, October 20, 2008
Nashville, Tennessee, USA
co-located with OOPSLA 2008
participation is free for all OOPSLA participants
registration for at least one conference day at OOPSLA is required

URL: http:www.lisp50.org
Feed: http://lisp50.blogspot.com


Invited Speakers

+ William Clinger, Northeastern University, USA
+ Pascal Costanza, Vrije Universiteit Brussel, Belgium
+ Richard Gabriel, IBM Research, USA
+ Rich Hickey, Independent Consultant, USA
+ Alan Kay, Viewpoints Research Institute, USA
+ Fritz Kunze, USA
+ Ora Lassila, Nokia Research Center, USA
+ John McCarthy, USA
+ Kent Pitman, PTC, USA
+ Guy Steele, Sun Microsystems Laboratories, USA
+ Herbert Stoyan, University of Erlangen, Germany
+ Warren Teitelman, Google Inc., USA
+ JonL White, USA

Titles, abstracts, biographies and schedule will be announced at the
Lisp50 webpage and blog in the coming days and weeks.


Abstract

In October 1958, John McCarthy published one in a series of reports
about his then ongoing effort for designing a new programming language
that would be especially suited for achieving artificial intelligence.
That report was the first one to use the name LISP for this new
programming language. 50 years later, Lisp is still in use. This year we
are celebrating Lisp's 50th birthday. OOPSLA 2008 is an excellent venue
for such a celebration, because object-oriented programming benefited
heavily from Lisp ideas and because OOPSLA 2008 takes place in October,
exactly 50 years after the name Lisp has been used publicly for the
first time. We will have talks by John McCarthy himself, and numerous
other influential Lispers from the past five decades. We will also take
a look at the next 50 years of Lisp.


Organizers

+ Pascal Costanza, Vrije Universiteit Brussel, Belgium
+ Richard Gabriel, IBM Research, Hawthorne, NY, USA
+ Robert Hirschfeld, Hasso-Plattner-Institut, Potsdam, Germany
+ Guy Steele, Sun Microsystems Laboratories, Burlington, MA, USA

Sponsored by ACM SIGPLAN

Supported by
+ IBM Research
+ LispWorks Ltd
+ Franz Inc.
+ Clozure Associates

- -- 
Pascal Costanza, mailto:pc@p-cos.net, http://p-cos.net
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium




From MAILER-DAEMON Fri Sep 19 03:24:53 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KgaMH-0000S3-Hz
	for mharc-axiom-developer@gnu.org; Fri, 19 Sep 2008 03:24:53 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KgaMF-0000Rx-5Z
	for axiom-developer@nongnu.org; Fri, 19 Sep 2008 03:24:51 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KgaMB-0000Rb-6Q
	for axiom-developer@nongnu.org; Fri, 19 Sep 2008 03:24:50 -0400
Received: from [199.232.76.173] (port=49131 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KgaMB-0000RW-0N
	for axiom-developer@nongnu.org; Fri, 19 Sep 2008 03:24:47 -0400
Received: from mx20.gnu.org ([199.232.41.8]:26334)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <daly@axiom-developer.org>)
	id 1KgaM9-0001dJ-A0
	for axiom-developer@nongnu.org; Fri, 19 Sep 2008 03:24:46 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]
	helo=axiom-developer.org) by mx20.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KgaM7-0004PR-Vo
	for axiom-developer@nongnu.org; Fri, 19 Sep 2008 03:24:44 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8J7Oer3000987;
	Fri, 19 Sep 2008 02:24:40 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8J7Odhe000984;
	Fri, 19 Sep 2008 02:24:39 -0500
Date: Fri, 19 Sep 2008 02:24:39 -0500
Message-Id: <200809190724.m8J7Odhe000984@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by mx20.gnu.org: Linux 2.6? (barebone, rare!)
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
	seldom 2.4 (older, 4)
Cc: 
Subject: [Axiom-developer] 20080918.02.tpd.patch (bookvol10.2 add FINITE,
	ORDSET, SGROUP)
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, 19 Sep 2008 07:24:51 -0000

=================================================================
diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 87e140e..2e31015 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -391,7 +391,8 @@ CoercibleTo(S:Type): Category == with
 
 @
 <<KOERCE.dotabb>>=
-"KOERCE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
+"KOERCE"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
 "KOERCE" -> "CATEGORY"
 
 @
@@ -575,7 +576,8 @@ This is directly exported but not implemented:
 ++ An eltable over domains D and I is a structure which can be viewed
 ++ as a function from D to I.
 ++ Examples of eltable structures range from data structures, e.g. those
-++ of type \spadtype{List}, to algebraic structures like \spadtype{Polynomial}.
+++ of type \spadtype{List}, to algebraic structures like 
+++ \spadtype{Polynomial}.
 Eltable(S:SetCategory, Index:Type): Category == with
   elt : (%, S) -> Index
      ++ elt(u,i) (also written: u . i) returns the element of u indexed by i.
@@ -825,9 +827,11 @@ Aggregate: Category == Type with
      ++ more?(u,n) tests if u has greater than n elements.
    size?: (%,NonNegativeInteger) -> Boolean
      ++ size?(u,n) tests if u has exactly n elements.
-   sample: constant -> %    ++ sample yields a value of type %
+   sample: constant -> %
+     ++ sample yields a value of type %
    if % has finiteAggregate then
-     "#": % -> NonNegativeInteger     ++ # u returns the number of items in u.
+     "#": % -> NonNegativeInteger
+       ++ # u returns the number of items in u.
  add
   eq?(a,b) == EQ(a,b)$Lisp
   sample() == empty()
@@ -916,9 +920,9 @@ This export comes from Eltable:
 ++ References:
 ++ Description:
 ++ An eltable aggregate is one which can be viewed as a function.
-++ For example, the list \axiom{[1,7,4]} can applied to 0,1, and 2 respectively
-++ will return the integers 1,7, and 4; thus this list may be viewed
-++ as mapping 0 to 1, 1 to 7 and 2 to 4. In general, an aggregate
+++ For example, the list \axiom{[1,7,4]} can applied to 0,1, and 2 
+++ respectively will return the integers 1,7, and 4; thus this list may 
+++ be viewed as mapping 0 to 1, 1 to 7 and 2 to 4. In general, an aggregate
 ++ can map members of a domain {\em Dom} to an image domain {\em Im}.
 EltableAggregate(Dom:SetCategory, Im:Type): Category ==
 -- This is separated from Eltable
@@ -932,10 +936,10 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category ==
        ++ to the power n, returning 0 when n is out of range.
     qelt: (%, Dom) -> Im
        ++ qelt(u, x) applies \axiom{u} to \axiom{x} without checking whether
-       ++ \axiom{x} is in the domain of \axiom{u}.  If \axiom{x} is not in the
-       ++ domain of \axiom{u} a memory-access violation may occur.  If a check
-       ++ on whether \axiom{x} is in the domain of \axiom{u} is required, use
-       ++ the function \axiom{elt}.
+       ++ \axiom{x} is in the domain of \axiom{u}.  If \axiom{x} is not 
+       ++ in the domain of \axiom{u} a memory-access violation may occur. 
+       ++ If a check on whether \axiom{x} is in the domain of \axiom{u} 
+       ++ is required, use the function \axiom{elt}.
     if % has shallowlyMutable then
        setelt : (%, Dom, Im) -> Im
 	   ++ setelt(u,x,y) sets the image of x to be y under u,
@@ -943,9 +947,9 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category ==
 	   ++ Error: if x is not in the domain of u.
 	   -- this function will soon be renamed as setelt!.
        qsetelt_!: (%, Dom, Im) -> Im
-	   ++ qsetelt!(u,x,y) sets the image of \axiom{x} to be \axiom{y} under
-           ++ \axiom{u}, without checking that \axiom{x} is in the domain of
-           ++ \axiom{u}.
+	   ++ qsetelt!(u,x,y) sets the image of \axiom{x} to be \axiom{y} 
+           ++ under \axiom{u}, without checking that \axiom{x} is in 
+           ++ the domain of \axiom{u}.
            ++ If such a check is required use the function \axiom{setelt}.
  add
   qelt(a, x) == elt(a, x)
@@ -954,7 +958,8 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category ==
 
 @
 <<ELTAGG.dotabb>>=
-"ELTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
+"ELTAGG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
 "ELTAGG" -> "ELTAB"
 
 @
@@ -986,7 +991,10 @@ digraph pic {
 
 {\bf See:}\\
 \pageto{AbelianSemiGroup}{ABELSG}
+\pageto{Finite}{FINITE}
 \pageto{HomogeneousAggregate}{HOAGG}
+\pageto{OrderedSet}{ORDSET}
+\pageto{SemiGroup}{SGROUP}
 
 {\bf Exports:}\\
 \begin{tabular}{lllll}
@@ -1030,7 +1038,8 @@ These exports come from CoercibleTo(OutputForm):
 ++ References:
 ++ Description:
 ++ \spadtype{SetCategory} is the basic category for describing a collection
-++ of elements with \spadop{=} (equality) and \spadfun{coerce} to output form.
+++ of elements with \spadop{=} (equality) and \spadfun{coerce} to 
+++ output form.
 ++
 ++ Conditional Attributes:
 ++    canonical\tab{15}data structure equality is the same as \spadop{=}
@@ -1045,7 +1054,8 @@ SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with
 
 @
 <<SETCAT.dotabb>>=
-"SETCAT" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
+"SETCAT"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
 "SETCAT" -> "BASTYPE"
 "SETCAT" -> "KOERCE"
 
@@ -1143,8 +1153,8 @@ AbelianSemiGroup(): Category == SetCategory with
     --operations
       "+": (%,%) -> %                  ++ x+y computes the sum of x and y.
       "*": (PositiveInteger,%) -> %
-        ++ n*x computes the left-multiplication of x by the positive integer n.
-        ++ This is equivalent to adding x to itself n times.
+        ++ n*x computes the left-multiplication of x by the positive 
+        ++ integer n. This is equivalent to adding x to itself n times.
     add
       import RepeatedDoubling(%)
       if not (% has Ring) then
@@ -1152,7 +1162,8 @@ AbelianSemiGroup(): Category == SetCategory with
 
 @
 <<ABELSG.dotabb>>=
-"ABELSG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
+"ABELSG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
 "ABELSG" -> "SETCAT"
 "ABELSG" -> "REPDB"
 
@@ -1161,7 +1172,7 @@ AbelianSemiGroup(): Category == SetCategory with
 "AbelianSemiGroup()"
  [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
 "AbelianSemiGroup()" -> "SetCategory()"
-"AbelianSemiGroup()" -> "RepeatedDoubling(S:SetCategory)"
+"AbelianSemiGroup()" -> "RepeatedDoubling(SetCategory)"
 
 <<ABELSG.dotpic>>=
 digraph pic {
@@ -1171,7 +1182,7 @@ digraph pic {
 
 "AbelianSemiGroup()" [color=lightblue];
 "AbelianSemiGroup()" -> "SetCategory()"
-"AbelianSemiGroup()" -> "RepeatedDoubling(S:AbelianSemiGroup)"
+"AbelianSemiGroup()" -> "RepeatedDoubling(AbelianSemiGroup)"
 
 "SetCategory()" [color=lightblue];
 "SetCategory()" -> "BasicType()"
@@ -1187,11 +1198,11 @@ digraph pic {
 "CoercibleTo(a:Type)" [color=lightblue];
 "CoercibleTo(a:Type)" -> "Category"
 
-"RepeatedDoubling(S:AbelianSemiGroup)" [color="#00EE00"];
-"RepeatedDoubling(S:AbelianSemiGroup)" -> "RepeatedDoubling(S:SetCategory)"
+"RepeatedDoubling(AbelianSemiGroup)" [color="#00EE00"];
+"RepeatedDoubling(AbelianSemiGroup)" -> "RepeatedDoubling(a:SetCategory)"
 
-"RepeatedDoubling(S:SetCategory)" [color="#00EE00"];
-"RepeatedDoubling(S:SetCategory)" -> "Package"
+"RepeatedDoubling(a:SetCategory)" [color="#00EE00"];
+"RepeatedDoubling(a:SetCategory)" -> "Package"
 
 "Package" [color="#00EE00"];
 
@@ -1199,7 +1210,122 @@ digraph pic {
 }
 
 @
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{Finite}{FINITE}
+\pagepic{ps/v102finite.ps}{FINITE}
+
+{\bf See:}\\
+\pagefrom{SetCategory}{SETCAT}
+
+{\bf Exports:}\\
+\begin{tabular}{lllllllll}
+ coerce & hash & index & latex & lookup & random & size & ?=? & ?\~{}=?
+\end{tabular}
 
+\cross{FINITE}{coerce}
+\cross{FINITE}{hash}
+\cross{FINITE}{index}
+\cross{FINITE}{latex}
+\cross{FINITE}{lookup}
+\cross{FINITE}{random}
+\cross{FINITE}{size}
+\cross{FINITE}{?=?}
+\cross{FINITE}{?\~{}=?}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ index : PositiveInteger -> %
+ lookup : % -> PositiveInteger
+ random : () -> %                     
+ size : () -> NonNegativeInteger
+\end{verbatim}
+
+These exports come from SetCategory():
+\begin{verbatim}
+ coerce : % -> OutputForm
+ hash : % -> SingleInteger            
+ latex : % -> String                  
+ ?=? : (%,%) -> Boolean               
+ ?~=? : (%,%) -> Boolean              
+\end{verbatim}
+
+<<category FINITE Finite>>=
+)abbrev category FINITE Finite
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ The category of domains composed of a finite set of elements.
+++ We include the functions \spadfun{lookup} and \spadfun{index} 
+++ to give a bijection between the finite set and an initial 
+++ segment of positive integers.
+++
+++ Axioms:
+++   \spad{lookup(index(n)) = n}
+++   \spad{index(lookup(s)) = s}
+
+Finite(): Category == SetCategory with
+    --operations
+      size: () ->  NonNegativeInteger
+        ++ size() returns the number of elements in the set.
+      index: PositiveInteger -> %
+        ++ index(i) takes a positive integer i less than or equal
+        ++ to \spad{size()} and
+        ++ returns the \spad{i}-th element of the set. 
+        ++ This operation establishs a bijection
+        ++ between the elements of the finite set and \spad{1..size()}.
+      lookup: % -> PositiveInteger
+        ++ lookup(x) returns a positive integer such that
+        ++ \spad{x = index lookup x}.
+      random: () -> %
+        ++ random() returns a random element from the set.
+
+@
+<<FINITE.dotabb>>=
+"FINITE"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FINITE"];
+"FINITE" -> "SETCAT"
+
+@
+<<FINITE.dotfull>>=
+"Finite()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FINITE"];
+"Finite()" -> "SetCategory()"
+
+@
+<<FINITE.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"Finite()" [color=lightblue];
+"Finite()" -> "SetCategory()"
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"Category" [color=lightblue];
+
+}
+
+@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \pagehead{HomogeneousAggregate}{HOAGG}
 \pagepic{ps/v102homogeneousaggregate.ps}{HOAGG}
@@ -1402,7 +1528,18 @@ digraph pic {
 
 "Evalable(a:Type)" [color="#00EE00"];
 
-"SetCategory()" [color="#00EE00"];
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
 
 "Aggregate()" [color=lightblue];
 "Aggregate()" -> "Type()"
@@ -1415,6 +1552,274 @@ digraph pic {
 }
 
 @
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{OrderedSet}{ORDSET}
+\pagepic{ps/v102orderedset.ps}{ORDSET}
+
+{\bf See:}\\
+\pagefrom{SetCategory}{SETCAT}
+
+{\bf Exports:}\\
+\begin{tabular}{llllll}
+ coerce & hash & latex & max & min & ?<?\\
+ ?<=? & ?=? & ?>? & ?>=? & ?\~{}=? &\\
+\end{tabular}
+
+\cross{ORDSET}{coerce}
+\cross{ORDSET}{hash}
+\cross{ORDSET}{latex}
+\cross{ORDSET}{max}
+\cross{ORDSET}{min}
+\cross{ORDSET}{?<?}
+\cross{ORDSET}{?<=?}
+\cross{ORDSET}{?=?}
+\cross{ORDSET}{?>?}
+\cross{ORDSET}{?>=?}
+\cross{ORDSET}{?\~{}=?}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ ?<? : (%,%) -> Boolean               
+\end{verbatim}
+
+These are implemented by this category:
+\begin{verbatim}
+ max : (%,%) -> %                     
+ min : (%,%) -> %
+ ?>? : (%,%) -> Boolean
+ ?>=? : (%,%) -> Boolean              
+ ?<=? : (%,%) -> Boolean
+\end{verbatim}
+
+These exports come from SetCategory():
+\begin{verbatim}
+ coerce : % -> OutputForm
+ hash : % -> SingleInteger            
+ latex : % -> String
+ ?=? : (%,%) -> Boolean               
+ ?~=? : (%,%) -> Boolean              
+\end{verbatim}
+
+<<category ORDSET OrderedSet>>=
+)abbrev category ORDSET OrderedSet
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ The class of totally ordered sets, that is, sets such that for each 
+++ pair of elements \spad{(a,b)}
+++ exactly one of the following relations holds \spad{a<b or a=b or b<a}
+++ and the relation is transitive, i.e.  \spad{a<b and b<c => a<c}.
+
+OrderedSet(): Category == SetCategory with
+  --operations
+    "<": (%,%) -> Boolean
+      ++ x < y is a strict total ordering on the elements of the set.
+    ">":         (%, %) -> Boolean
+      ++ x > y is a greater than test.
+    ">=":        (%, %) -> Boolean
+      ++ x >= y is a greater than or equal test.
+    "<=":        (%, %) -> Boolean
+      ++ x <= y is a less than or equal test.
+
+    max: (%,%) -> %
+      ++ max(x,y) returns the maximum of x and y relative to "<".
+    min: (%,%) -> %
+      ++ min(x,y) returns the minimum of x and y relative to "<".
+  add
+  --declarations
+    x,y: %
+  --definitions
+  -- These really ought to become some sort of macro
+    max(x,y) ==
+      x > y => x
+      y
+    min(x,y) ==
+      x > y => y
+      x
+    ((x: %) >  (y: %)) : Boolean == y < x
+    ((x: %) >= (y: %)) : Boolean == not (x < y)
+    ((x: %) <= (y: %)) : Boolean == not (y < x)
+
+@
+<<ORDSET.dotabb>>=
+"ORDSET" 
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
+"ORDSET" -> "SETCAT"
+
+@
+<<ORDSET.dotfull>>=
+"OrderedSet()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
+"OrderedSet()" -> "SetCategory()"
+
+@
+<<ORDSET.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"OrderedSet()" [color=lightblue];
+"OrderedSet()" -> "SetCategory()"
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"Category" [color=lightblue];
+}
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{SemiGroup}{SGROUP}
+%\pagepic{ps/v102semigroup.ps}{SGROUP}
+\includegraphics[scale=0.75]{ps/v102semigroup.ps}
+\index{images!SGROUP}
+
+A Semigroup is defined as a set $S$ with a binary multiplicative
+operator ``*''. A Semigroup $G(S,*)$ is:
+\begin{itemize}
+\item a set $S$ which can be null
+\item a binary multiplicative operator ``*''
+\item associative. $\forall a,b,c \in S, a*(b*c) = (a*b)*c$
+\end{itemize}
+
+{\bf See:}\\
+\pagefrom{SetCategory}{SETCAT}
+
+{\bf Exports:}\\
+\begin{tabular}{llll}
+ coerce & hash & latex & ?*? \\
+ ?**?   & ?=?  & ?\^{}?   & ?\~{}=?
+\end{tabular}
+
+\cross{SGROUP}{coerce}
+\cross{SGROUP}{hash}
+\cross{SGROUP}{latex}
+\cross{SGROUP}{?*?}
+\cross{SGROUP}{?**?}
+\cross{SGROUP}{?=?}
+\cross{SGROUP}{?\^{}?}
+\cross{SGROUP}{?~=?}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ ?*? : (%,%) -> %                     
+\end{verbatim}
+
+These are implemented by this category:
+\begin{verbatim}
+ ?**? : (%,PositiveInteger) -> %
+ ?^? : (%,PositiveInteger) -> %
+\end{verbatim}
+
+These exports come from SetCategory():
+\begin{verbatim}
+ coerce : % -> OutputForm             
+ hash : % -> SingleInteger
+ latex : % -> String                  
+ ?=? : (%,%) -> Boolean               
+ ?~=? : (%,%) -> Boolean
+\end{verbatim}
+
+<<category SGROUP SemiGroup>>=
+)abbrev category SGROUP SemiGroup
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ the class of all multiplicative semigroups, i.e. a set
+++ with an associative operation \spadop{*}.
+++
+++ Axioms:
+++    \spad{associative("*":(%,%)->%)}\tab{30}\spad{ (x*y)*z = x*(y*z)}
+++
+++ Conditional attributes:
+++    \spad{commutative("*":(%,%)->%)}\tab{30}\spad{ x*y = y*x }
+SemiGroup(): Category == SetCategory with
+    --operations
+      "*": (%,%) -> %                  ++ x*y returns the product of x and y.
+      "**": (%,PositiveInteger) -> %   ++ x**n returns the repeated product
+                                       ++ of x n times, i.e. exponentiation.
+      "^": (%,PositiveInteger) -> %    ++ x^n returns the repeated product
+                                       ++ of x n times, i.e. exponentiation.
+    add
+      import RepeatedSquaring(%)
+      x:% ** n:PositiveInteger == expt(x,n)
+      _^(x:%, n:PositiveInteger):% == x ** n
+
+@
+<<SGROUP.dotabb>>=
+"SGROUP"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SGROUP"];
+"SGROUP" -> "SETCAT"
+
+@
+<<SGROUP.dotfull>>=
+"SemiGroup()"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SGROUP"];
+"SemiGroup()" -> "SetCategory()"
+"SemiGroup()" -> "RepeatedSquaring(SemiGroup)"
+
+@
+<<SGROUP.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"SemiGroup()" [color=lightblue];
+"SemiGroup()" -> "SetCategory()"
+"SemiGroup()" -> "RepeatedSquaring(SemiGroup)"
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"RepeatedSquaring(SemiGroup)" [color="#00EE00"];
+"RepeatedSquaring(SemiGroup)" -> "RepeatedSquaring(a:SetCategory)"
+
+"RepeatedSquaring(a:SetCategory)" [color="#00EE00"];
+"RepeatedSquaring(a:SetCategory)" -> "Package"
+
+"Package" [color="#00EE00"];
+
+"Category" [color=lightblue];
+
+}
+
+@
 \chapter{Category Layer 4}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \pagehead{BagAggregate}{BGAGG}
@@ -1726,8 +2131,8 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
      ++ \axiom{[x,y,...,z]$D}, where
      ++ D is the domain. D may be omitted for those of type List.
    find: (S->Boolean, %) -> Union(S, "failed")
-     ++ find(p,u) returns the first x in u such that \axiom{p(x)} is true, and
-     ++ "failed" otherwise.
+     ++ find(p,u) returns the first x in u such that \axiom{p(x)} is true, 
+     ++ and "failed" otherwise.
    if % has finiteAggregate then
       reduce: ((S,S)->S,%) -> S
 	++ reduce(f,u) reduces the binary operation f across u. For example,
@@ -1752,13 +2157,13 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
 	++ \axiom{p(x)} is true.
 	++ Note: \axiom{remove(p,u) == [x for x in u | not p(x)]}.
       select: (S->Boolean,%) -> %
-	++ select(p,u) returns a copy of u containing only those elements such
-	++ \axiom{p(x)} is true.
+	++ select(p,u) returns a copy of u containing only those elements 
+	++ such \axiom{p(x)} is true.
 	++ Note: \axiom{select(p,u) == [x for x in u | p(x)]}.
       if S has SetCategory then
 	reduce: ((S,S)->S,%,S,S) -> S
-	  ++ reduce(f,u,x,z) reduces the binary operation f across u, stopping
-	  ++ when an "absorbing element" z is encountered.
+	  ++ reduce(f,u,x,z) reduces the binary operation f across u, 
+	  ++ stopping when an "absorbing element" z is encountered.
 	  ++ As for \axiom{reduce(f,u,x)}, x is the identity operation of f.
 	  ++ Same as \axiom{reduce(f,u,x)} when u contains no element z.
 	  ++ Thus the third argument x is returned when u is empty.
@@ -1980,7 +2385,8 @@ IndexedAggregate(Index: SetCategory, Entry: Type): Category ==
    entries: % -> List Entry
       ++ entries(u) returns a list of all the entries of aggregate u
       ++ in no assumed order.
-      -- to become entries: % -> Entry* and entries: % -> Iterator(Entry,Entry)
+      -- to become entries: % -> Entry* and 
+      -- entries: % -> Iterator(Entry,Entry)
    index?: (Index,%) -> Boolean
       ++ index?(i,u) tests if i is an index of aggregate u.
    indices: % -> List Index
@@ -2466,8 +2872,8 @@ These exports come from RecursiveAggregate(a:Type)
 ++ Keywords:
 ++ References:
 ++ Description:
-++ A binary-recursive aggregate has 0, 1 or 2 children and
-++ serves as a model for a binary tree or a doubly-linked aggregate structure
+++ A binary-recursive aggregate has 0, 1 or 2 children and serves
+++ as a model for a binary tree or a doubly-linked aggregate structure
 BinaryRecursiveAggregate(S:Type):Category == RecursiveAggregate S with
    -- needs preorder, inorder and postorder iterators
    left: % -> %
@@ -3263,29 +3669,31 @@ LinearAggregate(S:Type): Category ==
       ++ of b followed ... by the elements of c.
       ++ Note: \axiom{concat(a,b,...,c) = concat(a,concat(b,...,c))}.
    map: ((S,S)->S,%,%) -> %
-     ++ map(f,u,v) returns a new collection w with elements \axiom{z = f(x,y)}
-     ++ for corresponding elements x and y from u and v.
+     ++ map(f,u,v) returns a new collection w with elements 
+     ++ \axiom{z = f(x,y)} for corresponding elements x and y from u and v.
      ++ Note: for linear aggregates, \axiom{w.i = f(u.i,v.i)}.
    elt: (%,UniversalSegment(Integer)) -> %
       ++ elt(u,i..j) (also written: \axiom{a(i..j)}) returns the aggregate of
       ++ elements \axiom{u} for k from i to j in that order.
       ++ Note: in general, \axiom{a.s = [a.k for i in s]}.
    delete: (%,Integer) -> %
-      ++ delete(u,i) returns a copy of u with the \axiom{i}th element deleted.
-      ++ Note: for lists, 
+      ++ delete(u,i) returns a copy of u with the \axiom{i}th 
+      ++ element deleted. Note: for lists, 
       ++ \axiom{delete(a,i) == concat(a(0..i - 1),a(i + 1,..))}.
    delete: (%,UniversalSegment(Integer)) -> %
       ++ delete(u,i..j) returns a copy of u with the \axiom{i}th through
       ++ \axiom{j}th element deleted.
       ++ Note: \axiom{delete(a,i..j) = concat(a(0..i-1),a(j+1..))}.
    insert: (S,%,Integer) -> %
-      ++ insert(x,u,i) returns a copy of u having x as its \axiom{i}th element.
+      ++ insert(x,u,i) returns a copy of u having x as its 
+      ++ \axiom{i}th element.
       ++ Note: \axiom{insert(x,a,k) = concat(concat(a(0..k-1),x),a(k..))}.
    insert: (%,%,Integer) -> %
       ++ insert(v,u,k) returns a copy of u having v inserted beginning at the
       ++ \axiom{i}th element.
       ++ Note: \axiom{insert(v,u,k) = concat( u(0..k-1), v, u(k..) )}.
-   if % has shallowlyMutable then setelt: (%,UniversalSegment(Integer),S) -> S
+   if % has shallowlyMutable then 
+    setelt: (%,UniversalSegment(Integer),S) -> S
       ++ setelt(u,i..j,x) (also written: \axiom{u(i..j) := x}) destructively
       ++ replaces each element in the segment \axiom{u(i..j)} by x.
       ++ The value x is returned.
@@ -3475,7 +3883,8 @@ PriorityQueueAggregate(S:OrderedSet): Category == BagAggregate S with
 
 @
 <<PRQAGG.dotabb>>=
-"PRQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
+"PRQAGG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
 "PRQAGG" -> "BGAGG"
 
 @
@@ -3635,15 +4044,16 @@ These exports come from BagAggregate(a:Type):
 ++ Keywords:
 ++ References:
 ++ Description:
-++ A queue is a bag where the first item inserted is the first item extracted.
+++ A queue is a bag where the first item inserted is the first 
+++ item extracted.
 QueueAggregate(S:Type): Category == BagAggregate S with
    finiteAggregate
    enqueue_!: (S, %) -> S
      ++ enqueue!(x,q) inserts x into the queue q at the back end.
    dequeue_!: % -> S
-     ++ dequeue! s destructively extracts the first (top) element from queue q.
-     ++ The element previously second in the queue becomes the first element.
-     ++ Error: if q is empty.
+     ++ dequeue! s destructively extracts the first (top) element 
+     ++ from queue q. The element previously second in the queue becomes 
+     ++ the first element. Error: if q is empty.
    rotate_!: % -> %
      ++ rotate! q rotates queue q so that the element at the front of
      ++ the queue goes to the back of the queue.
@@ -4056,9 +4466,9 @@ These exports come from RecursiveAggregate(a:Type):
 ++ This aggregate models, though not precisely, a linked
 ++ list possibly with a single cycle.
 ++ A node with one children models a non-empty list, with the
-++ \spadfun{value} of the list designating the head, or \spadfun{first}, of the
-++ list, and the child designating the tail, or \spadfun{rest}, of the list.
-++ A node with no child then designates the empty list.
+++ \spadfun{value} of the list designating the head, or \spadfun{first}, 
+++ of the list, and the child designating the tail, or \spadfun{rest}, 
+++ of the list. A node with no child then designates the empty list.
 ++ Since these aggregates are recursive aggregates, they may be cyclic.
 UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
    concat: (%,%) -> %
@@ -4713,8 +5123,8 @@ These exports come from QueueAggregate(a:Type):
 ++ References:
 ++ Description:
 ++ A dequeue is a doubly ended stack, that is, a bag where first items
-++ inserted are the first items extracted, at either the front or the back end
-++ of the data structure.
+++ inserted are the first items extracted, at either the front or 
+++ the back end of the data structure.
 DequeueAggregate(S:Type):
  Category == Join(StackAggregate S,QueueAggregate S) with
    dequeue: () -> %
@@ -5017,12 +5427,13 @@ ExtensibleLinearAggregate(S:Type):Category == LinearAggregate S with
    insert_!: (S,%,Integer) -> %
      ++ insert!(x,u,i) destructively inserts x into u at position i.
    insert_!: (%,%,Integer) -> %
-     ++ insert!(v,u,i) destructively inserts aggregate v into u at position i.
+     ++ insert!(v,u,i) destructively inserts aggregate v into u 
+     ++ at position i.
    merge_!: ((S,S)->Boolean,%,%) -> %
      ++ merge!(p,u,v) destructively merges u and v using predicate p.
    select_!: (S->Boolean,%) -> %
-     ++ select!(p,u) destructively changes u by keeping only values x such that
-     ++ \axiom{p(x)}.
+     ++ select!(p,u) destructively changes u by keeping only values 
+     ++ x such that \axiom{p(x)}.
    if S has SetCategory then
      remove_!: (S,%) -> %
        ++ remove!(x,u) destructively removes all values x from u.
@@ -5323,16 +5734,17 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
    finiteAggregate
    merge: ((S,S)->Boolean,%,%) -> %
       ++ merge(p,a,b) returns an aggregate c which merges \axiom{a} and b.
-      ++ The result is produced by examining each element x of \axiom{a} and y
-      ++ of b successively. If \axiom{p(x,y)} is true, then x is inserted into
-      ++ the result; otherwise y is inserted. If x is chosen, the next element
-      ++ of \axiom{a} is examined, and so on. When all the elements of one
-      ++ aggregate are examined, the remaining elements of the other
-      ++ are appended.
+      ++ The result is produced by examining each element x of \axiom{a} 
+      ++ and y of b successively. If \axiom{p(x,y)} is true, then x is 
+      ++ inserted into the result; otherwise y is inserted. If x is 
+      ++ chosen, the next element of \axiom{a} is examined, and so on. 
+      ++ When all the elements of one aggregate are examined, the 
+      ++ remaining elements of the other are appended.
       ++ For example, \axiom{merge(<,[1,3],[2,7,5])} returns 
       ++ \axiom{[1,2,3,7,5]}.
    reverse: % -> %
-      ++ reverse(a) returns a copy of \axiom{a} with elements in reverse order.
+      ++ reverse(a) returns a copy of \axiom{a} with elements 
+      ++ in reverse order.
    sort: ((S,S)->Boolean,%) -> %
       ++ sort(p,a) returns a copy of \axiom{a} sorted using total ordering 
       ++ predicate p.
@@ -5344,11 +5756,11 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
       ++ if there is no such x.
    if S has SetCategory then
       position: (S, %)	-> Integer
-	++ position(x,a) returns the index i of the first occurrence of x in a,
-	++ and \axiom{minIndex(a) - 1} if there is no such x.
+	++ position(x,a) returns the index i of the first occurrence of 
+	++ x in a, and \axiom{minIndex(a) - 1} if there is no such x.
       position: (S,%,Integer) -> Integer
-	++ position(x,a,n) returns the index i of the first occurrence of x in
-	++ \axiom{a} where \axiom{i >= n}, and \axiom{minIndex(a) - 1} 
+	++ position(x,a,n) returns the index i of the first occurrence of 
+	++ x in \axiom{a} where \axiom{i >= n}, and \axiom{minIndex(a) - 1} 
         ++ if no such x is found.
    if S has OrderedSet then
       OrderedSet
@@ -5755,14 +6167,16 @@ These are implemented by this category:
  map! : ((S -> S),%) -> % if $ has shallowlyMutable
  possiblyInfinite? : % -> Boolean
  setelt : (%,Integer,S) -> S if $ has shallowlyMutable
- setelt : (%,UniversalSegment Integer,S) -> S if $ has shallowlyMutable
+ setelt : (%,UniversalSegment Integer,S) -> S 
+          if $ has shallowlyMutable
  ?.? : (%,Integer) -> S
  ?.? : (%,UniversalSegment Integer) -> %
 \end{verbatim}
 
 These exports come from UnaryRecursiveAggregate(a:Type):
 \begin{verbatim}
- any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ any? : ((S -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
  children : % -> List %               
  child? : (%,%) -> Boolean if S has SETCAT
  coerce : % -> OutputForm if S has SETCAT
@@ -5770,8 +6184,11 @@ These exports come from UnaryRecursiveAggregate(a:Type):
  concat : (%,S) -> %
  concat! : (%,S) -> % if $ has shallowlyMutable
  copy : % -> %                        
- count : (S,%) -> NonNegativeInteger if S has SETCAT and $ has finiteAggregate
- count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+ count : (S,%) -> NonNegativeInteger 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ count : ((S -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
  cycleEntry : % -> %
  cycleLength : % -> NonNegativeInteger
  cycleSplit! : % -> % if $ has shallowlyMutable
@@ -5781,11 +6198,20 @@ These exports come from UnaryRecursiveAggregate(a:Type):
  empty : () -> %                      
  empty? : % -> Boolean
  eq? : (%,%) -> Boolean
- eval : (%,List S,List S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,S,S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,Equation S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,List Equation S) -> % if S has EVALAB S and S has SETCAT
- every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ eval : (%,List S,List S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,S,S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,Equation S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,List Equation S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ every? : ((S -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
  first : % -> S
  hash : % -> SingleInteger if S has SETCAT
  latex : % -> String if S has SETCAT
@@ -5795,7 +6221,9 @@ These exports come from UnaryRecursiveAggregate(a:Type):
  leaves : % -> List S                 
  less? : (%,NonNegativeInteger) -> Boolean
  map : ((S -> S),%) -> %              
- member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
+ member? : (S,%) -> Boolean 
+          if S has SETCAT 
+          and $ has finiteAggregate
  members : % -> List S if $ has finiteAggregate
  more? : (%,NonNegativeInteger) -> Boolean
  nodes : % -> List %                  
@@ -5843,19 +6271,33 @@ These exports come from LinearAggregate(a:Type):
  qelt : (%,Integer) -> S              
  convert : % -> InputForm if S has KONVERT INFORM
  delete : (%,UniversalSegment Integer) -> %
- entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+ entry? : (S,%) -> Boolean 
+          if $ has finiteAggregate 
+          and S has SETCAT
  find : ((S -> Boolean),%) -> Union(S,"failed")
  maxIndex : % -> Integer if Integer has ORDSET
  minIndex : % -> Integer if Integer has ORDSET
- qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
- reduce : (((S,S) -> S),%,S,S) -> S if S has SETCAT and $ has finiteAggregate
- reduce : (((S,S) -> S),%,S) -> S if $ has finiteAggregate
- reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
- remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
- remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
- removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
- select : ((S -> Boolean),%) -> % if $ has finiteAggregate
- swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
+ qsetelt! : (%,Integer,S) -> S 
+          if $ has shallowlyMutable
+ reduce : (((S,S) -> S),%,S,S) -> S 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ reduce : (((S,S) -> S),%,S) -> S 
+          if $ has finiteAggregate
+ reduce : (((S,S) -> S),%) -> S 
+          if $ has finiteAggregate
+ remove : (S,%) -> % 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ remove : ((S -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ removeDuplicates : % -> % 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ select : ((S -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ swap! : (%,Integer,Integer) -> Void 
+          if $ has shallowlyMutable
 \end{verbatim}
 
 <<category STAGG StreamAggregate>>=
@@ -6223,10 +6665,10 @@ These exports come from FiniteLinearAggregate(a:Type):
 ++ with the \spadatt{shallowlyMutable} property, that is, any component of
 ++ the array may be changed without affecting the
 ++ identity of the overall array.
-++ Array data structures are typically represented by a fixed area in storage 
-++ and cannot efficiently grow or shrink on demand as can list structures
-++ (see however \spadtype{FlexibleArray} for a data structure which
-++ is a cross between a list and an array).
+++ Array data structures are typically represented by a fixed area in 
+++ storage and cannot efficiently grow or shrink on demand as can list 
+++ structures (see however \spadtype{FlexibleArray} for a data structure 
+++ which is a cross between a list and an array).
 ++ Iteration over, and access to, elements of arrays is extremely fast
 ++ (and often can be optimized to open-code).
 ++ Insertion and deletion however is generally slow since an entirely new
@@ -6889,21 +7331,28 @@ These are implemented by this category:
  new : (NonNegativeInteger,S) -> %
  position : ((S -> Boolean),%) -> Integer
  position : (S,%,Integer) -> Integer if S has SETCAT
- reduce : (((S,S) -> S),%,S) -> S if $ has finiteAggregate
- reduce : (((S,S) -> S),%,S,S) -> S if S has SETCAT and $ has finiteAggregate
- reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
+ reduce : (((S,S) -> S),%,S) -> S 
+          if $ has finiteAggregate
+ reduce : (((S,S) -> S),%,S,S) -> S 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ reduce : (((S,S) -> S),%) -> S 
+          if $ has finiteAggregate
  remove! : ((S -> Boolean),%) -> %
  removeDuplicates! : % -> % if S has SETCAT
  reverse! : % -> % if $ has shallowlyMutable
- select : ((S -> Boolean),%) -> % if $ has finiteAggregate
- sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
+ select : ((S -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ sort! : (((S,S) -> Boolean),%) -> % 
+          if $ has shallowlyMutable
  sorted? : (((S,S) -> Boolean),%) -> Boolean
  ?<? : (%,%) -> Boolean if S has ORDSET
 \end{verbatim}
 
 These exports come from StreamAggregate(a:Type):
 \begin{verbatim}
- any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ any? : ((S -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
  children : % -> List %               
  child? : (%,%) -> Boolean if S has SETCAT
  coerce : % -> OutputForm if S has SETCAT
@@ -6915,8 +7364,11 @@ These exports come from StreamAggregate(a:Type):
  concat! : (%,%) -> %                 
  construct : List S -> %
  convert : % -> InputForm if S has KONVERT INFORM
- count : (S,%) -> NonNegativeInteger if S has SETCAT and $ has finiteAggregate
- count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+ count : (S,%) -> NonNegativeInteger 
+          if S has SETCAT 
+          and $ has finiteAggregate
+ count : ((S -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
  cycleEntry : % -> %
  cycleLength : % -> NonNegativeInteger
  cycleSplit! : % -> % if $ has shallowlyMutable
@@ -6928,14 +7380,25 @@ These exports come from StreamAggregate(a:Type):
  elt : (%,Integer,S) -> S
  empty : () -> %
  empty? : % -> Boolean                
- entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+ entry? : (S,%) -> Boolean 
+          if $ has finiteAggregate 
+          and S has SETCAT
  entries : % -> List S
  eq? : (%,%) -> Boolean               
- eval : (%,List S,List S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,S,S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,Equation S) -> % if S has EVALAB S and S has SETCAT
- eval : (%,List Equation S) -> % if S has EVALAB S and S has SETCAT
- every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ eval : (%,List S,List S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,S,S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,Equation S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ eval : (%,List Equation S) -> % 
+          if S has EVALAB S 
+          and S has SETCAT
+ every? : ((S -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
  explicitlyFinite? : % -> Boolean
  fill! : (%,S) -> % if $ has shallowlyMutable
  first : % -> S                       
@@ -6954,7 +7417,9 @@ These exports come from StreamAggregate(a:Type):
  map : ((S -> S),%) -> %              
  map! : ((S -> S),%) -> % if $ has shallowlyMutable
  maxIndex : % -> Integer if Integer has ORDSET
- member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
+ member? : (S,%) -> Boolean 
+          if S has SETCAT 
+          and $ has finiteAggregate
  members : % -> List S if $ has finiteAggregate
  minIndex : % -> Integer if Integer has ORDSET
  more? : (%,NonNegativeInteger) -> Boolean
@@ -6964,16 +7429,21 @@ These exports come from StreamAggregate(a:Type):
  possiblyInfinite? : % -> Boolean
  qelt : (%,Integer) -> S              
  qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
- remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
+ remove : (S,%) -> % 
+          if S has SETCAT 
+          and $ has finiteAggregate
  remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
- removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
+ removeDuplicates : % -> % 
+          if S has SETCAT 
+          and $ has finiteAggregate
  rest : % -> %
  rest : (%,NonNegativeInteger) -> %
  sample : () -> %
  second : % -> S                      
  setchildren! : (%,List %) -> % if $ has shallowlyMutable
  setelt : (%,Integer,S) -> S if $ has shallowlyMutable
- setelt : (%,UniversalSegment Integer,S) -> S if $ has shallowlyMutable
+ setelt : (%,UniversalSegment Integer,S) -> S 
+          if $ has shallowlyMutable
  setelt : (%,last,S) -> S if $ has shallowlyMutable
  setelt : (%,rest,%) -> % if $ has shallowlyMutable
  setelt : (%,first,S) -> S if $ has shallowlyMutable
@@ -7050,7 +7520,8 @@ ListAggregate(S:Type): Category == Join(StreamAggregate S,
    sort_!(f, l)	      == mergeSort(f, l, #l)
    list x		   == concat(x, empty())
    reduce(f, x)		   ==
-     empty? x => error "reducing over an empty list needs the 3 argument form"
+     empty? x => _
+       error "reducing over an empty list needs the 3 argument form"
      reduce(f, rest x, first x)
    merge(f, p, q)	   == merge_!(f, copy p, copy q)
 
@@ -7842,65 +8313,116 @@ These are implemented by this category:
 \end{verbatim}
 
 These exports come from KeyedDictionary(Key,Entry)\\
-where Key:SetCategory and Entry:SetCategory:
+where Key:SetCategory and Entry:SetCategory\\
+and RECKEYENTRY=Record(key: Key,entry: Entry):
 \begin{verbatim}
- any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
- bag : List Record(key: Key,entry: Entry) -> %
- construct : List Record(key: Key,entry: Entry) -> %
- convert : % -> InputForm if Record(key: Key,entry: Entry) has KONVERT INFORM
+ any? : ((RECKEYENTRY -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ bag : List RECKEYENTRY -> %
+ construct : List RECKEYENTRY -> %
+ convert : % -> InputForm if RECKEYENTRY has KONVERT INFORM
  copy : % -> %                        
- count : (Entry,%) -> NonNegativeInteger if Entry has SETCAT and $ has finiteAggregate
- count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+ count : (Entry,%) -> NonNegativeInteger 
+          if Entry has SETCAT 
+          and $ has finiteAggregate
+ count : ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
  dictionary : () -> %
- dictionary : List Record(key: Key,entry: Entry) -> %
+ dictionary : List RECKEYENTRY -> %
  empty : () -> %                      
  empty? : % -> Boolean
  eq? : (%,%) -> Boolean
- eval : (%,List Record(key: Key,entry: Entry),List Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,List Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+ eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,RECKEYENTRY,RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,List Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ every? : ((RECKEYENTRY -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
  key? : (Key,%) -> Boolean            
  keys : % -> List Key
- hash : % -> SingleInteger if Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
- latex : % -> String if Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ hash : % -> SingleInteger 
+          if Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
+ latex : % -> String 
+          if Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
  less? : (%,NonNegativeInteger) -> Boolean
- member? : (Record(key: Key,entry: Entry),%) -> Boolean 
-     if Record(key: Key,entry: Entry) has SETCAT 
+ member? : (RECKEYENTRY,%) -> Boolean 
+     if RECKEYENTRY has SETCAT 
       and $ has finiteAggregate
- members : % -> List Record(key: Key,entry: Entry) if $ has finiteAggregate
+ members : % -> List RECKEYENTRY if $ has finiteAggregate
  more? : (%,NonNegativeInteger) -> Boolean
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- remove : (Record(key: Key,entry: Entry),%) -> % if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
- removeDuplicates : % -> % if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%) -> RECKEYENTRY 
+          if $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY)->RECKEYENTRY),%,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY)->RECKEYENTRY),%,RECKEYENTRY,RECKEYENTRY)
+    -> RECKEYENTRY 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ remove : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ remove : (RECKEYENTRY,%) -> % 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ remove! : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ remove! : (RECKEYENTRY,%) -> % if $ has finiteAggregate
+ removeDuplicates : % -> % 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
  sample : () -> %                     
  search : (Key,%) -> Union(Entry,"failed")
- select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+ select : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ select! : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
  #? : % -> NonNegativeInteger if $ has finiteAggregate
- ?~=? : (%,%) -> Boolean if Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ ?~=? : (%,%) -> Boolean 
+          if Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
 \end{verbatim}
 
 These exports come from IndexedAggregate(Key,Entry))\\
-where Key:SetCategory and Entry:SetCategory:
+where Key:SetCategory and Entry:SetCategory\\
+and RECKEYENTRY=Record(key: Key,entry: Entry):
 \begin{verbatim}
- count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- entry? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
- eval : (%,List Equation Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,Equation Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,Entry,Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,List Entry,List Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
+ count : (RECKEYENTRY,%) -> NonNegativeInteger 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ entry? : (Entry,%) -> Boolean 
+          if $ has finiteAggregate 
+          and Entry has SETCAT
+ eval : (%,List Equation Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,Equation Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,Entry,Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,List Entry,List Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
  fill! : (%,Entry) -> % if $ has shallowlyMutable
  first : % -> Entry if Key has ORDSET
  map : ((Entry -> Entry),%) -> %      
  maxIndex : % -> Key if Key has ORDSET
- member? : (Entry,%) -> Boolean if Entry has SETCAT and $ has finiteAggregate
+ member? : (Entry,%) -> Boolean 
+          if Entry has SETCAT 
+          and $ has finiteAggregate
  members : % -> List Entry if $ has finiteAggregate
  minIndex : % -> Key if Key has ORDSET
  qelt : (%,Key) -> Entry
@@ -7980,7 +8502,8 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 --    z
 
    if % has finiteAggregate then
-     parts(t:%):List Record(key:Key,entry:Entry) == [[k, t.k] for k in keys t]
+     parts(t:%):List Record(key:Key,entry:Entry) ==
+         [[k, t.k] for k in keys t]
      parts(t:%):List Entry   == [t.k for k in keys t]
      entries(t:%):List Entry == parts(t)
 
@@ -7988,7 +8511,8 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
        eq?(s,t) => true
        #s ^= #t => false
        for k in keys s repeat
-	 (e := search(k, t)) case "failed" or (e::Entry) ^= s.k => return false
+	 (e := search(k, t)) _
+           case "failed" or (e::Entry) ^= s.k => return false
        true
 
      map(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry),t:%):%==
@@ -7997,7 +8521,7 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 	 ke: Record(key:Key,entry:Entry) := f [k, t.k]
 	 z ke.key := ke.entry
        z
-     map_!(f: Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry),t:%):%_
+     map_!(f:Record(key:Key,entry:Entry)->Record(key:Key,entry:Entry),t:%):%_
       ==
        lke: List Record(key:Key,entry:Entry) := nil()
        for k in keys t repeat
@@ -8259,109 +8783,191 @@ These are directly exported but not implemented:
 \end{verbatim}
 
 These exports come from TableAggregate(Key, Entry)\\
-where Key:SetCategory and Entry:SetCategory 
+where Key:SetCategory and Entry:SetCategory\\
+and RECKEYENTRY = Record(key: Key,entry: Entry)
 \begin{verbatim}
- any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
- any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
- any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
- bag : List Record(key: Key,entry: Entry) -> %
- construct : List Record(key: Key,entry: Entry) -> %
- convert : % -> InputForm if Record(key: Key,entry: Entry) has KONVERT INFORM or Record(key: Key,entry: Entry) has KONVERT INFORM
+ any? : ((RECKEYENTRY -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ any? : ((Entry -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ any? : ((RECKEYENTRY -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ bag : List RECKEYENTRY -> %
+ construct : List RECKEYENTRY -> %
+ convert : % -> InputForm 
+          if RECKEYENTRY has KONVERT INFORM 
+          or RECKEYENTRY has KONVERT INFORM
  copy : % -> %                        
- count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
- count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- count : ((Entry -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
- count : (Entry,%) -> NonNegativeInteger if Entry has SETCAT and $ has finiteAggregate
- count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+ count : 
+  ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
+ count : (RECKEYENTRY,%) -> NonNegativeInteger 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ count : ((Entry -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
+ count : (Entry,%) -> NonNegativeInteger 
+          if Entry has SETCAT 
+          and $ has finiteAggregate
+ count : (RECKEYENTRY,%) -> NonNegativeInteger 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ count : 
+  ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger 
+          if $ has finiteAggregate
  dictionary : () -> %                 
- dictionary : List Record(key: Key,entry: Entry) -> %
+ dictionary : List RECKEYENTRY -> %
  elt : (%,Key,Entry) -> Entry
- elt : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)
+ elt : (%,Integer,RECKEYENTRY) -> RECKEYENTRY
  empty : () -> %
  empty? : % -> Boolean                
  entries : % -> List Entry
- entry? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+ entry? : (Entry,%) -> Boolean 
+          if $ has finiteAggregate 
+          and Entry has SETCAT
  eq? : (%,%) -> Boolean               
- eval : (%,List Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,List Record(key: Key,entry: Entry),List Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,List Equation Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,Equation Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,Entry,Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,List Entry,List Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT
- eval : (%,List Record(key: Key,entry: Entry),List Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- eval : (%,List Equation Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB Record(key: Key,entry: Entry) and Record(key: Key,entry: Entry) has SETCAT
- every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
- every? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
- extract! : % -> Record(key: Key,entry: Entry)
+ eval : (%,List Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,RECKEYENTRY,RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,List Equation Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,Equation Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,Entry,Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,List Entry,List Entry) -> % 
+          if Entry has EVALAB Entry 
+          and Entry has SETCAT
+ eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,RECKEYENTRY,RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ eval : (%,List Equation RECKEYENTRY) -> % 
+          if RECKEYENTRY has EVALAB RECKEYENTRY 
+          and RECKEYENTRY has SETCAT
+ every? : ((RECKEYENTRY -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ every? : ((Entry -> Boolean),%) -> Boolean 
+          if $ has finiteAggregate
+ extract! : % -> RECKEYENTRY
  fill! : (%,Entry) -> % if $ has shallowlyMutable
- find : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Union(Record(key: Key,entry: Entry),"failed")
+ find : ((RECKEYENTRY -> Boolean),%) -> Union(RECKEYENTRY,"failed")
  first : % -> Entry if Key has ORDSET
- hash : % -> SingleInteger if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ hash : % -> SingleInteger 
+          if RECKEYENTRY has SETCAT 
+          or Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
  index? : (Key,%) -> Boolean
  indices : % -> List Key
- insert! : (Record(key: Key,entry: Entry),%) -> %
- inspect : % -> Record(key: Key,entry: Entry)
+ insert! : (RECKEYENTRY,%) -> %
+ inspect : % -> RECKEYENTRY
  key? : (Key,%) -> Boolean            
  keys : % -> List Key
- latex : % -> String if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ latex : % -> String 
+          if RECKEYENTRY has SETCAT 
+          or Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
  less? : (%,NonNegativeInteger) -> Boolean
  map : ((Entry -> Entry),%) -> %
- map : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> %
+ map : ((RECKEYENTRY -> RECKEYENTRY),%) -> %
  map : (((Entry,Entry) -> Entry),%,%) -> %
- map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+ map! : ((RECKEYENTRY -> RECKEYENTRY),%) -> % 
+          if $ has shallowlyMutable
  map! : ((Entry -> Entry),%) -> % if $ has shallowlyMutable
- map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+ map! : ((RECKEYENTRY -> RECKEYENTRY),%) -> % 
+          if $ has shallowlyMutable
  maxIndex : % -> Key if Key has ORDSET
- member? : (Record(key: Key,entry: Entry),%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- member? : (Entry,%) -> Boolean if Entry has SETCAT and $ has finiteAggregate
- members : % -> List Record(key: Key,entry: Entry) if $ has finiteAggregate
+ member? : (RECKEYENTRY,%) -> Boolean 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ member? : (Entry,%) -> Boolean 
+          if Entry has SETCAT 
+          and $ has finiteAggregate
+ members : % -> List RECKEYENTRY if $ has finiteAggregate
  members : % -> List Entry if $ has finiteAggregate
- members : % -> List Record(key: Key,entry: Entry) if $ has finiteAggregate
+ members : % -> List RECKEYENTRY if $ has finiteAggregate
  minIndex : % -> Key if Key has ORDSET
  more? : (%,NonNegativeInteger) -> Boolean
  parts : % -> List Entry if $ has finiteAggregate
- parts : % -> List Record(key: Key,entry: Entry) if $ has finiteAggregate
+ parts : % -> List RECKEYENTRY if $ has finiteAggregate
  qelt : (%,Key) -> Entry              
  qsetelt! : (%,Key,Entry) -> Entry if $ has shallowlyMutable
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
- reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
- remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- remove : (Record(key: Key,entry: Entry),%) -> % if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%)
+    -> RECKEYENTRY 
+          if $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,RECKEYENTRY)
+    -> RECKEYENTRY 
+          if $ has finiteAggregate
+ reduce : 
+  (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,RECKEYENTRY,RECKEYENTRY)
+    -> RECKEYENTRY 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
+ remove : ((RECKEYENTRY -> Boolean),%) -> % if $ has finiteAggregate
+ remove : (RECKEYENTRY,%) -> % 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
  remove! : (Key,%) -> Union(Entry,"failed")
- remove! : (Record(key: Key,entry: Entry),%) -> % if Record(key: Key,entry: Entry) has SETCAT
- remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
- removeDuplicates : % -> % if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate or Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
+ remove! : (RECKEYENTRY,%) -> % if RECKEYENTRY has SETCAT
+ remove! : (RECKEYENTRY,%) -> % if $ has finiteAggregate
+ removeDuplicates : % -> % 
+          if RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate 
+          or RECKEYENTRY has SETCAT 
+          and $ has finiteAggregate
  sample : () -> %
  search : (Key,%) -> Union(Entry,"failed")
- select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+ select : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ select! : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
  setelt : (%,Key,Entry) -> Entry      
  size? : (%,NonNegativeInteger) -> Boolean
  swap! : (%,Key,Key) -> Void if $ has shallowlyMutable
  table : () -> %
- table : List Record(key: Key,entry: Entry) -> %
- ?~=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ table : List RECKEYENTRY -> %
+ ?~=? : (%,%) -> Boolean 
+          if RECKEYENTRY has SETCAT 
+          or Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
  ?.? : (%,Key) -> Entry               
 \end{verbatim}
 
 These exports come from ListAggregate(a:Type)\\
-where a is  Record(key:Key,entry:Entry)
+where a is  Record(key:Key,entry:Entry)\\
+and RECKEYENTRY=Record(key: Key,entry: Entry)
 \begin{verbatim}
  children : % -> List %               
- child? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT
- coerce : % -> OutputForm if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
+ child? : (%,%) -> Boolean if RECKEYENTRY has SETCAT
+ coerce : % -> OutputForm 
+          if RECKEYENTRY has SETCAT 
+          or Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
  concat : (%,%) -> %
  concat : List % -> %                 
- concat : (Record(key: Key,entry: Entry),%) -> %
- concat : (%,Record(key: Key,entry: Entry)) -> %
+ concat : (RECKEYENTRY,%) -> %
+ concat : (%,RECKEYENTRY) -> %
  concat! : (%,%) -> %
- concat! : (%,Record(key: Key,entry: Entry)) -> %
+ concat! : (%,RECKEYENTRY) -> %
  copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
  cycleEntry : % -> %
  cycleLength : % -> NonNegativeInteger
@@ -8373,84 +8979,105 @@ where a is  Record(key:Key,entry:Entry)
  delete : (%,UniversalSegment Integer) -> %
  delete! : (%,UniversalSegment Integer) -> %
  distance : (%,%) -> Integer
- entries : % -> List Record(key: Key,entry: Entry)
- entry? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+ entries : % -> List RECKEYENTRY
+ entry? : (RECKEYENTRY,%) -> Boolean 
+          if $ has finiteAggregate 
+          and RECKEYENTRY has SETCAT
  explicitlyFinite? : % -> Boolean
- fill! : (%,Record(key: Key,entry: Entry)) -> % if $ has shallowlyMutable
- first : % -> Record(key: Key,entry: Entry)
+ fill! : (%,RECKEYENTRY) -> % if $ has shallowlyMutable
+ first : % -> RECKEYENTRY
  first : (%,NonNegativeInteger) -> %
  index? : (Integer,%) -> Boolean      
  indices : % -> List Integer          
  insert : (%,%,Integer) -> %          
- insert : (Record(key: Key,entry: Entry),%,Integer) -> %
+ insert : (RECKEYENTRY,%,Integer) -> %
  insert! : (%,%,Integer) -> %
- insert! : (Record(key: Key,entry: Entry),%,Integer) -> %
- last : % -> Record(key: Key,entry: Entry)
+ insert! : (RECKEYENTRY,%,Integer) -> %
+ last : % -> RECKEYENTRY
  last : (%,NonNegativeInteger) -> %
  leaf? : % -> Boolean                 
- leaves : % -> List Record(key: Key,entry: Entry)
- list : Record(key: Key,entry: Entry) -> %
- map : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,%) -> %
- max : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+ leaves : % -> List RECKEYENTRY
+ list : RECKEYENTRY -> %
+ map : (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,%) -> %
+ max : (%,%) -> % if RECKEYENTRY has ORDSET
  maxIndex : % -> Integer if Integer has ORDSET
- merge : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
- merge : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%,%) -> %
- merge! : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
- merge! : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%,%) -> %
- min : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+ merge : (%,%) -> % if RECKEYENTRY has ORDSET
+ merge : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%,%) -> %
+ merge! : (%,%) -> % if RECKEYENTRY has ORDSET
+ merge! : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%,%) -> %
+ min : (%,%) -> % if RECKEYENTRY has ORDSET
  minIndex : % -> Integer if Integer has ORDSET
- new : (NonNegativeInteger,Record(key: Key,entry: Entry)) -> %
+ new : (NonNegativeInteger,RECKEYENTRY) -> %
  nodes : % -> List %                  
- node? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT
- position : (Record(key: Key,entry: Entry),%,Integer) -> Integer if Record(key: Key,entry: Entry) has SETCAT
- position : (Record(key: Key,entry: Entry),%) -> Integer if Record(key: Key,entry: Entry) has SETCAT
- position : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Integer
+ node? : (%,%) -> Boolean if RECKEYENTRY has SETCAT
+ position : (RECKEYENTRY,%,Integer) -> Integer 
+          if RECKEYENTRY has SETCAT
+ position : (RECKEYENTRY,%) -> Integer 
+          if RECKEYENTRY has SETCAT
+ position : ((RECKEYENTRY -> Boolean),%) -> Integer
  possiblyInfinite? : % -> Boolean
- qelt : (%,Integer) -> Record(key: Key,entry: Entry)
- qsetelt! : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> %
- remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
- removeDuplicates! : % -> % if Record(key: Key,entry: Entry) has SETCAT
+ qelt : (%,Integer) -> RECKEYENTRY
+ qsetelt! : (%,Integer,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ remove! : ((RECKEYENTRY -> Boolean),%) -> %
+ remove! : ((RECKEYENTRY -> Boolean),%) -> % 
+          if $ has finiteAggregate
+ removeDuplicates! : % -> % if RECKEYENTRY has SETCAT
  rest : % -> %
  rest : (%,NonNegativeInteger) -> %
  reverse : % -> %                     
  reverse! : % -> % if $ has shallowlyMutable
- second : % -> Record(key: Key,entry: Entry)
- select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> %
+ second : % -> RECKEYENTRY
+ select! : ((RECKEYENTRY -> Boolean),%) -> %
  setchildren! : (%,List %) -> % if $ has shallowlyMutable
- setelt : (%,value,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- setelt : (%,first,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+ setelt : (%,value,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ setelt : (%,first,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
  setelt : (%,rest,%) -> % if $ has shallowlyMutable
- setelt : (%,last,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- setelt : (%,UniversalSegment Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- setelt : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- setfirst! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- setlast! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+ setelt : (%,last,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ setelt : (%,UniversalSegment Integer,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ setelt : (%,Integer,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ setfirst! : (%,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ setlast! : (%,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
  setrest! : (%,%) -> % if $ has shallowlyMutable
- setvalue! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
- sort : % -> % if Record(key: Key,entry: Entry) has ORDSET
- sort : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> %
- sort! : % -> % if Record(key: Key,entry: Entry) has ORDSET and $ has shallowlyMutable
- sort! : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> % if $ has shallowlyMutable
- sorted? : % -> Boolean if Record(key: Key,entry: Entry) has ORDSET
- sorted? : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> Boolean
+ setvalue! : (%,RECKEYENTRY) -> RECKEYENTRY 
+          if $ has shallowlyMutable
+ sort : % -> % if RECKEYENTRY has ORDSET
+ sort : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> %
+ sort! : % -> % 
+          if RECKEYENTRY has ORDSET 
+          and $ has shallowlyMutable
+ sort! : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> % 
+          if $ has shallowlyMutable
+ sorted? : % -> Boolean if RECKEYENTRY has ORDSET
+ sorted? : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> Boolean
  split! : (%,Integer) -> % if $ has shallowlyMutable
- swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
+ swap! : (%,Integer,Integer) -> Void 
+          if $ has shallowlyMutable
  tail : % -> %                        
- third : % -> Record(key: Key,entry: Entry)
- value : % -> Record(key: Key,entry: Entry)
+ third : % -> RECKEYENTRY
+ value : % -> RECKEYENTRY
  #? : % -> NonNegativeInteger if $ has finiteAggregate
- ?<? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
- ?<=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
- ?=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
- ?>? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
- ?>=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
- ?.value : (%,value) -> Record(key: Key,entry: Entry)
- ?.first : (%,first) -> Record(key: Key,entry: Entry)
- ?.last : (%,last) -> Record(key: Key,entry: Entry)
+ ?<? : (%,%) -> Boolean if RECKEYENTRY has ORDSET
+ ?<=? : (%,%) -> Boolean if RECKEYENTRY has ORDSET
+ ?=? : (%,%) -> Boolean 
+          if RECKEYENTRY has SETCAT 
+          or Entry has SETCAT 
+          or RECKEYENTRY has SETCAT
+ ?>? : (%,%) -> Boolean if RECKEYENTRY has ORDSET
+ ?>=? : (%,%) -> Boolean if RECKEYENTRY has ORDSET
+ ?.value : (%,value) -> RECKEYENTRY
+ ?.first : (%,first) -> RECKEYENTRY
+ ?.last : (%,last) -> RECKEYENTRY
  ?.rest : (%,rest) -> %               
  ?.? : (%,UniversalSegment Integer) -> %
- ?.? : (%,Integer) -> Record(key: Key,entry: Entry)
+ ?.? : (%,Integer) -> RECKEYENTRY
 \end{verbatim}
 
 These exports come from SetCategory:
@@ -8473,7 +9100,8 @@ These exports come from SetCategory:
 ++ as a table.	It is a poor mans version of a table:
 ++ searching for a key is a linear operation.
 AssociationListAggregate(Key:SetCategory,Entry:SetCategory): Category ==
-   Join(TableAggregate(Key, Entry), ListAggregate Record(key:Key,entry:Entry)) with
+   Join(TableAggregate(Key, Entry), _
+         ListAggregate Record(key:Key,entry:Entry)) with
       assoc: (Key, %) -> Union(Record(key:Key,entry:Entry), "failed")
 	++ assoc(k,u) returns the element x in association list u stored
 	++ with key k, or "failed" if u has no key k.
@@ -8616,7 +9244,8 @@ FiniteSetAggregate(S:SetCategory): Category ==
      size()  == 2 ** size()$S
      index i ==
        {index(j::PositiveInteger)$S for j in 1..size()$S | bit?(i-1,j-1)}
-     random()  == index((random()$Integer rem (size()$% + 1))::PositiveInteger)
+     random()  == 
+       index((random()$Integer rem (size()$% + 1))::PositiveInteger)
 
      lookup s ==
        n:PositiveInteger := 1
@@ -8671,17 +9300,17 @@ BitAggregate(): Category ==
       ++ ^ b returns the logical {\em not} of bit aggregate 
       ++ \axiom{b}.
     nand : (%, %) -> %
-      ++ nand(a,b) returns the logical {\em nand} of bit aggregates \axiom{a}
-      ++ and \axiom{b}.
+      ++ nand(a,b) returns the logical {\em nand} of bit aggregates 
+      ++ \axiom{a} and \axiom{b}.
     nor	 : (%, %) -> %
-      ++ nor(a,b) returns the logical {\em nor} of bit aggregates \axiom{a} and 
-      ++ \axiom{b}.
+      ++ nor(a,b) returns the logical {\em nor} of bit aggregates 
+      ++ \axiom{a} and \axiom{b}.
     _and : (%, %) -> %
-      ++ a and b returns the logical {\em and} of bit aggregates \axiom{a} and 
-      ++ \axiom{b}.
+      ++ a and b returns the logical {\em and} of bit aggregates 
+      ++ \axiom{a} and \axiom{b}.
     _or	 : (%, %) -> %
-      ++ a or b returns the logical {\em or} of bit aggregates \axiom{a} and 
-      ++ \axiom{b}.
+      ++ a or b returns the logical {\em or} of bit aggregates 
+      ++ \axiom{a} and \axiom{b}.
     xor	 : (%, %) -> %
       ++ xor(a,b) returns the logical {\em exclusive-or} of bit aggregates
       ++ \axiom{a} and \axiom{b}.
@@ -8771,7 +9400,8 @@ OrderedMultisetAggregate(S:OrderedSet): Category ==
 
 @
 <<OMSAGG.dotabb>>=
-"OMSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
+"OMSAGG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
 "OMSAGG" -> "MSETAGG"
 "OMSAGG" -> "PRQAGG"
 
@@ -8779,7 +9409,8 @@ OrderedMultisetAggregate(S:OrderedSet): Category ==
 <<OMSAGG.dotfull>>=
 "OrderedMultisetAggregate(a:SetCategory)"
  [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
-"OrderedMultisetAggregate(a:SetCategory)" -> "MultisetAggregate(a:SetCategory)"
+"OrderedMultisetAggregate(a:SetCategory)" ->
+    "MultisetAggregate(a:SetCategory)"
 "OrderedMultisetAggregate(a:SetCategory)" -> 
    "PriorityQueueAggregate(a:SetCategory)"
 
@@ -8838,10 +9469,10 @@ SetAggregate(S:SetCategory):
      ++ If u does not contain x, a copy of u is returned.
      ++ Note: \axiom{difference(s, x) = difference(s, {x})}.
    symmetricDifference : (%, %) -> %
-     ++ symmetricDifference(u,v) returns the set aggregate of elements x which
-     ++ are members of set aggregate u or set aggregate v but not both.
-     ++ If u and v have no elements in common, \axiom{symmetricDifference(u,v)}
-     ++ returns a copy of u.
+     ++ symmetricDifference(u,v) returns the set aggregate of elements x 
+     ++ which are members of set aggregate u or set aggregate v but 
+     ++ not both. If u and v have no elements in common, 
+     ++ \axiom{symmetricDifference(u,v)} returns a copy of u.
      ++ Note: \axiom{symmetricDifference(u,v) = 
      ++  union(difference(u,v),difference(v,u))}
    subset?     : (%, %) -> Boolean
@@ -8865,7 +9496,8 @@ SetAggregate(S:SetCategory):
 
 @
 <<SETAGG.dotabb>>=
-"SETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
+"SETAGG"
+ [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
 "SETAGG" -> "SETCAT"
 "SETAGG" -> "CLAGG"
 
@@ -8885,13 +9517,6 @@ SetAggregate(S:SetCategory):
  [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"];
 @
 
-\pagehead{OrderedSet}{ORDSET}
-\pageto{FiniteLinearAggregate}{FLAGG}
-<<ORDSET.dotfull>>=
-"OrderedSet"
- [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
-@
-
 \chapter{The bootstrap code}
 \section{ABELSG.lsp BOOTSTRAP}
 {\bf ABELSG} needs
@@ -12396,6 +13021,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<category ELAGG ExtensibleLinearAggregate>>
 <<category ELTAB Eltable>>
 <<category ELTAGG EltableAggregate>>
+<<category FINITE Finite>>
 <<category FLAGG FiniteLinearAggregate>>
 <<category FSAGG FiniteSetAggregate>>
 <<category HOAGG HomogeneousAggregate>>
@@ -12408,12 +13034,14 @@ Note that this code is not included in the generated catdef.spad file.
 <<category MDAGG MultiDictionary>>
 <<category MSETAGG MultisetAggregate>>
 <<category OMSAGG OrderedMultisetAggregate>>
+<<category ORDSET OrderedSet>>
 <<category PRQAGG PriorityQueueAggregate>>
 <<category QUAGG QueueAggregate>>
 <<category RCAGG RecursiveAggregate>>
 <<category RETRACT RetractableTo>>
 <<category SETAGG SetAggregate>>
 <<category SETCAT SetCategory>>
+<<category SGROUP SemiGroup>>
 <<category SKAGG StackAggregate>>
 <<category SRAGG StringAggregate>>
 <<category STAGG StreamAggregate>>
@@ -12446,6 +13074,7 @@ digraph dotabb {
 <<ELAGG.dotabb>>
 <<ELTAB.dotabb>>
 <<ELTAGG.dotabb>>
+<<FINITE.dotabb>>
 <<FLAGG.dotabb>>
 <<FSAGG.dotabb>>
 <<HOAGG.dotabb>>
@@ -12458,12 +13087,14 @@ digraph dotabb {
 <<MDAGG.dotabb>>
 <<MSETAGG.dotabb>>
 <<OMSAGG.dotabb>>
+<<ORDSET.dotabb>>
 <<PRQAGG.dotabb>>
 <<QUAGG.dotabb>>
 <<RCAGG.dotabb>>
 <<RETRACT.dotabb>>
 <<SETAGG.dotabb>>
 <<SETCAT.dotabb>>
+<<SGROUP.dotabb>>
 <<SKAGG.dotabb>>
 <<SRAGG.dotabb>>
 <<STAGG.dotabb>>
@@ -12499,6 +13130,7 @@ digraph dotfull {
 <<ELAGG.dotfull>>
 <<ELTAB.dotfull>>
 <<ELTAGG.dotfull>>
+<<FINITE.dotfull>>
 <<FLAGG.dotfull>>
 <<FSAGG.dotfull>>
 <<HOAGG.dotfull>>
@@ -12511,12 +13143,14 @@ digraph dotfull {
 <<MDAGG.dotfull>>
 <<MSETAGG.dotfull>>
 <<OMSAGG.dotfull>>
+<<ORDSET.dotfull>>
 <<PRQAGG.dotfull>>
 <<QUAGG.dotfull>>
 <<RCAGG.dotfull>>
 <<RETRACT.dotfull>>
 <<SETAGG.dotfull>>
 <<SETCAT.dotfull>>
+<<SGROUP.dotfull>>
 <<SKAGG.dotfull>>
 <<SRAGG.dotfull>>
 <<STAGG.dotfull>>
diff --git a/books/ps/v102finite.ps b/books/ps/v102finite.ps
new file mode 100644
index 0000000..c69cc5f
--- /dev/null
+++ b/books/ps/v102finite.ps
@@ -0,0 +1,494 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 290 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 290 368
+%%PageOrientation: Portrait
+gsave
+36 36 254 332 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+252 330 lineto
+252 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+252 330 lineto
+252 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% Finite()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 134 324 moveto
+76 324 lineto
+76 288 lineto
+134 288 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 134 324 moveto
+76 324 lineto
+76 288 lineto
+134 288 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+84 301 moveto
+(Finite\(\))
+[7.44 3.84 6.96 3.84 3.84 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+65 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% Finite()->SetCategory()
+newpath 105 288 moveto
+105 280 105 271 105 262 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 109 262 moveto
+105 252 lineto
+102 262 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 109 262 moveto
+105 252 lineto
+102 262 lineto
+closepath
+stroke
+end grestore
+% BasicType()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 93 216 moveto
+86 206 78 192 73 180 curveto
+64 160 55 136 50 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+90 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 120 216 moveto
+127 207 135 197 143 188 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+stroke
+end grestore
+% Category
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+79 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 58 72 moveto
+66 63 75 53 82 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+110 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 165 144 moveto
+166 136 166 127 166 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 152 72 moveto
+144 63 135 53 128 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v102homogeneousaggregate.ps b/books/ps/v102homogeneousaggregate.ps
index da1413b..a142482 100644
--- a/books/ps/v102homogeneousaggregate.ps
+++ b/books/ps/v102homogeneousaggregate.ps
@@ -3,7 +3,7 @@
 %%For: (root) root
 %%Title: pic
 %%Pages: (atend)
-%%BoundingBox: 36 36 362 296
+%%BoundingBox: 36 36 405 368
 %%EndComments
 save
 %%BeginProlog
@@ -180,10 +180,10 @@ def
 
 %%EndSetup
 %%Page: 1 1
-%%PageBoundingBox: 36 36 362 296
+%%PageBoundingBox: 36 36 405 368
 %%PageOrientation: Portrait
 gsave
-36 36 326 260 boxprim clip newpath
+36 36 369 332 boxprim clip newpath
 36 36 translate
 0 0 1 beginpage
 1.0000 set_scale
@@ -191,303 +191,451 @@ gsave
 0.167 0.600 1.000 graphcolor
 0.167 0.600 1.000 graphcolor
 newpath -6 -6 moveto
--6 258 lineto
-324 258 lineto
-324 -6 lineto
+-6 330 lineto
+367 330 lineto
+367 -6 lineto
 closepath
 fill
 0.167 0.600 1.000 graphcolor
 newpath -6 -6 moveto
--6 258 lineto
-324 258 lineto
-324 -6 lineto
+-6 330 lineto
+367 330 lineto
+367 -6 lineto
 closepath
 stroke
 0.000 0.000 0.000 graphcolor
 14.00 /Times-Roman set_font
 % HomogeneousAggregate(a:Type)
-[ /Rect [ 57 216 259 252 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
 gsave 10 dict begin
 filled
 0.537 0.247 0.902 nodecolor
 0.537 0.247 0.902 nodecolor
-newpath 259 252 moveto
-57 252 lineto
-57 216 lineto
-259 216 lineto
+newpath 259 324 moveto
+57 324 lineto
+57 288 lineto
+259 288 lineto
 closepath
 fill
 0.537 0.247 0.902 nodecolor
-newpath 259 252 moveto
-57 252 lineto
-57 216 lineto
-259 216 lineto
+newpath 259 324 moveto
+57 324 lineto
+57 288 lineto
+259 288 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-64 229 moveto
+64 301 moveto
 (HomogeneousAggregate\(a:Type\))
 [10.08 6.96 10.8 6.96 6.72 6.24 6.96 6.24 6.96 6.96 5.52 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
 xshow
 end grestore
 end grestore
 % Aggregate()
-[ /Rect [ 0 144 84 180 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
 gsave 10 dict begin
 filled
 0.537 0.247 0.902 nodecolor
 0.537 0.247 0.902 nodecolor
-newpath 84 180 moveto
-0 180 lineto
-0 144 lineto
-84 144 lineto
+newpath 84 252 moveto
+0 252 lineto
+0 216 lineto
+84 216 lineto
 closepath
 fill
 0.537 0.247 0.902 nodecolor
-newpath 84 180 moveto
-0 180 lineto
-0 144 lineto
-84 144 lineto
+newpath 84 252 moveto
+0 252 lineto
+0 216 lineto
+84 216 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-7 157 moveto
+7 229 moveto
 (Aggregate\(\))
 [9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 4.56]
 xshow
 end grestore
 end grestore
 % HomogeneousAggregate(a:Type)->Aggregate()
-newpath 129 216 moveto
-114 207 95 196 80 186 curveto
+newpath 129 288 moveto
+114 279 95 268 80 258 curveto
 stroke
 gsave 10 dict begin
 solid
 1 setlinewidth
 0.000 0.000 0.000 edgecolor
-newpath 81 183 moveto
-71 180 lineto
-77 188 lineto
+newpath 81 255 moveto
+71 252 lineto
+77 260 lineto
 closepath
 fill
 0.000 0.000 0.000 edgecolor
-newpath 81 183 moveto
-71 180 lineto
-77 188 lineto
+newpath 81 255 moveto
+71 252 lineto
+77 260 lineto
 closepath
 stroke
 end grestore
 % Evalable(a:Type)
-[ /Rect [ 102 144 214 180 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
 gsave 10 dict begin
 filled
 0.333 1.000 0.933 nodecolor
 0.333 1.000 0.933 nodecolor
-newpath 214 180 moveto
-102 180 lineto
-102 144 lineto
-214 144 lineto
+newpath 214 252 moveto
+102 252 lineto
+102 216 lineto
+214 216 lineto
 closepath
 fill
 0.333 1.000 0.933 nodecolor
-newpath 214 180 moveto
-102 180 lineto
-102 144 lineto
-214 144 lineto
+newpath 214 252 moveto
+102 252 lineto
+102 216 lineto
+214 216 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-110 157 moveto
+110 229 moveto
 (Evalable\(a:Type\))
 [8.64 6.72 6.24 3.84 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
 xshow
 end grestore
 end grestore
 % HomogeneousAggregate(a:Type)->Evalable(a:Type)
-newpath 158 216 moveto
-158 208 158 199 158 190 curveto
+newpath 158 288 moveto
+158 280 158 271 158 262 curveto
 stroke
 gsave 10 dict begin
 solid
 1 setlinewidth
 0.000 0.000 0.000 edgecolor
-newpath 162 190 moveto
-158 180 lineto
-155 190 lineto
+newpath 162 262 moveto
+158 252 lineto
+155 262 lineto
 closepath
 fill
 0.000 0.000 0.000 edgecolor
-newpath 162 190 moveto
-158 180 lineto
-155 190 lineto
+newpath 162 262 moveto
+158 252 lineto
+155 262 lineto
 closepath
 stroke
 end grestore
-% SetCategory
-[ /Rect [ 232 144 318 180 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
+% SetCategory()
 gsave 10 dict begin
 filled
-0.333 1.000 0.933 nodecolor
-0.333 1.000 0.933 nodecolor
-newpath 318 180 moveto
-232 180 lineto
-232 144 lineto
-318 144 lineto
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 326 252 moveto
+232 252 lineto
+232 216 lineto
+326 216 lineto
 closepath
 fill
-0.333 1.000 0.933 nodecolor
-newpath 318 180 moveto
-232 180 lineto
-232 144 lineto
-318 144 lineto
+0.537 0.247 0.902 nodecolor
+newpath 326 252 moveto
+232 252 lineto
+232 216 lineto
+326 216 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-240 157 moveto
-(SetCategory)
-[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+239 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
 xshow
 end grestore
 end grestore
-% HomogeneousAggregate(a:Type)->SetCategory
-newpath 188 216 moveto
-203 207 221 195 237 185 curveto
+% HomogeneousAggregate(a:Type)->SetCategory()
+newpath 189 288 moveto
+204 279 223 267 240 257 curveto
 stroke
 gsave 10 dict begin
 solid
 1 setlinewidth
 0.000 0.000 0.000 edgecolor
-newpath 239 188 moveto
-246 180 lineto
-236 182 lineto
+newpath 242 260 moveto
+249 252 lineto
+239 254 lineto
 closepath
 fill
 0.000 0.000 0.000 edgecolor
-newpath 239 188 moveto
-246 180 lineto
-236 182 lineto
+newpath 242 260 moveto
+249 252 lineto
+239 254 lineto
 closepath
 stroke
 end grestore
 % Type()
-[ /Rect [ 15 72 69 108 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
 gsave 10 dict begin
 filled
 0.537 0.247 0.902 nodecolor
 0.537 0.247 0.902 nodecolor
-newpath 69 108 moveto
-15 108 lineto
-15 72 lineto
-69 72 lineto
+newpath 99 108 moveto
+45 108 lineto
+45 72 lineto
+99 72 lineto
 closepath
 fill
 0.537 0.247 0.902 nodecolor
-newpath 69 108 moveto
-15 108 lineto
-15 72 lineto
-69 72 lineto
+newpath 99 108 moveto
+45 108 lineto
+45 72 lineto
+99 72 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-23 85 moveto
+53 85 moveto
 (Type\(\))
 [7.2 6.96 6.96 6.24 4.56 4.56]
 xshow
 end grestore
 end grestore
 % Aggregate()->Type()
-newpath 42 144 moveto
-42 136 42 127 42 118 curveto
+newpath 46 216 moveto
+51 191 61 147 66 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 69 118 moveto
+68 108 lineto
+63 117 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 69 118 moveto
+68 108 lineto
+63 117 lineto
+closepath
+stroke
+end grestore
+% BasicType()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 179 180 moveto
+95 180 lineto
+95 144 lineto
+179 144 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 179 180 moveto
+95 180 lineto
+95 144 lineto
+179 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+102 157 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 243 216 moveto
+224 206 201 195 181 185 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 182 182 moveto
+172 180 lineto
+179 188 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 182 182 moveto
+172 180 lineto
+179 188 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 361 180 moveto
+197 180 lineto
+197 144 lineto
+361 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 361 180 moveto
+197 180 lineto
+197 144 lineto
+361 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+205 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 279 216 moveto
+279 208 279 199 279 190 curveto
 stroke
 gsave 10 dict begin
 solid
 1 setlinewidth
 0.000 0.000 0.000 edgecolor
-newpath 46 118 moveto
-42 108 lineto
-39 118 lineto
+newpath 283 190 moveto
+279 180 lineto
+276 190 lineto
 closepath
 fill
 0.000 0.000 0.000 edgecolor
-newpath 46 118 moveto
-42 108 lineto
-39 118 lineto
+newpath 283 190 moveto
+279 180 lineto
+276 190 lineto
 closepath
 stroke
 end grestore
 % Category
-[ /Rect [ 8 0 76 36 ]
-  /Border [ 0 0 0 ]
-  /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >>
-  /Subtype /Link
-/ANN pdfmark
 gsave 10 dict begin
 filled
 0.537 0.247 0.902 nodecolor
 0.537 0.247 0.902 nodecolor
-newpath 76 36 moveto
-8 36 lineto
-8 0 lineto
-76 0 lineto
+newpath 171 36 moveto
+103 36 lineto
+103 0 lineto
+171 0 lineto
 closepath
 fill
 0.537 0.247 0.902 nodecolor
-newpath 76 36 moveto
-8 36 lineto
-8 0 lineto
-76 0 lineto
+newpath 171 36 moveto
+103 36 lineto
+103 0 lineto
+171 0 lineto
 closepath
 stroke
 gsave 10 dict begin
 0.000 0.000 0.000 nodecolor
-16 13 moveto
+111 13 moveto
 (Category)
 [9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
 xshow
 end grestore
 end grestore
+% BasicType()->Category
+newpath 137 144 moveto
+137 119 137 75 137 46 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 141 46 moveto
+137 36 lineto
+134 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 141 46 moveto
+137 36 lineto
+134 46 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 321 108 moveto
+189 108 lineto
+189 72 lineto
+321 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 321 108 moveto
+189 108 lineto
+189 72 lineto
+321 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+197 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 273 144 moveto
+270 136 267 126 264 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 267 117 moveto
+261 108 lineto
+261 119 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 267 117 moveto
+261 108 lineto
+261 119 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 225 72 moveto
+210 63 191 51 175 41 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 176 38 moveto
+166 36 lineto
+173 44 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 176 38 moveto
+166 36 lineto
+173 44 lineto
+closepath
+stroke
+end grestore
 % Type()->Category
-newpath 42 72 moveto
-42 64 42 55 42 46 curveto
+newpath 88 72 moveto
+96 63 105 53 114 44 curveto
 stroke
 gsave 10 dict begin
 solid
 1 setlinewidth
 0.000 0.000 0.000 edgecolor
-newpath 46 46 moveto
-42 36 lineto
-39 46 lineto
+newpath 117 46 moveto
+121 36 lineto
+112 41 lineto
 closepath
 fill
 0.000 0.000 0.000 edgecolor
-newpath 46 46 moveto
-42 36 lineto
-39 46 lineto
+newpath 117 46 moveto
+121 36 lineto
+112 41 lineto
 closepath
 stroke
 end grestore
diff --git a/books/ps/v102orderedset.ps b/books/ps/v102orderedset.ps
new file mode 100644
index 0000000..70e3654
--- /dev/null
+++ b/books/ps/v102orderedset.ps
@@ -0,0 +1,494 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 290 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 290 368
+%%PageOrientation: Portrait
+gsave
+36 36 254 332 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+252 330 lineto
+252 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+252 330 lineto
+252 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% OrderedSet()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 149 324 moveto
+61 324 lineto
+61 288 lineto
+149 288 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 149 324 moveto
+61 324 lineto
+61 288 lineto
+149 288 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+68 301 moveto
+(OrderedSet\(\))
+[10.08 4.56 6.96 6.24 4.8 6.24 6.96 7.68 6 3.84 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 152 252 moveto
+58 252 lineto
+58 216 lineto
+152 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+65 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% OrderedSet()->SetCategory()
+newpath 105 288 moveto
+105 280 105 271 105 262 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 109 262 moveto
+105 252 lineto
+102 262 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 109 262 moveto
+105 252 lineto
+102 262 lineto
+closepath
+stroke
+end grestore
+% BasicType()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 93 216 moveto
+86 206 78 192 73 180 curveto
+64 160 55 136 50 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 53 117 moveto
+47 108 lineto
+47 119 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+90 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 120 216 moveto
+127 207 135 197 143 188 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 146 190 moveto
+149 180 lineto
+140 186 lineto
+closepath
+stroke
+end grestore
+% Category
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+79 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 58 72 moveto
+66 63 75 53 82 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+110 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 165 144 moveto
+166 136 166 127 166 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 152 72 moveto
+144 63 135 53 128 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v102semigroup.ps b/books/ps/v102semigroup.ps
new file mode 100644
index 0000000..eded6fb
--- /dev/null
+++ b/books/ps/v102semigroup.ps
@@ -0,0 +1,632 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 514 368
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+	dup 1 exch div /InvScaleFactor exch def
+	dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 514 368
+%%PageOrientation: Portrait
+gsave
+36 36 478 332 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+476 330 lineto
+476 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 330 lineto
+476 330 lineto
+476 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% SemiGroup()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 300 324 moveto
+210 324 lineto
+210 288 lineto
+300 288 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 300 324 moveto
+210 324 lineto
+210 288 lineto
+300 288 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+218 301 moveto
+(SemiGroup\(\))
+[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 211 252 moveto
+117 252 lineto
+117 216 lineto
+211 216 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 211 252 moveto
+117 252 lineto
+117 216 lineto
+211 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+124 229 moveto
+(SetCategory\(\))
+[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SemiGroup()->SetCategory()
+newpath 232 288 moveto
+221 279 207 268 195 258 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 197 255 moveto
+187 252 lineto
+193 261 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 197 255 moveto
+187 252 lineto
+193 261 lineto
+closepath
+stroke
+end grestore
+% RepeatedSquaring(SemiGroup)
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 442 252 moveto
+250 252 lineto
+250 216 lineto
+442 216 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 442 252 moveto
+250 252 lineto
+250 216 lineto
+442 216 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+258 229 moveto
+(RepeatedSquaring\(SemiGroup\))
+[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 7.68 6.72 6.96 6.24 5.04 3.84 6.96 6.96 4.56 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56]
+xshow
+end grestore
+end grestore
+% SemiGroup()->RepeatedSquaring(SemiGroup)
+newpath 278 288 moveto
+289 279 303 268 315 258 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 317 261 moveto
+323 252 lineto
+313 255 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 317 261 moveto
+323 252 lineto
+313 255 lineto
+closepath
+stroke
+end grestore
+% BasicType()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 84 108 moveto
+0 108 lineto
+0 72 lineto
+84 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 85 moveto
+(BasicType\(\))
+[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->BasicType()
+newpath 121 216 moveto
+104 207 86 195 73 180 curveto
+59 162 51 137 47 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 50 117 moveto
+45 108 lineto
+44 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 50 117 moveto
+45 108 lineto
+44 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(OutputForm)
+gsave 10 dict begin
+filled
+0.404 0.667 0.545 nodecolor
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+fill
+0.404 0.667 0.545 nodecolor
+newpath 246 180 moveto
+82 180 lineto
+82 144 lineto
+246 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+90 157 moveto
+(CoercibleTo\(OutputForm\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56]
+xshow
+end grestore
+end grestore
+% SetCategory()->CoercibleTo(OutputForm)
+newpath 164 216 moveto
+164 208 164 199 164 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 168 190 moveto
+164 180 lineto
+161 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 168 190 moveto
+164 180 lineto
+161 190 lineto
+closepath
+stroke
+end grestore
+% RepeatedSquaring(a:SetCategory)
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 470 180 moveto
+264 180 lineto
+264 144 lineto
+470 144 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 470 180 moveto
+264 180 lineto
+264 144 lineto
+470 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+271 157 moveto
+(RepeatedSquaring\(a:SetCategory\))
+[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 7.68 6.72 6.96 6.24 5.04 3.84 6.96 6.96 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56]
+xshow
+end grestore
+end grestore
+% RepeatedSquaring(SemiGroup)->RepeatedSquaring(a:SetCategory)
+newpath 351 216 moveto
+354 208 357 199 359 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 362 191 moveto
+362 180 lineto
+356 189 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 362 191 moveto
+362 180 lineto
+356 189 lineto
+closepath
+stroke
+end grestore
+% Category
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 139 36 moveto
+71 36 lineto
+71 0 lineto
+139 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+79 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% BasicType()->Category
+newpath 58 72 moveto
+66 63 75 53 82 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 85 46 moveto
+89 36 lineto
+80 41 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 234 108 moveto
+102 108 lineto
+102 72 lineto
+234 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+110 85 moveto
+(CoercibleTo\(a:Type\))
+[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% CoercibleTo(OutputForm)->CoercibleTo(a:Type)
+newpath 165 144 moveto
+166 136 166 127 166 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 169 118 moveto
+167 108 lineto
+163 118 lineto
+closepath
+stroke
+end grestore
+% CoercibleTo(a:Type)->Category
+newpath 152 72 moveto
+144 63 135 53 128 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 130 41 moveto
+121 36 lineto
+125 46 lineto
+closepath
+stroke
+end grestore
+% Package
+gsave 10 dict begin
+filled
+0.333 1.000 0.933 nodecolor
+0.333 1.000 0.933 nodecolor
+newpath 398 108 moveto
+336 108 lineto
+336 72 lineto
+398 72 lineto
+closepath
+fill
+0.333 1.000 0.933 nodecolor
+newpath 398 108 moveto
+336 108 lineto
+336 72 lineto
+398 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+343 85 moveto
+(Package)
+[7.44 6.24 6 6.96 6.24 6.72 6.24]
+xshow
+end grestore
+end grestore
+% RepeatedSquaring(a:SetCategory)->Package
+newpath 367 144 moveto
+367 136 367 127 367 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 371 118 moveto
+367 108 lineto
+364 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 371 118 moveto
+367 108 lineto
+364 118 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index 74e0af1..4671a53 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+20080918 tpd books/ps/v102semigroup.ps diagram SGROUP
+20080918 tpd books/ps/v102orderedset.ps diagram ORDSET
+20080918 tpd books/ps/v102finite.ps diagram FINITE
+20080918 tpd src/algebra/catdef.spad remove FINITE, ORDSET, SGROUP
+20080918 tpd books/ps/v102homogeneousaggregate.ps corrected diagram
+20080918 tpd books/bookvol10.2 add FINITE, ORDSET, SGROUP
 20080917 tpd src/algebra/catdef.spad remove BASTYPE, SETCAT, ABELSG
 20080917 tpd books/ps/v102abeliansemigroup.ps ABELSG graph
 20080917 tpd books/ps/v102setcategory.ps SETCAT graph
diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet
index bd42900..6b2ac80 100644
--- a/src/algebra/catdef.spad.pamphlet
+++ b/src/algebra/catdef.spad.pamphlet
@@ -2012,47 +2012,6 @@ Field(): Category == Join(EuclideanDomain,UniqueFactorizationDomain,
       divide(x,y) == [x / y,0]
 
 @
-\section{category FINITE Finite}
-<<dot>>=
-"FINITE" -> "SETCAT"
-"Finite()" -> "SetCategory()"
-@
-<<category FINITE Finite>>=
-)abbrev category FINITE Finite
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ The category of domains composed of a finite set of elements.
-++ We include the functions \spadfun{lookup} and \spadfun{index} to give a bijection
-++ between the finite set and an initial segment of positive integers.
-++
-++ Axioms:
-++   \spad{lookup(index(n)) = n}
-++   \spad{index(lookup(s)) = s}
-
-Finite(): Category == SetCategory with
-    --operations
-      size: () ->  NonNegativeInteger
-        ++ size() returns the number of elements in the set.
-      index: PositiveInteger -> %
-        ++ index(i) takes a positive integer i less than or equal
-        ++ to \spad{size()} and
-        ++ returns the \spad{i}-th element of the set. This operation establishs a bijection
-        ++ between the elements of the finite set and \spad{1..size()}.
-      lookup: % -> PositiveInteger
-        ++ lookup(x) returns a positive integer such that
-        ++ \spad{x = index lookup x}.
-      random: () -> %
-        ++ random() returns a random element from the set.
-
-@
 \section{category FLINEXP FullyLinearlyExplicitRingOver}
 <<dot>>=
 "FLINEXP" -> "LINEXP"
@@ -3471,58 +3430,6 @@ Note that this code is not included in the generated catdef.spad file.
                1 6 0 0 18 1 0 16 0 17 1 0 8 0 10 1 0 8 0 11 1 0 0 0 19))))))
    (QUOTE |lookupComplete|))) 
 @
-\section{category ORDSET OrderedSet}
-<<dot>>=
-"ORDSET" -> "SETCAT"
-"OrderedSet()" -> "SetCategory()"
-@
-<<category ORDSET OrderedSet>>=
-)abbrev category ORDSET OrderedSet
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ The class of totally ordered sets, that is, sets such that for each pair of elements \spad{(a,b)}
-++ exactly one of the following relations holds \spad{a<b or a=b or b<a}
-++ and the relation is transitive, i.e.  \spad{a<b and b<c => a<c}.
-
-OrderedSet(): Category == SetCategory with
-  --operations
-    "<": (%,%) -> Boolean
-      ++ x < y is a strict total ordering on the elements of the set.
-    ">":         (%, %) -> Boolean
-      ++ x > y is a greater than test.
-    ">=":        (%, %) -> Boolean
-      ++ x >= y is a greater than or equal test.
-    "<=":        (%, %) -> Boolean
-      ++ x <= y is a less than or equal test.
-
-    max: (%,%) -> %
-      ++ max(x,y) returns the maximum of x and y relative to "<".
-    min: (%,%) -> %
-      ++ min(x,y) returns the minimum of x and y relative to "<".
-  add
-  --declarations
-    x,y: %
-  --definitions
-  -- These really ought to become some sort of macro
-    max(x,y) ==
-      x > y => x
-      y
-    min(x,y) ==
-      x > y => y
-      x
-    ((x: %) >  (y: %)) : Boolean == y < x
-    ((x: %) >= (y: %)) : Boolean == not (x < y)
-    ((x: %) <= (y: %)) : Boolean == not (y < x)
-
-@
 \section{category PDRING PartialDifferentialRing}
 <<dot>>=
 "PDRING" -> "RING"
@@ -3957,51 +3864,6 @@ Note that this code is not included in the generated catdef.spad file.
 (MAKEPROP (QUOTE |Rng|) (QUOTE NILADIC) T) 
 
 @
-\section{category SGROUP SemiGroup}
-A Semigroup is defined as a set $S$ with a binary multiplicative
-operator ``*''. A Semigroup $G(S,*)$ is:
-\begin{itemize}
-\item a set $S$ which can be null
-\item a binary multiplicative operator ``*''
-\item associative. $\forall a,b,c \in S, a*(b*c) = (a*b)*c$
-\end{itemize}
-<<dot>>=
-"SGROUP" -> "SETCAT"
-"SemiGroup()" -> "SetCategory()"
-@
-<<category SGROUP SemiGroup>>=
-)abbrev category SGROUP SemiGroup
-++ Author:
-++ Date Created:
-++ Date Last Updated:
-++ Basic Functions:
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description:
-++ the class of all multiplicative semigroups, i.e. a set
-++ with an associative operation \spadop{*}.
-++
-++ Axioms:
-++    \spad{associative("*":(%,%)->%)}\tab{30}\spad{ (x*y)*z = x*(y*z)}
-++
-++ Conditional attributes:
-++    \spad{commutative("*":(%,%)->%)}\tab{30}\spad{ x*y = y*x }
-SemiGroup(): Category == SetCategory with
-    --operations
-      "*": (%,%) -> %                  ++ x*y returns the product of x and y.
-      "**": (%,PositiveInteger) -> %   ++ x**n returns the repeated product
-                                       ++ of x n times, i.e. exponentiation.
-      "^": (%,PositiveInteger) -> %    ++ x^n returns the repeated product
-                                       ++ of x n times, i.e. exponentiation.
-    add
-      import RepeatedSquaring(%)
-      x:% ** n:PositiveInteger == expt(x,n)
-      _^(x:%, n:PositiveInteger):% == x ** n
-
-@
 \section{category STEP StepThrough}
 <<dot>>=
 "STEP" -> "SETCAT"
@@ -4322,7 +4184,6 @@ VectorSpace(S:Field): Category ==  Module(S) with
 <<license>>
 
 <<category STEP StepThrough>>
-<<category SGROUP SemiGroup>>
 <<category MONOID Monoid>>
 <<category GROUP Group>>
 <<category ABELMON AbelianMonoid>>
@@ -4349,9 +4210,7 @@ VectorSpace(S:Field): Category ==  Module(S) with
 <<category EUCDOM EuclideanDomain>>
 <<category DIVRING DivisionRing>>
 <<category FIELD Field>>
-<<category FINITE Finite>>
 <<category VSPACE VectorSpace>>
-<<category ORDSET OrderedSet>>
 <<category ORDFIN OrderedFinite>>
 <<category ORDMON OrderedMonoid>>
 <<category OASGP OrderedAbelianSemiGroup>>



From MAILER-DAEMON Mon Sep 22 01:40:09 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Khe9Z-00042h-Fq
	for mharc-axiom-developer@gnu.org; Mon, 22 Sep 2008 01:40:09 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Khe9V-00041c-Vg
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 01:40:06 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Khe9L-0003yh-Kx
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 01:40:04 -0400
Received: from [199.232.76.173] (port=49477 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Khe9L-0003yY-93
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 01:39:55 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:60593
	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 1Khe9I-0007Fn-Nk
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 01:39:55 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8M5dnr3009464;
	Mon, 22 Sep 2008 00:39:49 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8M5dmPA009461;
	Mon, 22 Sep 2008 00:39:48 -0500
Date: Mon, 22 Sep 2008 00:39:48 -0500
Message-Id: <200809220539.m8M5dmPA009461@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 20080921.01.tpd.patch (September 2008 release
	fixups)
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, 22 Sep 2008 05:40:07 -0000

Update the release banner, hyperdoc What's New page, etc.
=========================================================================
diff --git a/Makefile b/Makefile
index ad91886..db728f6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION="Axiom (July 2008)"
+VERSION="Axiom (September 2008)"
 SPD=$(shell pwd)
 SYS=$(notdir $(AXIOM))
 SPAD=${SPD}/mnt/${SYS}
diff --git a/Makefile.pamphlet b/Makefile.pamphlet
index 9e28029..cb9ee31 100644
--- a/Makefile.pamphlet
+++ b/Makefile.pamphlet
@@ -292,7 +292,7 @@ The DOCUMENT variable is now set to replace the direct call
 to the document command. This will allow it to be
 changed on the command line.
 <<environment>>=
-VERSION="Axiom (July 2008)"
+VERSION="Axiom (September 2008)"
 SPD=$(shell pwd)
 SYS=$(notdir $(AXIOM))
 SPAD=${SPD}/mnt/${SYS}
diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 9c3ebe5..377b5af 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -338,13 +338,13 @@ BasicType(): Category == with
 @
 <<BASTYPE.dotabb>>=
 "BASTYPE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BASTYPE"];
 "BASTYPE" -> "CATEGORY"
 
 @
 <<BASTYPE.dotfull>>=
 "BasicType()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BASTYPE"];
 "BasicType()" -> "Category"
 
 @
@@ -393,17 +393,17 @@ CoercibleTo(S:Type): Category == with
 @
 <<KOERCE.dotabb>>=
 "KOERCE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=KOERCE"];
 "KOERCE" -> "CATEGORY"
 
 @
 <<KOERCE.dotfull>>=
 "CoercibleTo(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=KOERCE"];
 "CoercibleTo(a:Type)" -> "Category"
 
 "CoercibleTo(OutputForm)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KOERCE"];
 "CoercibleTo(OutputForm)" ->
     "CoercibleTo(a:Type)"
 
@@ -454,73 +454,73 @@ ConvertibleTo(S:Type): Category == with
 @
 <<KONVERT.dotabb>>=
 "KONVERT"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "KONVERT" -> "CATEGORY"
 
 @
 <<KONVERT.dotfull>>=
 "ConvertibleTo(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(a:Type)" -> "Category"
 
 "ConvertibleTo(DoubleFloat)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(DoubleFloat)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Float)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Float)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(InputForm)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(InputForm)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Integer)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Integer)" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Integer))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Integer))" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Float))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Float))" -> "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Complex(Float))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Complex(Float))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Complex(DoubleFloat))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Complex(DoubleFloat))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(String)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(String)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Symbol)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Symbol)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(SExpression)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(SExpression)" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(Pattern(Base))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(Pattern(Base))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(List(Integer))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(List(Integer))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(List(Character))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(List(Character))" ->  "ConvertibleTo(a:Type)"
 
 "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=KONVERT"];
 "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))" ->
     "ConvertibleTo(a:Type)"
 @
@@ -579,13 +579,13 @@ Eltable(S:SetCategory, Index:Type): Category == with
 
 @
 <<ELTAB.dotabb>>=
-"ELTAB" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"];
+"ELTAB" [color=lightblue,href="bookvol10.2.pdf#nameddest=ELTAB"];
 "ELTAB" -> "CATEGORY"
 
 @
 <<ELTAB.dotfull>>=
 "Eltable(a:SetCategory,b:Type)" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ELTAB"];
 "Eltable(a:SetCategory,b:Type)" -> "Category"
 
 @
@@ -654,45 +654,45 @@ RetractableTo(S: Type): Category == with
 @
 <<RETRACT.dotabb>>=
 "RETRACT"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RETRACT" -> "CATEGORY"
 
 @
 <<RETRACT.dotfull>>=
 "RetractableTo(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(a:Type)" -> "Category"
 
 "RetractableTo(SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(SetCategory)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Symbol)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(Symbol)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Integer)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(Integer)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(NonNegativeInteger)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(NonNegativeInteger)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Fraction(Integer))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(Fraction(Integer))" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Float)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(Float)" -> "RetractableTo(a:Type)"
 
 "RetractableTo(Kernel(ExpressionSpace))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(Kernel(ExpressionSpace))" -> "RetractableTo(a:Type)"
 
 "RetractableTo(CommutativeRing)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
 "RetractableTo(CommutativeRing)" -> "RetractableTo(a:Type)"
 @
 <<RETRACT.dotpic>>=
@@ -726,12 +726,12 @@ Type(): Category == with nil
 
 @
 <<TYPE.dotabb>>=
-"TYPE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"];
+"TYPE" [color=lightblue,href="bookvol10.2.pdf#nameddest=TYPE"];
 "TYPE" -> "CATEGORY"
 
 @
 <<TYPE.dotfull>>=
-"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"];
+"Type()" [color=lightblue,href="bookvol10.2.pdf#nameddest=TYPE"];
 "Type()" -> "Category"
 
 @
@@ -833,13 +833,13 @@ Aggregate: Category == Type with
 
 @
 <<AGG.dotabb>>=
-"AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"];
+"AGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=AGG"];
 "AGG" -> "TYPE"
 
 @
 <<AGG.dotfull>>=
 "Aggregate()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=AGG"];
 "Aggregate()" -> "Type()"
 
 @
@@ -945,13 +945,13 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category ==
 @
 <<ELTAGG.dotabb>>=
 "ELTAGG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ELTAGG"];
 "ELTAGG" -> "ELTAB"
 
 @
 <<ELTAGG.dotfull>>=
 "EltableAggregate(a:SetCategory,b:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ELTAGG"];
 "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)"
 
 @
@@ -1043,14 +1043,14 @@ SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with
 @
 <<SETCAT.dotabb>>=
 "SETCAT"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SETCAT"];
 "SETCAT" -> "BASTYPE"
 "SETCAT" -> "KOERCE"
 
 @
 <<SETCAT.dotfull>>=
 "SetCategory()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SETCAT"];
 "SetCategory()" -> "BasicType()"
 "SetCategory()" -> "CoercibleTo(OutputForm)"
 
@@ -1150,14 +1150,14 @@ AbelianSemiGroup(): Category == SetCategory with
 @
 <<ABELSG.dotabb>>=
 "ABELSG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELSG"];
 "ABELSG" -> "SETCAT"
 "ABELSG" -> "REPDB"
 
 @
 <<ABELSG.dotfull>>=
 "AbelianSemiGroup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELSG"];
 "AbelianSemiGroup()" -> "SetCategory()"
 "AbelianSemiGroup()" -> "RepeatedDoubling(SetCategory)"
 
@@ -1275,13 +1275,13 @@ Finite(): Category == SetCategory with
 @
 <<FINITE.dotabb>>=
 "FINITE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FINITE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=FINITE"];
 "FINITE" -> "SETCAT"
 
 @
 <<FINITE.dotfull>>=
 "Finite()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FINITE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=FINITE"];
 "Finite()" -> "SetCategory()"
 
 @
@@ -1485,13 +1485,13 @@ HomogeneousAggregate(S:Type): Category == Aggregate with
 
 @
 <<HOAGG.dotabb>>=
-"HOAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"];
+"HOAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=HOAGG"];
 "HOAGG" -> "AGG"
 
 @
 <<HOAGG.dotfull>>=
 "HomogeneousAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=HOAGG"];
 "HomogeneousAggregate(a:Type)" -> "Aggregate()"
 
 @
@@ -1629,13 +1629,13 @@ OrderedSet(): Category == SetCategory with
 @
 <<ORDSET.dotabb>>=
 "ORDSET" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDSET"];
 "ORDSET" -> "SETCAT"
 
 @
 <<ORDSET.dotfull>>=
 "OrderedSet()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDSET"];
 "OrderedSet()" -> "SetCategory()"
 
 @
@@ -1749,13 +1749,13 @@ SemiGroup(): Category == SetCategory with
 @
 <<SGROUP.dotabb>>=
 "SGROUP"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SGROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SGROUP"];
 "SGROUP" -> "SETCAT"
 
 @
 <<SGROUP.dotfull>>=
 "SemiGroup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SGROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SGROUP"];
 "SemiGroup()" -> "SetCategory()"
 "SemiGroup()" -> "RepeatedSquaring(SemiGroup)"
 
@@ -1861,13 +1861,13 @@ StepThrough(): Category == SetCategory with
 
 @
 <<STEP.dotabb>>=
-"STEP" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STEP"];
+"STEP" [color=lightblue,href="bookvol10.2.pdf#nameddest=STEP"];
 "STEP" -> "SETCAT"
 
 @
 <<STEP.dotfull>>=
 "StepThrough()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STEP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=STEP"];
 "StepThrough()" -> "SetCategory()"
 
 @
@@ -1989,13 +1989,13 @@ AbelianMonoid(): Category == AbelianSemiGroup with
 @
 <<ABELMON.dotabb>>=
 "ABELMON"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELMON"];
 "ABELMON" -> "ABELSG"
 
 @
 <<ABELMON.dotfull>>=
 "AbelianMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELMON"];
 "AbelianMonoid()" -> "AbelianSemiGroup()"
 
 @
@@ -2167,17 +2167,17 @@ BagAggregate(S:Type): Category == HomogeneousAggregate S with
 
 @
 <<BGAGG.dotabb>>=
-"BGAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
+"BGAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=BGAGG"];
 "BGAGG" -> "HOAGG"
 
 @
 <<BGAGG.dotfull>>=
 "BagAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BGAGG"];
 "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
 "BagAggregate(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=BGAGG"];
 "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)"
 
 @
@@ -2403,17 +2403,17 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with
 
 @
 <<CLAGG.dotabb>>=
-"CLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
+"CLAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=CLAGG"];
 "CLAGG" -> "HOAGG"
 
 @
 <<CLAGG.dotfull>>=
 "Collection(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=CLAGG"];
 "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
 "Collection(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=CLAGG"];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
 @
@@ -2654,26 +2654,26 @@ IndexedAggregate(Index: SetCategory, Entry: Type): Category ==
 
 @
 <<IXAGG.dotabb>>=
-"IXAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
+"IXAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=IXAGG"];
 "IXAGG" -> "HOAGG"
 "IXAGG" -> "ELTAGG"
 
 @
 <<IXAGG.dotfull>>=
 "IndexedAggregate(a:SetCategory,b:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=IXAGG"];
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "HomogeneousAggregate(a:Type)"
 "IndexedAggregate(a:SetCategory,b:Type)" -> 
     "EltableAggregate(a:SetCategory,b:Type)"
 
 "IndexedAggregate(a:SetCategory,b:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=IXAGG"];
 "IndexedAggregate(a:SetCategory,b:SetCategory)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
 "IndexedAggregate(b:Integer,a:Type)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=IXAGG"];
 "IndexedAggregate(b:Integer,a:Type)" ->
     "IndexedAggregate(a:SetCategory,b:Type)"
 
@@ -2814,13 +2814,13 @@ Monoid(): Category == SemiGroup with
 @
 <<MONOID.dotabb>>=
 "MONOID"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MONOID"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=MONOID"];
 "MONOID" -> "SGROUP"
 
 @
 <<MONOID.dotfull>>=
 "Monoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MONOID"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=MONOID"];
 "Monoid()" -> "SemiGroup()"
 
 @
@@ -2932,14 +2932,14 @@ OrderedFinite(): Category == Join(OrderedSet, Finite)
 @
 <<ORDFIN.dotabb>>=
 "ORDFIN"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDFIN"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDFIN"];
 "ORDFIN" -> "ORDSET"
 "ORDFIN" -> "FINITE"
 
 @
 <<ORDFIN.dotfull>>=
 "OrderedFinite()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDFIN"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDFIN"];
 "OrderedFinite()" -> "OrderedSet()"
 "OrderedFinite()" -> "Finite()"
 
@@ -3152,13 +3152,13 @@ RecursiveAggregate(S:Type): Category == HomogeneousAggregate(S) with
 
 @
 <<RCAGG.dotabb>>=
-"RCAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"];
+"RCAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=RCAGG"];
 "RCAGG" -> "HOAGG"
 
 @
 <<RCAGG.dotfull>>=
 "RecursiveAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RCAGG"];
 "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)"
 
 @
@@ -3421,13 +3421,13 @@ BinaryRecursiveAggregate(S:Type):Category == RecursiveAggregate S with
 
 @
 <<BRAGG.dotabb>>=
-"BRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"];
+"BRAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=BRAGG"];
 "BRAGG" -> "RCAGG"
 
 @
 <<BRAGG.dotfull>>=
 "BinaryRecursiveAggregate(a:Type)" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BRAGG"];
 "BinaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -3527,13 +3527,13 @@ CancellationAbelianMonoid(): Category == AbelianMonoid with
 @
 <<CABMON.dotabb>>=
 "CABMON"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CABMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=CABMON"];
 "CABMON" -> "ABELMON"
 
 @
 <<CABMON.dotfull>>=
 "CancellationAbelianMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CABMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=CABMON"];
 "CancellationAbelianMonoid()" -> "AbelianMonoid()"
 
 @
@@ -3752,14 +3752,14 @@ DictionaryOperations(S:SetCategory): Category ==
 
 @
 <<DIOPS.dotabb>>=
-"DIOPS" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"];
+"DIOPS" [color=lightblue,href="bookvol10.2.pdf#nameddest=DIOPS"];
 "DIOPS" -> "BGAGG"
 "DIOPS" -> "CLAGG"
 
 @
 <<DIOPS.dotfull>>=
 "DictionaryOperations(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=DIOPS"];
 "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)"
 "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)"
 
@@ -3971,13 +3971,13 @@ DoublyLinkedAggregate(S:Type): Category == RecursiveAggregate S with
 
 @
 <<DLAGG.dotabb>>=
-"DLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"];
+"DLAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=DLAGG"];
 "DLAGG" -> "RCAGG"
 
 @
 <<DLAGG.dotfull>>=
 "DoublyLinkedAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=DLAGG"];
 "DoublyLinkedAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -4119,13 +4119,13 @@ Group(): Category == Monoid with
 @
 <<GROUP.dotabb>>=
 "GROUP"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=GROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=GROUP"];
 "GROUP" -> "MONOID"
 
 @
 <<GROUP.dotfull>>=
 "Group()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=GROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=GROUP"];
 "Group()" -> "Monoid()"
 
 @
@@ -4423,14 +4423,14 @@ LinearAggregate(S:Type): Category ==
 
 @
 <<LNAGG.dotabb>>=
-"LNAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"];
+"LNAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=LNAGG"];
 "LNAGG" -> "IXAGG"
 "LNAGG" -> "CLAGG"
 
 @
 <<LNAGG.dotfull>>=
 "LinearAggregate(a:Type)" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=LNAGG"];
 "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)"
 "LinearAggregate(a:Type)" -> "Collection(a:Type)"
 
@@ -4543,14 +4543,14 @@ OrderedAbelianSemiGroup(): Category == Join(OrderedSet, AbelianMonoid)
 @
 <<OASGP.dotabb>>=
 "OASGP"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OASGP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OASGP"];
 "OASGP" -> "ORDSET"
 "OASGP" -> "ABELMON"
 
 @
 <<OASGP.dotfull>>=
 "OrderedAbelianSemiGroup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OASGP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OASGP"];
 "OrderedAbelianSemiGroup()" -> "OrderedSet()"
 "OrderedAbelianSemiGroup()" -> "AbelianMonoid()"
 
@@ -4683,16 +4683,17 @@ OrderedMonoid(): Category == Join(OrderedSet, Monoid)
 @
 <<ORDMON.dotabb>>=
 "ORDMON"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDMON"];
 "ORDMON" -> "ORDSET"
 "ORDMON" -> "MONOID"
 
 @
 <<ORDMON.dotfull>>=
 "OrderedMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDMON"];
 "OrderedMonoid()" -> "OrderedSet()"
 "OrderedMonoid()" -> "Monoid()"
+
 @
 <<ORDMON.dotpic>>=
 digraph pic {
@@ -4701,12 +4702,12 @@ digraph pic {
  node [shape=box, color=white, style=filled];
 
 "OrderedMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDMON"];
 "OrderedMonoid()" -> "OrderedSet()"
 "OrderedMonoid()" -> "Monoid()"
 
 "OrderedSet()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDSET"];
 "OrderedSet()" -> "SetCategory()"
 
 "Monoid()" [color=lightblue];
@@ -4862,21 +4863,21 @@ PriorityQueueAggregate(S:OrderedSet): Category == BagAggregate S with
 @
 <<PRQAGG.dotabb>>=
 "PRQAGG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=PRQAGG"];
 "PRQAGG" -> "BGAGG"
 
 @
 <<PRQAGG.dotfull>>=
 "PriorityQueueAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "PriorityQueueAggregate(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:SetCategory)" -> "PriorityQueueAggregate(a:Type)"
 
 "PriorityQueueAggregate(a:OrderedSet)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=PRQAGG"];
 "PriorityQueueAggregate(a:OrderedSet)" ->
    "PriorityQueueAggregate(a:SetCategory)"
 
@@ -5044,17 +5045,17 @@ QueueAggregate(S:Type): Category == BagAggregate S with
 
 @
 <<QUAGG.dotabb>>=
-"QUAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
+"QUAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=QUAGG"];
 "QUAGG" -> "BGAGG"
 
 @
 <<QUAGG.dotfull>>=
 "QueueAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=QUAGG"];
 "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "QueueAggregate(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=QUAGG"];
 "QueueAggregate(a:SetCategory)" -> "QueueAggregate(a:Type)"
 
 @
@@ -5307,14 +5308,14 @@ SetAggregate(S:SetCategory):
 @
 <<SETAGG.dotabb>>=
 "SETAGG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SETAGG"];
 "SETAGG" -> "SETCAT"
 "SETAGG" -> "CLAGG"
 
 @
 <<SETAGG.dotfull>>=
 "SetAggregate(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SETAGG"];
 "SetAggregate(a:SetCategory)" -> "SetCategory()"
 "SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)"
 
@@ -5343,7 +5344,7 @@ digraph pic {
 "CoercibleTo(a:Type)" -> "Category"
 
 "Collection(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=CLAGG"];
 "Collection(a:SetCategory)" -> "Collection(a:Type)"
 
 "Collection(a:Type)" [color=lightblue];
@@ -5489,17 +5490,17 @@ StackAggregate(S:Type): Category == BagAggregate S with
 
 @
 <<SKAGG.dotabb>>=
-"SKAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
+"SKAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=SKAGG"];
 "SKAGG" -> "BGAGG"
 
 @
 <<SKAGG.dotfull>>=
 "StackAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SKAGG"];
 "StackAggregate(a:Type)" -> "BagAggregate(a:Type)"
 
 "StackAggregate(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=SKAGG"];
 "StackAggregate(a:SetCategory)" -> "StackAggregate(a:Type)"
 
 @
@@ -5947,13 +5948,13 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with
 
 @
 <<URAGG.dotabb>>=
-"URAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"];
+"URAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=URAGG"];
 "URAGG" -> "RCAGG"
 
 @
 <<URAGG.dotfull>>=
 "UnaryRecursiveAggregate(a:Type)" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=URAGG"];
 "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)"
 
 @
@@ -6080,13 +6081,13 @@ AbelianGroup(): Category == CancellationAbelianMonoid with
 @
 <<ABELGRP.dotabb>>=
 "ABELGRP"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELGRP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELGRP"];
 "ABELGRP" -> "CABMON"
 
 @
 <<ABELGRP.dotfull>>=
 "AbelianGroup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELGRP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ABELGRP"];
 "AbelianGroup()" -> "CancellationAbelianMonoid()"
 
 @
@@ -6284,17 +6285,17 @@ Dictionary(S:SetCategory): Category ==
 
 @
 <<DIAGG.dotabb>>=
-"DIAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
+"DIAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=DIAGG"];
 "DIAGG" -> "DIOPS"
 
 @
 <<DIAGG.dotfull>>=
 "Dictionary(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=DIAGG"];
 "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
 "Dictionary(Record(a:SetCategory,b:SetCategory))"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=DIAGG"];
 "Dictionary(Record(a:SetCategory,b:SetCategory))" ->
     "Dictionary(a:SetCategory)"
 
@@ -6517,19 +6518,19 @@ DequeueAggregate(S:Type):
 
 @
 <<DQAGG.dotabb>>=
-"DQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
+"DQAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=DQAGG"];
 "DQAGG" -> "SKAGG"
 "DQAGG" -> "QUAGG"
 
 @
 <<DQAGG.dotfull>>=
 "DequeueAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=DQAGG"];
 "DequeueAggregate(a:Type)" -> "StackAggregate(a:Type)"
 "DequeueAggregate(a:Type)" -> "QueueAggregate(a:Type)"
 
 "DequeueAggregate(a:SetCategory)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=DQAGG"];
 "DequeueAggregate(a:SetCategory)" -> "DequeueAggregate(a:Type)"
 
 @
@@ -6805,13 +6806,13 @@ ExtensibleLinearAggregate(S:Type):Category == LinearAggregate S with
 
 @
 <<ELAGG.dotabb>>=
-"ELAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"];
+"ELAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=ELAGG"];
 "ELAGG" -> "LNAGG"
 
 @
 <<ELAGG.dotfull>>=
 "ExtensibleLinearAggregate(a:Type)" 
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ELAGG"];
 "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
 @
@@ -7133,13 +7134,13 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with
 
 @
 <<FLAGG.dotabb>>=
-"FLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"];
+"FLAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=FLAGG"];
 "FLAGG" -> "LNAGG"
 
 @
 <<FLAGG.dotfull>>=
 "FiniteLinearAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=FLAGG"];
 "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
 @
@@ -7329,13 +7330,13 @@ MultiDictionary(S:SetCategory): Category == DictionaryOperations S with
 
 @
 <<MDAGG.dotabb>>=
-"MDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"];
+"MDAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=MDAGG"];
 "MDAGG" -> "DIOPS"
 
 @
 <<MDAGG.dotfull>>=
 "MultiDictionary(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=MDAGG"];
 "MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)"
 
 @
@@ -7445,14 +7446,14 @@ OrderedAbelianMonoid(): Category ==
 
 @
 <<OAMON.dotabb>>=
-"OAMON" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMON"];
+"OAMON" [color=lightblue,href="bookvol10.2.pdf#nameddest=OAMON"];
 "OAMON" -> "OASGP"
 "OAMON" -> "ABELMON"
 
 @
 <<OAMON.dotfull>>=
 "OrderedAbelianMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OAMON"];
 "OrderedAbelianMonoid()" -> "OrderedAbelianSemiGroup()"
 "OrderedAbelianMonoid()" -> "AbelianMonoid()"
 
@@ -7812,14 +7813,14 @@ StreamAggregate(S:Type): Category ==
 
 @
 <<STAGG.dotabb>>=
-"STAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"];
+"STAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=STAGG"];
 "STAGG" -> "RCAGG"
 "STAGG" -> "LNAGG"
 
 @
 <<STAGG.dotfull>>=
 "StreamAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=STAGG"];
 "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)"
 "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)"
 
@@ -8299,23 +8300,23 @@ OneDimensionalArrayAggregate(S:Type): Category ==
 
 @
 <<A1AGG.dotabb>>=
-"A1AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
+"A1AGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=A1AGG"];
 "A1AGG" -> "FLAGG"
 
 @
 <<A1AGG.dotfull>>=
 "OneDimensionalArrayAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(a:Type)" -> 
     "FiniteLinearAggregate(a:Type)"
 
 "OneDimensionalArrayAggregate(Character)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(Character)" ->
     "OneDimensionalArrayAggregate(a:Type)"
 
 "OneDimensionalArrayAggregate(Boolean)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=A1AGG"];
 "OneDimensionalArrayAggregate(Boolean)" ->    
     "OneDimensionalArrayAggregate(a:Type)"
 
@@ -8613,14 +8614,14 @@ FiniteSetAggregate(S:SetCategory): Category ==
 
 @
 <<FSAGG.dotabb>>=
-"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"];
+"FSAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=FSAGG"];
 "FSAGG" -> "DIAGG"
 "FSAGG" -> "SETAGG"
 
 @
 <<FSAGG.dotfull>>=
 "FiniteSetAggregate(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=FSAGG"];
 "FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)"
 "FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)"
 
@@ -8835,13 +8836,13 @@ KeyedDictionary(Key:SetCategory, Entry:SetCategory): Category ==
 
 @
 <<KDAGG.dotabb>>=
-"KDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"];
+"KDAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=KDAGG"];
 "KDAGG" -> "DIAGG"
 
 @
 <<KDAGG.dotfull>>=
 "KeyedDictionary(a:SetCategory,b:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=KDAGG"];
 "KeyedDictionary(a:SetCategory,b:SetCategory)" -> 
     "Dictionary(Record(a:SetCategory,b:SetCategory))"
 
@@ -8961,17 +8962,17 @@ LeftModule(R:Rng):Category == AbelianGroup with
 @
 <<LMODULE.dotabb>>=
 "LMODULE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=LMODULE"];
 "LMODULE" -> "ABELGRP"
 
 @
 <<LMODULE.dotfull>>=
 "LeftModule(a:Rng)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=LMODULE"];
 "LeftModule(a:Rng)" -> "AbelianGroup()"
 
 "LeftModule(a:Ring)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=LMODULE"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=LMODULE"];
 "LeftModule(a:Ring)" -> "LeftModule(a:Rng)"
 
 @
@@ -9518,20 +9519,20 @@ ListAggregate(S:Type): Category == Join(StreamAggregate S,
 
 @
 <<LSAGG.dotabb>>=
-"LSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
+"LSAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=LSAGG"];
 "LSAGG" -> "FLAGG"
 "LSAGG" -> "ELAGG"
 
 @
 <<LSAGG.dotfull>>=
 "ListAggregate(a:Type)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=LSAGG"];
 "ListAggregate(a:Type)" -> "StreamAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)"
 "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)"
 
 "ListAggregate(Record(a:SetCategory,b:SetCategory))" 
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=LSAGG"];
 "ListAggregate(Record(a:SetCategory,b:SetCategory))" ->
     "ListAggregate(a:Type)"
 
@@ -9719,14 +9720,14 @@ MultisetAggregate(S:SetCategory):
 @
 <<MSETAGG.dotabb>>=
 "MSETAGG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=MSETAGG"];
 "MSETAGG" -> "MDAGG"
 "MSETAGG" -> "SETAGG"
 
 @
 <<MSETAGG.dotfull>>=
 "MultisetAggregate(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=MSETAGG"];
 "MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)"
 "MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)"
 
@@ -9835,14 +9836,14 @@ OrderedCancellationAbelianMonoid(): Category ==
 @
 <<OCAMON.dotabb>>=
 "OCAMON"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OCAMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OCAMON"];
 "OCAMON" -> "OAMON"
 "OCAMON" -> "CABMON"
 
 @
 <<OCAMON.dotfull>>=
 "OrderedCancellationAbelianMonoid()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OCAMON"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OCAMON"];
 "OrderedCancellationAbelianMonoid()" -> "OrderedAbelianMonoid()"
 "OrderedCancellationAbelianMonoid()" -> "CancellationAbelianMonoid()"
 
@@ -9956,17 +9957,17 @@ RightModule(R:Rng):Category == AbelianGroup with
 @
 <<RMODULE.dotabb>>=
 "RMODULE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RMODULE"];
 "RMODULE" -> "ABELGRP"
 
 @
 <<RMODULE.dotfull>>=
 "RightModule(a:Rng)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RMODULE"];
 "RightModule(a:Rng)" -> "AbelianGroup()"
 
 "RightModule(a:Ring)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RMODULE"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RMODULE"];
 "RightModule(a:Ring)" -> "RightModule(a:Rng)"
 
 @
@@ -10073,13 +10074,13 @@ Rng(): Category == Join(AbelianGroup,SemiGroup)
 
 @ 
 <<RNG.dotabb>>=
-"RNG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RNG"];
+"RNG" [color=lightblue,href="bookvol10.2.pdf#nameddest=RNG"];
 "RNG" -> "ABELGRP"
 "RNG" -> "SGROUP"
 
 @
 <<RNG.dotfull>>=
-"Rng()" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RNG"];
+"Rng()" [color=lightblue,href="bookvol10.2.pdf#nameddest=RNG"];
 "Rng()" -> "AbelianGroup()"
 "Rng()" -> "SemiGroup()"
 
@@ -10480,13 +10481,13 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with
 
 @
 <<SRAGG.dotabb>>=
-"SRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"];
+"SRAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=SRAGG"];
 "SRAGG" -> "A1AGG"
 
 @
 <<SRAGG.dotfull>>=
 "StringAggregate()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=SRAGG"];
 "StringAggregate()" -> "OneDimensionalArrayAggregate(Character)"
 
 @
@@ -10888,14 +10889,14 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category ==
 
 @
 <<TBAGG.dotabb>>=
-"TBAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"];
+"TBAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=TBAGG"];
 "TBAGG" -> "KDAGG"
 "TBAGG" -> "IXAGG"
 
 @
 <<TBAGG.dotfull>>=
 "TableAggregate(a:SetCategory,b:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=TBAGG"];
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
     "KeyedDictionary(a:SetCategory,b:SetCategory)"
 "TableAggregate(a:SetCategory,b:SetCategory)" -> 
@@ -11406,14 +11407,14 @@ AssociationListAggregate(Key:SetCategory,Entry:SetCategory): Category ==
 
 @
 <<ALAGG.dotabb>>=
-"ALAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"];
+"ALAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=ALAGG"];
 "ALAGG" -> "TBAGG"
 "ALAGG" -> "LSAGG"
 
 @
 <<ALAGG.dotfull>>=
 "AssociationListAggregate(a:SetCategory,b:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ALAGG"];
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
     "TableAggregate(a:SetCategory,b:SetCategory)"
 "AssociationListAggregate(a:SetCategory,b:SetCategory)" ->
@@ -11537,23 +11538,23 @@ BiModule(R:Ring,S:Ring):Category ==
 @
 <<BMODULE.dotabb>>=
 "BMODULE"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BMODULE"];
 "BMODULE" -> "LMODULE"
 "BMODULE" -> "RMODULE"
 
 @
 <<BMODULE.dotfull>>=
 "BiModule(a:Ring,b:Ring)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BMODULE"];
 "BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)"
 "BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)"
 
 "BiModule(a:CommutativeRing,b:CommutativeRing)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=BMODULE"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=BMODULE"];
 "BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BiModule(a:Ring,b:Ring)"
 
 "BiModule(a:Ring,b:OrderedAbelianMonoid)"
- [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=BMODULE"];
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=BMODULE"];
 "BiModule(a:Ring,b:OrderedAbelianMonoid)" -> "BiModule(a:Ring,b:Ring)"
 
 @
@@ -11564,7 +11565,7 @@ digraph pic {
  node [shape=box, color=white, style=filled];
 
 "BiModule(a:Ring,b:Ring)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BMODULE"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BMODULE"];
 "BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)"
 "BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)"
 
@@ -11682,14 +11683,14 @@ OrderedAbelianGroup(): Category ==
 @
 <<OAGROUP.dotabb>>=
 "OAGROUP"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAGROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OAGROUP"];
 "OAGROUP" -> "OCAMON"
 "OAGROUP" -> "ABELGRP"
 
 @
 <<OAGROUP.dotfull>>=
 "OrderedAbelianGroup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAGROUP"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OAGROUP"];
 "OrderedAbelianGroup()" -> "OrderedCancellationAbelianMonoid()"
 "OrderedAbelianGroup()" -> "AbelianGroup()"
 
@@ -11806,13 +11807,13 @@ OrderedAbelianMonoidSup(): Category == OrderedCancellationAbelianMonoid with
 @
 <<OAMONS.dotabb>>=
 "OAMONS"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMONS"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OAMONS"];
 "OAMONS" -> "OCAMON"
 
 @
 <<OAMONS.dotfull>>=
 "OrderedAbelianMonoidSup()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMONS"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OAMONS"];
 "OrderedAbelianMonoidSup()" -> "OrderedCancellationAbelianMonoid()"
 
 @
@@ -12035,14 +12036,14 @@ OrderedMultisetAggregate(S:OrderedSet): Category ==
 @
 <<OMSAGG.dotabb>>=
 "OMSAGG"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OMSAGG"];
 "OMSAGG" -> "MSETAGG"
 "OMSAGG" -> "PRQAGG"
 
 @
 <<OMSAGG.dotfull>>=
 "OrderedMultisetAggregate(a:SetCategory)"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=OMSAGG"];
 "OrderedMultisetAggregate(a:SetCategory)" ->
     "MultisetAggregate(a:SetCategory)"
 "OrderedMultisetAggregate(a:SetCategory)" -> 
@@ -12206,7 +12207,7 @@ Ring(): Category == Join(Rng,Monoid,LeftModule(%)) with
 @
 <<RING.dotabb>>=
 "RING"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RING"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RING"];
 "RING" -> "RNG"
 "RING" -> "MONOID"
 "RING" -> "LMODULE"
@@ -12214,7 +12215,7 @@ Ring(): Category == Join(Rng,Monoid,LeftModule(%)) with
 @
 <<RING.dotfull>>=
 "Ring()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RING"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=RING"];
 "Ring()" -> "Rng()"
 "Ring()" -> "Monoid()"
 "Ring()" -> "LeftModule(a:Ring)"
@@ -12400,7 +12401,7 @@ OrderedRing(): Category == Join(OrderedAbelianGroup,Ring,Monoid) with
 @
 <<ORDRING.dotabb>>=
 "ORDRING"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDRING"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDRING"];
 "ORDRING" -> "OAGROUP"
 "ORDRING" -> "RING"
 "ORDRING" -> "MONOID"
@@ -12408,7 +12409,7 @@ OrderedRing(): Category == Join(OrderedAbelianGroup,Ring,Monoid) with
 @
 <<ORDRING.dotfull>>=
 "OrderedRing()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDRING"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=ORDRING"];
 "OrderedRing()" -> "OrderedAbelianGroup()"
 "OrderedRing()" -> "Ring()"
 "OrderedRing()" -> "Monoid()"
@@ -12510,7 +12511,7 @@ BitAggregate(): Category ==
 
 @
 <<BTAGG.dotabb>>=
-"BTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"];
+"BTAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"];
 "BTAGG" -> "ORDSET"
 "BTAGG" -> "LOGIC"
 "BTAGG" -> "A1AGG"
@@ -12518,7 +12519,7 @@ BitAggregate(): Category ==
 @
 <<BTAGG.dotfull>>=
 "BitAggregate()"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"];
 "BitAggregate()" -> "OrderedSet()"
 "BitAggregate()" -> "Logic()"
 "BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)"
@@ -12529,7 +12530,7 @@ BitAggregate(): Category ==
 \pageto{HomogeneousAggregate}{HOAGG}
 <<EVALAB.dotfull>>=
 "Evalable(a:Type)"
- [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"];
+ [color="#00EE00",href="bookvol10.2.pdf#nameddest=EVALAB"];
 @
 
 \chapter{The bootstrap code}
@@ -16813,7 +16814,7 @@ digraph dotabb {
  node [shape=box, color=white, style=filled];
 
 "CATEGORY"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=CATEGORY"];
 
 <<ABELGRP.dotabb>>
 <<ABELMON.dotabb>>
@@ -16887,7 +16888,7 @@ digraph dotfull {
  node [shape=box, color=white, style=filled];
 
 "Category"
- [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"];
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=CATEGORY"];
 
 <<ABELGRP.dotfull>>
 <<ABELMON.dotfull>>
diff --git a/books/bookvol7.1.pamphlet b/books/bookvol7.1.pamphlet
index 09a7929..a9e762c 100644
--- a/books/bookvol7.1.pamphlet
+++ b/books/bookvol7.1.pamphlet
@@ -233,6 +233,7 @@ November 10, 2003 ((iHy))
 \pagepic{ps/v71releasenotes.eps}{releasenotes}
 \pagefrom{Root Page}{RootPage}
 \pageto{Online information}{onlineInformation}
+\pageto{September 2008}{sept2008}
 \pageto{July 2008}{july2008}
 \pageto{May 2008}{may2008}
 \pageto{March 2008}{march2008}
@@ -244,6 +245,7 @@ November 10, 2003 ((iHy))
 \beginscroll
 \beginmenu
     \menudownlink{Online information}{onlineInformation}
+    \menudownlink{September 2008}{sept2008}
     \menudownlink{July 2008}{july2008}
     \menudownlink{May 2008}{may2008}
     \menudownlink{March 2008}{march2008}
@@ -271,6 +273,153 @@ Axiom information can be found online at
 \end{page}
 
 @
+\pagehead{sept2008}{releasenotes.ht}{September 23, 2008 Release Notes}
+\pagepic{ps/v71sept2008.eps}{sept2008}
+\pagefrom{What's New in Axiom}{releaseNotes}
+<<releasenotes.ht>>=
+\begin{page}{sept2008}{September 23, 2008 Release Notes}
+\beginscroll
+\begin{verbatim}
+September 2008 Release Notes
+
+Axiom website
+   The effort here is to improve the support for offline literate
+   documentation. The primary changes are the inclusion of graphs
+   and additional book volumes.
+
+* <http://axiom-developer.org/axiom-website/documentation.html>
+  Contains the new algebra volumes and subvolumes.
+* <http://axiom-developer.org/axiom-website/bookvol10.2abb.html>
+  Contains a "clickable" graph that indexes into the algebra.
+
+
+
+
+Graphviz, PDF, and HTML integration
+   The effort here is to unify these three technologies in a way
+   that simplifies the user interface and improves documentation
+
+* Graphviz is used if available but not required
+* Algebra graphs are automatically generated at build time
+  from algebra source files
+* Graphviz graphs now properly hyperlink into PDF files allowing
+  any node in a graph to link to any document page
+
+
+
+
+Book volume 0 (Jenks and Sutor)
+
+* <http://axiom-developer.org/axiom-website/bookvol0.pdf>
+* replace \over with \frac
+
+
+
+Book volume 7.1 (Hyperdoc pages)
+   The effort here is to create a literate document that contains
+   all of the "live" pages used in hyperdoc. The PDF is being
+   constructed so that a user can effectively "browse" the static
+   hyperdoc pages, which are included, without a running Axiom.
+
+* <http://axiom-developer.org/axiom-website/bookvol7.1.pdf>
+* The source for all of the pages is now contained in this book.
+* Hyperdoc now fetches the pages directly from the book.
+* The hyper page directory and all files are gone.
+* Some of the static page images are now inside the PDF
+* Pages have href links allowing "in-pdf" navigation of pages
+
+
+
+
+Book volume 10 (Algebra)
+   The effort here is to create a way to describe and deeply
+   document the algebra. This volume was split to better handle
+   the structure of Axiom's information. 
+
+* Split into 5 volumes
+   - 10   Implementation
+   - 10.1 Theory
+   - 10.2 Categories
+   - 10.3 Domains
+   - 10.4 Packages
+
+
+
+
+Book volume 10.2 (Algebra Categories)
+   The effort here is to create fully indexed, cross-referenced,
+   graphical documentation for Axiom categories in a standalone
+   form. This is a "live" literate document which contains the 
+   actual source code used to build the system.
+
+* <http://axiom-developer.org/axiom-website/bookvol10.2.pdf>
+* Contains 60 categories so far
+* Has partial graphs for each category
+* Has list of exported functions 
+* Has information about source of functions
+* Has index cross reference by function and category
+* Has PDF href links so that URLs work:
+   <http://axiom-developer.org/axiom-website/bookvol10.2.pdf#nameddest=AGG>
+* Has forward/backward links between categories
+* Automatically generates "clickable" graphs:
+   <http://axiom-developer.org/axiom-website/bookvol10.2abb.html>
+* Graph clicking automatically opens to the proper source code
+
+
+
+
+New algebra examples (Daly, Tsikas)
+   The effort here is to create "real time" documentation that
+   gives the end user an example of how to construct the proper
+   arguments and call a function. This puts examples into the
+   system so users don't need to consult other documents.
+
+* )d op someop shows examples of function usage
+* about 100 new function examples were added 
+* new comment syntax added to allow automatic API testing
+
+
+
+
+Input Files
+   There is a new effort to automatically extract the algebra
+   examples in order to regression test the user API to the
+   algebra. In addition there is ongoing test work.
+
+* New input files (Hemmecke, Stumbo, Cyganski, Daly)
+     bini, biquat, ifthenelse, liu, overload, sqrt3, typetower
+* Changed input files (Hemmecke, Stumbo, Cyganski, Daly)
+     bern, function, linalg, regset, test, tutchap2
+
+
+
+
+Build changes
+
+* graphics does not depend on compress, done at build time
+* firefox html pages are now built before tests are run
+
+
+
+Algebra changes
+
+* FLAGG (FiniteLinearAggregate) -- removed a duplicate function
+
+
+
+Interpreter changes (Page)
+
+* add cost function to bottomUp output
+
+
+
+ 
+\end{verbatim}
+\endscroll
+\autobuttons
+\end{page}
+
+@
 \pagehead{july2008}{releasenotes.ht}{July 23, 2008 Release Notes}
 \pagepic{ps/v71july2008.eps}{july2008}
 \pagefrom{What's New in Axiom}{releaseNotes}
diff --git a/books/ps/v71releasenotes.eps b/books/ps/v71releasenotes.eps
index d8b3b77..a667fe1 100644
--- a/books/ps/v71releasenotes.eps
+++ b/books/ps/v71releasenotes.eps
@@ -1,7 +1,7 @@
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
-%%Title: whatsnew.eps
-%%CreationDate: Sat Jun 21 00:08:02 2008
+%%Title: v71releasenotes.eps
+%%CreationDate: Mon Jul 28 14:40:07 2008
 %%DocumentData: Clean7Bit
 %%LanguageLevel: 2
 %%Pages: 1
@@ -29,7 +29,7 @@
 {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
 {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
 true 3
-%%BeginData:        96341 ASCII Bytes
+%%BeginData:       102278 ASCII Bytes
 colorimage
 quD:2JN\QIJN\QI`BF,!J,~>
 quD:/JNA?CJNA?C`B*nsJ,~>
@@ -787,6 +787,213 @@ s/>tsirR%VJ,~>
 !BpJ^m=G:gs+13$s+13hs8MBdeieN~>
 !BU8[l%/kcs+13$s+13hs8M6`c8pI~>
 !B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mCN>t!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]om/bd$J,~>
+!BU8[l+6op!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]oklK'jJ,~>
+!B:&Xj1>9j!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]oirR%VJ,~>
+!BpJ^mFqU=!!<0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpm/bd$J,~>
+!BU8[l.Z19!!<0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpklK'jJ,~>
+!B:&Xj4aP3!!<0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpirR%VJ,~>
+!BpJ^mHsrH!;ull!9jI_!9=+Z!8[\T!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$
+s82iqm/bd$J,~>
+!BU8[l0\ND!;ull!9jI_!9=+Z!8[\T!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$
+s82iqklK'jJ,~>
+!B:&Xj6cm>!;ull!9jI_!9=+Z!8[\T!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$
+s82iqirR%VJ,~>
+!BpJ^mHsrH!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!;lfp!<3#t!!E6$!<<#urr;uu!<;utqu?Tp
+rVufrs8W&uq>^HprVultrr;uurVultrr;uurVultrr;uurVultJcC<$JcC<$qu?Z_!S0Da~>
+!BU8[l0\ND!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!;lfp!<3#t!!E6$!<<#urr;uu!<;utqu?Tp
+rVufrs8W&uq>^HprVultrr;uurVultrr;uurVultrr;uurVultJcC<$JcC<$qu?Z[!R<`V~>
+!B:&Xj6cm>!;uls!<)rs!<)rr!<)rs!!*&t!<3#o!;lfp!<3#t!!E6$!<<#urr;uu!<;utqu?Tp
+rVufrs8W&uq>^HprVultrr;uurVultrr;uurVultrr;uurVultJcC<$JcC<$qu?ZU!Q-jH~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+rr<'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
+s8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+rr<'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
+s8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+rr<'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
+s8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr<'!rr<'!
+rr<'!rr<&ss8N'#rr<&rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8MBd
+eieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr<'!rr<'!
+rr<'!rr<&ss8N'#rr<&rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8M6`
+c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr<'!rr<'!
+rr<'!rr<&ss8N'#rr<&rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8M$Z
+_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!rr<&s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!rr<&s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!rr<&s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!
+rr<&ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!
+rr<&ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr<'!rr<'!rr<'!
+rr<&ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8MBd
+eieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8M6`
+c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8M$Z
+_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8M$Z_`*)~>
+!BpJ^mHsrH!9X=]!.k0$s+13$s+::Mm/bd$J,~>
+!BU8[l0\ND!9X=]!.k0$s+13$s+::MklK'jJ,~>
+!B:&Xj6cm>!9X=]!.k0$s+13$s+::MirR%VJ,~>
+!BpJ^mHsrH!9X=]!.k0$s+13$s+::Mm/bd$J,~>
+!BU8[l0\ND!9X=]!.k0$s+13$s+::MklK'jJ,~>
+!B:&Xj6cm>!9X=]!.k0$s+13$s+::MirR%VJ,~>
+!BpJ^mDo8)!.k0$s+13$s+LFOm/bd$J,~>
+!BU8[l,Wi%!.k0$s+13$s+LFOklK'jJ,~>
+!B:&Xj2_2t!.k0$s+13$s+LFOirR%VJ,~>
+!BpJ^mDo8)!.k0$s+13$s+LFOm/bd$J,~>
+!BU8[l,Wi%!.k0$s+13$s+LFOklK'jJ,~>
+!B:&Xj2_2t!.k0$s+13$s+LFOirR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^mDf2(!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8m/bd$J,~>
+!BU8[l,Nc$!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8klK'jJ,~>
+!B:&Xj2V,s!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8irR%VJ,~>
+!BpJ^mFqU:!;-<h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9m/bd$J,~>
+!BU8[l.Z16!;-<h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9klK'jJ,~>
+!B:&Xj4aP0!;-<h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9irR%VJ,~>
+!BpJ^mHsrH!;c`l!:g*h!:0[b!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s2=s:
+m/bd$J,~>
+!BU8[l0\ND!;c`l!:g*h!:0[b!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s2=s:
+klK'jJ,~>
+!B:&Xj6cm>!;c`l!:g*h!:0[b!<3#t!<)rt!<<*!!;uls!<<*!!<)rt!<)rt!.k0$s+13$s2=s:
+irR%VJ,~>
+!BpJ^mHsrH!;HNn!<3#t!<<)t!;lfr!;ulq!<<)t!;c`q!<)rt!<3#u!<)rt!<3#u!<)rt!<3#u
+!<)rt!.k0$s+13$s2=s:m/bd$J,~>
+!BU8[l0\ND!;HNn!<3#t!<<)t!;lfr!;ulq!<<)t!;c`q!<)rt!<3#u!<)rt!<3#u!<)rt!<3#u
+!<)rt!.k0$s+13$s2=s:klK'jJ,~>
+!B:&Xj6cm>!;HNn!<3#t!<<)t!;lfr!;ulq!<<)t!;c`q!<)rt!<3#u!<)rt!<3#u!<)rt!<3#u
+!<)rt!.k0$s+13$s2=s:irR%VJ,~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr<&ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr<&ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr<&ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8M$Z_`*)~>
+!BpJ^mHsrR!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8MBdeieN~>
+!BU8[l0\NN!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8M6`c8pI~>
+!B:&Xj6cmH!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8M$Z_`*)~>
+!BpJ^mHsrQ!!rT)rrE'!rr<&rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8MBdeieN~>
+!BU8[l0\NM!!rT)rrE'!rr<&rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8M6`c8pI~>
+!B:&Xj6cmG!!rT)rrE'!rr<&rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8M$Z_`*)~>
+!BpJ^mHsrH!87DP!.k0$s+13$s,[3Zm/bd$J,~>
+!BU8[l0\ND!87DP!.k0$s+13$s,[3ZklK'jJ,~>
+!B:&Xj6cm>!87DP!.k0$s+13$s,[3ZirR%VJ,~>
+!BpJ^mHsrH!8@JQ!.k0$s+13$s,R-Ym/bd$J,~>
+!BU8[l0\ND!8@JQ!.k0$s+13$s,R-YklK'jJ,~>
+!B:&Xj6cm>!8@JQ!.k0$s+13$s,R-YirR%VJ,~>
+!BpJ^mC`Jr!.k0$s+13$s,d9[m/bd$J,~>
+!BU8[l+I&n!.k0$s+13$s,d9[klK'jJ,~>
+!B:&Xj1PEh!.k0$s+13$s,d9[irR%VJ,~>
+!BpJ^mC`Jr!.k0$s+13$s,d9[m/bd$J,~>
+!BU8[l+I&n!.k0$s+13$s,d9[klK'jJ,~>
+!B:&Xj1PEh!.k0$s+13$s,d9[irR%VJ,~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
+!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
+!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
 !BpJ^mBlol!;c`o!;c`o!;c`o!.k0$s+13$s0r%-m/bd$J,~>
 !BU8[l*UKh!;c`o!;c`o!;c`o!.k0$s+13$s0r%-klK'jJ,~>
 !B:&Xj0\jb!;c`o!;c`o!;c`o!.k0$s+13$s0r%-irR%VJ,~>
@@ -1939,144 +2146,6 @@ s8N)ls7lZms8;ros8;rps82kJs+13$s+14<s8M$Z_`*)~>
 !BpJ^m=G:gs+13$s+13hs8MBdeieN~>
 !BU8[l%/kcs+13$s+13hs8M6`c8pI~>
 !B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
-!BpJ^m=G:gs+13$s+13hs8MBdeieN~>
-!BU8[l%/kcs+13$s+13hs8M6`c8pI~>
-!B:&Xj+75]s+13$s+13hs8M$Z_`*)~>
 !BpI6m=FYUm=FYUmD&#heieN~>
 !BU73l%/)Ml%/)Ml+cH`c8pI~>
 !B:%0j+66Aj+66Aj1jUT_`*)~>
diff --git a/books/ps/v71sept2008.eps b/books/ps/v71sept2008.eps
new file mode 100644
index 0000000..3b6d76f
--- /dev/null
+++ b/books/ps/v71sept2008.eps
@@ -0,0 +1,2960 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: v71sept2008.eps
+%%CreationDate: Mon Jul 28 14:25:37 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 696 475
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 459.83362537429304 translate
+681.59055118110246 -459.83362537429304 scale
+% Image geometry
+710 479 8
+% Transformation matrix
+[ 710 0 0 479 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 710 string def
+/gstr 710 string def
+/bstr 710 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       179492 ASCII Bytes
+colorimage
+quD:2JN\QIJN\QI`BF,!J,~>
+quD:/JNA?CJNA?C`B*nsJ,~>
+quD:,JN&-=JN&-=`Ad\pJ,~>
+rW)s]JcC<$JcC<$JcE^hs#p>]J,~>
+rW)sZJcC<$JcC<$JcE^hs#U,ZJ,~>
+rW)sWJcC<$JcC<$JcE^hs#9oWJ,~>
+rr<*`rr.KIJc1/uJc1/u`Voi9!^-M`J,~>
+rr<*]rr.KIJc1/uJc1/u`Voi9!]g;]J,~>
+rr<*ZrV_<FJc()sJc()s`Vfc7!]L)ZJ,~>
+!WYC^Jc()sJc()sNr84$rVYu>rVYu>rqliX4TL!~>
+!WY:[Jbt#qJbt#qNr/.#rVPo=rVPo=rqccV3WO[~>
+!WY1WJbjroJbjroNr&(!rVGi;rVGi;rqZ]T2ZS@~>
+!WYC]JbjroJbjroO88m7bjGE6b_l8nMTkJf"jDl#qMNMars$])qYK/6!.Y~>
+!WY:YJbalmJbalmO8/g6bjGE6b_l5lMTkJf"jDl"q23D`rs$])q>&u1!.Y~>
+!WY1VJbXfkJbXfkO8&a4bjGE6b_c,iM9PAe"jDhupkd5^rs$](q"Wc+!.Y~>
+!Bp>Xq#LHro)O@;JbalmJbc):!K-jCr!!%Vq>#pHmJI.dMY[(*rU'L`rJLUM!T?1l~>
+!BU)TpAk6po)O@9JbO`iJbPr6!K$dBr!!%Up\0OCmJI.dM>-b$rU'L`rJCOJ!T,qg~>
+!B9iPo`5$no)O@7Jb=TeJb>f2!JgX@qZZqRp%=+=mJ@(cL\:=qrU'I_rJ1CF!So\b~>
+!Bp;WpB/E6`%CW^JbO`iJbO`iU\=eGr9a=ar/(1BM>Zc;"oO5OpPJh8q>pMNrq?HN4b*~>
+!BU&So`N34`%CW^Jb=TeJb=TeU\+YCqsF1_qhOk;L\pK7"oF)JonWG3q#UAJrq-<J3e.~>
+!B9fOo)m!2`%CW^Jb+HaJb+HaU[nM@qsF.^qhF_6LAUB5"oF&Go7m/0p]:8Hrpp0F2h1~>
+!Bp;Wp(.1.qQ+s_PA6:)B9P$56BcuoJbJL)!B;b3p&R-+j7WI4r\"=<FObs9JbJ-t!JpX?p]^PN
+p@a=>mJ$k^M"^OuqsF.ZqhY7F!T#ti~>
+!BU#RoFLt,qQ+s_PA6:)B9P$56BcumJb8@%!B2Y1oDpm'j7E=1r[n7:En#[4Jb8!p!JgO=p'(;J
+o^mq8mIg_[L\14oqX*tWqM5(B!Sf_d~>
+!B9cNnIPY)qQ+s_PA6:)B9P$56BcujJar-t!AuJ.nGtL!j7*+,r[e18E6s1+Jaqdj!JU=9oEG#D
+naV>.mIUSWL%4\eq!I\SpkA_;!SKD^~>
+!Bp5UoFLu0rRn3jg"`aZgP!Sqn*,DqJb8@%!B;b3oDpp)j7ER90=\&s00%=0oRZYqoDsaDmIg_[
+L\14oqYU!^!;lHnqM4_8L\goArrE#krrDri!W%TNoE!`1J,~>
+!BTuQndkc.rRn3jg"`aZgP!Sqn*,DoJb&4!!B)S0nc:X$j73F50"7in/iLt*nq$Amnc=L?mIUSW
+L@Xniq"s^Z!;lBlpkJA1LA:Z<rrE#irrDrg!VhEKnc@H*J,~>
+!B9]LmLT?*rRn3jg"`aZgP!Sqn*,DkJaVpn!AuJ.mK#0sj6d.0/[VEf/N(\%mXafemK&"8mI:AS
+K^S8]p\XLV!;l9ipOqu&K_PB6rrE#frrDrd!V_9HmK(ouJ,~>
+!Bp5Uo+1j^q.'<BQCt)Sm;m`rDZt^`Jb/:#!B2\2o/AT]oCHoS[.EmI8+A6#W&d]*oCL+.1IJ&2
+o0b6u9(OtpoCMNp05C+MZ<B.D=gIYhSPh=#8C`:_Jb/O*!J^C:o*+oDoCI_3qt'U`qst!dL@b"k
+q"s[^!<;Zi!;l?gpkJe>!S]bf~>
+!BTrPn.5O[q.'<BQCt)Sm;m`rDZt^]Jai'r!B)S0n2E6XnF1?KZLI@?7d_lqVE%E$nF4J$1-q])
+n3Sam9(4_knF5me/njbDYZWe>=Kq;_S5;$s8()tXJai=$!JU:8nHJZ@nF2/+qsjI^qsajaL%+Sc
+p\XL[!<;Tg!;l9epP&V9!SBG`~>
+!B9ZKljs+Wq.'<BQCt)Sm;m`rDZt^YJaDdj!AuJ.lo-dRm-JR@Y3bM17HuHjU,Yiom-MYl0gMH!
+lp34d8F/2cm-O%V/S=A9X]I;6<it`RR85Rl7aHYPJaE$q!J9t2m03-6m-K>rqsF1Zqs=RZK'_iU
+o_\%T!<;Hc!;l-aoRd)/!S',Z~>
+!Bp2TnIM9cSg;Z[PNqO4eC2_7]E!NQJar-t!B2\2Zlq:[naX"?D=QmSRIMpd@VIK2n_lPt_JM!T
+nO,$*M"*DWrp^W@008X&035j%<%k2602J^[R+d,]JarC&!JU:8nHJZ@naV>-qsaXdqsaXdqsaja
+L%4\ep\OFW!;c3dpP&V:!SKVd~>
+!BToOmLPs`Sg;Z[PNqO4eC2_7]E!NNJaVpn!B)S0YotqVmd@D6D!pLMR-lR^@:q3,mbTul^hb[N
+mQrO#L$giOrpCE:/ii?s/lfQr;_Fo./kr@SQe-fVJaW0u!JL.5mKN9:md>c$qsFFaqsFFaqsFX\
+K^S8]p%n+R!;c*aon<>4!S9A_~>
+!B9TIl49O\Sg;Z[PNqO4eC2_7]E!NJJa2Xf!AuJ.Y9>YQlKYT*C?jkAPj0hT?Y1m&lJ"<c]kT1D
+l9R!qKBb<Grot-3/NE$k/Q93j;(\Q'/PW.KPgb3KJa2mm!J0h/l36a0lKWrkqs".]qs".]qs"@U
+Ja2NOo(qYK!;bs]nq$f*!RiuX~>
+!Bp/SnGWCrR)/p$U':T##6Y89!.jWjnEo]F2u>9.n/^gX1ukMmj7"]_l.n!Qn=VFeiMS?!n3\kb
+nF/@irpUEO0/;rh0@'(VbqD^X0?o(;Jai0u!JU46mfiB<nF2/)qsOLbqsOLbqsO^]L%+Scp%e(T
+!;Z'aonED7!SBPc~>
+!BTlNm/?tnR)/p$U':T##6Y89!.jKfm-X->2Z#-,llG7O1Z+uchs;sUjk27Gm%,h\h4lTjlp<>Y
+m-HV_rp1-G/hlW`0$<PIaY$.P0$/\2JaDmm!J9q1lNQm3m-K>qqs+4^qs+4^qs+FWK'_iUoD._N
+!;Yp]o7Hu.!S'5]~>
+!B9QHkPbGiR)/p$U':T##6Y89!.j<akO%F42>]!*k8iSD1#&BYgZL.Ji7'>;kF4&Pfq9p_k<LWK
+kN=]SroXd>/MH9X/]Qu:`%=MG/]<5'J`lOc!J'\,jot7)kN@BbqrRkYqrRkYqrS(OJEQ*GnG25F
+!;YaXn::N$!RNcU~>
+!BouNkl(Pb/K"OJ,l%Fkk^hsbkQ*UqroaAA0E1/FHnV'iHKaQG6g3Yc0B\/h0*?jj6SJH&!B2\2
+kRPH_7-HBZjlkph0/>78idp<Ekj[d:JE?1J"m(9uk^_dle,TLGe,TLGe-4rakidQYq:,?Cq:#H,
+JH"a5d63!~>
+!BTZHj8K#]/K"OJ,l%Fkj+67XirM%jro4#;0)jl@GV5F_GN7^960$oV0&hT_/d$[b5q`/s!B)S0
+isrdU6fTmRi8`kU/ho%4h1=U;j7)(0Ic0V;"lOjij*oq`bQ%Y?bQ%Y?bQZpRj5YUHq98d;q9/lt
+IfA@.brU@~>
+!B99@g\q0U/K"OJ,l%FkgO\,HgAs,_rn@H1/cOK7F=ibRF5,G$5MOjC/_YdR/H^CT5:ulh!AlD-
+gCCYD6/+%Eg"Y96/MAb/eUcJ+g[NquH.hT#"ke1UgNhKL^]4B3^]4B3^]iD:gY7#,q7uq/q7m$a
+H2cP!`]&D~>
+!BouNkl1Vb#V@VJpAfd.J`uLb!B2\2kQ*Uqroap-01.D6kiaZekgqITkaX;Qr9+/K0E1/92_Y0o%
+X9XRkXmMKkig#>91CSJJ`q[KnE9n'jmCP$jacRYJE?[X!!)oG!!)oG"m(9uk^_dkeGB7Be,eZ]r
+oaC14b*~>
+!BTZHj8T)]#V@VJpAfd)J`H.X!B)S0irM%jro4R#/jV,.j5VaXj3oVIj-_NFr8RfD0)jl32D5!h%
+WsCLj%(f?j5[s.8OP2AJ`D=AnDaOui9e_li-s_HIc1+I!!)o?!!)o?"lOjij*oq_bkhD:bQ6XNr
+o4%(3e.~>
+!B99@g]%6U#V@VJpAfd!J_TSH!AlD-gAs,_rnA!j/O(i#gY4;EgWM06gQX:4r7_6:/cOK*1bJ^]%
+WO(CgI<d-gY9=l7m\f5J_Pb1nCmthg$QQYfm2?,H.i)1!!)o3!!)o3"ke1UgNhKK_#"-.^]E,6r
+n@In2h1~>
+!BouNkl1Vc*9u5B"o&(Kk^hsbkQ*UqroaAA0E1/;k=714roanH4N;n)K]q/U1Q8W6XQW#)rob.W
+0=Iir01=FUUb>]X\5P&VQ7kY"\":fpk^hsikQ-4qqpbEAqpYf2JEZ3IjnmO-!;k7G!;k7LjacRY
+JE?[XrW)uJrW)iF!Tek2kQ0'oJ,~>
+!BT]IjSo2_*9u5B"o&(KjFQCZj8h.kro=)<0)jo6j$kY,ro=VC4MlP"J`PEI0oE0+WoQGuro=kR
+0!_?h/k"1LTIs0O[8JWMP:f4oZ^]'fjFQCaj8j_fqonj9qof6%IcTR=i;:^u!;jt?!;jtDi-sbJ
+Ic1+IrW)uBrW)i>!T8G+j8mOeJ,~>
+!B9<Ah#@?W*9u5B"o&(Kgk"8Jg]95`rnIN2/cON-gI!PrrnJ&:3kK\iIGE.30SQHnUYJ'crnJ;H
+/ZbUW/OI\:Rk7I?Y>6a>O"EYbXd6hTgk"8Qg];`SqnW"-qnNBgHJI;%g&&Pb!;jP3!;jP8fm;H/
+HJ/22rW)u6rW)i2!SMeug]>DRJ,~>
+!Bp#Ol2CYh`gQi;/L:B8*$kL`Ja%aMmHFX10E12:2_Y-o!fAY7rosD8%5r=fl06H-3\WspksI-'
+kls("0/,eCf`(+EX&_&7=0(TLSPM$t9uV\JJa)gk!J0A0eG0+Ae-4rbl03c\qpbEAqpYf2Ja)EM
+jnmR-!<(FI!;k7HjamEq!Ra,]~>
+!BT]IjSf,c`gQi;/L:B8*$kL`J`MCCmGn:+0)jo42D4sh!f&D.roF&2%5i1^jQ+Eq3%mUgj?YEt
+j9@Lp/h]V?e,JD;W)PQ0<N"p<RS>Ll9>Q2?J`QIa!Iiu(bkV89bQZpRjQ(dJqonj9qof6%IcTR=
+i;:au!<(.A!;jt@i-t[d!R<`V~>
+!B9<Ah#79[`gQi;/L:B8*$kL`J_Yh3mG%_!/cON+1bJ[]!eW)$rnRK)%5_tQgt]bX2_I@^gcmCi
+g]fSe/M9A6bl6B,UJ`j';PMt$PY3\b8\9Q/J_]nQ!IEGr_"e!-^]iD;gt[5/qnW"-qnNBgHJI;%
+g&&Sb!<'_5!;jP4fm<YQ!QI'K~>
+!Bp#Ol2CYh`gZq,[EWpW`6nPaJa%aMiopM`7Ha[7!A?fkl%/*AklH@smF2=$Ja)EMjmCP$jal[\
+J`Z:K!Ten3klK3qJ,~>
+!BT]Ijo,5d`gZq,[EWpW`6nPaJ`VIEioL5[7-":.!A6ZhjalO9jT0khmE>alJ*#dAi9e_li.'kM
+J)K_<!T8J,jT3[gJ,~>
+!B9?Bh>RB\`gZq,[EWpW`6nPaJ_bn5inXZO6ehUr!A-Neh1=D)h#ViUmD/t[HJRD'g?l][g3VT2
+HJ7c&!SVl!h#YPTJ,~>
+!Bp#OlM^bi`gQl,3g9Tn"BYR&Ja.gOj6?]S09uM$!A?fkl@J6Cl2cIumF;C&Ja2NOk3^\&k(2g_
+J`c@M!Tnt4l2f?sJ,~>
+!BT]Ijo,5d`gQl,3g9Tn"BYR&J`VIEj5g?J/s6+o!A6ZhjalO9jT0kimEGgnJ*#dAiU+kniIBtN
+J)Te>!TAP-jT3[gJ,~>
+!B9?BhYmK]`gQl,3g9Tn"BYR&J_kt7j5'j>/WK_c!A-QfhLXP+h>quWmD/t[Hf!V+g?l][g3_]5
+HeRl'!SVo"h>t\VJ,~>
+!Bp#OlMghk&_t2%fn@#Go66o-!.jEdlJq.2Sqc&!l2dfcJa.gOb3B"Yk3^\&k(2g_J`c@M"m1C$
+l@J*beH+f`rosO54b*~>
+!BT`Jk5PDg&_t2%fn@#Go66o-!.j9`k2YS*S:oSojoM9YJ`_OGb2r_SiU+kniIC"PJ)Te>"lXsn
+k'u@WblQdQroO7-3e.~>
+!B9?BhZ!Q_&_t2%fn@#Go66o-!.j!XhW*GoQ@RB]h>s4EJ_kt7b2*/Gg?l][g3_]5HeRl'"kn=[
+hL!uD_#`8:rn[[s2h1~>
+!Bp#OlMghk'5_SV(2[7W6#A@U!.jEdl@J5OlD*VFJ[k+0"h9-Kl@HJ4jor8GlKWr1mH+GZJc=p8
+dli3~>
+!BT`Jk5PDg'5_SV(2[7W6#A@U!.j9`k(2ZGk+h&>J$eV%"gidAk'sc*i<?T<k2q0#mGS)QJ,\R2
+cT6R~>
+!B9BChu<Z`'5_SV(2[7W6#A@U!.j$Yhgs[9hkT'0H`lbi"g340hg;Nng'+X+hqrd`mFhTDHiDn'
+aZ"_~>
+!Bp&PlgXt+l[eAQl[eArlg&`mlg&`mlg&`mlN,KuJ,~>
+!BTcKkOAP'kCMfIkCMfjkNd-dkNd-dkNd-dk5ipjJ,~>
+!B9BCi:-eui.9g;i.9g\i9P1Wi9P1Wi9P1WhuUtZJ,~>
+!Bp%*l[eAQl[eAQlbD`de3/<~>
+!BTb%kCMfIkCMfIkJ-0\coQ[~>
+!B9@ri.9g;i.9g;i4n1Nau=h~>
+!Boe#i.9g;i.9g;i4e+L4b*~>
+!BTIrg4@t/g4@t/g:l8@3e.~>
+!B9%id"0Ppd"0Ppd([j,2h1~>
+!'PmaJUrB'JUrB']n$/HJ,~>
+!'5[SJTcTfJTcTf]ljB:J,~>
+!&oIAJS0OHJS0OH]k7=(J,~>
+!BpJ^m5t=JrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&c!S0Da~>
+!BU8[kr\nFrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&_!R<`V~>
+!B:&Xj#d8@rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE&u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!JcC<$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rr5"ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&Y!Q-jH~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE&u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^mDo8,!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)um/bd$J,~>
+!BU8[l,Wi(!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)uklK'jJ,~>
+!B:&Xj2_3"!<2uu!6P9@!.k0$s+13[rr<&@s8N)urr<&@s8N)uirR%VJ,~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls8Dut!8@JP
+!;c`o!9sO_!;ZZo!;ZZo!;ZZo!9!nU!.k1"rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls8Dut!8@JP
+!;c`o!9sO_!;ZZo!;ZZo!;ZZo!9!nU!.k1"rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G[(!<3'!!<3'!!<3'!!<3'!rW!T2!<3'!!<3'!!<3'!!<3'!!<<#urr2ru
+rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E"Ls8Dut!8@JP
+!;c`o!9sO_!;ZZo!;ZZo!;ZZo!9!nU!.k1"rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#u^&S'3
+!WN/]rr<&Zrr<&Rrr<&urr<&srr<&trr<&brr<&urr<&rrr<&urr<&rrr<&urr<&rrr<&urr<&o
+s7u``rr<&As8E#us8;rfrr<%ps#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<#urr4nWrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<2?deieN~>
+!BU8[km%.frrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#u^&S'3
+!WN/]rr<&Zrr<&Rrr<&urr<&srr<&trr<&brr<&urr<&rrr<&urr<&rrr<&urr<&rrr<&urr<&o
+s7u``rr<&As8E#us8;rfrr<%ps#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<#urr4nWrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<23`c8pI~>
+!B:&Xis,M`rrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!<3!%
+!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!!<<#u^&S'3
+!WN/]rr<&Zrr<&Rrr<&urr<&srr<&trr<&brr<&urr<&rrr<&urr<&rrr<&urr<&rrr<&urr<&o
+s7u``rr<&As8E#us8;rfrr<%ps#0rX!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<#urr4nWrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE)u!<2!Z_`*)~>
+!BpJ^m/R.crrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!58C4
+!<3#u!9O4\!9=(Z!8RSS!;uis!;HKn!:Bdd!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!;QQo
+!;uis!:Tpf!6P9@!<)ot!:^!g!2]\q!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!58C4
+!<3#u!9O4\!9=(Z!8RSS!;uis!;HKn!:Bdd!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!;QQo
+!;uis!:Tpf!6P9@!<)ot!:^!g!2]\q!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u%fZP/!<3'!!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!58C4
+!<3#u!9O4\!9=(Z!8RSS!;uis!;HKn!:Bdd!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!;QQo
+!;uis!:Tpf!6P9@!<)ot!:^!g!2]\q!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^]+96r;Q`sjo5;\j8T)Zh#@?Sr;Q`sp\t3nmJd.dr;Q`srVlitr;Q`srVlitr;Q`srVlit
+r;Q`sq#:<or;Q`sn,E@fao;DBrrE&u!!)Ng!!&hp2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#trtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+q>_<2!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^]+96r;Q`sjo5;\j8T)Zh#@?Sr;Q`sp\t3nmJd.dr;Q`srVlitr;Q`srVlitr;Q`srVlit
+r;Q`sq#:<or;Q`sn,E@fao;DBrrE&u!!)Ng!!&hp2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#trtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+q>_<2!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^]+96r;Q`sjo5;\j8T)Zh#@?Sr;Q`sp\t3nmJd.dr;Q`srVlitr;Q`srVlitr;Q`srVlit
+r;Q`sq#:<or;Q`sn,E@fao;DBrrE&u!!)Ng!!&hp2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#trtth:!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+q>_<2!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!5AI5
+!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#unc&Rhq#:<o
+k5PD]rVlitr;Q`srVlitr;Q`sr;Q`srr2rup\t3nr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rkrrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"^]+96rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&c!S0Da~>
+!BU8[kl:__rrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!5AI5
+!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#unc&Rhq#:<o
+k5PD]rVlitr;Q`srVlitr;Q`sr;Q`srr2rup\t3nr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rkrrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"^]+96rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&_!R<`V~>
+!B:&XirB)YrrE-"qu@l>!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!qu?s$!<3'!!<<#u
+rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!5AI5
+!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#unc&Rhq#:<o
+k5PD]rVlitr;Q`srVlitr;Q`sr;Q`srr2rup\t3nr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rkrrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"^]+96rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;fo'`S15!<3'!!<3'!!<3'!!<3'!!<<#u!<<&Y!Q-jH~>
+!BpJ^m0<RjrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^Ae05q#:<orVlitr;ZcsrVlitqu6Wrq>UEprVlitrVults8W*!s8N'!rr;uurVlitrVlit
+rVlitqu?Zrrr2ruoD\djqZ$Npk5PD]r;Q`sr;Q`srVlitr;Q`squ?WqpAY*mrVlitr;Q`srVlit
+q>UEpqYpNqrVlitr;Q`srVlitr;Q`srVultrVlitrVlitp\tEts8N*!rrE#t!!)ut!!)lq!!)ip
+!!)ut!!)rs!!)utrrBe52ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^Ae05q#:<orVlitr;ZcsrVlitqu6Wrq>UEprVlitrVults8W*!s8N'!rr;uurVlitrVlit
+rVlitqu?Zrrr2ruoD\djqZ$Npk5PD]r;Q`sr;Q`srVlitr;Q`squ?WqpAY*mrVlitr;Q`srVlit
+q>UEpqYpNqrVlitr;Q`srVlitr;Q`srVultrVlitrVlitp\tEts8N*!rrE#t!!)ut!!)lq!!)ip
+!!)ut!!)rs!!)utrrBe52ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+rrE)u!<3!%!<3'!!<<#u!ri9#rW!N0!<3'!!<3'!!<3'!!<3'!qu@B0!<3'!!<3'!!<3'!!<3'!
+!<<#u^Ae05q#:<orVlitr;ZcsrVlitqu6Wrq>UEprVlitrVults8W*!s8N'!rr;uurVlitrVlit
+rVlitqu?Zrrr2ruoD\djqZ$Npk5PD]r;Q`sr;Q`srVlitr;Q`squ?WqpAY*mrVlitr;Q`srVlit
+q>UEpqYpNqrVlitr;Q`srVlitr;Q`srVultrVlitrVlitp\tEts8N*!rrE#t!!)ut!!)lq!!)ip
+!!)ut!!)rs!!)utrrBe52ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!
+!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E#2s8;rrrr<&rrr<&trr<&rrr<&s
+rr<&qrr<&rrr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)Kf!!)`m!!)6_!!)or!!)rs
+!!)ut!!)rs!!)rs!!*#u!!)cnquHZp!!)or!!)lq!!)or!!)or!!)fo!!)rs!!)rs!!*#u!!)or
+!!)fo"p"]'!<<'!rr2ruqu6Wrqu6WrqYpNqqu6WrrVlitr;Q`s^]+96rr4bSrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!1!<3'!!<3'!!<3'!
+!<3'!!<;Ng&H;b1!<3'!!<3'!!<3'!!<<#u!<<&c!S0Da~>
+!BU8[kl:__rrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E#2s8;rrrr<&rrr<&trr<&rrr<&s
+rr<&qrr<&rrr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)Kf!!)`m!!)6_!!)or!!)rs
+!!)ut!!)rs!!)rs!!*#u!!)cnquHZp!!)or!!)lq!!)or!!)or!!)fo!!)rs!!)rs!!*#u!!)or
+!!)fo"p"]'!<<'!rr2ruqu6Wrqu6WrqYpNqqu6WrrVlitr;Q`s^]+96rr4bSrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!1!<3'!!<3'!!<3'!
+!<3'!!<;Ng&H;b1!<3'!!<3'!!<3'!!<<#u!<<&_!R<`V~>
+!B:&XirB)YrrE-"qu?`srW!$"!<;rs!<;rs!ri9#qu?m"!<3'!p&G0o!<<#urr2rurr3!!s82is
+s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j"rrE'!s8E#2s8;rrrr<&rrr<&trr<&rrr<&s
+rr<&qrr<&rrr<&urr<&urr<&urr<&urr<&rrrW9$rrDrr!!)rs!!)Kf!!)`m!!)6_!!)or!!)rs
+!!)ut!!)rs!!)rs!!*#u!!)cnquHZp!!)or!!)lq!!)or!!)or!!)fo!!)rs!!)rs!!*#u!!)or
+!!)fo"p"]'!<<'!rr2ruqu6Wrqu6WrqYpNqqu6WrrVlitr;Q`s^]+96rr4bSrrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<2uu!<3!1!<3'!!<3'!!<3'!
+!<3'!!<;Ng&H;b1!<3'!!<3'!!<3'!!<<#u!<<&Y!Q-jH~>
+!BpJ^m0<RjrrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#u\c2X0rr;corVlitqu6Wrr;Q`sqZ$?krr2ru
+rr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Igo`"mklMghaqYpNqr;Q`srVlitr;Q`srVlitr;Q`s
+q#:<orVlitrVuZnqYpNqqu?HlrVu`pqu?Wqqu?Hlq#:<orr3$"rrE&u!!)or!!)or!!)lqq#L?m
+rW'S12ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8E#trt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#u\c2X0rr;corVlitqu6Wrr;Q`sqZ$?krr2ru
+rr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Igo`"mklMghaqYpNqr;Q`srVlitr;Q`srVlitr;Q`s
+q#:<orVlitrVuZnqYpNqqu?HlrVu`pqu?Wqqu?Hlq#:<orr3$"rrE&u!!)or!!)or!!)lqq#L?m
+rW'S12ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8E#trt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7u]srrE)s!!<0#s8E!$rrE'!s82j"rrE'!s7cQsrrE'!s8E#trriE&!<3'!
+p](Bq!<;fo"TJK%!<;rs"TJK%!<;fo"TJK%!<<#u\c2X0rr;corVlitqu6Wrr;Q`sqZ$?krr2ru
+rr2rurr2rurr2ruqu6]ts8Vlpr;Q`snG`Igo`"mklMghaqYpNqr;Q`srVlitr;Q`srVlitr;Q`s
+q#:<orVlitrVuZnqYpNqqu?HlrVu`pqu?Wqqu?Hlq#:<orr3$"rrE&u!!)or!!)or!!)lqq#L?m
+rW'S12ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8E#trt,82!<3'!!<3'!!<3'!!<3'!l2V=o!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E#-rrW9$rrDcm!!)or!!)rs!!)lq
+!!)cn!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!:g'h!;$3j!:0Xb!;ZWp!;uis!<)ot!;uis!<)ot
+!;uis!;QQo!<)ot!<)ot!;$3j!;lcr!;HKn!;uis!;QTo!<)ot!:g'h!<3!"!<3&urr<&rrr<&r
+rr<&qrr<&is8N)5rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr3E-rrE'!rrE'!rrE'!s6'FkrrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E#-rrW9$rrDcm!!)or!!)rs!!)lq
+!!)cn!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!:g'h!;$3j!:0Xb!;ZWp!;uis!<)ot!;uis!<)ot
+!;uis!;QQo!<)ot!<)ot!;$3j!;lcr!;HKn!;uis!;QTo!<)ot!:g'h!<3!"!<3&urr<&rrr<&r
+rr<&qrr<&is8N)5rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr3E-rrE'!rrE'!rrE'!s6'FkrrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"p](Bq!<;rs!<<#u#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt!!*#u
+!<E/n!!*&s!!*&s!!N<%rrE)u!!N<%rrE)s!!*&s!!<0#s8E#-rrW9$rrDcm!!)or!!)rs!!)lq
+!!)cn!!*#u!!*#u!!*#u!!)or!s&B$!;6?l!:g'h!;$3j!:0Xb!;ZWp!;uis!<)ot!;uis!<)ot
+!;uis!;QQo!<)ot!<)ot!;$3j!;lcr!;HKn!;uis!;QTo!<)ot!:g'h!<3!"!<3&urr<&rrr<&r
+rr<&qrr<&is8N)5rr<&us"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<<#urr2rurr3E-rrE'!rrE'!rrE'!s6'FkrrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!!)or
+!s&B$!;?Em!;lcr!;uis!;c]q!;HKn!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lo)A[io)A[im/I%c
+q#:<or;Q`srVlitr;Q`srVlitr;Q`sq#:<or;Q`srr2ruoD\djqu6Wrp\t3nr;Q`sr;Q`sr;Q`s
+rr2runc&RhrVultrr2ruqu6Wrqu6WrqYpNqpAY*mr;Q`s^Ag+lrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[km%.frrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!!)or
+!s&B$!;?Em!;lcr!;uis!;c]q!;HKn!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lo)A[io)A[im/I%c
+q#:<or;Q`srVlitr;Q`srVlitr;Q`sq#:<or;Q`srr2ruoD\djqu6Wrp\t3nr;Q`sr;Q`sr;Q`s
+rr2runc&RhrVultrr2ruqu6Wrqu6WrqYpNqpAY*mr;Q`s^Ag+lrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xis,M`rrE'!s8E!(rrE'!rrE'!s7u^"rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs!ri9#rW!*$!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!!)or
+!s&B$!;?Em!;lcr!;uis!;c]q!;HKn!<2uu!<2uu!<2uu!;lcu!<<'!p&>!lo)A[io)A[im/I%c
+q#:<or;Q`srVlitr;Q`srVlitr;Q`sq#:<or;Q`srr2ruoD\djqu6Wrp\t3nr;Q`sr;Q`sr;Q`s
+rr2runc&RhrVultrr2ruqu6Wrqu6WrqYpNqpAY*mr;Q`s^Ag+lrrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!<3!5!<3'!!<3'!!<3'!!<3'!!<3'!
+!<;Ti')qt3!<3'!!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.crrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!5AL5!<)ot!<)ot!<)rt
+!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!;$3j
+!;uis!<)ot!<)ot!;ZZp!;?Em!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!;HKn!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!5JO6!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!
+rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!5AL5!<)ot!<)ot!<)rt
+!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!;$3j
+!;uis!<)ot!<)ot!;ZZp!;?Em!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!;HKn!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!5JO6!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!
+rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"qu@$&!<3'!!<3'!qu@$&!<3'!!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&m!!N<%rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!5AL5!<)ot!<)ot!<)rt
+!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u!<)ot!<)ot!<)rt!;uis!;$3j
+!;uis!<)ot!<)ot!;ZZp!;?Em!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!;HKn!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!;QQo!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!5JO6!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!
+rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!<E/u!;lfp
+!;lcs!<;utq>^Bnr;Z]qrVuiss8W*!s8W*!"9/?$s8;rps8;rqs7u`js7lZms8;rms8N)ns7lZl
+s8E#os8E#os8E#ms8;rrs8N)us8;rps7u`ns8;rps8;ots8E#trrE-"r;c`pr;cTlr;cis!!)rs
+r;cWmr;ccqr;c`p!<E/u!58Ck!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rt'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!
+rrE'!s8E#tm/bd$J,~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!<E/u!;lfp
+!;lcs!<;utq>^Bnr;Z]qrVuiss8W*!s8W*!"9/?$s8;rps8;rqs7u`js7lZms8;rms8N)ns7lZl
+s8E#os8E#os8E#ms8;rrs8N)us8;rps7u`ns8;rps8;ots8E#trrE-"r;c`pr;cTlr;cis!!)rs
+r;cWmr;ccqr;c`p!<E/u!58Ck!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rt'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!
+rrE'!s8E#tklK'jJ,~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+!<3!%!<3'!!<<#u!ri9#rVurup&G6q!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW'_5!<E/u!;lfp
+!;lcs!<;utq>^Bnr;Z]qrVuiss8W*!s8W*!"9/?$s8;rps8;rqs7u`js7lZms8;rms8N)ns7lZl
+s8E#os8E#os8E#ms8;rrs8N)us8;rps7u`ns8;rps8;ots8E#trrE-"r;c`pr;cTlr;cis!!)rs
+r;cWmr;ccqr;c`p!<E/u!58Ck!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!rW)rt'`e76rrE'!rrE'!rrE'!rrE'!rrE)i!##;3rrE'!rrE'!rrE'!
+rrE'!s8E#tirR%VJ,~>
+!BpJ^m/R.crrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!3#nt!1<fd
+!.k0$s8Drt!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$
+J,~>
+!BU8[kl:__rrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!3#nt!1<fd
+!.k0$s8Drt!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'j
+J,~>
+!B:&XirB)YrrE-"qu@*(!<3'!!<3'!!<;rs#6+]'!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&u!"Al-rrE'!rrE'!rrE)u!!N<%rrE)s!!<0#s8E!"rrE)u!3#nt!1<fd
+!.k0$s8Drt!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!rW)rt!!*#u&HMh2rrE'!rrE'!rrE'!rrE)g!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%V
+J,~>
+!BpJ^m0<RjrrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW&qt!!&Dd
+rr@WMJcGZJ2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urp9a;
+4b*~>
+!BU8[km%.frrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW&qt!!&Dd
+rr@WMJcGZJ2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#urojI/
+3e.~>
+!B:&Xis,M`rrE'!s8E!*rrE'!rrE'!rrE)q!!N<%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rriE&!<3'!rW!$"!<<#u!<;rs$NC,+!<3'!!<3'!qu?m"!<3'!rW!$"!<;rs!ri9#rW&qt!!&Dd
+rr@WMJcGZJ2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!s8E#trtPP6!<3'!!<3'!!<3'!!<3'!!<3'!nc0=&!<3'!!<3'!!<3'!!<3'!!<<#uro4$s
+2h1~>
+!BpJ^m/R.crrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!3#nt!1Ele!.k0$
+s8;ls!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8Duus8MBdeieN~>
+!BU8[kl:__rrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!3#nt!1Ele!.k0$
+s8;ls!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8Duus8M6`c8pI~>
+!B:&XirB)YrrE-"qu?fu!<<#u!ri9#rVuruqu?m"!<3'!rW!0&!<3'!!<;rs#6+]'!<3'!rW)rt
+!!*#u!<E/t!!*&s!!*&s!!<0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!3#nt!1Ele!.k0$
+s8;ls!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+s8Duus8M$Z_`*)~>
+!BpJ^m0<RjrrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW&tur;_EKJcCr62ZWjXrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urp9a;4b*~>
+!BU8[km%.frrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW&tur;_EKJcCr62ZWjXrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urojI/3e.~>
+!B:&Xis,M`rrE'!s7cQqrrE)u!!<0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&!<3'!
+rW!$"!<<#u!ri9#p](Hs!<3'!qu?m"!<3'!p](Hs!<3'!rW&tur;_EKJcCr62ZWjXrrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#uro4$s2h1~>
+!BpJ^m/R.crrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[kl:__rrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&XirB)YrrE-"p&G*mqu?`squ?fu!<;lq#6+]'!<3'!qu?m"!<3'!rW)rt!!*#u!<E/t!!*&s
+!!<0#s7u]urrE'!s7u]srrE)o!!N<%rrE)u!.k0$s+13[rr<&us"aZT!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/R.cs"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[kl:__s"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&XirB)Ys"aZT!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<<#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&rrE'!rrE'!
+s8E"Ls+13$s1&(/!<3!S!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m5Y+GrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rb!S0Da~>
+!BU8[krA\CrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)r^!R<`V~>
+!B:&Xj#I&=rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE)u!<3!I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<<#u$NC,+!<3'!
+!<3'!rW%NLJcC<$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!<3!W!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!rW)rX!Q-jH~>
+!BpJ^m/[4ea8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&c!S0Da~>
+!BU8[klCeaa8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&_!R<`V~>
+!B:&XirK/[a8l5>!W`9#aT-nlJcC<$\GlU1s8U1@rr3$"s8U1@!<<&Y!Q-jH~>
+!BpJ^m/[1+!<<)<!.k0$s+13[s2G'<s2G'<m/bd$J,~>
+!BU8[klCb'!<<)<!.k0$s+13[s2G'<s2G'<klK'jJ,~>
+!B:&XirK,!!<<)<!.k0$s+13[s2G'<s2G'<irR%VJ,~>
+!BpJ^m5b7I!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<&c!S0Da~>
+!BU8[krJhE!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<&_!R<`V~>
+!B:&Xj#R2?!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3!Z!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3%Ms+13$s1&(i!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3&us#U5\!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!!<3'!
+!<3'!!<3'!!<3'!!<3'!!<<&Y!Q-jH~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=>7g!.b-$!.b-h!<2?deieN~>
+!BU8[l%&hc!.b-$!.b-h!<23`c8pI~>
+!B:&Xj+.2]!.b-$!.b-h!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8N'"rrDThrr<'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8N'"rrDThrr<'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8N'"rrDThrr<'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrE-"p](Kt!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrE-"p](Kt!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrE-"p](Kt!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'%rrE'!s7QEms8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'%rrE'!s7QEms8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'%rrE'!s7QEms8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'#rrE)g!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8N'#rrE)g!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8N'#rrE)g!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s69U`m/bd$J,~>
+!BU8[l%/kcs+13$s+14*s69U`klK'jJ,~>
+!B:&Xj+75]s+13$s+14*s69U`irR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s69U`m/bd$J,~>
+!BU8[l%/kcs+13$s+14*s69U`klK'jJ,~>
+!B:&Xj+75]s+13$s+14*s69U`irR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#drr<&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#drr<&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#drr<&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^mAg3d!7_&J!;ZZo!;ZZo!;ZZo!8@JO!.k0$s+13Ts8N'1rrE'!rrE'!rrE'!rrE'!s8Duu
+s8MBdeieN~>
+!BU8[l)Od`!7_&J!;ZZo!;ZZo!;ZZo!8@JO!.k0$s+13Ts8N'1rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M6`c8pI~>
+!B:&Xj/W.Z!7_&J!;ZZo!;ZZo!;ZZo!8@JO!.k0$s+13Ts8N'1rrE'!rrE'!rrE'!rrE'!s8Duu
+s8M$Z_`*)~>
+!BpJ^mHOZM!!3*"jo5;\j8T)Zec,ULrr2ruqu6Wrrr2ruqu6Wrrr2ruqu6Wrrr2ruo)JOdmf*7e
+`;ff:s8W#tnc&RhJcC<$M#[GSrr3N0rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l086I!!3*"jo5;\j8T)Zec,ULrr2ruqu6Wrrr2ruqu6Wrrr2ruqu6Wrrr2ruo)JOdmf*7e
+`;ff:s8W#tnc&RhJcC<$M#[GSrr3N0rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj6?UC!!3*"jo5;\j8T)Zec,ULrr2ruqu6Wrrr2ruqu6Wrrr2ruqu6Wrrr2ruo)JOdmf*7e
+`;ff:s8W#tnc&RhJcC<$M#[GSrr3N0rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^mHX]O!<3#u!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5nj:!<)ot!:^!g!.k0$s+p^T!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[l0A9K!<3#u!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5nj:!<)ot!:^!g!.k0$s+p^T!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&Xj6HXE!<3#u!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5nj:!<)ot!:^!g!.k0$s+p^T!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^mHacP!;uis!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5ng<!<3&urr<&grr<%Ms+13+s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l0J?L!;uis!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5ng<!<3&urr<&grr<%Ms+13+s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj6Q^F!;uis!9O4\!9=(Z!7q/M!;uis!<)ot!;uis!<)ot!;uis!<)ot!;uis!:p-i!;uis
+!:Tpf!5ng<!<3&urr<&grr<%Ms+13+s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^mHacP!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#u
+li-qbrVlitr;Q`srVlitr;Q`sr;Q`srr2runc&Rhr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rerrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"JcC<$UAt5n&H;b1!<3'!!<3'!!<3'!!<<#u
+!<<&c!S0Da~>
+!BU8[l0J?L!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#u
+li-qbrVlitr;Q`srVlitr;Q`sr;Q`srr2runc&Rhr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rerrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"JcC<$UAt5n&H;b1!<3'!!<3'!!<3'!!<<#u
+!<<&_!R<`V~>
+!B:&Xj6Q^F!;?Hk!;uls!!*&t!;uln!;ulq!<)rt!!`H'!<<'!!<)ou!<;utqu?Tpr;Z`r!<<#u
+li-qbrVlitr;Q`srVlitr;Q`sr;Q`srr2runc&Rhr;Q`sr;Z]qq#:<oq>^BnqZ$KoqZ$Ko!WN/t
+s8;rerrN3#!<2uu!;ulq!;lfm!;ulq!;c`o!!3*"JcC<$UAt5n&H;b1!<3'!!<3'!!<3'!!<<#u
+!<<&Y!Q-jH~>
+!BpJ^mHX]O!;QQo!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot
+!<)ot!;lfr!<2uu!:Bdd!;uis!;uis!<)ot!;uis!;lfq!:^!g!<)ot!;uis!<)ot!;ZWp!;c]q
+!<)ot!;uis!<)ot!;uis!<)rt!<)ot!<)ot!:g'n!<<'!s8N)trr<&trr<&qrr<&prr<&trr<&s
+rr<&ts8N(Ms+13Es8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l0A9K!;QQo!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot
+!<)ot!;lfr!<2uu!:Bdd!;uis!;uis!<)ot!;uis!;lfq!:^!g!<)ot!;uis!<)ot!;ZWp!;c]q
+!<)ot!;uis!<)ot!;uis!<)rt!<)ot!<)ot!:g'n!<<'!s8N)trr<&trr<&qrr<&prr<&trr<&s
+rr<&ts8N(Ms+13Es8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj6HXE!;QQo!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!<)rt!<<*!!<<'!!<3#u!<)ot!<)ot
+!<)ot!;lfr!<2uu!:Bdd!;uis!;uis!<)ot!;uis!;lfq!:^!g!<)ot!;uis!<)ot!;ZWp!;c]q
+!<)ot!;uis!<)ot!;uis!<)rt!<)ot!<)ot!:g'n!<<'!s8N)trr<&trr<&qrr<&prr<&trr<&s
+rr<&ts8N(Ms+13Es8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^mHOZL!<)ot!;lcr!<)ot!;lcr!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!
+qu6Wrr;Q`sl2L_`qu6Wrr;Q`srVlitr;Q`sr;Q`srr2runc/Ler;Q`squ6WrqYpNqqu6Wrqu6Wr
+q#:<or;Q`sr;Q`srr2ruqu6Wro)Amos8N*!rrE&u!!)or!!)or!!)lq!!)or!!)ut!!)rs!!%TM
+JcDJErr<W1!<3'!!<3'!!<3'!!<3'!rVururp9a;4b*~>
+!BU8[l086H!<)ot!;lcr!<)ot!;lcr!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!
+qu6Wrr;Q`sl2L_`qu6Wrr;Q`srVlitr;Q`sr;Q`srr2runc/Ler;Q`squ6WrqYpNqqu6Wrqu6Wr
+q#:<or;Q`sr;Q`srr2ruqu6Wro)Amos8N*!rrE&u!!)or!!)or!!)lq!!)or!!)ut!!)rs!!%TM
+JcDJErr<W1!<3'!!<3'!!<3'!!<3'!rVururojI/3e.~>
+!B:&Xj6?UB!<)ot!;lcr!<)ot!;lcr!;uis!;c]q!;lcr!<2uu!<2uu!<2uu!<2uu!;lcu!<<'!
+qu6Wrr;Q`sl2L_`qu6Wrr;Q`srVlitr;Q`sr;Q`srr2runc/Ler;Q`squ6WrqYpNqqu6Wrqu6Wr
+q#:<or;Q`sr;Q`srr2ruqu6Wro)Amos8N*!rrE&u!!)or!!)or!!)lq!!)or!!)ut!!)rs!!%TM
+JcDJErr<W1!<3'!!<3'!!<3'!!<3'!rVururo4$s2h1~>
+!BpJ^mH+?J!<3#o!<)ot!;lcr!;uis!;c`k!<2uu!<2uu!<2uu!<2uu!;lct!<<)p!;uis!:'Ra
+!;c]q!;uis!<)ot!;uis!<)ot!;uis!:p-i!<)ot!<)rn!;c]q!;lfl!<)rp!;lfq!;lfl!:p-i
+!<3!"!<3&urr<&rrr<&rrr<&qs7lZms8E"Ls+13Bs8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$
+J,~>
+!BU8[l/hpF!<3#o!<)ot!;lcr!;uis!;c`k!<2uu!<2uu!<2uu!<2uu!;lct!<<)p!;uis!:'Ra
+!;c]q!;uis!<)ot!;uis!<)ot!;uis!:p-i!<)ot!<)rn!;c]q!;lfl!<)rp!;lfq!;lfl!:p-i
+!<3!"!<3&urr<&rrr<&rrr<&qs7lZms8E"Ls+13Bs8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'j
+J,~>
+!B:&Xj5p:@!<3#o!<)ot!;lcr!;uis!;c`k!<2uu!<2uu!<2uu!<2uu!;lct!<<)p!;uis!:'Ra
+!;c]q!;uis!<)ot!;uis!<)ot!;uis!:p-i!<)ot!<)rn!;c]q!;lfl!<)rp!;lfq!;lfl!:p-i
+!<3!"!<3&urr<&rrr<&rrr<&qs7lZms8E"Ls+13Bs8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%V
+J,~>
+!BpJ^mH"9L!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&brr<&p
+rr<&srr<&trr<&srr<&trr<&srr<&irr<&trr<&trr<&jrr<&rrr<&nrr<&srr<&os8N)trr<&b
+rr<&urrN3#!<2uu!;lcr!;lcr!;c]q!:p0i!.k0$s.TJm!"f/1rrE'!rrE'!rrE'!rrE)u!!*&u
+m/bd$J,~>
+!BU8[l/_jH!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&brr<&p
+rr<&srr<&trr<&srr<&trr<&srr<&irr<&trr<&trr<&jrr<&rrr<&nrr<&srr<&os8N)trr<&b
+rr<&urrN3#!<2uu!;lcr!;lcr!;c]q!:p0i!.k0$s.TJm!"f/1rrE'!rrE'!rrE'!rrE)u!!*&u
+klK'jJ,~>
+!B:&Xj5g4B!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&brr<&p
+rr<&srr<&trr<&srr<&trr<&srr<&irr<&trr<&trr<&jrr<&rrr<&nrr<&srr<&os8N)trr<&b
+rr<&urrN3#!<2uu!;lcr!;lcr!;c]q!:p0i!.k0$s.TJm!"f/1rrE'!rrE'!rrE'!rrE)u!!*&u
+irR%VJ,~>
+!BpJ^mHacP!;lcu!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&c
+rr<&orr<&srr<&trr<&srr<&trr<&srr<&irr<&srr<&urr<&jrr<&rrr<&nrr<&srr<&srr<&s
+rr<&urr<&brr<&ts8N)urr<&rrr<&rrr<&qrr<&mrr<&srr<%Ms+13Es8E#trt#21!<3'!!<3'!
+!<3'!!<3&um/bd$J,~>
+!BU8[l0J?L!;lcu!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&c
+rr<&orr<&srr<&trr<&srr<&trr<&srr<&irr<&srr<&urr<&jrr<&rrr<&nrr<&srr<&srr<&s
+rr<&urr<&brr<&ts8N)urr<&rrr<&rrr<&qrr<&mrr<&srr<%Ms+13Es8E#trt#21!<3'!!<3'!
+!<3'!!<3&uklK'jJ,~>
+!B:&Xj6Q^F!;lcu!<<'!pAY*mqu6Wrr;Q`sqYpNqp\t3nrr2rurr2rurr2ruqu6`us8N)lrr<&c
+rr<&orr<&srr<&trr<&srr<&trr<&srr<&irr<&srr<&urr<&jrr<&rrr<&nrr<&srr<&srr<&s
+rr<&urr<&brr<&ts8N)urr<&rrr<&rrr<&qrr<&mrr<&srr<%Ms+13Es8E#trt#21!<3'!!<3'!
+!<3'!!<3&uirR%VJ,~>
+!BpJ^mHafP!<)ot!<)ot!<)rt!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u
+!<)ot!<)ot!<)rt!;uis!:Bdd!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!:g'h!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!:p-i!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!.k0$s.]Pn!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[l0JBL!<)ot!<)ot!<)rt!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u
+!<)ot!<)ot!<)rt!;uis!:Bdd!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!:g'h!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!:p-i!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!.k0$s.]Pn!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&Xj6QaF!<)ot!<)ot!<)rt!<)rt!<)ot!;lcr!<)ot!<2uu!<)rt!<2uu!<2uu!<2uu!<3#u
+!<)ot!<)ot!<)rt!;uis!:Bdd!;uis!;uis!<2uu!;lcr!<2uu!;lcr!<2uu!:g'h!;uis!<)ot
+!<)rt!;c]q!;c]q!<)rt!<2uu!<)rt!;uls!<)ot!<)ot!<)rt!:p-i!<)rt!<)ot!<)ot!;c]q
+!<)ot!<2uu!<)rt!<)rt!<)ot!.k0$s.]Pn!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^mHacQ!<;utqu?Tpqu6Zss8;rns8;rqs8;rrs8E#us8N*!s8N'$rr<'!r;c`pr;ccqq>g*d
+q#L<lrW)corW)corW)Kgr;cfrrrE&ur;c`pq>gHnr;c`pr;ZitrW)rt!<E/u!;lfp!:g*f!<2uu
+!;ulq!;QTm!;ulq!;lcs!<;utJcC<$U&Y)lrr3N0rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l0J?M!<;utqu?Tpqu6Zss8;rns8;rqs8;rrs8E#us8N*!s8N'$rr<'!r;c`pr;ccqq>g*d
+q#L<lrW)corW)corW)Kgr;cfrrrE&ur;c`pq>gHnr;c`pr;ZitrW)rt!<E/u!;lfp!:g*f!<2uu
+!;ulq!;QTm!;ulq!;lcs!<;utJcC<$U&Y)lrr3N0rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj6Q^G!<;utqu?Tpqu6Zss8;rns8;rqs8;rrs8E#us8N*!s8N'$rr<'!r;c`pr;ccqq>g*d
+q#L<lrW)corW)corW)Kgr;cfrrrE&ur;c`pq>gHnr;c`pr;ZitrW)rt!<E/u!;lfp!:g*f!<2uu
+!;ulq!;QTm!;ulq!;lcs!<;utJcC<$U&Y)lrr3N0rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^mFD4:!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[l.,e6!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&Xj44/0!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^mFD4:!.k0$s+13$s,$dT!<3!0!<3'!!<3'!!<3'!!<3'!!<2?deieN~>
+!BU8[l.,e6!.k0$s+13$s,$dT!<3!0!<3'!!<3'!!<3'!!<3'!!<23`c8pI~>
+!B:&Xj44/0!.k0$s+13$s,$dT!<3!0!<3'!!<3'!!<3'!!<3'!!<2!Z_`*)~>
+!BpJ^mFD4:!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&um/bd$J,~>
+!BU8[l.,e6!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uklK'jJ,~>
+!B:&Xj44/0!.k0$s+13$s,$dU!"f/1rrE'!rrE'!rrE'!rrE)u!!*&uirR%VJ,~>
+!BpJ^mFM=9!.k0$s+13$s,6pV!<3!0!<3'!!<3'!!<3'!!<3'!!<2?deieN~>
+!BU8[l.5n5!.k0$s+13$s,6pV!<3!0!<3'!!<3'!!<3'!!<3'!!<23`c8pI~>
+!B:&Xj4=8/!.k0$s+13$s,6pV!<3!0!<3'!!<3'!!<3'!!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'#rrE)g!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8N'#rrE)g!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8N'#rrE)g!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m?IYN!.k0$s+13$s3(HB!:9abm/bd$J,~>
+!BU8[l'25J!.k0$s+13$s3(HB!:9abklK'jJ,~>
+!B:&Xj-9TD!.k0$s+13$s3(HB!:9abirR%VJ,~>
+!BpJ^mHafN!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpc!##;3!<3$!rr<'!!!*$!!<3$!s8MBd
+eieN~>
+!BU8[l0JBJ!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpc!##;3!<3$!rr<'!!!*$!!<3$!s8M6`
+c8pI~>
+!B:&Xj6QaD!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpc!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z
+_`*)~>
+!BpJ^mHFQM!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpe!:9abm/bd$J,~>
+!BU8[l0/-I!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpe!:9abklK'jJ,~>
+!B:&Xj66LC!:9^c!5ng:!9sL`!;QQo!.k0$s+13$s6fpe!:9abirR%VJ,~>
+!BpJ^mHOWP!<3&%rr<&Vrr<%Ms+13$s+14<s8N)cs8MBdeieN~>
+!BU8[l083L!<3&%rr<&Vrr<%Ms+13$s+14<s8N)cs8M6`c8pI~>
+!B:&Xj6?RF!<3&%rr<&Vrr<%Ms+13$s+14<s8N)cs8M$Z_`*)~>
+!BpJ^mHOWP!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`p
+r;Zlu!;ulr!;c`l!;ulq!.k0$s+13$s82ip!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l083L!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`p
+r;Zlu!;ulr!;c`l!;ulq!.k0$s+13$s82ip!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj6?RF!<3&ss8E#us8E#rs8E#os8;rrs8N''rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`p
+r;Zlu!;ulr!;c`l!;ulq!.k0$s+13$s82ip!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;$3j!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;c]q!;QQo!;ZWp!<)ot!.k0$s+13$s8;os!:9abm/bd$J,~>
+!BU8[l0A9K!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;$3j!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;c]q!;QQo!;ZWp!<)ot!.k0$s+13$s8;os!:9abklK'jJ,~>
+!B:&Xj6HXE!<2uu!;uis!<)ot!;ZWp!;c]q!<)ot!<)rt!<<*!!<<'!!;$3j!;uis!<)ot!<)ot
+!;uls!<)ot!<)ot!<)rt!;c]q!;QQo!;ZWp!<)ot!.k0$s+13$s8;os!:9abirR%VJ,~>
+!BpJ^mHX]O!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!ps8N*!rrE&u!!)or
+!!)ut!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)or!!%TMJcC<$JcG]KrrDEcrp9a;4b*~>
+!BU8[l0A9K!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!ps8N*!rrE&u!!)or
+!!)ut!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)or!!%TMJcC<$JcG]KrrDEcrojI/3e.~>
+!B:&Xj6HXE!<2uu!;lcu!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!ps8N*!rrE&u!!)or
+!!)ut!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)or!!%TMJcC<$JcG]KrrDEcro4$s2h1~>
+!BpJ^mHacP!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&r
+rr<&ts8E#mrr<&orr<&qs7lYGs+13$s+14Ks8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l0J?L!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&r
+rr<&ts8E#mrr<&orr<&qs7lYGs+13$s+14Ks8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj6Q^F!;uis!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&r
+rr<&ts8E#mrr<&orr<&qs7lYGs+13$s+14Ks8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHafK!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<3'!!<3&urr<&mrr<&rrr<&q
+s8N)prr<&orr<&qrr<%Ms+13$s+14Ds8N)cs8MBdeieN~>
+!BU8[l0JBG!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<3'!!<3&urr<&mrr<&rrr<&q
+s8N)prr<&orr<&qrr<%Ms+13$s+14Ds8N)cs8M6`c8pI~>
+!B:&Xj6QaA!;lfr!;HKn!;lcr!;lcr!<2uu!<2uu!<2uu!;$3p!<3'!!<3&urr<&mrr<&rrr<&q
+s8N)prr<&orr<&qrr<%Ms+13$s+14Ds8N)cs8M$Z_`*)~>
+!BpJ^mHjiQ!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m
+!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!%TMJcC<$JcGHDrrDEcrp9a;4b*~>
+!BU8[l0SEM!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m
+!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!%TMJcC<$JcGHDrrDEcrojI/3e.~>
+!B:&Xj6ZdG!;c]q!<)p"!<<'!q#:<oqu6Wrqu6Wrrr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m
+!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!%TMJcC<$JcGHDrrDEcro4$s2h1~>
+!BpJ^mHjiQ!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt
+!<)rt!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!.k0$s+13$s8Dur!##;3!<3$!rr<'!
+!!*$!!<3$!s8MBdeieN~>
+!BU8[l0SEM!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt
+!<)rt!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!.k0$s+13$s8Dur!##;3!<3$!rr<'!
+!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj6ZdG!;c]q!<2uu!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt
+!<)rt!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!.k0$s+13$s8Dur!##;3!<3$!rr<'!
+!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mHsrP!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;$3j!<2uu!;lfp!;uls!!*&t
+!;uit!<;utr;ZTnqZ$Kor;Z]qJcC<$JcC<$qu?Zrm/R(P!S0Da~>
+!BU8[l0\NL!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;$3j!<2uu!;lfp!;uls!!*&t
+!;uit!<;utr;ZTnqZ$Kor;Z]qJcC<$JcC<$qu?Zrm/R(L!R<`V~>
+!B:&Xj6cmF!<3#s!!*&u!<<)u!<)ro!;ulq!<)rs!<<*!!<<*!!;$3j!<2uu!;lfp!;uls!!*&t
+!;uit!<;utr;ZTnqZ$Kor;Z]qJcC<$JcC<$qu?Zrm/R(F!Q-jH~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mD/c%!7LoG!;c`o!7UuJ!.k0Js8N(Qs8;rCs8;ros8;rss8;rCs8;r^s8N)cs8MBdeieN~>
+!BU8[l+m?!!7LoG!;c`o!7UuJ!.k0Js8N(Qs8;rCs8;ros8;rss8;rCs8;r^s8N)cs8M6`c8pI~>
+!B:&Xj1t]p!7LoG!;c`o!7UuJ!.k0Js8N(Qs8;rCs8;ros8;rss8;rCs8;r^s8N)cs8M$Z_`*)~>
+!BpJ^mE>P)!<2uu!7UrJ!;HKn!94"Y!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i!:0Xb!6bBB
+!;HKn!;HKn!;HKn!7q/M!;HKn!;QQo!<3#u!:9abm/bd$J,~>
+!BU8[l-',%!<2uu!7UrJ!;HKn!94"Y!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i!:0Xb!6bBB
+!;HKn!;HKn!;HKn!7q/M!;HKn!;QQo!<3#u!:9abklK'jJ,~>
+!B:&Xj3.Jt!<2uu!7UrJ!;HKn!94"Y!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i!:0Xb!6bBB
+!;HKn!;HKn!;HKn!7q/M!;HKn!;QQo!<3#u!:9abirR%VJ,~>
+!BpJ^mE>M0!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i
+!:9^c!6bBB!;HKn!;?Em!;HKn!7q/M!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8MBd
+eieN~>
+!BU8[l-'),!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i
+!:9^c!6bBB!;HKn!;?Em!;HKn!7q/M!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M6`
+c8pI~>
+!B:&Xj3.H&!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!6G0?!94"Y!9!kW!3?,"!;ZWp!1j,i
+!:9^c!6bBB!;HKn!;?Em!;HKn!7q/M!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z
+_`*)~>
+!BpJ^mE>M0!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!3#nt!/^^U!;ZWp!1j,i!:9^c!6bBB
+!;HKn!;?Em!6bBB!:Bdd!<3#u!:9abm/bd$J,~>
+!BU8[l-'),!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!3#nt!/^^U!;ZWp!1j,i!:9^c!6bBB
+!;HKn!;?Em!6bBB!:Bdd!<3#u!:9abklK'jJ,~>
+!B:&Xj3.H&!<2uu!<2uu!<2uu!7_#K!;HKn!9*qX!:Kje!3#nt!/^^U!;ZWp!1j,i!:9^c!6bBB
+!;HKn!;?Em!6bBB!:Bdd!<3#u!:9abirR%VJ,~>
+!BpJ^mE>M0!<2uu!<2uu!<3!!!<;utqu?Tpn,N=dqu?KmrVu]or;Z]qr;Z`r!<<#ur;ZTno)A^j
+s8;rps8;rqs8Duus8E#qs8;rds8E#os8;ourrDWiq>gHnr;c<drW)lrrr<9'!!*'!!!*#urr<'!
+r;cfrrVururW)iqr;ccqrW)rtrW)osr;c?eq>gKo!<E/u!;lfp!:Tsd!!3*"rr;uurVultrr;uu
+!<;utrVult!<;utqu?Tpr;Z`r!<<#ur;ZTno)JOdr;Z]qr;Z`r!<<#unGiFequ?KmrVu]oqYpNq
+q>^Eoqu?Zr!<;utqu?TpmJd.dq>^EoqZ$?km/R(P!S0Da~>
+!BU8[l-'),!<2uu!<2uu!<3!!!<;utqu?Tpn,N=dqu?KmrVu]or;Z]qr;Z`r!<<#ur;ZTno)A^j
+s8;rps8;rqs8Duus8E#qs8;rds8E#os8;ourrDWiq>gHnr;c<drW)lrrr<9'!!*'!!!*#urr<'!
+r;cfrrVururW)iqr;ccqrW)rtrW)osr;c?eq>gKo!<E/u!;lfp!:Tsd!!3*"rr;uurVultrr;uu
+!<;utrVult!<;utqu?Tpr;Z`r!<<#ur;ZTno)JOdr;Z]qr;Z`r!<<#unGiFequ?KmrVu]oqYpNq
+q>^Eoqu?Zr!<;utqu?TpmJd.dq>^EoqZ$?km/R(L!R<`V~>
+!B:&Xj3.H&!<2uu!<2uu!<3!!!<;utqu?Tpn,N=dqu?KmrVu]or;Z]qr;Z`r!<<#ur;ZTno)A^j
+s8;rps8;rqs8Duus8E#qs8;rds8E#os8;ourrDWiq>gHnr;c<drW)lrrr<9'!!*'!!!*#urr<'!
+r;cfrrVururW)iqr;ccqrW)rtrW)osr;c?eq>gKo!<E/u!;lfp!:Tsd!!3*"rr;uurVultrr;uu
+!<;utrVult!<;utqu?Tpr;Z`r!<<#ur;ZTno)JOdr;Z]qr;Z`r!<<#unGiFequ?KmrVu]oqYpNq
+q>^Eoqu?Zr!<;utqu?TpmJd.dq>^EoqZ$?km/R(F!Q-jH~>
+!BpJ^mDo5,!;c`q!<)ot!<)ot!<)ot!:g'h!<)ot!;c]q!;HKn!;ZWp!<)ot!;lfr!<2uu!;lcr
+!:Kme!<)ot!<)ot!<)ot!;lfr!<2uu!<)ot!<)ot!:Kje!;c]q!<)rt!:^!g!;ZWp!<)ot!:Kje
+!;lfr!<<*!!<<'!!<3#u!<)ot!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)ot!<)ot!:Tpf!;ZZp
+!<)ot!<)ot!<)ot!:g'h!<)rt!<)ot!;uis!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lfr!<2uu
+!;lcr!:9^c!;ZWp!<)ot!;lfr!<2uu!:p-i!<)ot!;c]q!;HKn!;?Em!;HKn!;c`q!<)ot!<)ot
+!<)ot!:Kje!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l,Wf(!;c`q!<)ot!<)ot!<)ot!:g'h!<)ot!;c]q!;HKn!;ZWp!<)ot!;lfr!<2uu!;lcr
+!:Kme!<)ot!<)ot!<)ot!;lfr!<2uu!<)ot!<)ot!:Kje!;c]q!<)rt!:^!g!;ZWp!<)ot!:Kje
+!;lfr!<<*!!<<'!!<3#u!<)ot!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)ot!<)ot!:Tpf!;ZZp
+!<)ot!<)ot!<)ot!:g'h!<)rt!<)ot!;uis!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lfr!<2uu
+!;lcr!:9^c!;ZWp!<)ot!;lfr!<2uu!:p-i!<)ot!;c]q!;HKn!;?Em!;HKn!;c`q!<)ot!<)ot
+!<)ot!:Kje!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj2_0"!;c`q!<)ot!<)ot!<)ot!:g'h!<)ot!;c]q!;HKn!;ZWp!<)ot!;lfr!<2uu!;lcr
+!:Kme!<)ot!<)ot!<)ot!;lfr!<2uu!<)ot!<)ot!:Kje!;c]q!<)rt!:^!g!;ZWp!<)ot!:Kje
+!;lfr!<<*!!<<'!!<3#u!<)ot!;uls!<2uu!<)ot!<)ot!;uis!;uis!<)ot!<)ot!:Tpf!;ZZp
+!<)ot!<)ot!<)ot!:g'h!<)rt!<)ot!;uis!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lfr!<2uu
+!;lcr!:9^c!;ZWp!<)ot!;lfr!<2uu!:p-i!<)ot!;c]q!;HKn!;?Em!;HKn!;c`q!<)ot!<)ot
+!<)ot!:Kje!;HKn!;QQo!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mDo5,!;c]q!;uis!<2uu!;lcr!;$3j!;lcr!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje
+!;uis!<2uu!;lcr!;uis!;ZWp!;lcr!:Tpf!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu
+!<2uu!<2uu!;lcr!<)ot!;ZWp!;lcr!;uis!<2uu!<)ot!;lcr!:^!g!;ZWp!;uis!<2uu!;lcr
+!:p-i!;uis!<)ot!;uis!<)ot!;lcr!<2uu!;lcu!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wr
+r;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNqr;Q`srr2ruqu6Wrn,E@fp\t3nq#:<orr;uu
+m/R(P!S0Da~>
+!BU8[l,Wf(!;c]q!;uis!<2uu!;lcr!;$3j!;lcr!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje
+!;uis!<2uu!;lcr!;uis!;ZWp!;lcr!:Tpf!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu
+!<2uu!<2uu!;lcr!<)ot!;ZWp!;lcr!;uis!<2uu!<)ot!;lcr!:^!g!;ZWp!;uis!<2uu!;lcr
+!:p-i!;uis!<)ot!;uis!<)ot!;lcr!<2uu!;lcu!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wr
+r;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNqr;Q`srr2ruqu6Wrn,E@fp\t3nq#:<orr;uu
+m/R(L!R<`V~>
+!B:&Xj2_0"!;c]q!;uis!<2uu!;lcr!;$3j!;lcr!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje
+!;uis!<2uu!;lcr!;uis!;ZWp!;lcr!:Tpf!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu
+!<2uu!<2uu!;lcr!<)ot!;ZWp!;lcr!;uis!<2uu!<)ot!;lcr!:^!g!;ZWp!;uis!<2uu!;lcr
+!:p-i!;uis!<)ot!;uis!<)ot!;lcr!<2uu!;lcu!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wr
+r;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNqr;Q`srr2ruqu6Wrn,E@fp\t3nq#:<orr;uu
+m/R(F!Q-jH~>
+!BpJ^mDo5,!;c]q!;uis!<3#o!;$6d!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<3#o
+!;uis!;ZZj!:Tpf!;ZZo!:Bdd!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;uis!<2uu!<)rn!:^!g!;ZWp!;uis!<3#o!:g*g!;c]q!;uis!<)ot!;lcr!<2uu!;lcu
+!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wrr;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNq
+r;Q`srr;con,E@fp\t3nq#:<orr;uum/R(P!S0Da~>
+!BU8[l,Wf(!;c]q!;uis!<3#o!;$6d!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<3#o
+!;uis!;ZZj!:Tpf!;ZZo!:Bdd!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;uis!<2uu!<)rn!:^!g!;ZWp!;uis!<3#o!:g*g!;c]q!;uis!<)ot!;lcr!<2uu!;lcu
+!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wrr;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNq
+r;Q`srr;con,E@fp\t3nq#:<orr;uum/R(L!R<`V~>
+!B:&Xj2_0"!;c]q!;uis!<3#o!;$6d!;lcr!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<3#o
+!;uis!;ZZj!:Tpf!;ZZo!:Bdd!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;uis!<2uu!<)rn!:^!g!;ZWp!;uis!<3#o!:g*g!;c]q!;uis!<)ot!;lcr!<2uu!;lcu
+!<<'!qu6Wrr;Q`spAY*mm/I%cqYpNqqu6Wrr;Q`smf*7equ6Wrqu6Wrp\t3npAY*mp\t3nqYpNq
+r;Q`srr;con,E@fp\t3nq#:<orr;uum/R(F!Q-jH~>
+!BpJ^mDo5,!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;?Hm!:Tpf!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&^s8N)srr<&srr<&trr<&rrr<&urr<&rrrW9$
+rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn!!)lq!!)rs
+!!*#u!!)6_!!)cn!!)fo!!*#ur;[K1!!*$!!<3$!rr<'!!!*$!!<<&c!S0Da~>
+!BU8[l,Wf(!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;?Hm!:Tpf!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&^s8N)srr<&srr<&trr<&rrr<&urr<&rrrW9$
+rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn!!)lq!!)rs
+!!*#u!!)6_!!)cn!!)fo!!*#ur;[K1!!*$!!<3$!rr<'!!!*$!!<<&_!R<`V~>
+!B:&Xj2_0"!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;?Hm!:Tpf!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot!;ZWp
+!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&^s8N)srr<&srr<&trr<&rrr<&urr<&rrrW9$
+rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn!!)lq!!)rs
+!!*#u!!)6_!!)cn!!)fo!!*#ur;[K1!!*$!!<3$!rr<'!!!*$!!<<&Y!Q-jH~>
+!BpJ^mDo5,!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot
+!;ZWp!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&brr<&srr<&trr<&srr<&trr<&rrr<&u
+rr<&rrrW9$rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn
+!!)lq!!)rs!!*#u!!)6_!!)cn!!)fo!!*#urrDEcrp9a;4b*~>
+!BU8[l,Wf(!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot
+!;ZWp!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&brr<&srr<&trr<&srr<&trr<&rrr<&u
+rr<&rrrW9$rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn
+!!)lq!!)rs!!*#u!!)6_!!)cn!!)fo!!*#urrDEcrojI/3e.~>
+!B:&Xj2_0"!;c]q!;uis!<2uu!:9^c!;-9k!;HKn!;c]q!;lcr!;uis!;?Em!:Kje!;uis!<2uu
+!;6?l!;ZWp!9jF_!;c]q!;uis!:^!g!;c]q!;lcr!:Tpf!;lcr!<2uu!<2uu!<2uu!;lcr!<)ot
+!;ZWp!;lcr!;lct!<3&srr<&`rr<&prr<&srr<&urr<&brr<&srr<&trr<&srr<&trr<&rrr<&u
+rr<&rrrW9$rrDrr!!)rs!!)`m!!)Bc!!)lq!!)or!!)rs!!)He!!)or!!)or!!)cn!!)`m!!)cn
+!!)lq!!)rs!!*#u!!)6_!!)cn!!)fo!!*#urrDEcro4$s2h1~>
+!BpJ^mDo5,!;c]q!;uis!<)ot!<)rt!:p-i!<)rt!;lcr!;HKn!;ZWp!<)ot!;lcr!;?Em!<)ot
+!;$3j!;uis!<)ot!<)rt!;uis!;QQo!<)rt!:Tpf!;c`q!<)ot!:^!g!<)ot!<2uu!<)ot!:Kje
+!;lcr!<2uu!<2uu!<3#u!<)ot!;uis!;QQo!<)ot!;ZWp!;c]q!<)rt!:^!g!<)ot!<2uu!;uis
+!<)ot!<)rt!:p0i!<)ot!<)ot!<)rt!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lcr!;?Em!<)ot
+!:g'h!;ZWp!<)ot!;lcr!:Bdd!<)ot!;c]q!;HKn!;?Em!;HKn!;c]q!;uis!<)ot!<)rt!:Tpf
+!;HKn!;QQo!<3#u!:9abm/bd$J,~>
+!BU8[l,Wf(!;c]q!;uis!<)ot!<)rt!:p-i!<)rt!;lcr!;HKn!;ZWp!<)ot!;lcr!;?Em!<)ot
+!;$3j!;uis!<)ot!<)rt!;uis!;QQo!<)rt!:Tpf!;c`q!<)ot!:^!g!<)ot!<2uu!<)ot!:Kje
+!;lcr!<2uu!<2uu!<3#u!<)ot!;uis!;QQo!<)ot!;ZWp!;c]q!<)rt!:^!g!<)ot!<2uu!;uis
+!<)ot!<)rt!:p0i!<)ot!<)ot!<)rt!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lcr!;?Em!<)ot
+!:g'h!;ZWp!<)ot!;lcr!:Bdd!<)ot!;c]q!;HKn!;?Em!;HKn!;c]q!;uis!<)ot!<)rt!:Tpf
+!;HKn!;QQo!<3#u!:9abklK'jJ,~>
+!B:&Xj2_0"!;c]q!;uis!<)ot!<)rt!:p-i!<)rt!;lcr!;HKn!;ZWp!<)ot!;lcr!;?Em!<)ot
+!;$3j!;uis!<)ot!<)rt!;uis!;QQo!<)rt!:Tpf!;c`q!<)ot!:^!g!<)ot!<2uu!<)ot!:Kje
+!;lcr!<2uu!<2uu!<3#u!<)ot!;uis!;QQo!<)ot!;ZWp!;c]q!<)rt!:^!g!<)ot!<2uu!;uis
+!<)ot!<)rt!:p0i!<)ot!<)ot!<)rt!<)rt!<)ot!<)rt!<)ot!<)ot!<)ot!;lcr!;?Em!<)ot
+!:g'h!;ZWp!<)ot!;lcr!:Bdd!<)ot!;c]q!;HKn!;?Em!;HKn!;c]q!;uis!<)ot!<)rt!:Tpf
+!;HKn!;QQo!<3#u!:9abirR%VJ,~>
+!BpJ^mE,D+!<)rs!<3#t!<)rr!:Tsd!;lfm!<)ro!;ulq!;uln!;ZZn!;$6i!<3#t!<)rr!;uln
+!;lfp!:^$b!<)ou!<;utmf34cr;Z]qnGi=bs8W&us8W*!s8W*!s8N*"s8;rrs7u`ms8;rmrr<&p
+s8;rbs8;rss8E#ts8E#ss8;rerrE-"r;c`pr;Zp!!!*#u!<E/u!;uit!<;utqu?Tpr;ZTnq>^Bn
+o)JOdr;Z]qr;ZTnnGiFequ?KmrVu]orVu]orVu]orr;rtrr;rtrVufrnGi=brVu]oqZ$Bl')qq3
+rr<'!!!*$!!<3$!rr<'!rp9a;4b*~>
+!BU8[l,iu'!<)rs!<3#t!<)rr!:Tsd!;lfm!<)ro!;ulq!;uln!;ZZn!;$6i!<3#t!<)rr!;uln
+!;lfp!:^$b!<)ou!<;utmf34cr;Z]qnGi=bs8W&us8W*!s8W*!s8N*"s8;rrs7u`ms8;rmrr<&p
+s8;rbs8;rss8E#ts8E#ss8;rerrE-"r;c`pr;Zp!!!*#u!<E/u!;uit!<;utqu?Tpr;ZTnq>^Bn
+o)JOdr;Z]qr;ZTnnGiFequ?KmrVu]orVu]orVu]orr;rtrr;rtrVufrnGi=brVu]oqZ$Bl')qq3
+rr<'!!!*$!!<3$!rr<'!rojI/3e.~>
+!B:&Xj2q?!!<)rs!<3#t!<)rr!:Tsd!;lfm!<)ro!;ulq!;uln!;ZZn!;$6i!<3#t!<)rr!;uln
+!;lfp!:^$b!<)ou!<;utmf34cr;Z]qnGi=bs8W&us8W*!s8W*!s8N*"s8;rrs7u`ms8;rmrr<&p
+s8;rbs8;rss8E#ts8E#ss8;rerrE-"r;c`pr;Zp!!!*#u!<E/u!;uit!<;utqu?Tpr;ZTnq>^Bn
+o)JOdr;Z]qr;ZTnnGiFequ?KmrVu]orVu]orVu]orr;rtrr;rtrVufrnGi=brVu]oqZ$Bl')qq3
+rr<'!!!*$!!<3$!rr<'!ro4$s2h1~>
+!BpJ^m=G:gs2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abm/bd$J,~>
+!BU8[l%/kcs2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abklK'jJ,~>
+!B:&Xj+75]s2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abirR%VJ,~>
+!BpJ^m=G:gs2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abm/bd$J,~>
+!BU8[l%/kcs2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abklK'jJ,~>
+!B:&Xj+75]s2+d9!.k1Lrr<&nrr<%Ms/Z2"!:9abirR%VJ,~>
+!BpJ^m=G:gs2+d9!.k1Lrr<&nrr<%Ms/Z1u!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l%/kcs2+d9!.k1Lrr<&nrr<%Ms/Z1u!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj+75]s2+d9!.k1Lrr<&nrr<%Ms/Z1u!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^m=G:gs24m8!.k1K!;c`o!.k0Ps8N)cs8MBdeieN~>
+!BU8[l%/kcs24m8!.k1K!;c`o!.k0Ps8N)cs8M6`c8pI~>
+!B:&Xj+75]s24m8!.k1K!;c`o!.k0Ps8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^mD],*!.k1's8N(Ms8W-!!.k1Ms8N)7s8;qss8;rbs8;p1rr<'!!!*$!!<3$!rr<'!!!*&u
+m/bd$J,~>
+!BU8[l,E]&!.k1's8N(Ms8W-!!.k1Ms8N)7s8;qss8;rbs8;p1rr<'!!!*$!!<3$!rr<'!!!*&u
+klK'jJ,~>
+!B:&Xj2M&u!.k1's8N(Ms8W-!!.k1Ms8N)7s8;qss8;rbs8;p1rr<'!!!*$!!<3$!rr<'!!!*&u
+irR%VJ,~>
+!BpJ^mDT#)!4i+0!:9^c!;?Em!71]?!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX!9*qX!6bBB
+!9sO`!:9abm/bd$J,~>
+!BU8[l,<T%!4i+0!:9^c!;?Em!71]?!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX!9*qX!6bBB
+!9sO`!:9abklK'jJ,~>
+!B:&Xj2Crt!4i+0!:9^c!;?Em!71]?!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX!9*qX!6bBB
+!9sO`!:9abirR%VJ,~>
+!BpJ^mDT#)!4i+0!:9^c!;?Em!71ZF!<2uu!<2uu!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX
+!9*qX!6kHC!9jI_!:9abm/bd$J,~>
+!BU8[l,<T%!4i+0!:9^c!;?Em!71ZF!<2uu!<2uu!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX
+!9*qX!6kHC!9jI_!:9abklK'jJ,~>
+!B:&Xj2Crt!4i+0!:9^c!;?Em!71ZF!<2uu!<2uu!<2uu!6G0?!4`%/!/LRS!;ZWp!8d_U!9*qX
+!9*qX!6kHC!9jI_!:9abirR%VJ,~>
+!BpJ^mDT#)!4i+0!:9^c!5ng:!<2uu!<2uu!<2uu!.k1Lrr<%Srr<&prr<&4rr<&"rr<&_s8;p1
+rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l,<T%!4i+0!:9^c!5ng:!<2uu!<2uu!<2uu!.k1Lrr<%Srr<&prr<&4rr<&"rr<&_s8;p1
+rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj2Crt!4i+0!:9^c!5ng:!<2uu!<2uu!<2uu!.k1Lrr<%Srr<&prr<&4rr<&"rr<&_s8;p1
+rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mE,D,!!3*"r;Z]qqZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rps7u`ns8E#os8;rqs8N'!s8;r\rr<&urr<&urr<&urrE-"r;c`pr;cBfrr<'!r;cfrrVuru
+rW)iqrW)lrrr<9'!!*'!!!)rsr;ccqrVururW)osrW)rtrW)Nhr;Zlu!<)ou!<;utqu?Tpr;Zcs
+!<;utqu?Tp!ri6#rVufrqZ$Ko!WN/is8;rqs8Duus8E#qs8;res7u`orrE-"r;c`pr;c<drW)iq
+rr<'!r;c`pr;Zlu!;c]q!;lfr!<)rt!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utnGiFequ?Kmnc/Of
+!ri6#m/R(P!S0Da~>
+!BU8[l,iu(!!3*"r;Z]qqZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rps7u`ns8E#os8;rqs8N'!s8;r\rr<&urr<&urr<&urrE-"r;c`pr;cBfrr<'!r;cfrrVuru
+rW)iqrW)lrrr<9'!!*'!!!)rsr;ccqrVururW)osrW)rtrW)Nhr;Zlu!<)ou!<;utqu?Tpr;Zcs
+!<;utqu?Tp!ri6#rVufrqZ$Ko!WN/is8;rqs8Duus8E#qs8;res7u`orrE-"r;c`pr;c<drW)iq
+rr<'!r;c`pr;Zlu!;c]q!;lfr!<)rt!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utnGiFequ?Kmnc/Of
+!ri6#m/R(L!R<`V~>
+!B:&Xj2q?"!!3*"r;Z]qqZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`n
+s8;rps7u`ns8E#os8;rqs8N'!s8;r\rr<&urr<&urr<&urrE-"r;c`pr;cBfrr<'!r;cfrrVuru
+rW)iqrW)lrrr<9'!!*'!!!)rsr;ccqrVururW)osrW)rtrW)Nhr;Zlu!<)ou!<;utqu?Tpr;Zcs
+!<;utqu?Tp!ri6#rVufrqZ$Ko!WN/is8;rqs8Duus8E#qs8;res7u`orrE-"r;c`pr;c<drW)iq
+rr<'!r;c`pr;Zlu!;c]q!;lfr!<)rt!;ulq!!3*"r;Z`rq>^Bnr;Zcs!<;utnGiFequ?Kmnc/Of
+!ri6#m/R(F!Q-jH~>
+!BpJ^mE5G/!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uls
+!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!9F.[!;c`q!<)ot!<)ot!<)ot
+!:g*h!<)ot!;uls!<2uu!;c]q!;lfr!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu!<)ot!;uis!:p-i
+!<)rt!<)rt!<)ot!<)ot!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)rt!:p-i!<)ot
+!;lfr!<2uu!<)ot!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:Kje!;c`q!<)ot!<)ot!<)rt!;c]q
+!;c]q!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+m/bd$J,~>
+!BU8[l,s#+!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uls
+!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!9F.[!;c`q!<)ot!<)ot!<)ot
+!:g*h!<)ot!;uls!<2uu!;c]q!;lfr!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu!<)ot!;uis!:p-i
+!<)rt!<)rt!<)ot!<)ot!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)rt!:p-i!<)ot
+!;lfr!<2uu!<)ot!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:Kje!;c`q!<)ot!<)ot!<)rt!;c]q
+!;c]q!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+klK'jJ,~>
+!B:&Xj3%B%!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uls
+!<)ot!;lcr!;ZWp!<)ot!;c]q!;?Em!;c]q!<)ot!;uls!<)ot!9F.[!;c`q!<)ot!<)ot!<)ot
+!:g*h!<)ot!;uls!<2uu!;c]q!;lfr!<<*!!<<'!!<2uu!<)ot!;lfr!<2uu!<)ot!;uis!:p-i
+!<)rt!<)rt!<)ot!<)ot!<)ot!;uls!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)rt!:p-i!<)ot
+!;lfr!<2uu!<)ot!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:Kje!;c`q!<)ot!<)ot!<)rt!;c]q
+!;c]q!;uis!<)ot!<)rt!;c]q!;c]q!<)ot!;uls!<)ot!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+irR%VJ,~>
+!BpJ^mE>M0!;lcr!<2uu!;lcr!<2uu!;lcr!<)ot!;uis!<2uu!<2uu!<3!#!<<'!qu6WrrVlit
+r;Q`squ6Wro`"mkqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruqu6Wro)A[i
+qu6WrrVlitp&>!lqu6Wrrr2rurr2ruq>UEpqu6Wrq#:<or;Q`soD\djqu6WrrVlitr;Q`sq#:<o
+r;Q`sr;Q`srr2ruqu6Wrrr2ruqu6WrrVlitr;Q`smJd.dqu6Wrq>UEpqu6WrnG`Igq>UEpr;Q`s
+rr2ruqu6Wrn,E@fqYpNqr;Q`srr2ruqu6WrqYpNqqYpNqr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`soD\djqu6Wrqu6Wrn,E@fqu?Tp')qq3rr<'!!!*$!!<3$!rr<'!rp9a;4b*~>
+!BU8[l-'),!;lcr!<2uu!;lcr!<2uu!;lcr!<)ot!;uis!<2uu!<2uu!<3!#!<<'!qu6WrrVlit
+r;Q`squ6Wro`"mkqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruqu6Wro)A[i
+qu6WrrVlitp&>!lqu6Wrrr2rurr2ruq>UEpqu6Wrq#:<or;Q`soD\djqu6WrrVlitr;Q`sq#:<o
+r;Q`sr;Q`srr2ruqu6Wrrr2ruqu6WrrVlitr;Q`smJd.dqu6Wrq>UEpqu6WrnG`Igq>UEpr;Q`s
+rr2ruqu6Wrn,E@fqYpNqr;Q`srr2ruqu6WrqYpNqqYpNqr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`soD\djqu6Wrqu6Wrn,E@fqu?Tp')qq3rr<'!!!*$!!<3$!rr<'!rojI/3e.~>
+!B:&Xj3.H&!;lcr!<2uu!;lcr!<2uu!;lcr!<)ot!;uis!<2uu!<2uu!<3!#!<<'!qu6WrrVlit
+r;Q`squ6Wro`"mkqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruqu6Wro)A[i
+qu6WrrVlitp&>!lqu6Wrrr2rurr2ruq>UEpqu6Wrq#:<or;Q`soD\djqu6WrrVlitr;Q`sq#:<o
+r;Q`sr;Q`srr2ruqu6Wrrr2ruqu6WrrVlitr;Q`smJd.dqu6Wrq>UEpqu6WrnG`Igq>UEpr;Q`s
+rr2ruqu6Wrn,E@fqYpNqr;Q`srr2ruqu6WrqYpNqqYpNqr;Q`srVlitr;Q`sqYpNqqu6Wrqu6Wr
+rVlitr;Q`soD\djqu6Wrqu6Wrn,E@fqu?Tp')qq3rr<'!!!*$!!<3$!rr<'!ro4$s2h1~>
+!BpJ^mE>M0!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!"!<<)p!<)ot!;uis!;lcr
+!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!9F.[!;c]q!;uis!<3#o!:p-i!;lcr!<)ot!;6?l
+!;lcr!<2uu!<2uu!<3#q!;lcr!;HKn!<2uu!:p-i!;?Em!;uis!<)rp!;uis!;uis!<2uu!;lcr
+!<3#o!;ulr!:Tsb!;lcr!;ZZj!:^!g!;ZWp!;uis!<3#o!:Tpf!;c]q!;uis!<2uu!;$3j!;c]q
+!;uis!;ulr!;HKn!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr!:Tpf!;lfr!:9abm/bd$J,~>
+!BU8[l-'),!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!"!<<)p!<)ot!;uis!;lcr
+!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!9F.[!;c]q!;uis!<3#o!:p-i!;lcr!<)ot!;6?l
+!;lcr!<2uu!<2uu!<3#q!;lcr!;HKn!<2uu!:p-i!;?Em!;uis!<)rp!;uis!;uis!<2uu!;lcr
+!<3#o!;ulr!:Tsb!;lcr!;ZZj!:^!g!;ZWp!;uis!<3#o!:Tpf!;c]q!;uis!<2uu!;$3j!;c]q
+!;uis!;ulr!;HKn!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr!:Tpf!;lfr!:9abklK'jJ,~>
+!B:&Xj3.H&!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!"!<<)p!<)ot!;uis!;lcr
+!;ZZl!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!9F.[!;c]q!;uis!<3#o!:p-i!;lcr!<)ot!;6?l
+!;lcr!<2uu!<2uu!<3#q!;lcr!;HKn!<2uu!:p-i!;?Em!;uis!<)rp!;uis!;uis!<2uu!;lcr
+!<3#o!;ulr!:Tsb!;lcr!;ZZj!:^!g!;ZWp!;uis!<3#o!:Tpf!;c]q!;uis!<2uu!;$3j!;c]q
+!;uis!;ulr!;HKn!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr!:Tpf!;lfr!:9abirR%VJ,~>
+!BpJ^mE>M0!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&nrr<&urr<&irr<&mrr<&srr<&urr<&srr<&srr<&s
+rr<&urr<&rrr<&urr<&is8N)irr<&srr<&rrr<&prr<&`rr<&prr<&srr<&urr<&_rr<&qrr<&s
+rr<&urr<&jrr<&qrr<&srr<&ps8N)prr<&rrr<&rrr<&trr<&srr<&jrr<&rrr<&rrr<&frr<&r
+s8N)cs8MBdeieN~>
+!BU8[l-'),!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&nrr<&urr<&irr<&mrr<&srr<&urr<&srr<&srr<&s
+rr<&urr<&rrr<&urr<&is8N)irr<&srr<&rrr<&prr<&`rr<&prr<&srr<&urr<&_rr<&qrr<&s
+rr<&urr<&jrr<&qrr<&srr<&ps8N)prr<&rrr<&rrr<&trr<&srr<&jrr<&rrr<&rrr<&frr<&r
+s8N)cs8M6`c8pI~>
+!B:&Xj3.H&!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&nrr<&urr<&irr<&mrr<&srr<&urr<&srr<&srr<&s
+rr<&urr<&rrr<&urr<&is8N)irr<&srr<&rrr<&prr<&`rr<&prr<&srr<&urr<&_rr<&qrr<&s
+rr<&urr<&jrr<&qrr<&srr<&ps8N)prr<&rrr<&rrr<&trr<&srr<&jrr<&rrr<&rrr<&frr<&r
+s8N)cs8M$Z_`*)~>
+!BpJ^mE>M0!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&mrrN3#!:g'h!;?Em!;uis!<2uu!;uis!;uis!;uis
+!<2uu!;lcr!<2uu!;?Em!;uis!;$3j!;uis!;lcr!;ZWp!9sL`!;ZWp!;uis!<2uu!9jF_!;c]q
+!;uis!<2uu!;$3j!;c]q!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr
+!:Tpf!;lfp!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l-'),!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&mrrN3#!:g'h!;?Em!;uis!<2uu!;uis!;uis!;uis
+!<2uu!;lcr!<2uu!;?Em!;uis!;$3j!;uis!;lcr!;ZWp!9sL`!;ZWp!;uis!<2uu!9jF_!;c]q
+!;uis!<2uu!;$3j!;c]q!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr
+!:Tpf!;lfp!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj3.H&!;lcr!<2uu!;lcr!<2uu!;?Em!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`squ6Wr
+qYpNqr;Q`sqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`sjSo2[qYpNqr;Q`srr2ruli-qbqu6WrrVlit
+p&>!lqu6Wrrr2rurr3'#s8N)srr<&rrr<&mrrN3#!:g'h!;?Em!;uis!<2uu!;uis!;uis!;uis
+!<2uu!;lcr!<2uu!;?Em!;uis!;$3j!;uis!;lcr!;ZWp!9sL`!;ZWp!;uis!<2uu!9jF_!;c]q
+!;uis!<2uu!;$3j!;c]q!;uis!<)ot!;uis!;c]q!;lcr!;lcr!<)ot!;uis!;$3j!;lcr!;lcr
+!:Tpf!;lfp!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mE5G/!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot
+!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`squ?Zrm/I%cqYpNq
+r;Q`srVlitrVulto)J^irVlitr;Q`sp&>!lqu6Wrrr2rurr3'#s8N)ts8N)rrr<&mrrN3#!:^!g
+!<)rt!<)ot!;uis!<2uu!<)rt!;uis!;uis!<)ot!<)rt!<)ot!<)rt!<)rt!<)ot!;$3j!<)rt
+!;lcr!;QQo!<)rt!:^!g!<)ot!<2uu!;uis!<)ot!<)rt!:Tpf!;c]q!;uis!<)ot!<)rt!;c]q
+!;c]q!<)rt!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+m/bd$J,~>
+!BU8[l,s#+!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot
+!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`squ?Zrm/I%cqYpNq
+r;Q`srVlitrVulto)J^irVlitr;Q`sp&>!lqu6Wrrr2rurr3'#s8N)ts8N)rrr<&mrrN3#!:^!g
+!<)rt!<)ot!;uis!<2uu!<)rt!;uis!;uis!<)ot!<)rt!<)ot!<)rt!<)rt!<)ot!;$3j!<)rt
+!;lcr!;QQo!<)rt!:^!g!<)ot!<2uu!;uis!<)ot!<)rt!:Tpf!;c]q!;uis!<)ot!<)rt!;c]q
+!;c]q!<)rt!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+klK'jJ,~>
+!B:&Xj3%B%!<)rt!<)ot!<)ot!;uis!<)rt!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot
+!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlitqu6WrqYpNqrVlitr;Q`sr;Q`squ?Zrm/I%cqYpNq
+r;Q`srVlitrVulto)J^irVlitr;Q`sp&>!lqu6Wrrr2rurr3'#s8N)ts8N)rrr<&mrrN3#!:^!g
+!<)rt!<)ot!;uis!<2uu!<)rt!;uis!;uis!<)ot!<)rt!<)ot!<)rt!<)rt!<)ot!;$3j!<)rt
+!;lcr!;QQo!<)rt!:^!g!<)ot!<2uu!;uis!<)ot!<)rt!:Tpf!;c]q!;uis!<)ot!<)rt!;c]q
+!;c]q!<)rt!<)rt!<)ot!;c]q!;c]q!<)ot!;uis!;uis!:p-i!<)ot!;c]q!:Kje!<)rs!:9ab
+irR%VJ,~>
+!BpJ^mE,D,!!<0#!<)rr!;c`o!;c`o!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr
+!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtr;Zcsmf31brVuisrr;rtrVufrnG`Lhs8;rrs7u`ns7u`q
+s8E#us8N*!s8N*!s8;ots8E#us7u`krr<&es8;rqs8E#ts8E#ts8;ots8E#us8E#ts8E#ss8;ou
+rrDusr;c`p!<E/u!:g*f!!*&u!<<)q!;lfp!:Bgb!<3#t!<3#t!<)rr!:^$b!<3#t!<3#t!<)rr
+!;lfm!;ulq!!<0#!<3!!!<;utr;ZTnr;Z]qr;Z`rrr;rto)JXgqu?Kmnc/Of!ri6#m/R(P!S0Da~>
+!BU8[l,iu(!!<0#!<)rr!;c`o!;c`o!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr
+!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtr;Zcsmf31brVuisrr;rtrVufrnG`Lhs8;rrs7u`ns7u`q
+s8E#us8N*!s8N*!s8;ots8E#us7u`krr<&es8;rqs8E#ts8E#ts8;ots8E#us8E#ts8E#ss8;ou
+rrDusr;c`p!<E/u!:g*f!!*&u!<<)q!;lfp!:Bgb!<3#t!<3#t!<)rr!:^$b!<3#t!<3#t!<)rr
+!;lfm!;ulq!!<0#!<3!!!<;utr;ZTnr;Z]qr;Z`rrr;rto)JXgqu?Kmnc/Of!ri6#m/R(L!R<`V~>
+!B:&Xj2q?"!!<0#!<)rr!;c`o!;c`o!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr
+!<<#uqu?TprVu]or;Z]qr;Z`rrr;rtr;Zcsmf31brVuisrr;rtrVufrnG`Lhs8;rrs7u`ns7u`q
+s8E#us8N*!s8N*!s8;ots8E#us7u`krr<&es8;rqs8E#ts8E#ts8;ots8E#us8E#ts8E#ss8;ou
+rrDusr;c`p!<E/u!:g*f!!*&u!<<)q!;lfp!:Bgb!<3#t!<3#t!<)rr!:^$b!<3#t!<3#t!<)rr
+!;lfm!;ulq!!<0#!<3!!!<;utr;ZTnr;Z]qr;Z`rrr;rto)JXgqu?Kmnc/Of!ri6#m/R(F!Q-jH~>
+!BpJ^m=G:gs7uZp!58C4!58C4!.k0$s6p!d!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l%/kcs7uZp!58C4!58C4!.k0$s6p!d!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj+75]s7uZp!58C4!58C4!.k0$s6p!d!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^m=G:gs7uZp!5AI5!5/=3!.k0$s6p!f!:9abm/bd$J,~>
+!BU8[l%/kcs7uZp!5AI5!5/=3!.k0$s6p!f!:9abklK'jJ,~>
+!B:&Xj+75]s7uZp!5AI5!5/=3!.k0$s6p!f!:9abirR%VJ,~>
+!BpJ^m=G:gs7uZp!5AI5!58C4!.k0$s6p!e!:9abm/bd$J,~>
+!BU8[l%/kcs7uZp!5AI5!58C4!.k0$s6p!e!:9abklK'jJ,~>
+!B:&Xj+75]s7uZp!5AI5!58C4!.k0$s6p!e!:9abirR%VJ,~>
+!BpJ^m=G:gs8)co!5nj7!5nj7!.k0$s7?9g!!*&t!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l%/kcs8)co!5nj7!5nj7!.k0$s7?9g!!*&t!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj+75]s8)co!5nj7!5nj7!.k0$s7?9g!!*&t!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^mB?Qi!94%Y!;QTo!5&:0!:^$g!94%Y!7q2K!.k0$s,$dU!:9abm/bd$J,~>
+!BU8[l*(-e!94%Y!;QTo!5&:0!:^$g!94%Y!7q2K!.k0$s,$dU!:9abklK'jJ,~>
+!B:&Xj0/L_!94%Y!;QTo!5&:0!:^$g!94%Y!7q2K!.k0$s,$dU!:9abirR%VJ,~>
+!BpJ^mB6Hh!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dS!##;3!<3$!
+rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l)t$d!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dS!##;3!<3$!
+rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj0&C^!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dS!##;3!<3$!
+rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mB6Hh!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abm/bd$
+J,~>
+!BU8[l)t$d!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abklK'j
+J,~>
+!B:&Xj0&C^!9*qX!;HKn!;c]q!;QQo!;?Em!7q/M!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abirR%V
+J,~>
+!BpJ^mB6Hh!9*qX!;HKn!:^!g!6Y<A!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abm/bd$J,~>
+!BU8[l)t$d!9*qX!;HKn!:^!g!6Y<A!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abklK'jJ,~>
+!B:&Xj0&C^!9*qX!;HKn!:^!g!6Y<A!:Tpf!9*qX!7UrJ!.k0$s,$dU!:9abirR%VJ,~>
+!BpJ^mE,D,!;uls!!*&t!;lfp!!3*"nc/OfqZ$Ko!WN/ts8;ourrDusrW)fpq>gHnrW)cor;ccq
+rr<'!r;c`pr;cWm!!)Kf!<E/u!;lfp!;c`o!;lct!<<)t!;$6i!<3#t!<)rr!;QQo!;lfr!<)rt
+!<<*!!!`H'!<<'!!;ulq!;c`o!!3*"JcC<$\GuL-')qq3rr<'!!!*$!!<3$!rr<'!rp9a;4b*~>
+!BU8[l,iu(!;uls!!*&t!;lfp!!3*"nc/OfqZ$Ko!WN/ts8;ourrDusrW)fpq>gHnrW)cor;ccq
+rr<'!r;c`pr;cWm!!)Kf!<E/u!;lfp!;c`o!;lct!<<)t!;$6i!<3#t!<)rr!;QQo!;lfr!<)rt
+!<<*!!!`H'!<<'!!;ulq!;c`o!!3*"JcC<$\GuL-')qq3rr<'!!!*$!!<3$!rr<'!rojI/3e.~>
+!B:&Xj2q?"!;uls!!*&t!;lfp!!3*"nc/OfqZ$Ko!WN/ts8;ourrDusrW)fpq>gHnrW)cor;ccq
+rr<'!r;c`pr;cWm!!)Kf!<E/u!;lfp!;c`o!;lct!<<)t!;$6i!<3#t!<)rr!;QQo!;lfr!<)rt
+!<<*!!!`H'!<<'!!;ulq!;c`o!!3*"JcC<$\GuL-')qq3rr<'!!!*$!!<3$!rr<'!ro4$s2h1~>
+!BpJ^mE5G/!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot!;uis
+!<2uu!:^!g!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt
+!.k0$s1&+/!:9abm/bd$J,~>
+!BU8[l,s#+!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot!;uis
+!<2uu!:^!g!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt
+!.k0$s1&+/!:9abklK'jJ,~>
+!B:&Xj3%B%!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)ot!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!;?Em!;c]q!<)ot!;uls!<)ot!<)ot!<)ot!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot!;uis
+!<2uu!:^!g!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt
+!.k0$s1&+/!:9abirR%VJ,~>
+!BpJ^mD])*!;uis!;uis!<2uu!;lcr!:Bdd!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!;QQo!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"s8N)err<&urr<&t
+rr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$rrDrr!!)ut!!)rs!!%TMJcE7[rrDEcrp9a;
+4b*~>
+!BU8[l,EZ&!;uis!;uis!<2uu!;lcr!:Bdd!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!;QQo!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"s8N)err<&urr<&t
+rr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$rrDrr!!)ut!!)rs!!%TMJcE7[rrDEcrojI/
+3e.~>
+!B:&Xj2M#u!;uis!;uis!<2uu!;lcr!:Bdd!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!;QQo!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"s8N)err<&urr<&t
+rr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$rrDrr!!)ut!!)rs!!%TMJcE7[rrDEcro4$s
+2h1~>
+!BpJ^mE5J+!;uis!;uis!<2uu!;lcr!:p0e!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!<)rp!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVuismJd.drr2rurVlit
+qu6WrqYpNqqYpNqr;Q`srr2rurr2rurr3$"s8Vlpr;Z`rJcC<$[K$1*')qq3rr<'!!!*$!!<3$!
+rr<'!rp9a;4b*~>
+!BU8[l,s&'!;uis!;uis!<2uu!;lcr!:p0e!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!<)rp!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVuismJd.drr2rurVlit
+qu6WrqYpNqqYpNqr;Q`srr2rurr2rurr3$"s8Vlpr;Z`rJcC<$[K$1*')qq3rr<'!!!*$!!<3$!
+rr<'!rojI/3e.~>
+!B:&Xj3%E!!;uis!;uis!<2uu!;lcr!:p0e!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo!;?Em!;lcr
+!;lcr!<)ot!;uis!<)rp!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVuismJd.drr2rurVlit
+qu6WrqYpNqqYpNqr;Q`srr2rurr2rurr3$"s8Vlpr;Z`rJcC<$[K$1*')qq3rr<'!!!*$!!<3$!
+rr<'!ro4$s2h1~>
+!BpJ^mE>M0!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"
+s8N)drrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^iJcC<$\,ZI.m/R(P
+!S0Da~>
+!BU8[l-'),!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"
+s8N)drrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^iJcC<$\,ZI.m/R(L
+!R<`V~>
+!B:&Xj3.H&!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVls"
+s8N)drrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^iJcC<$\,ZI.m/R(F
+!Q-jH~>
+!BpJ^mE>M0!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVlit
+rr2rumf*=grrDus!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!.k0$s1&+/
+!:9abm/bd$J,~>
+!BU8[l-'),!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVlit
+rr2rumf*=grrDus!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!.k0$s1&+/
+!:9abklK'jJ,~>
+!B:&Xj3.H&!;uis!;uis!;uis!<2uu!;lcr!;$3j!;uis!<)ot!;lcr!<2uu!;lcr!;c]q!;QQo
+!;?Em!;lcr!;lcr!<)ot!;uis!<2uu!;uis!;ZWp!:Tpf!;lcu!<<'!qu6Wrrr2ruqu6WrrVlit
+rr2rumf*=grrDus!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!.k0$s1&+/
+!:9abirR%VJ,~>
+!BpJ^mE>M0!<)rt!;uis!;uis!<)ot!<)rt!;$3j!<)rt!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<2uu!<)rt!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!:Kje!;c]q!<)ot!;ZWp!;c]q!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)rt!<)ot
+!;lfr!.k0$s1n[5!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l-'),!<)rt!;uis!;uis!<)ot!<)rt!;$3j!<)rt!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<2uu!<)rt!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!:Kje!;c]q!<)ot!;ZWp!;c]q!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)rt!<)ot
+!;lfr!.k0$s1n[5!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj3.H&!<)rt!;uis!;uis!<)ot!<)rt!;$3j!<)rt!;uis!<)rt!<)ot!<)rt!;c]q!;QQo
+!<)ot!;lcr!;c]q!<)ot!;uis!;uis!<2uu!<)rt!;ZWp!:Tsf!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!:Kje!;c]q!<)ot!;ZWp!;c]q!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)rt!<)ot
+!;lfr!.k0$s1n[5!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mE5J-!!*&u!<<)u!<3#t!<)rr!!<0#!;$6h!!*&u!<)rr!!<0#!<)rr!!<0#!<3#p!;c`o
+!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u!<3#p!;$6j!!*&t!;lfp!;c`o!;uls!<3#s!:^!g!;ZZn
+!;lfm!;ulq!!E6$!<<#us8W*!s8W*!rr;osqu6Zss8;ros8N(Ms+13cs8N)cs8MBdeieN~>
+!BU8[l,s&)!!*&u!<<)u!<3#t!<)rr!!<0#!;$6h!!*&u!<)rr!!<0#!<)rr!!<0#!<3#p!;c`o
+!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u!<3#p!;$6j!!*&t!;lfp!;c`o!;uls!<3#s!:^!g!;ZZn
+!;lfm!;ulq!!E6$!<<#us8W*!s8W*!rr;osqu6Zss8;ros8N(Ms+13cs8N)cs8M6`c8pI~>
+!B:&Xj3%E#!!*&u!<<)u!<3#t!<)rr!!<0#!;$6h!!*&u!<)rr!!<0#!<)rr!!<0#!<3#p!;c`o
+!<)ro!;ulq!;ulr!<3#t!<3#s!!*&u!<3#p!;$6j!!*&t!;lfp!;c`o!;uls!<3#s!:^!g!;ZZn
+!;lfm!;ulq!!E6$!<<#us8W*!s8W*!rr;osqu6Zss8;ros8N(Ms+13cs8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m>_,G!;HKn!.k0Irr<%Ms60I_!.k0us8N)cs8MBdeieN~>
+!BU8[l&G]C!;HKn!.k0Irr<%Ms60I_!.k0us8N)cs8M6`c8pI~>
+!B:&Xj,O'=!;HKn!.k0Irr<%Ms60I_!.k0us8N)cs8M$Z_`*)~>
+!BpJ^mHFQM!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!;QTo!.k1=s8N)hs8;p1rr<'!
+!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l0/-I!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!;QTo!.k1=s8N)hs8;p1rr<'!
+!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj66LC!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!;QTo!.k1=s8N)hs8;p1rr<'!
+!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHFQM!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abm/bd$J,~>
+!BU8[l0/-I!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abklK'jJ,~>
+!B:&Xj66LC!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abirR%VJ,~>
+!BpJ^mHFQM!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abm/bd$J,~>
+!BU8[l0/-I!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abklK'jJ,~>
+!B:&Xj66LC!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;?Em!4i+0!:9^c!;?Em!87AP!;6?l!<3#u!:9abirR%VJ,~>
+!BpJ^mHafK!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;6?l
+!4i+0!:9^c!6tND!;6?l!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l0JBG!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;6?l
+!4i+0!:9^c!6tND!;6?l!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj6QaA!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;6?l
+!4i+0!:9^c!6tND!;6?l!<3#s!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mHOZM!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;c`o!!3*"r;Z]q
+qZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`ns8;rps7u`ns8E#os8;rq
+s8N'!s8;rfrrE-"r;ccqq#Kd]rp9a;4b*~>
+!BU8[l086I!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;c`o!!3*"r;Z]q
+qZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`ns8;rps7u`ns8E#os8;rq
+s8N'!s8;rfrrE-"r;ccqq#Kd]rojI/3e.~>
+!B:&Xj6?UC!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;c`o!!3*"r;Z]q
+qZ$Ko!WN0!s8N)ts8N*!s8N''rr<'!rr<&ss8;rqs8N'!s8;rqs7u`ns8;rps7u`ns8E#os8;rq
+s8N'!s8;rfrrE-"r;ccqq#Kd]ro4$s2h1~>
+!BpJ^mHOWP!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qrr<&ts8N)trr<&trr<&srr<&t
+s8N)trr<&srr<&us8N*!s8N*!rr<&urr<&trr<&ss8N)trr<&rrr<&prr<&trr<&qrr<&mrr<&q
+rr<&trr<&ss8N)trr<&is8N)trr<&rrr<&us8N)cs8MBdeieN~>
+!BU8[l083L!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qrr<&ts8N)trr<&trr<&srr<&t
+s8N)trr<&srr<&us8N*!s8N*!rr<&urr<&trr<&ss8N)trr<&rrr<&prr<&trr<&qrr<&mrr<&q
+rr<&trr<&ss8N)trr<&is8N)trr<&rrr<&us8N)cs8M6`c8pI~>
+!B:&Xj6?RF!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qrr<&ts8N)trr<&trr<&srr<&t
+s8N)trr<&srr<&us8N*!s8N*!rr<&urr<&trr<&ss8N)trr<&rrr<&prr<&trr<&qrr<&mrr<&q
+rr<&trr<&ss8N)trr<&is8N)trr<&rrr<&us8N)cs8M$Z_`*)~>
+!BpJ^mHX]O!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqu6Wrqu6Wrrr2ruqu6Wrrr2ruqu6WrrVlitr;Q`s
+rr2rurr2rurr3'#s8N)rrr<&trr<&srr<&rrr<&krr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&i
+rr<&srr<&rrr<&us8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l0A9K!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqu6Wrqu6Wrrr2ruqu6Wrrr2ruqu6WrrVlitr;Q`s
+rr2rurr2rurr3'#s8N)rrr<&trr<&srr<&rrr<&krr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&i
+rr<&srr<&rrr<&us8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj6HXE!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqu6Wrqu6Wrrr2ruqu6Wrrr2ruqu6WrrVlitr;Q`s
+rr2rurr2rurr3'#s8N)rrr<&trr<&srr<&rrr<&krr<&qrr<&mrr<&rrr<&rrr<&trr<&srr<&i
+rr<&srr<&rrr<&us8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHX]O!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&qrr<&rrr<&u
+rr<&rrr<&urr<&mrr<&srr<&urr<&urr<&urrN3#s7lZnrr<&srr<&rrr<&ps8)fmrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8MBdeieN~>
+!BU8[l0A9K!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&qrr<&rrr<&u
+rr<&rrr<&urr<&mrr<&srr<&urr<&urr<&urrN3#s7lZnrr<&srr<&rrr<&ps8)fmrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8M6`c8pI~>
+!B:&Xj6HXE!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&qrr<&rrr<&u
+rr<&rrr<&urr<&mrr<&srr<&urr<&urr<&urrN3#s7lZnrr<&srr<&rrr<&ps8)fmrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8M$Z_`*)~>
+!BpJ^mF2+8!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkqYpNqqu6Wrrr2ru
+qu6Wrrr2rupAY*mr;Q`srr2rurr2rurr3'#s8N)mrr<&srr<&rrr<&qrr<&srr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8MBdeieN~>
+!BU8[l-o\4!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkqYpNqqu6Wrrr2ru
+qu6Wrrr2rupAY*mr;Q`srr2rurr2rurr3'#s8N)mrr<&srr<&rrr<&qrr<&srr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8M6`c8pI~>
+!B:&Xj4"&.!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkqYpNqqu6Wrrr2ru
+qu6Wrrr2rupAY*mr;Q`srr2rurr2rurr3'#s8N)mrr<&srr<&rrr<&qrr<&srr<&qrr<&mrr<&r
+rr<&rrr<&trr<&srr<&irr<&srr<&rrr<&us8N)cs8M$Z_`*)~>
+!BpJ^mEtt6!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)ip
+!!)or!!*#u!!)or!!*#u!!)`m!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!;lcr!;c]q!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!:p-i!;uis!;lcr!<3#s!##;3!<3$!rr<'!!!*$!!<3$!
+s8MBdeieN~>
+!BU8[l-]P2!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)ip
+!!)or!!*#u!!)or!!*#u!!)`m!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!;lcr!;c]q!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!:p-i!;uis!;lcr!<3#s!##;3!<3$!rr<'!!!*$!!<3$!
+s8M6`c8pI~>
+!B:&Xj3do,!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)ip
+!!)or!!*#u!!)or!!*#u!!)`m!!)rs!!*#u!!*#u!!*#u!s&B$!;?Em!;uis!;lcr!;c]q!;uis
+!;c]q!;?Em!;lcr!;lcr!<)ot!;uis!:p-i!;uis!;lcr!<3#s!##;3!<3$!rr<'!!!*$!!<3$!
+s8M$Z_`*)~>
+!BpJ^mEbh4!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QQo!<)rt!<)ot!<)ot!;uis!<)rt
+!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlit
+qu6WrqYpNqrVlitr;Q`sr;Q`squ?ZrqYpNqr;Q`squ6Wrrr;uum/R(P!S0Da~>
+!BU8[l-KD0!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QQo!<)rt!<)ot!<)ot!;uis!<)rt
+!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlit
+qu6WrqYpNqrVlitr;Q`sr;Q`squ?ZrqYpNqr;Q`squ6Wrrr;uum/R(L!R<`V~>
+!B:&Xj3Rc*!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QQo!<)rt!<)ot!<)ot!;uis!<)rt
+!<)ot!<)rt!<2uu!<2uu!<2uu!<2uu!<)rt!<)ot!;uis!;lcr!<)p"!<<'!rVultqYpNqrVlit
+qu6WrqYpNqrVlitr;Q`sr;Q`squ?ZrqYpNqr;Q`squ6Wrrr;uum/R(F!Q-jH~>
+!BpJ^mE>P/!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;?Hk!!<0#!<)rr!;c`o!;c`o
+!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`rrr;rt
+r;Zcsqu?Wqrr;rtqu?Qom/R(P!S0Da~>
+!BU8[l-',+!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;?Hk!!<0#!<)rr!;c`o!;c`o
+!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`rrr;rt
+r;Zcsqu?Wqrr;rtqu?Qom/R(L!R<`V~>
+!B:&Xj3.K%!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;?Hk!!<0#!<)rr!;c`o!;c`o
+!!E6$!<<#us8W*!s8W*!rr;osr;Z`rrr;rtqu?TprVufr!<<#uqu?TprVu]or;Z]qr;Z`rrr;rt
+r;Zcsqu?Wqrr;rtqu?Qom/R(F!Q-jH~>
+!BpJ^mA^*c!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&um/bd$J,~>
+!BU8[l)F[_!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&uklK'jJ,~>
+!B:&Xj/N%Y!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&uirR%VJ,~>
+!BpJ^mA^*c!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8MBdeieN~>
+!BU8[l)F[_!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8M6`c8pI~>
+!B:&Xj/N%Y!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8M$Z_`*)~>
+!BpJ^mA^*c!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8N)cs8MBdeieN~>
+!BU8[l)F[_!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8N)cs8M6`c8pI~>
+!B:&Xj/N%Y!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8N)cs8M$Z_`*)~>
+!BpJ^mAg3b!.k1#s8;r7s82kJs+13Ns8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l)Od^!.k1#s8;r7s82kJs+13Ns8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj/W.X!.k1#s8;r7s82kJs+13Ns8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G<$s8N)!s8;rZs8N)7s8;qrs8N)Ts8N)Xs8;qKs4[MQ!:9abm/bd$J,~>
+!BU8[l%/lus8N)!s8;rZs8N)7s8;qrs8N)Ts8N)Xs8;qKs4[MQ!:9abklK'jJ,~>
+!B:&Xj+76os8N)!s8;rZs8N)7s8;qrs8N)Ts8N)Xs8;qKs4[MQ!:9abirR%VJ,~>
+!BpJ^mF2+6!!3*"k5PD]li-qbfDbgNq>UEpVuH_sjSo2[^&J'4VuH_sh#@?ShZ!QUJcFI(r;[K1
+!!*$!!<3$!rr<'!!!*$!!<<&c!S0Da~>
+!BU8[l-o\2!!3*"k5PD]li-qbfDbgNq>UEpVuH_sjSo2[^&J'4VuH_sh#@?ShZ!QUJcFI(r;[K1
+!!*$!!<3$!rr<'!!!*$!!<<&_!R<`V~>
+!B:&Xj4"&,!!3*"k5PD]li-qbfDbgNq>UEpVuH_sjSo2[^&J'4VuH_sh#@?ShZ!QUJcFI(r;[K1
+!!*$!!<3$!rr<'!!!*$!!<<&Y!Q-jH~>
+!BpJ^mFD7:!<)rt!9X:]!:0Xb!8%5N!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)c
+s8MBdeieN~>
+!BU8[l.,h6!<)rt!9X:]!:0Xb!8%5N!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)c
+s8M6`c8pI~>
+!B:&Xj4420!<)rt!9X:]!:0Xb!8%5N!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)c
+s8M$Z_`*)~>
+!BpJ^mFD4:!;lcr!9X:]!5SU7!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)cs8MBd
+eieN~>
+!BU8[l.,e6!;lcr!9X:]!5SU7!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)cs8M6`
+c8pI~>
+!B:&Xj44/0!;lcr!9X:]!5SU7!;ZWp!2ohs!9F.[!58C4!2ohs!8RSS!8d_U!.k1(s8N)cs8M$Z
+_`*)~>
+!BpJ^mFM:;!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"o)JOdrVllus8;rp
+s8;rfs8N'!s8;rps8;rqs8E#ts8E#hs8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iq
+r;cBfrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'!!*'!!!)rsr;c]or;Zlu!:g*f!;uls!!*&t
+!;lfp!!3*"nc/Of!WN0!s8N)ts8N)trrE-"r;cfrrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'
+!!*'!!!)rsr;c]or;Zlu!/^aS!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l.5k7!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"o)JOdrVllus8;rp
+s8;rfs8N'!s8;rps8;rqs8E#ts8E#hs8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iq
+r;cBfrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'!!*'!!!)rsr;c]or;Zlu!:g*f!;uls!!*&t
+!;lfp!!3*"nc/Of!WN0!s8N)ts8N)trrE-"r;cfrrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'
+!!*'!!!)rsr;c]or;Zlu!/^aS!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj4=51!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"o)JOdrVllus8;rp
+s8;rfs8N'!s8;rps8;rqs8E#ts8E#hs8;rmrr<&ps8;p!rr<&ts8;rprrE-"r;cfrrVururW)iq
+r;cBfrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'!!*'!!!)rsr;c]or;Zlu!:g*f!;uls!!*&t
+!;lfp!!3*"nc/Of!WN0!s8N)ts8N)trrE-"r;cfrrW)rtrW)osr;cWm!!)orrrE#trrE*!rr<9'
+!!*'!!!)rsr;c]or;Zlu!/^aS!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mFM:;!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:^!g
+!;ZZp!<)ot!<)ot!<)ot!:g*h!<)ot!<)ot!<)ot!;uis!;uis!:p-i!<)ot!;ZWp!;c]q!<)rt
+!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!:g'h!;uis!<)ot!<)ot!;ZWp!;c]q!;uis
+!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt!:p-i!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)rt
+!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu
+!<)ot!;uis!<)rt!/^aU!:9abm/bd$J,~>
+!BU8[l.5k7!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:^!g
+!;ZZp!<)ot!<)ot!<)ot!:g*h!<)ot!<)ot!<)ot!;uis!;uis!:p-i!<)ot!;ZWp!;c]q!<)rt
+!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!:g'h!;uis!<)ot!<)ot!;ZWp!;c]q!;uis
+!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt!:p-i!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)rt
+!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu
+!<)ot!;uis!<)rt!/^aU!:9abklK'jJ,~>
+!B:&Xj4=51!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:^!g
+!;ZZp!<)ot!<)ot!<)ot!:g*h!<)ot!<)ot!<)ot!;uis!;uis!:p-i!<)ot!;ZWp!;c]q!<)rt
+!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)ot!:g'h!;uis!<)ot!<)ot!;ZWp!;c]q!;uis
+!<3#u!<<*!!<<'!!<2uu!<)ot!;uis!<)rt!:p-i!<)ot!;uls!<)ot!<)ot!<)rt!:p-i!<)rt
+!<)ot!;uis!<)rt!<)ot!<)ot!;uis!<)ot!<)ot!;ZWp!;c]q!;uis!<3#u!<<*!!<<'!!<2uu
+!<)ot!;uis!<)rt!/^aU!:9abirR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:^!g!;ZWp
+!;uis!<2uu!;lcr!:p-i!;uis!<2uu!;lcr!<)p%!<<'!s8N)drr<&prr<&rrr<&rrr<&urr<&r
+rr<&trr<&rrr<&trr<&jrr<&grr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$
+rrDrr!!)ut!!)rs!!)Ed!!)rs!!)rs!!*#u!!)or!!)Ti!!)rs!!)ut!!)rs!!)ut!!)or!!)ut
+!!*#u!!)ut!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!/^aU!:9ab
+m/bd$J,~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:^!g!;ZWp
+!;uis!<2uu!;lcr!:p-i!;uis!<2uu!;lcr!<)p%!<<'!s8N)drr<&prr<&rrr<&rrr<&urr<&r
+rr<&trr<&rrr<&trr<&jrr<&grr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$
+rrDrr!!)ut!!)rs!!)Ed!!)rs!!)rs!!*#u!!)or!!)Ti!!)rs!!)ut!!)rs!!)ut!!)or!!)ut
+!!*#u!!)ut!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!/^aU!:9ab
+klK'jJ,~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:^!g!;ZWp
+!;uis!<2uu!;lcr!:p-i!;uis!<2uu!;lcr!<)p%!<<'!s8N)drr<&prr<&rrr<&rrr<&urr<&r
+rr<&trr<&rrr<&trr<&jrr<&grr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrW9$
+rrDrr!!)ut!!)rs!!)Ed!!)rs!!)rs!!*#u!!)or!!)Ti!!)rs!!)ut!!)rs!!)ut!!)or!!)ut
+!!*#u!!)ut!!)or!!)lq!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!;lcr!<)ot!;uis!/^aU!:9ab
+irR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Bdd!;ZWp!;uis
+!<3#o!:p-i!;uis!<3#o!<)p%!<<'!s8N)is8)flrr<&rrr<&rrr<&us7lZnrr<&rrr<&trr<&o
+s8)fcrr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrN3#s7lZms8E#es8)forr<&s
+rr<&urr<&rrr<&hs8E#prr<&srr<&trr<&rrr<&trr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&u
+rr<&urr<&urrN3#s7lZms8E"Qs8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Bdd!;ZWp!;uis
+!<3#o!:p-i!;uis!<3#o!<)p%!<<'!s8N)is8)flrr<&rrr<&rrr<&us7lZnrr<&rrr<&trr<&o
+s8)fcrr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrN3#s7lZms8E#es8)forr<&s
+rr<&urr<&rrr<&hs8E#prr<&srr<&trr<&rrr<&trr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&u
+rr<&urr<&urrN3#s7lZms8E"Qs8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Bdd!;ZWp!;uis
+!<3#o!:p-i!;uis!<3#o!<)p%!<<'!s8N)is8)flrr<&rrr<&rrr<&us7lZnrr<&rrr<&trr<&o
+s8)fcrr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&urr<&urr<&urrN3#s7lZms8E#es8)forr<&s
+rr<&urr<&rrr<&hs8E#prr<&srr<&trr<&rrr<&trr<&urr<&trr<&rrr<&qrr<&qrr<&srr<&u
+rr<&urr<&urrN3#s7lZms8E"Qs8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:Tpf!;ZWp
+!;uis!<2uu!:0Xb!;uis!<2uu!;?Es!<3'!!<3&jrr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&r
+rr<&trr<&prr<&srr<&frrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^i
+o)A[ir;Q`sr;Q`sr;Q`srr2ruqu6Wrmf3:er;Q`sr;Q`srVlitqu6Wrr;QfurrDus!!)or!!)lq
+!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!:p0i!/U[T!:9abm/bd$J,~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:Tpf!;ZWp
+!;uis!<2uu!:0Xb!;uis!<2uu!;?Es!<3'!!<3&jrr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&r
+rr<&trr<&prr<&srr<&frrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^i
+o)A[ir;Q`sr;Q`sr;Q`srr2ruqu6Wrmf3:er;Q`sr;Q`srVlitqu6Wrr;QfurrDus!!)or!!)lq
+!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!:p0i!/U[T!:9abklK'jJ,~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:Tpf!;ZWp
+!;uis!<2uu!:0Xb!;uis!<2uu!;?Es!<3'!!<3&jrr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&r
+rr<&trr<&prr<&srr<&frrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!o)J^i
+o)A[ir;Q`sr;Q`sr;Q`srr2ruqu6Wrmf3:er;Q`sr;Q`srVlitqu6Wrr;QfurrDus!!)or!!)lq
+!!)lq!!)rs!!*#u!!*#u!!*#u!s&B$!:p0i!/U[T!:9abirR%VJ,~>
+!BpJ^mFD4:!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+nG`Igq>UEpr;Q`srr2ruli-qbr;Q`srr2rupAY<srrE'!rrDZj!!)rs!!)ip!!)or!!)or!!*#u
+!!)`m!!)or!!)ut!!)ip!!)rs!!)Kf!W`6#r;Q`squ6WrqYpNqqYpNqr;Q`srr2rurr2rurr3'#
+s8N)mrr<&srr<&jrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&trr<&srr<&trr<&rrr<&s
+rrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`sM?!SUm/R(P!S0Da~>
+!BU8[l.,e6!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+nG`Igq>UEpr;Q`srr2ruli-qbr;Q`srr2rupAY<srrE'!rrDZj!!)rs!!)ip!!)or!!)or!!*#u
+!!)`m!!)or!!)ut!!)ip!!)rs!!)Kf!W`6#r;Q`squ6WrqYpNqqYpNqr;Q`srr2rurr2rurr3'#
+s8N)mrr<&srr<&jrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&trr<&srr<&trr<&rrr<&s
+rrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`sM?!SUm/R(L!R<`V~>
+!B:&Xj44/0!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+nG`Igq>UEpr;Q`srr2ruli-qbr;Q`srr2rupAY<srrE'!rrDZj!!)rs!!)ip!!)or!!)or!!*#u
+!!)`m!!)or!!)ut!!)ip!!)rs!!)Kf!W`6#r;Q`squ6WrqYpNqqYpNqr;Q`srr2rurr2rurr3'#
+s8N)mrr<&srr<&jrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&trr<&srr<&trr<&rrr<&s
+rrN3#!;uis!;lcr!;c]q!;c]q!;uis!<2uu!<2uu!<3!#!<<'!pAY*mr;Q`sM?!SUm/R(F!Q-jH~>
+!BpJ^mFD7:!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitnG`IgrVlitrr2rur;Q`srVlitrVulto)A[ir;Q`srVlitrVultr;Q`srr2ruo)A[irVult
+q>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVultmf*7eqYpNqrVlitq>UEpqYpNq
+rVultrr2rurr2rurr2rurr2rurVultrVultrVlitoD\djrVultr;Q`sr;Q`srVlitrVulto)J^i
+rVlitrVlitrVultrVultrVlitqYpNqqYpNqrVlitq>UEpqYpNqrVultrr2rurr2rurr2rurr2ru
+rVultrVultrVlitqu?ZrOoP@[')qq3rr<'!!!*$!!<3$!rr<'!rp9a;4b*~>
+!BU8[l.,h6!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitnG`IgrVlitrr2rur;Q`srVlitrVulto)A[ir;Q`srVlitrVultr;Q`srr2ruo)A[irVult
+q>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVultmf*7eqYpNqrVlitq>UEpqYpNq
+rVultrr2rurr2rurr2rurr2rurVultrVultrVlitoD\djrVultr;Q`sr;Q`srVlitrVulto)J^i
+rVlitrVlitrVultrVultrVlitqYpNqqYpNqrVlitq>UEpqYpNqrVultrr2rurr2rurr2rurr2ru
+rVultrVultrVlitqu?ZrOoP@[')qq3rr<'!!!*$!!<3$!rr<'!rojI/3e.~>
+!B:&Xj4420!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitnG`IgrVlitrr2rur;Q`srVlitrVulto)A[ir;Q`srVlitrVultr;Q`srr2ruo)A[irVult
+q>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVultmf*7eqYpNqrVlitq>UEpqYpNq
+rVultrr2rurr2rurr2rurr2rurVultrVultrVlitoD\djrVultr;Q`sr;Q`srVlitrVulto)J^i
+rVlitrVlitrVultrVultrVlitqYpNqqYpNqrVlitq>UEpqYpNqrVultrr2rurr2rurr2rurr2ru
+rVultrVultrVlitqu?ZrOoP@[')qq3rr<'!!!*$!!<3$!rr<'!ro4$s2h1~>
+!BpJ^mF2+6!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utmf34crr;rt
+rr;rtrVufrnc/Rgrr;rtrVufrqYpNqrr2runc/Of!<<#urr;fpr;Z]q!WN/ts8;rqs8N'!s8;rr
+s7u`ns8;ots8E#frr<&ps8;rps7u`ns8;p"rr<'!rW)uurrE*!rrE&ur;c`p!<E/u!:g*f!!*&u
+!<<)u!<3#t!<)rr!!<0#!;$3k!<;utqu?Tp#QFc(s8N'!s8;rnrr<&ps8;rps7u`ns8;p"rr<'!
+rW)uurrE*!rrE&ur;c`p!<E/u!;c`q!0R<]!:9abm/bd$J,~>
+!BU8[l-o\2!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utmf34crr;rt
+rr;rtrVufrnc/Rgrr;rtrVufrqYpNqrr2runc/Of!<<#urr;fpr;Z]q!WN/ts8;rqs8N'!s8;rr
+s7u`ns8;ots8E#frr<&ps8;rps7u`ns8;p"rr<'!rW)uurrE*!rrE&ur;c`p!<E/u!:g*f!!*&u
+!<<)u!<3#t!<)rr!!<0#!;$3k!<;utqu?Tp#QFc(s8N'!s8;rnrr<&ps8;rps7u`ns8;p"rr<'!
+rW)uurrE*!rrE&ur;c`p!<E/u!;c`q!0R<]!:9abklK'jJ,~>
+!B:&Xj4"&,!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utmf34crr;rt
+rr;rtrVufrnc/Rgrr;rtrVufrqYpNqrr2runc/Of!<<#urr;fpr;Z]q!WN/ts8;rqs8N'!s8;rr
+s7u`ns8;ots8E#frr<&ps8;rps7u`ns8;p"rr<'!rW)uurrE*!rrE&ur;c`p!<E/u!:g*f!!*&u
+!<<)u!<3#t!<)rr!!<0#!;$3k!<;utqu?Tp#QFc(s8N'!s8;rnrr<&ps8;rps7u`ns8;p"rr<'!
+rW)uurrE*!rrE&ur;c`p!<E/u!;c`q!0R<]!:9abirR%VJ,~>
+!BpJ^m=G:gs8N#u!.k0$s+14.s8N)cs8MBdeieN~>
+!BU8[l%/kcs8N#u!.k0$s+14.s8N)cs8M6`c8pI~>
+!B:&Xj+75]s8N#u!.k0$s+14.s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs8N#u!.k0$s+14.s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs8N#u!.k0$s+14.s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s8N#u!.k0$s+14.s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs8W*!!.k0$s+14-s8N)cs8MBdeieN~>
+!BU8[l%/kcs8W*!!.k0$s+14-s8N)cs8M6`c8pI~>
+!B:&Xj+75]s8W*!!.k0$s+14-s8N)cs8M$Z_`*)~>
+!BpJ^m=G:js82kJs+13$s5*eU!:9abm/bd$J,~>
+!BU8[l%/kfs82kJs+13$s5*eU!:9abklK'jJ,~>
+!B:&Xj+75`s82kJs+13$s5*eU!:9abirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m>_,G!;HKn!.k0Irr<%Ms60I_!.k0us8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l&G]C!;HKn!.k0Irr<%Ms60I_!.k0us8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj,O'=!;HKn!.k0Irr<%Ms60I_!.k0us8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHFQM!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!<3#u!94%Y!9*tV!;QTo!;QTn
+!:Kmd!:g*h!;QTo!:Bgd!;uls!:9abm/bd$J,~>
+!BU8[l0/-I!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!<3#u!94%Y!9*tV!;QTo!;QTn
+!:Kmd!:g*h!;QTo!:Bgd!;uls!:9abklK'jJ,~>
+!B:&Xj66LC!9O7\!6+s<!;HKn!4Mq-!8RVQ!1a&h!2fer!6+s<!<3#u!94%Y!9*tV!;QTo!;QTn
+!:Kmd!:g*h!;QTo!:Bgd!;uls!:9abirR%VJ,~>
+!BpJ^mHFQM!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;uis!9*qX!8d_U!;c`q!!3*"q>UEprr2runG`Igrr2runc&Rhp\t3nm/I%cr;Zcsm/R(P
+!S0Da~>
+!BU8[l0/-I!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;uis!9*qX!8d_U!;c`q!!3*"q>UEprr2runG`Igrr2runc&Rhp\t3nm/I%cr;Zcsm/R(L
+!R<`V~>
+!B:&Xj66LC!9F.[!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`!;QQo
+!9sL`!;uis!9*qX!8d_U!;c`q!!3*"q>UEprr2runG`Igrr2runc&Rhp\t3nm/I%cr;Zcsm/R(F
+!Q-jH~>
+!BpJ^mHFQM!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;uis!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;ulq!##;3
+!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l0/-I!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;uis!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;ulq!##;3
+!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj66LC!9sO`!<2uu!;6?l!;HKn!8d_U!;HKn!9=(Z!7UrJ!87AP!1j,i!9=(Z!5ng:!9sL`
+!;QQo!9sL`!;uis!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;ulq!##;3
+!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mHafK!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;lcr
+!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;uls!:9abm/bd$J,~>
+!BU8[l0JBG!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;lcr
+!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;uls!:9abklK'jJ,~>
+!B:&Xj6QaA!:Kme!;uis!;6?l!;HKn!8meV!;HKn!42\*!87AP!1s2j!2KPo!8meV!:'Ra!;lcr
+!9*qX!8d_U!;HKn!;c]q!;uis!:p-i!;uis!:p-i!;HKn!:9^c!;uls!:9abirR%VJ,~>
+!BpJ^mHOZM!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;lcs!<;utqu?Tp
+qZ$Koqu6]ts8W#trr;rtrr;rtrVufrq#:<op\t3nqYpNqr;Q`sm/I%cr;Z]qqu6Zss8;rqrrE-"
+r;cBf!<E/s!:9abm/bd$J,~>
+!BU8[l086I!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;lcs!<;utqu?Tp
+qZ$Koqu6]ts8W#trr;rtrr;rtrVufrq#:<op\t3nqYpNqr;Q`sm/I%cr;Z]qqu6Zss8;rqrrE-"
+r;cBf!<E/s!:9abklK'jJ,~>
+!B:&Xj6?UC!:Kme!;c]r!<;utr;ZTnrVu]orr;uu!<;utq>^Hpp\t3np\t3nqZ$Kor;Z`rs8W&u
+r;Z`rq>^BnrVult#6+Z's8N'!nc/Of!WN/ts8;rqs8E#ts8E#ss8;rmrr<&ps8;rqs8N'!s8;rp
+s8;rqs8Duus8E#fs8;rqs8Duus8E#qs8;p!rr<&qrr<&qs8;rqs8E#us8E#rs8E#os8;rrs8N''
+rr<'!rr<&js8E#ts8E#ss8;rprrE-"r;c`pr;Zlu!;ulr!;c`l!;ulq!;HKn!;lcs!<;utqu?Tp
+qZ$Koqu6]ts8W#trr;rtrr;rtrVufrq#:<op\t3nqYpNqr;Q`sm/I%cr;Z]qqu6Zss8;rqrrE-"
+r;cBf!<E/s!:9abirR%VJ,~>
+!BpJ^mHOWP!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qs8N)trr<&trr<&trr<&srr<&t
+rr<&srr<&urr<&rrr<&srr<&trr<&trr<&prr<&nrr<&qrr<&srr<&drr<&srr<&trr<&ss8N)t
+rr<&ts8N)trr<&is8N)ts8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l083L!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qs8N)trr<&trr<&trr<&srr<&t
+rr<&srr<&urr<&rrr<&srr<&trr<&trr<&prr<&nrr<&qrr<&srr<&drr<&srr<&trr<&ss8N)t
+rr<&ts8N)trr<&is8N)ts8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj6?RF!<3&gs8N)os8N)trr<&rrr<&nrr<&ps8N)trr<&qs8N)orr<&nrr<&qrr<&trr<&s
+rr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&ts8N)trr<&trr<&srr<&srr<&trr<&t
+rr<&prr<&qrr<&trr<&ss8N)trr<&trr<&trr<&rs8N)urr<&irr<&trr<&rs8N)urr<&trr<&t
+s8N)qrr<&qrr<&trr<&srr<&trr<&prr<&qrr<&trr<&ts8N*!s8N*!rr<&jrr<&srr<&trr<&t
+rr<&ss8N)trr<&trr<&ts8N)qrr<&orr<&prr<&trr<&prr<&qs8N)trr<&trr<&trr<&srr<&t
+rr<&srr<&urr<&rrr<&srr<&trr<&trr<&prr<&nrr<&qrr<&srr<&drr<&srr<&trr<&ss8N)t
+rr<&ts8N)trr<&is8N)ts8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHX]O!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqYpNqqu6`us8N)rrr<&urr<&rrr<&trrW9$rrDlp
+!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)He!!)`m!!)rs!!)or!!*#u!!)or!!)Wj!!)rs
+rrDEcrp9a;4b*~>
+!BU8[l0A9K!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqYpNqqu6`us8N)rrr<&urr<&rrr<&trrW9$rrDlp
+!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)He!!)`m!!)rs!!)or!!*#u!!)or!!)Wj!!)rs
+rrDEcrojI/3e.~>
+!B:&Xj6HXE!<2uu!;$6j!;?Em!;uis!;lcr!;HKn!;ZWp!;lcr!:^!g!;HKn!;6?l!;lcu!<<'!
+q#:<oqu6Wrqu6Wrrr2rurr2rurr3$"s8Vlprr2ruqu6Wrrr2ruqu6Wrr;Q`srr2rurVlitqu6Wr
+qYpNqqu6Wrqu6WrrVlitqu6`us8N)rrr<&srr<&err<&rrr<&srr<&prr<&rrr<&qrr<&lrr<&r
+rrW9$rrDio!!)or!!)or!!*#u!!*#u!!*#u!W`9#q#LBn"p"]'!<<'!rr2ruqu6WrrVlitqu6Wr
+rr2rur;Q`sqYpNqq#:<oqYpNqqu6WrqYpNqqYpNqqu6`us8N)rrr<&urr<&rrr<&trrW9$rrDlp
+!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)He!!)`m!!)rs!!)or!!*#u!!)or!!)Wj!!)rs
+rrDEcro4$s2h1~>
+!BpJ^mHX]O!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&prr<&rrrW9$
+rrDrr!!*#u!!)or!!)utrW)`n!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)Kf!!)lqqZ-Qo
+!!)or!!*#u!!)or!!)Wj!!)rsrrDEcrp9a;4b*~>
+!BU8[l0A9K!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&prr<&rrrW9$
+rrDrr!!*#u!!)or!!)utrW)`n!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)Kf!!)lqqZ-Qo
+!!)or!!*#u!!)or!!)Wj!!)rsrrDEcrojI/3e.~>
+!B:&Xj6HXE!<2uu!:g*h!;QQo!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;ZZl!;c`q!;HKn
+!;lcr!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<3#o!;uis!<2uu!<)rn!;c]q!;lcr!;lcr!<)ot
+!;lct!<<)p!;uis!:Kje!;lcr!;uis!;ZWp!;lcr!;lcr!;ZZl!;c`q!;HKn!;lcr!;lcr!<2uu
+!<2uu!<2uu!;$3p!<<'!s8N)us7lZnrr<&rrr<&ts8E#mrr<&orr<&qs7lZlrr<&prr<&rrrW9$
+rrDrr!!*#u!!)or!!)utrW)`n!!*#u!!)ut!!)or!!)lq!!)cn!!)lq!!)rs!!)Kf!!)lqqZ-Qo
+!!)or!!*#u!!)or!!)Wj!!)rsrrDEcro4$s2h1~>
+!BpJ^mF2+8!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkq>UEpqu6`us8N)r
+rr<&urr<&rrr<&trrW9$rrDio!W`6#r;Q`squ6WrqYpNqp\t3nqYpNqr;Q`snG`IgqYpNqr;Q`s
+r;Q`squ6Wrrr2ruqu6WroD\djr;Z]q')qq3rr<'!!!*$!!<3$!rr<'!rp9a;4b*~>
+!BU8[l-o\4!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkq>UEpqu6`us8N)r
+rr<&urr<&rrr<&trrW9$rrDio!W`6#r;Q`squ6WrqYpNqp\t3nqYpNqr;Q`snG`IgqYpNqr;Q`s
+r;Q`squ6Wrrr2ruqu6WroD\djr;Z]q')qq3rr<'!!!*$!!<3$!rr<'!rojI/3e.~>
+!B:&Xj4"&.!;c]q!;uis!;lcr!;HKn!;ZWp!;lcr!:g'h!;HKn!;c]q!;uis!;c`q!;HKn!;lcr
+!;lcr!<2uu!<2uu!<2uu!;-9k!;lcr!<2uu!;-9m!<3&srr<&jrr<&rrr<&rrr<&trr<&rrrW9$
+rrD`l!!)He!!)or!!)rs!!)ip!!)or!!)or!!)lq!!)rs!!)lqrrDfn!!)or!!)or!!*#u!!*#u
+!!*#u!!)Wj"p"Z'rrE'!rr2rupAY*mqu6WrqZ$Qqq>UEpq#:<oqYpNqo`"mkq>UEpqu6`us8N)r
+rr<&urr<&rrr<&trrW9$rrDio!W`6#r;Q`squ6WrqYpNqp\t3nqYpNqr;Q`snG`IgqYpNqr;Q`s
+r;Q`squ6Wrrr2ruqu6WroD\djr;Z]q')qq3rr<'!!!*$!!<3$!rr<'!ro4$s2h1~>
+!BpJ^mEtt6!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)fo
+!!)or!s&B$!;lcr!<2uu!;lcr!<)ot!<2uu!;ZWr!<3&srr<&rrr<&qrr<&nrr<&qrr<&srr<&h
+rr<&prr<&srr<&srr<&rrr<&urr<&rrr<&jrr<&ss8N)cs8MBdeieN~>
+!BU8[l-]P2!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)fo
+!!)or!s&B$!;lcr!<2uu!;lcr!<)ot!<2uu!;ZWr!<3&srr<&rrr<&qrr<&nrr<&qrr<&srr<&h
+rr<&prr<&srr<&srr<&rrr<&urr<&rrr<&jrr<&ss8N)cs8M6`c8pI~>
+!B:&Xj3do,!;uis!;uis!;lcr!;HKn!;ZWp!;lcr!:p-i!;HKn!;ZWp!;uis!;lcu!<<'!q#:<o
+qu6Wrqu6Wrrr2rurr2rurr2ruo`"mkqu6Wrrr2ruo`"smrrDus!!)Wj!!)or!!)or!!)ut!!)or
+!s&B$!;6?l!:Kje!;lcr!;uis!;ZWp!;lcr!;uis!;ZWp!;uis!;lcu!<<'!q#:<oqu6Wrqu6Wr
+rr2rurr2rurr2ruoD]!prrE'!rrE&u!!)`m!!)or!!*#u!!)rs!!)lq!!)fo!!)lq!!)]l!!)fo
+!!)or!s&B$!;lcr!<2uu!;lcr!<)ot!<2uu!;ZWr!<3&srr<&rrr<&qrr<&nrr<&qrr<&srr<&h
+rr<&prr<&srr<&srr<&rrr<&urr<&rrr<&jrr<&ss8N)cs8M$Z_`*)~>
+!BpJ^mEbh4!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QTo!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!;ZWp!;c]q!<)ot!;ZWp!;HKn!;ZWp!<2uu!;c`q!;c]q!;uis!<2uu!<)rt!;uls
+!<)ot!<)rt!<)ot!;lfr!;c]q!;uls!:9abm/bd$J,~>
+!BU8[l-KD0!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QTo!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!;ZWp!;c]q!<)ot!;ZWp!;HKn!;ZWp!<2uu!;c`q!;c]q!;uis!<2uu!<)rt!;uls
+!<)ot!<)rt!<)ot!;lfr!;c]q!;uls!:9abklK'jJ,~>
+!B:&Xj3Rc*!<2uu!;uis!;lcr!<)ot!;uis!<)ot!<3#u!<)ot!;c`q!;c]q!;HKn!;ZWp!<)rt
+!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!;$3j!<)rt!<)ot!<)rt!;c]q!;c]q!<)rt
+!;c]q!;c]q!<)ot!;uls!<)ot!<)ot!<)rt!;uis!;?Hm!;c]q!<)ot!;lcr!;QQo!<)rt!;uis
+!;ZWp!<)rt!;uis!<)ot!;ZWp!;c]q!<)ot!<)ot!<2uu!<2uu!:p-i!<2uu!;uis!<)rt!<)rt
+!<)ot!<)rt!<)ot!;c]q!;QQo!<)ot!<2uu!<)rt!;uis!;QTo!<)ot!<)ot!<)ot!;uis!<)ot
+!;uis!<)ot!;ZWp!;c]q!<)ot!;ZWp!;HKn!;ZWp!<2uu!;c`q!;c]q!;uis!<2uu!<)rt!;uls
+!<)ot!<)rt!<)ot!;lfr!;c]q!;uls!:9abirR%VJ,~>
+!BpJ^mE>P/!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;QTo!!*&t!;lfp!;c`o!;uls
+!<3#s!;lcr!;ZZn!;lfm!<)ro!;lfq!;ZZp!;lfl!<)rr!!*&u!<<*!!!*&t!<)rt!!*&t!;c`q
+!;lfq!<3#r!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l-',+!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;QTo!!*&t!;lfp!;c`o!;uls
+!<3#s!;lcr!;ZZn!;lfm!<)ro!;lfq!;ZZp!;lfl!<)rr!!*&u!<<*!!!*&t!<)rt!!*&t!;c`q
+!;lfq!<3#r!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj3.K%!<3#t!;lfp!;c`o!<)ou!<;utq>^Hpqu6Wrp\t3np](0l!<<#us8W&us8W&urVu]o
+r;Z]qrVuiss8W*!s8W*!oDeah!ri6#rVufrq#:<oq>^Bnqu?Kmr;Z]qqu6Zss8;rps8;rqs7u`l
+s8N)ps8;rqs7u`ms8;ourrE#t!!)cnr;ZitrW)uurW)uurW)osq>gHnr;cfrrW)uurrE*!rrDZj
+!!*#u!!)orr;ccqrr<'!r;ccq!<E/u!;uln!;c`o!;ulq!;lcr!;QTo!!*&t!;lfp!;c`o!;uls
+!<3#s!;lcr!;ZZn!;lfm!<)ro!;lfq!;ZZp!;lfl!<)rr!!*&u!<<*!!!*&t!<)rt!!*&t!;c`q
+!;lfq!<3#r!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^mA^*c!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8N)cs8MBdeieN~>
+!BU8[l)F[_!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8N)cs8M6`c8pI~>
+!B:&Xj/N%Y!:9^c!;HKn!.k1Arr<&1rr<&trr<%Ms60I_!.k0os8N)cs8M$Z_`*)~>
+!BpJ^mA^*c!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8MBdeieN~>
+!BU8[l)F[_!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8M6`c8pI~>
+!B:&Xj/N%Y!:Bdd!;HKn!.k1@rr<&1rr<&urr<%Ms60I_!.k0ns8N)cs8M$Z_`*)~>
+!BpJ^mA^*c!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&um/bd$J,~>
+!BU8[l)F[_!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&uklK'jJ,~>
+!B:&Xj/N%Y!:Bdd!;HKn!.k1@rr<&2rr<&trr<%Ms60I_!.k0ns8;p1rr<'!!!*$!!<3$!rr<'!
+!!*&uirR%VJ,~>
+!BpJ^mAg3b!.k1#s8;r7s82kJs+13Ns8N)cs8MBdeieN~>
+!BU8[l)Od^!.k1#s8;r7s82kJs+13Ns8N)cs8M6`c8pI~>
+!B:&Xj/W.X!.k1#s8;r7s82kJs+13Ns8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G;ls8N'#rr<&hs8;rZs8N)ds8N)ns8;rcs8N'#rr<&=s8N)Ys8N)2s8N(Qs8N)Ms8;rZ
+s8N)]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/lhs8N'#rr<&hs8;rZs8N)ds8N)ns8;rcs8N'#rr<&=s8N)Ys8N)2s8N(Qs8N)Ms8;rZ
+s8N)]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+76bs8N'#rr<&hs8;rZs8N)ds8N)ns8;rcs8N'#rr<&=s8N)Ys8N)2s8N(Qs8N)Ms8;rZ
+s8N)]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mF2+6!!3*"k5PD]li-qb_Z0W9!ri6#mf*7ep\t3nn,E@fm/I%co`"mkmf3:e!ri6#`W#o<
+lMghaq>UEplMghali-qbl2L_`_uB]:mJd.diVrlXq>UEpe,KCJjSo2[k5YG]m/R(P!S0Da~>
+!BU8[l-o\2!!3*"k5PD]li-qb_Z0W9!ri6#mf*7ep\t3nn,E@fm/I%co`"mkmf3:e!ri6#`W#o<
+lMghaq>UEplMghali-qbl2L_`_uB]:mJd.diVrlXq>UEpe,KCJjSo2[k5YG]m/R(L!R<`V~>
+!B:&Xj4"&,!!3*"k5PD]li-qb_Z0W9!ri6#mf*7ep\t3nn,E@fm/I%co`"mkmf3:e!ri6#`W#o<
+lMghaq>UEplMghali-qbl2L_`_uB]:mJd.diVrlXq>UEpe,KCJjSo2[k5YG]m/R(F!Q-jH~>
+!BpJ^mFD7:!<)rt!9X:]!:0Xb!5ed9!!<0#!:Kje!;HKn!:Tpf!:9^c!;-9k!:Kme!!<0#!6+s<
+!:'Ra!;ZWp!:'Ra!:0Xb!9sL`!5ng:!:Bdd!9*qX!;ZWp!7UrJ!9F.[!9X=]!:9abm/bd$J,~>
+!BU8[l.,h6!<)rt!9X:]!:0Xb!5ed9!!<0#!:Kje!;HKn!:Tpf!:9^c!;-9k!:Kme!!<0#!6+s<
+!:'Ra!;ZWp!:'Ra!:0Xb!9sL`!5ng:!:Bdd!9*qX!;ZWp!7UrJ!9F.[!9X=]!:9abklK'jJ,~>
+!B:&Xj4420!<)rt!9X:]!:0Xb!5ed9!!<0#!:Kje!;HKn!:Tpf!:9^c!;-9k!:Kme!!<0#!6+s<
+!:'Ra!;ZWp!:'Ra!:0Xb!9sL`!5ng:!:Bdd!9*qX!;ZWp!7UrJ!9F.[!9X=]!:9abirR%VJ,~>
+!BpJ^mFD4:!;lcr!9X:]!3?,%!<<'!mJd.djSo2[m/I%co`"mkmf*@hs8N);rr<&arr<&prr<&a
+rr<&Irr<&%rr<&Xrr<&prr<&Jrr<&[rr<&]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l.,e6!;lcr!9X:]!3?,%!<<'!mJd.djSo2[m/I%co`"mkmf*@hs8N);rr<&arr<&prr<&a
+rr<&Irr<&%rr<&Xrr<&prr<&Jrr<&[rr<&]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj44/0!;lcr!9X:]!3?,%!<<'!mJd.djSo2[m/I%co`"mkmf*@hs8N);rr<&arr<&prr<&a
+rr<&Irr<&%rr<&Xrr<&prr<&Jrr<&[rr<&]s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mFM:;!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"nc/Ofn,EIis8N)q
+s8;ourrDoq!!)iprW)cor;Zlu!<)p!!<<)t!;ulq!;lcs!<;utq>UEpq>^BnqYpWts8N)fs8;p#
+rr<'!s8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;cBfq>gKo!<E/u!;lfp!;lfm!:g*g!;lfr!!*&t
+!;lfp!!3*"r;Z]qr;Z`rs8W&ur;Z]qqZ$Ko!WN/is8E#qs8N'!s8;rqs7u`ns8;res7u`orrE-"
+r;c`pr;c<dr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!!<0#!:9abm/bd$J,~>
+!BU8[l.5k7!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"nc/Ofn,EIis8N)q
+s8;ourrDoq!!)iprW)cor;Zlu!<)p!!<<)t!;ulq!;lcs!<;utq>UEpq>^BnqYpWts8N)fs8;p#
+rr<'!s8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;cBfq>gKo!<E/u!;lfp!;lfm!:g*g!;lfr!!*&t
+!;lfp!!3*"r;Z]qr;Z`rs8W&ur;Z]qqZ$Ko!WN/is8E#qs8N'!s8;rqs7u`ns8;res7u`orrE-"
+r;c`pr;c<dr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!!<0#!:9abklK'jJ,~>
+!B:&Xj4=51!;6Bj!;uls!!*&t!;uln!;ulq!;c`p!;lfr!!*&t!;lfp!!3*"nc/Ofn,EIis8N)q
+s8;ourrDoq!!)iprW)cor;Zlu!<)p!!<<)t!;ulq!;lcs!<;utq>UEpq>^BnqYpWts8N)fs8;p#
+rr<'!s8Duus8E#qs8;rqs8N'!s8;rqrrE-"r;cBfq>gKo!<E/u!;lfp!;lfm!:g*g!;lfr!!*&t
+!;lfp!!3*"r;Z]qr;Z`rs8W&ur;Z]qqZ$Ko!WN/is8E#qs8N'!s8;rqs7u`ns8;res7u`orrE-"
+r;c`pr;c<dr;cWm!!)ipr;Zp!!!)utr;c`p!<E/u!<)rs!!*&u!;lfp!!<0#!:9abirR%VJ,~>
+!BpJ^mFM:;!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:p-i
+!<)ot!9X:]!<)rt!;c]q!;HKn!;c]q!<)rt!<)ot!<2uu!;lcr!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!9X:]!<)rt!;uls!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!:^!g!;ZZp!<)ot!<)ot
+!<)ot!;c]q!:0Xb!;c`q!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)ot!;uis!<)ot!;uis!<)rt
+!:Tpf!;c`q!<)ot!;lcr!;ZWp!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:g'h!<)ot!;ZWp!;c]q
+!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)rs!:9abm/bd$J,~>
+!BU8[l.5k7!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:p-i
+!<)ot!9X:]!<)rt!;c]q!;HKn!;c]q!<)rt!<)ot!<2uu!;lcr!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!9X:]!<)rt!;uls!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!:^!g!;ZZp!<)ot!<)ot
+!<)ot!;c]q!:0Xb!;c`q!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)ot!;uis!<)ot!;uis!<)rt
+!:Tpf!;c`q!<)ot!;lcr!;ZWp!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:g'h!<)ot!;ZWp!;c]q
+!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)rs!:9abklK'jJ,~>
+!B:&Xj4=51!;?Em!<)ot!;uls!<)ot!;lcr!;ZWp!<)ot!;ZWp!;c`q!<)ot!<)ot!<)rt!:p-i
+!<)ot!9X:]!<)rt!;c]q!;HKn!;c]q!<)rt!<)ot!<2uu!;lcr!<)ot!;uls!<)ot!;c]q!;c]q
+!<)ot!9X:]!<)rt!;uls!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!:^!g!;ZZp!<)ot!<)ot
+!<)ot!;c]q!:0Xb!;c`q!<)ot!<)ot!<)rt!<)ot!<)ot!;uis!<)ot!;uis!<)ot!;uis!<)rt
+!:Tpf!;c`q!<)ot!;lcr!;ZWp!<)ot!:Tpf!;ZZp!<)ot!<)ot!<)ot!:g'h!<)ot!;ZWp!;c]q
+!<)rt!<)ot!<)ot!;uls!<)ot!;uls!<2uu!<)ot!<)rs!:9abirR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:Bdd!9a@^
+!;lcr!;c]q!;HKn!;lcr!;lcr!<)p"!<<'!p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrkl1V_qu6Wr
+r;Q`soD\djr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`sq#:<oqYpNqli-qbqYpNqr;Q`srr2ru
+qu6Wrrr2ruqu6Wrr;Qj!s8N)srr<&rrr<&trr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&rrr<&g
+rr<&prr<&srr<&urr<&rrr<&drr<&prr<&rrr<&rrr<&urr<&rrr<&trr<&rrr<&trr<&js82j0
+rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:Bdd!9a@^
+!;lcr!;c]q!;HKn!;lcr!;lcr!<)p"!<<'!p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrkl1V_qu6Wr
+r;Q`soD\djr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`sq#:<oqYpNqli-qbqYpNqr;Q`srr2ru
+qu6Wrrr2ruqu6Wrr;Qj!s8N)srr<&rrr<&trr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&rrr<&g
+rr<&prr<&srr<&urr<&rrr<&drr<&prr<&rrr<&rrr<&urr<&rrr<&trr<&rrr<&trr<&js82j0
+rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;-9k!;ZWp!;c]q!;uis!<)ot!;uis!:Bdd!9a@^
+!;lcr!;c]q!;HKn!;lcr!;lcr!<)p"!<<'!p&>!lr;Q`squ6Wrqu6Wrqu6Wrqu6Wrkl1V_qu6Wr
+r;Q`soD\djr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`sq#:<oqYpNqli-qbqYpNqr;Q`srr2ru
+qu6Wrrr2ruqu6Wrr;Qj!s8N)srr<&rrr<&trr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&rrr<&g
+rr<&prr<&srr<&urr<&rrr<&drr<&prr<&rrr<&rrr<&urr<&rrr<&trr<&rrr<&trr<&js82j0
+rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Tsb!9a@^!;$3j
+!;HKn!;lcr!;?Hl!;ZZl!;uis!;lcr!;lcr!;lfl!9jF_!;lcr!;uis!;QTk!;uis!;lcr!<2uu
+!;uis!:^!g!;ZWp!;uis!<)rp!;c]q!:0Xb!;c]q!;uis!<2uu!;lcr!<3#o!;lfr!;lfl!;ulr
+!:9^c!;c]q!;uis!;lcr!;c]q!;lcr!:^!g!;ZWp!;uis!<3#o!:p0e!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTi!:9abm/bd$J,~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Tsb!9a@^!;$3j
+!;HKn!;lcr!;?Hl!;ZZl!;uis!;lcr!;lcr!;lfl!9jF_!;lcr!;uis!;QTk!;uis!;lcr!<2uu
+!;uis!:^!g!;ZWp!;uis!<)rp!;c]q!:0Xb!;c]q!;uis!<2uu!;lcr!<3#o!;lfr!;lfl!;ulr
+!:9^c!;c]q!;uis!;lcr!;c]q!;lcr!:^!g!;ZWp!;uis!<3#o!:p0e!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTi!:9abklK'jJ,~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;ZZl!;ZWp!;c]q!;uis!;ulr!:Tsb!9a@^!;$3j
+!;HKn!;lcr!;?Hl!;ZZl!;uis!;lcr!;lcr!;lfl!9jF_!;lcr!;uis!;QTk!;uis!;lcr!<2uu
+!;uis!:^!g!;ZWp!;uis!<)rp!;c]q!:0Xb!;c]q!;uis!<2uu!;lcr!<3#o!;lfr!;lfl!;ulr
+!:9^c!;c]q!;uis!;lcr!;c]q!;lcr!:^!g!;ZWp!;uis!<3#o!:p0e!;ZWp!;lcr!;lcr!<3#o
+!<)ot!;lcr!<)ot!;QTi!:9abirR%VJ,~>
+!BpJ^mFM:;!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:p-i!;uis
+!9a@^!;$3j!;HKn!;lcr!;?Ep!<<'!qu6Wrr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlXqu6Wrr;Q`s
+q>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qbqYpNqr;Q`s
+rr2ruqu6Wrrr2ruo`+pkqu6Wro)J^imf*7eqYpNqr;Q`squ6WrqYpNqqu6WrnG`Igq>UEpr;Q`s
+rr2rum/I%cr;Q`sq>UEpqu6Wrqu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Z`rm/R(P!S0Da~>
+!BU8[l.5k7!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:p-i!;uis
+!9a@^!;$3j!;HKn!;lcr!;?Ep!<<'!qu6Wrr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlXqu6Wrr;Q`s
+q>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qbqYpNqr;Q`s
+rr2ruqu6Wrrr2ruo`+pkqu6Wro)J^imf*7eqYpNqr;Q`squ6WrqYpNqqu6WrnG`Igq>UEpr;Q`s
+rr2rum/I%cr;Q`sq>UEpqu6Wrqu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Z`rm/R(L!R<`V~>
+!B:&Xj4=51!;HKn!;lcr!<)ot!;uis!;lcr!;c]q!;uis!;ZWp!;c]q!;uis!;ZZp!:p-i!;uis
+!9a@^!;$3j!;HKn!;lcr!;?Ep!<<'!qu6Wrr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlXqu6Wrr;Q`s
+q>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qbqYpNqr;Q`s
+rr2ruqu6Wrrr2ruo`+pkqu6Wro)J^imf*7eqYpNqr;Q`squ6WrqYpNqqu6WrnG`Igq>UEpr;Q`s
+rr2rum/I%cr;Q`sq>UEpqu6Wrqu6Wrrr2rupAY*mqu6WrrVlitq>UEpr;Z`rm/R(F!Q-jH~>
+!BpJ^mFD4:!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+oD\djr;Q`skPkM^oD\djp\t3nqu6WrpAY*mrr2rur;Q`sr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlX
+qu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qb
+qYpNqr;Q`srr2ruqu6Wrrr2rup&>*os8N)srr<&mrr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&r
+rr<&grr<&prr<&srr<&urr<&crr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&rrr<&trr<&prr<&s
+s82j0rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l.,e6!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+oD\djr;Q`skPkM^oD\djp\t3nqu6WrpAY*mrr2rur;Q`sr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlX
+qu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qb
+qYpNqr;Q`srr2ruqu6Wrrr2rup&>*os8N)srr<&mrr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&r
+rr<&grr<&prr<&srr<&urr<&crr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&rrr<&trr<&prr<&s
+s82j0rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj44/0!;lcu!<<'!qu6WrrVlitr;Q`squ6WrqYpNqr;Q`sq>UEpqYpNqr;Q`srVlitr;Q`s
+oD\djr;Q`skPkM^oD\djp\t3nqu6WrpAY*mrr2rur;Q`sr;Q`sr;Q`squ6Wrqu6Wrqu6WriVrlX
+qu6Wrr;Q`sq>UEpr;Q`sr;Q`squ6Wrrr2rur;Q`snG`Igq>UEpr;Q`srr2rur;Q`sqYpNqli-qb
+qYpNqr;Q`srr2ruqu6Wrrr2rup&>*os8N)srr<&mrr<&srr<&frr<&qrr<&srr<&rrr<&qrr<&r
+rr<&grr<&prr<&srr<&urr<&crr<&srr<&prr<&rrr<&rrr<&urr<&mrr<&rrr<&trr<&prr<&s
+s82j0rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mFD7:!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitoD\djrVultk5PD]rVultqYpNqp\t3nqYpNqrVultrVlitrVlitrVlitrVultr;ZcsrVlit
+qYpNqqYpNqrVultkPkM^rVultr;Q`sq>UEprVultr;ZcsrVlitrVlitr;Q`snG`IgrVlitrr2ru
+r;Q`srr2rurVultqYpNqrVlitnG`IgqYpNqr;Q`srVlitrVultrVlitrVultrVlitrVlitr;Q`s
+rVultrVultrVlitn,E@fqYpNqr;Q`squ6WrrVlitrr2rurVlitn,E@frVlitrr2rur;Q`srVlit
+rVultoD\djrVultq>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVufrm/R(P!S0Da~>
+!BU8[l.,h6!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitoD\djrVultk5PD]rVultqYpNqp\t3nqYpNqrVultrVlitrVlitrVlitrVultr;ZcsrVlit
+qYpNqqYpNqrVultkPkM^rVultr;Q`sq>UEprVultr;ZcsrVlitrVlitr;Q`snG`IgrVlitrr2ru
+r;Q`srr2rurVultqYpNqrVlitnG`IgqYpNqr;Q`srVlitrVultrVlitrVultrVlitrVlitr;Q`s
+rVultrVultrVlitn,E@fqYpNqr;Q`squ6WrrVlitrr2rurVlitn,E@frVlitrr2rur;Q`srVlit
+rVultoD\djrVultq>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVufrm/R(L!R<`V~>
+!B:&Xj4420!<)ot!<)ot!<)ot!;uis!;uis!;lcr!<)p"!<<'!rVultq>UEpqYpNqr;Q`srVult
+rVlitoD\djrVultk5PD]rVultqYpNqp\t3nqYpNqrVultrVlitrVlitrVlitrVultr;ZcsrVlit
+qYpNqqYpNqrVultkPkM^rVultr;Q`sq>UEprVultr;ZcsrVlitrVlitr;Q`snG`IgrVlitrr2ru
+r;Q`srr2rurVultqYpNqrVlitnG`IgqYpNqr;Q`srVlitrVultrVlitrVultrVlitrVlitr;Q`s
+rVultrVultrVlitn,E@fqYpNqr;Q`squ6WrrVlitrr2rurVlitn,E@frVlitrr2rur;Q`srVlit
+rVultoD\djrVultq>UEpqYpNqrVultrVlitrVultrVultrVlitr;Q`sq>UEprVufrm/R(F!Q-jH~>
+!BpJ^mF2+6!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utnc/Of!<<#u
+kPtJ\qu?KmrVu]or;Z]qr;Zcsrr;osrr;os!<<#us8W*!!<;utr;ZTnr;Z]qjT#/Y!WN0!s7u`n
+s8;ots8E#trrE-"r;cfrrW)rtrW)Hfr;cisrW)rtrW)rtr;ZitrW)iqr;cEgq>gNprW)rtrW)os
+r;Zp!!!)utr;ccqrW)uurW)lrr;c`p!<E/u!:g*c!<3#t!<3#t!;lfp!;ulq!:Bgb!<3#t!<3#t
+!<)rr!:^$e!!*&u!<3#p!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#um/R(P!S0Da~>
+!BU8[l-o\2!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utnc/Of!<<#u
+kPtJ\qu?KmrVu]or;Z]qr;Zcsrr;osrr;os!<<#us8W*!!<;utr;ZTnr;Z]qjT#/Y!WN0!s7u`n
+s8;ots8E#trrE-"r;cfrrW)rtrW)Hfr;cisrW)rtrW)rtr;ZitrW)iqr;cEgq>gNprW)rtrW)os
+r;Zp!!!)utr;ccqrW)uurW)lrr;c`p!<E/u!:g*c!<3#t!<3#t!;lfp!;ulq!:Bgb!<3#t!<3#t
+!<)rr!:^$e!!*&u!<3#p!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#um/R(L!R<`V~>
+!B:&Xj4"&,!;lfp!;ulr!<3#t!;lfp!<)rr!!*&u!<3#p!<3#t!<3#t!<3!!!<;utnc/Of!<<#u
+kPtJ\qu?KmrVu]or;Z]qr;Zcsrr;osrr;os!<<#us8W*!!<;utr;ZTnr;Z]qjT#/Y!WN0!s7u`n
+s8;ots8E#trrE-"r;cfrrW)rtrW)Hfr;cisrW)rtrW)rtr;ZitrW)iqr;cEgq>gNprW)rtrW)os
+r;Zp!!!)utr;ccqrW)uurW)lrr;c`p!<E/u!:g*c!<3#t!<3#t!;lfp!;ulq!:Bgb!<3#t!<3#t
+!<)rr!:^$e!!*&u!<3#p!;ulq!!3*"r;Z]qr;Zcs!<;utrVu]or;Z]q!<<#um/R(F!Q-jH~>
+!BpJ^m=G:gs3goI!9a@^!.k0$s3puJ!7q2K!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l%/kcs3goI!9a@^!.k0$s3puJ!7q2K!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj+75]s3goI!9a@^!.k0$s3puJ!7q2K!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^m=G:gs3goI!9a@^!.k0$s3puJ!7q2M!:9abm/bd$J,~>
+!BU8[l%/kcs3goI!9a@^!.k0$s3puJ!7q2M!:9abklK'jJ,~>
+!B:&Xj+75]s3goI!9a@^!.k0$s3puJ!7q2M!:9abirR%VJ,~>
+!BpJ^m=G:gs3puJ!9X:]!.k0$s4%&K!7h,L!:9abm/bd$J,~>
+!BU8[l%/kcs3puJ!9X:]!.k0$s4%&K!7h,L!:9abklK'jJ,~>
+!B:&Xj+75]s3puJ!9X:]!.k0$s4%&K!7h,L!:9abirR%VJ,~>
+!BpJ^m=G:gs4IAL!9X=[!.k0$s4dSO!7_&I!##;3!<3$!rr<'!!!*$!!<3$!s8MBdeieN~>
+!BU8[l%/kcs4IAL!9X=[!.k0$s4dSO!7_&I!##;3!<3$!rr<'!!!*$!!<3$!s8M6`c8pI~>
+!B:&Xj+75]s4IAL!9X=[!.k0$s4dSO!7_&I!##;3!<3$!rr<'!!!*$!!<3$!s8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N)cs8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N)cs8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N)cs8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mD/c%!.k1<s8N(Ms+13$s0Vh+!:9abm/bd$J,~>
+!BU8[l+m?!!.k1<s8N(Ms+13$s0Vh+!:9abklK'jJ,~>
+!B:&Xj1t]p!.k1<s8N(Ms+13$s0Vh+!:9abirR%VJ,~>
+!BpJ^mHOZL!!3*"h>[HTl2L_`gAh!LrVu`pr;ZQmbPqPBoDedirr;rts8Vio!<<#ur;Z`r!<;rs
+m/I%cmJd.dbPqPBpAY*mJcC<$f)PaMm/R(P!S0Da~>
+!BU8[l086H!!3*"h>[HTl2L_`gAh!LrVu`pr;ZQmbPqPBoDedirr;rts8Vio!<<#ur;Z`r!<;rs
+m/I%cmJd.dbPqPBpAY*mJcC<$f)PaMm/R(L!R<`V~>
+!B:&Xj6?UB!!3*"h>[HTl2L_`gAh!LrVu`pr;ZQmbPqPBoDedirr;rts8Vio!<<#ur;Z`r!<;rs
+m/I%cmJd.dbPqPBpAY*mJcC<$f)PaMm/R(F!Q-jH~>
+!BpJ^mHafP!<)rt!8[YT!9sL`!87AP!;uis!<)ot!<)ot!;uis!;uis!6bBB!:p-i!;uis!<2uu
+!<2uu!<3!$!<<'!!;uls!<)ot!:'Ra!:Bdd!6bBB!;?Em!.k0$s475K!##;3!<3$!rr<'!!!*$!
+!<3$!s8MBdeieN~>
+!BU8[l0JBL!<)rt!8[YT!9sL`!87AP!;uis!<)ot!<)ot!;uis!;uis!6bBB!:p-i!;uis!<2uu
+!<2uu!<3!$!<<'!!;uls!<)ot!:'Ra!:Bdd!6bBB!;?Em!.k0$s475K!##;3!<3$!rr<'!!!*$!
+!<3$!s8M6`c8pI~>
+!B:&Xj6QaF!<)rt!8[YT!9sL`!87AP!;uis!<)ot!<)ot!;uis!;uis!6bBB!:p-i!;uis!<2uu
+!<2uu!<3!$!<<'!!;uls!<)ot!:'Ra!:Bdd!6bBB!;?Em!.k0$s475K!##;3!<3$!rr<'!!!*$!
+!<3$!s8M$Z_`*)~>
+!BpJ^mHacP!;lcr!8[YT!5SU7!;lcr!<2uu!;uis!<)ot!;uis!6bBB!:p-i!;uis!<2uu!<2uu
+!<3!%!<<'!rrE&u!W`6#rVlitec,ULbPqPBJcC<$b5_JAm/R(P!S0Da~>
+!BU8[l0J?L!;lcr!8[YT!5SU7!;lcr!<2uu!;uis!<)ot!;uis!6bBB!:p-i!;uis!<2uu!<2uu
+!<3!%!<<'!rrE&u!W`6#rVlitec,ULbPqPBJcC<$b5_JAm/R(L!R<`V~>
+!B:&Xj6Q^F!;lcr!8[YT!5SU7!;lcr!<2uu!;uis!<)ot!;uis!6bBB!:p-i!;uis!<2uu!<2uu
+!<3!%!<<'!rrE&u!W`6#rVlitec,ULbPqPBJcC<$b5_JAm/R(F!Q-jH~>
+!BpJ^mHjiQ!;HNm!!*&u!;lfp!;uls!!*&t!;uit!<;utrVuisrr;rtrVuisqZ$BlkPkM^qu6Wr
+rr2rur;Q`srVlitr;Q`sk5YA[r;Zcs!<;utqu?Tp!WN/jrr<&srr<&urr<&urr<&urriE&rrE'!
+rr3$"rrE#t!!)BcrW)iqrr<'!r;ccqq>gHnr;c]or;[!#!!*'!rVururW)iqr;c`pq>gHnrW)co
+r;ccqrr<'!r;_EKJcG0<rrDEcrp9a;4b*~>
+!BU8[l0SEM!;HNm!!*&u!;lfp!;uls!!*&t!;uit!<;utrVuisrr;rtrVuisqZ$BlkPkM^qu6Wr
+rr2rur;Q`srVlitr;Q`sk5YA[r;Zcs!<;utqu?Tp!WN/jrr<&srr<&urr<&urr<&urriE&rrE'!
+rr3$"rrE#t!!)BcrW)iqrr<'!r;ccqq>gHnr;c]or;[!#!!*'!rVururW)iqr;c`pq>gHnrW)co
+r;ccqrr<'!r;_EKJcG0<rrDEcrojI/3e.~>
+!B:&Xj6ZdG!;HNm!!*&u!;lfp!;uls!!*&t!;uit!<;utrVuisrr;rtrVuisqZ$BlkPkM^qu6Wr
+rr2rur;Q`srVlitr;Q`sk5YA[r;Zcs!<;utqu?Tp!WN/jrr<&srr<&urr<&urr<&urriE&rrE'!
+rr3$"rrE#t!!)BcrW)iqrr<'!r;ccqq>gHnr;c]or;[!#!!*'!rVururW)iqr;c`pq>gHnrW)co
+r;ccqrr<'!r;_EKJcG0<rrDEcro4$s2h1~>
+!BpJ^mHjiQ!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!<)ot!;uis!;c]q!;c]q!;uis
+!9a@^!;lcr!<2uu!;uis!<)p"!<<'!jSo2[rVlitr;ZcsrVlitrVlitrVulto)A[ir;Q`sqYpNq
+qu6p%s8N*!!<<'!rVlitlMghaqZ$QqrVlitqu6Wrq>UEprVlitr;Q`srVultr;Zcsrr2rurVlit
+rVlitqYpNqpAY*mqYpNqrVlitr;ZcsrVlitJcC<$n,N=d')qq3rr<'!!!*$!!<3$!rr<'!rp9a;
+4b*~>
+!BU8[l0SEM!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!<)ot!;uis!;c]q!;c]q!;uis
+!9a@^!;lcr!<2uu!;uis!<)p"!<<'!jSo2[rVlitr;ZcsrVlitrVlitrVulto)A[ir;Q`sqYpNq
+qu6p%s8N*!!<<'!rVlitlMghaqZ$QqrVlitqu6Wrq>UEprVlitr;Q`srVultr;Zcsrr2rurVlit
+rVlitqYpNqpAY*mqYpNqrVlitr;ZcsrVlitJcC<$n,N=d')qq3rr<'!!!*$!!<3$!rr<'!rojI/
+3e.~>
+!B:&Xj6ZdG!;6Bl!<2uu!<)ot!<)ot!;uls!<)ot!<)rt!<)ot!<)ot!;uis!;c]q!;c]q!;uis
+!9a@^!;lcr!<2uu!;uis!<)p"!<<'!jSo2[rVlitr;ZcsrVlitrVlitrVulto)A[ir;Q`sqYpNq
+qu6p%s8N*!!<<'!rVlitlMghaqZ$QqrVlitqu6Wrq>UEprVlitr;Q`srVultr;Zcsrr2rurVlit
+rVlitqYpNqpAY*mqYpNqrVlitr;ZcsrVlitJcC<$n,N=d')qq3rr<'!!!*$!!<3$!rr<'!ro4$s
+2h1~>
+!BpJ^mHjiQ!;6?l!;$3j!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;c]q!<)ot!9X:]!;uis
+!<)ot!;uis!<)rr!8meV!;uis!;uis!<2uu!;lcr!:p0d!;c]q!;ld%!<<'!rrE*!!<)ot!:'Ra
+!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!.k0$s6p!f!:9abm/bd$J,~>
+!BU8[l0SEM!;6?l!;$3j!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;c]q!<)ot!9X:]!;uis
+!<)ot!;uis!<)rr!8meV!;uis!;uis!<2uu!;lcr!:p0d!;c]q!;ld%!<<'!rrE*!!<)ot!:'Ra
+!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!.k0$s6p!f!:9abklK'jJ,~>
+!B:&Xj6ZdG!;6?l!;$3j!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;c]q!<)ot!9X:]!;uis
+!<)ot!;uis!<)rr!8meV!;uis!;uis!<2uu!;lcr!:p0d!;c]q!;ld%!<<'!rrE*!!<)ot!:'Ra
+!;c]q!;uis!;lcr!;c]q!;lcr!<2uu!;lcr!;uis!;$3j!;c]q!;?Em!;lcr!;lcr!<)ot!;uis
+!.k0$s6p!f!:9abirR%VJ,~>
+!BpJ^mHjiQ!;ulq!<2uu!;QTk!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;?Em!9O7X!;uis
+!;uis!<)p"!<<'!jT#)Wr;Q`sr;Q`srr2ruqu6Wro)A[ir;Q`sqYpNqqu6Wrrr2rurr2rurVlit
+lMghaqYpNqr;Q`squ6WrqZ$?krr2ruqu6Wrr;Q`sq#C3kqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+JcC<$n,NCfm/R(P!S0Da~>
+!BU8[l0SEM!;ulq!<2uu!;QTk!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;?Em!9O7X!;uis
+!;uis!<)p"!<<'!jT#)Wr;Q`sr;Q`srr2ruqu6Wro)A[ir;Q`sqYpNqqu6Wrrr2rurr2rurVlit
+lMghaqYpNqr;Q`squ6WrqZ$?krr2ruqu6Wrr;Q`sq#C3kqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+JcC<$n,NCfm/R(L!R<`V~>
+!B:&Xj6ZdG!;ulq!<2uu!;QTk!;uis!;lcr!<2uu!;uis!;uis!<2uu!;ZWp!;?Em!9O7X!;uis
+!;uis!<)p"!<<'!jT#)Wr;Q`sr;Q`srr2ruqu6Wro)A[ir;Q`sqYpNqqu6Wrrr2rurr2rurVlit
+lMghaqYpNqr;Q`squ6WrqZ$?krr2ruqu6Wrr;Q`sq#C3kqYpNqpAY*mqu6Wrqu6WrrVlitr;Q`s
+JcC<$n,NCfm/R(F!Q-jH~>
+!BpJ^mHjiQ!;c]q!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&nrr<&[rr<&n
+rr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&urr<&urr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8;p1rr<'!!!*$!!<3$!rr<'!!!*&um/bd$J,~>
+!BU8[l0SEM!;c]q!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&nrr<&[rr<&n
+rr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&urr<&urr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uklK'jJ,~>
+!B:&Xj6ZdG!;c]q!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&nrr<&[rr<&n
+rr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&urr<&urr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8;p1rr<'!!!*$!!<3$!rr<'!!!*&uirR%VJ,~>
+!BpJ^mHacP!;lcr!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&orr<&urr<&^
+rr<&nrr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&qrr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8N)cs8MBdeieN~>
+!BU8[l0J?L!;lcr!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&orr<&urr<&^
+rr<&nrr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&qrr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8N)cs8M6`c8pI~>
+!B:&Xj6Q^F!;lcr!<)ot!;ZWp!;uis!;uis!;lcr!<2uu!;uis!;lct!<3&orr<&orr<&urr<&^
+rr<&nrr<&srr<&trr<&Yrr<&srr<&srr<&srr<&urr<&rrr<&irr<&srr<&qrr<&rrr<&qrr<&t
+rr<&srr<&grr<&qrr<&srr<&rrr<&qrr<&nrr<&rrr<&srr<&prr<&srr<&qrr<&mrr<&rrr<&r
+rr<&trr<&srr<%Ms+14=s8N)cs8M$Z_`*)~>
+!BpJ^mHafP!<)ot!;uis!;ZWp!<)rt!;uls!<)ot!<)ot!;uis!;c]q!;HKn!;ZWp!<)ot!;c`q
+!:^!g!;HKn!<)ot!;uis!;-<k!:g'h!<)rt!;uis!;uis!<)ot!<)rt!:p-i!;uis!;c]q!;lcr
+!;c]q!<)ot!;uis!:^!g!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt
+!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!.k0$s6p!Q!<2?deieN~>
+!BU8[l0JBL!<)ot!;uis!;ZWp!<)rt!;uls!<)ot!<)ot!;uis!;c]q!;HKn!;ZWp!<)ot!;c`q
+!:^!g!;HKn!<)ot!;uis!;-<k!:g'h!<)rt!;uis!;uis!<)ot!<)rt!:p-i!;uis!;c]q!;lcr
+!;c]q!<)ot!;uis!:^!g!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt
+!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!.k0$s6p!Q!<23`c8pI~>
+!B:&Xj6QaF!<)ot!;uis!;ZWp!<)rt!;uls!<)ot!<)ot!;uis!;c]q!;HKn!;ZWp!<)ot!;c`q
+!:^!g!;HKn!<)ot!;uis!;-<k!:g'h!<)rt!;uis!;uis!<)ot!<)rt!:p-i!;uis!;c]q!;lcr
+!;c]q!<)ot!;uis!:^!g!;c]q!;uis!;lcr!<)ot!<2uu!<)rt!<)ot!<)rt!;uis!;ZWp!<)rt
+!;c]q!<)ot!;lcr!;c]q!<)ot!;uis!;uis!.k0$s6p!Q!<2!Z_`*)~>
+!BpJ^mHOZL!<)ro!;ulq!!*&u!<3!!!<;utrVuisrr;rtqu6WrqZ$BlrVu]oqZ$Qqnc/Lequ?Nn
+r;Z]qpAb-mnGiFe!<<#us8W&urr;rtrVufr!ri6#o`+mjrr;rtrVucqrr;osrr;os!<;fooDeXe
+rr;rtrr;rtqu?Tpr;Z]qqZ$Ko!WN0!s7u`ns8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E"Ls+14>
+s69U`m/bd$J,~>
+!BU8[l086H!<)ro!;ulq!!*&u!<3!!!<;utrVuisrr;rtqu6WrqZ$BlrVu]oqZ$Qqnc/Lequ?Nn
+r;Z]qpAb-mnGiFe!<<#us8W&urr;rtrVufr!ri6#o`+mjrr;rtrVucqrr;osrr;os!<;fooDeXe
+rr;rtrr;rtqu?Tpr;Z]qqZ$Ko!WN0!s7u`ns8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E"Ls+14>
+s69U`klK'jJ,~>
+!B:&Xj6?UB!<)ro!;ulq!!*&u!<3!!!<;utrVuisrr;rtqu6WrqZ$BlrVu]oqZ$Qqnc/Lequ?Nn
+r;Z]qpAb-mnGiFe!<<#us8W&urr;rtrVufr!ri6#o`+mjrr;rtrVucqrr;osrr;os!<;fooDeXe
+rr;rtrr;rtqu?Tpr;Z]qqZ$Ko!WN0!s7u`ns8;ots8E#qs8;rrs7u`ns8;rqs8E#ts8E"Ls+14>
+s69U`irR%VJ,~>
+!BpJ^mE5G/!6P9@!6kKC!.k1(rr<%Ms+13Ps8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l,s#+!6P9@!6kKC!.k1(rr<%Ms+13Ps8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj3%B%!6P9@!6kKC!.k1(rr<%Ms+13Ps8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpJ^mE5G/!6P9@!6kKC!.k1(rr<%Ms+13Ps8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l,s#+!6P9@!6kKC!.k1(rr<%Ms+13Ps8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj3%B%!6P9@!6kKC!.k1(rr<%Ms+13Ps8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^mE5G/!6Y?A!6kKC!.k1(rr<%Ms+13Os8N'"rrDThrr<'!rp9a;4b*~>
+!BU8[l,s#+!6Y?A!6kKC!.k1(rr<%Ms+13Os8N'"rrDThrr<'!rojI/3e.~>
+!B:&Xj3%B%!6Y?A!6kKC!.k1(rr<%Ms+13Os8N'"rrDThrr<'!ro4$s2h1~>
+!BpJ^mE>P.!.k0$s7--e!.k0$s/Z2!!<3!0!<3'!!<3'!!<3'!!<3'!!<2?deieN~>
+!BU8[l-',*!.k0$s7--e!.k0$s/Z2!!<3!0!<3'!!<3'!!<3'!!<3'!!<23`c8pI~>
+!B:&Xj3.K$!.k0$s7--e!.k0$s/Z2!!<3!0!<3'!!<3'!!<3'!!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N'%rrE'!s7QEms8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'%rrE'!s7QEms8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'%rrE'!s7QEms8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrE-"p](Kt!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrE-"p](Kt!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrE-"p](Kt!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N''rrE'!rrE)q!!<0#s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2?deieN~>
+!BU8[l%/kcs+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<23`c8pI~>
+!B:&Xj+75]s+13$s+14*s8E#trrW9$!<;rs#QFf(!<3'!!<2!Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N')rrE'!rrE'!s8E!$rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'1rrE'!rrE'!rrE'!rrE'!s8Duus8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&um/bd$J,~>
+!BU8[l%/kcs+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uklK'jJ,~>
+!B:&Xj+75]s+13$s+14*s8E#trt#21!<3'!!<3'!!<3'!!<3&uirR%VJ,~>
+!BpJ^m=G:gs+13$s+14*s8N'!s6]jes8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'!s6]jes8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'!s6]jes8M$Z_`*)~>
+!BpJ^m=G:gs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rp9a;4b*~>
+!BU8[l%/kcs+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!rojI/3e.~>
+!B:&Xj+75]s+13$s+14*s8E!3rrE'!rrE'!rrE'!rrE'!rrE'!ro4$s2h1~>
+!BpJ^m=G:gs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8MBdeieN~>
+!BU8[l%/kcs+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M6`c8pI~>
+!B:&Xj+75]s+13$s+14*s8N'5rrE'!rrE'!rrE'!rrE'!rrE'!s8M$Z_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6m=FYUm=FYUmD&#heieN~>
+!BU73l%/)Ml%/)Ml+cH`c8pI~>
+!B:%0j+66Aj+66Aj1jUT_`*)~>
+!BpI6eq)D'eq)D'f"T]84b*~>
+!BU73c@O8lc@O8lcG%R(3e.~>
+!B:%0_h#^V_h#^V_nO"g2h1~>
+JN\QIJN\QIJN^V.J,~>
+JNA?CJNA?CJNCD(J,~>
+JN&-=JN&-=JN(2"J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF



From MAILER-DAEMON Mon Sep 22 04:30:16 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KhgoC-0001PF-07
	for mharc-axiom-developer@gnu.org; Mon, 22 Sep 2008 04:30:16 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Khgo9-0001Lb-Ii
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 04:30:13 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Khgo8-0001J7-A9
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 04:30:12 -0400
Received: from [199.232.76.173] (port=56220 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Khgo8-0001Is-5U
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 04:30:12 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:38921
	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 1Khgo7-0002pK-TE
	for axiom-developer@nongnu.org; Mon, 22 Sep 2008 04:30:12 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8M8U6r3013797;
	Mon, 22 Sep 2008 03:30:06 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8M8U4vF013786;
	Mon, 22 Sep 2008 03:30:04 -0500
Date: Mon, 22 Sep 2008 03:30:04 -0500
Message-Id: <200809220830.m8M8U4vF013786@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] Axiom September 2008 release
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, 22 Sep 2008 08:30:13 -0000

The sources for the Axiom September 2008 release are up at:

github.com
axiom-developer.org
savannah.nongnu.org
sourceforge.net

Binaries will be available sometime this week.

=====================================================================

September 2008 Release Notes

Axiom website
   The effort here is to improve the support for offline literate
   documentation. The primary changes are the inclusion of graphs
   and additional book volumes.

* <http://axiom-developer.org/axiom-website/documentation.html>
  Contains the new algebra volumes and subvolumes.
* <http://axiom-developer.org/axiom-website/bookvol10.2abb.html>
  Contains a "clickable" graph that indexes into the algebra.




Graphviz, PDF, and HTML integration
   The effort here is to unify these three technologies in a way
   that simplifies the user interface and improves documentation

* Graphviz is used if available but not required
* Algebra graphs are automatically generated at build time
  from algebra source files
* Graphviz graphs now properly hyperlink into PDF files allowing
  any node in a graph to link to any document page




Book volume 0 (Jenks and Sutor)

* <http://axiom-developer.org/axiom-website/bookvol0.pdf>
* replace \over with \frac



Book volume 7.1 (Hyperdoc pages)
   The effort here is to create a literate document that contains
   all of the "live" pages used in hyperdoc. The PDF is being
   constructed so that a user can effectively "browse" the static
   hyperdoc pages, which are included, without a running Axiom.

* <http://axiom-developer.org/axiom-website/bookvol7.1.pdf>
* The source for all of the pages is now contained in this book.
* Hyperdoc now fetches the pages directly from the book.
* The hyper page directory and all files are gone.
* Some of the static page images are now inside the PDF
* Pages have href links allowing "in-pdf" navigation of pages




Book volume 10 (Algebra)
   The effort here is to create a way to describe and deeply
   document the algebra. This volume was split to better handle
   the structure of Axiom's information. 

* Split into 5 volumes
   - 10   Implementation
   - 10.1 Theory
   - 10.2 Categories
   - 10.3 Domains
   - 10.4 Packages




Book volume 10.2 (Algebra Categories)
   The effort here is to create fully indexed, cross-referenced,
   graphical documentation for Axiom categories in a standalone
   form. This is a "live" literate document which contains the 
   actual source code used to build the system.

* <http://axiom-developer.org/axiom-website/bookvol10.2.pdf>
* Contains 60 categories so far
* Has partial graphs for each category
* Has list of exported functions 
* Has information about source of functions
* Has index cross reference by function and category
* Has PDF href links so that URLs work:
   <http://axiom-developer.org/axiom-website/bookvol10.2.pdf#nameddest=AGG>
* Has forward/backward links between categories
* Automatically generates "clickable" graphs:
   <http://axiom-developer.org/axiom-website/bookvol10.2abb.html>
* Graph clicking automatically opens to the proper source code




New algebra examples (Daly, Tsikas)
   The effort here is to create "real time" documentation that
   gives the end user an example of how to construct the proper
   arguments and call a function. This puts examples into the
   system so users don't need to consult other documents.

* )d op someop shows examples of function usage
* about 100 new function examples were added 
* new comment syntax added to allow automatic API testing




Input Files
   There is a new effort to automatically extract the algebra
   examples in order to regression test the user API to the
   algebra. In addition there is ongoing test work.

* New input files (Hemmecke, Stumbo, Cyganski, Daly)
     bini, biquat, ifthenelse, liu, overload, sqrt3, typetower
* Changed input files (Hemmecke, Stumbo, Cyganski, Daly)
     bern, function, linalg, regset, test, tutchap2




Build changes

* graphics does not depend on compress, done at build time
* firefox html pages are now built before tests are run



Algebra changes

* FLAGG (FiniteLinearAggregate) -- removed a duplicate function



Interpreter changes (Page)

* add cost function to bottomUp output



 



From MAILER-DAEMON Wed Sep 24 19:11:55 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KidWV-00042u-94
	for mharc-axiom-developer@gnu.org; Wed, 24 Sep 2008 19:11:55 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KidWT-00041k-KI
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:11:53 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KidWR-0003zz-Qs
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:11:53 -0400
Received: from [199.232.76.173] (port=33948 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KidWR-0003zk-Aa
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:11:51 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:33379
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1KidWQ-0007zn-Sb
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:11:51 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=H2rsUy4Y2-x7eRknwPAA:9 a=fU4WpDI_cxBLlQsduAAczF4DEgYA:4
	a=hrUNHGjNSUsA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:35739] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id A2/AB-11990-729CAD84; Wed, 24 Sep 2008 19:11:35 -0400
Received: (qmail 32186 invoked from network); 24 Sep 2008 23:11:36 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 24 Sep 2008 23:11:36 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8ONBTo30846;
	Wed, 24 Sep 2008 19:11:29 -0400
Date: Wed, 24 Sep 2008 19:11:29 -0400
Message-Id: <200809242311.m8ONBTo30846@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: "Amelia Taylor"originalbrickhouse@gmail.com
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org
Subject: [Axiom-developer] New Journal
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, 24 Sep 2008 23:11:53 -0000

Amelia,

Having been a long and vocal supporter of literate publication,
I support your effort on this new Journal.

The Axiom project would be glad to participate.

Tim Daly
Axiom Lead Developer



From MAILER-DAEMON Wed Sep 24 19:19:07 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KiddT-0005ir-2G
	for mharc-axiom-developer@gnu.org; Wed, 24 Sep 2008 19:19:07 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KiddQ-0005iW-Tx
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:19:04 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KiddP-0005iK-SZ
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:19:04 -0400
Received: from [199.232.76.173] (port=45964 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KiddP-0005iH-QZ
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:19:03 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:53278
	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 1KiddP-0000ET-GF
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:19:03 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8ONJ0r3022737;
	Wed, 24 Sep 2008 18:19:00 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8ONJ0QZ022734;
	Wed, 24 Sep 2008 18:19:00 -0500
Date: Wed, 24 Sep 2008 18:19:00 -0500
Message-Id: <200809242319.m8ONJ0QZ022734@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] September 2008 binaries
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, 24 Sep 2008 23:19:05 -0000

The binaries for the new September 2008 release are available at:
<http://axiom-developer.org/axiom-website/download.html>

Tim



From MAILER-DAEMON Wed Sep 24 19:27:47 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kidlq-0002Lj-UO
	for mharc-axiom-developer@gnu.org; Wed, 24 Sep 2008 19:27:47 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kidln-0002Ku-Td
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:27:44 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kidll-0002Ki-8p
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:27:42 -0400
Received: from [199.232.76.173] (port=43864 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kidll-0002Kf-21
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:27:41 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:54545
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kidlk-0001GH-M3
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:27:40 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=H2rsUy4Y2-x7eRknwPAA:9 a=CC6CJrJF5vs25k0z5Oqrrzdd0hIA:4
	a=hrUNHGjNSUsA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.47] ([24.154.1.47:49551] helo=pop-4.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id 72/A7-07245-EDCCAD84; Wed, 24 Sep 2008 19:27:26 -0400
Received: (qmail 11118 invoked from network); 24 Sep 2008 23:27:26 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-4.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <daly@axiom-developer.org>; 24 Sep 2008 23:27:26 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8ONRFg30862;
	Wed, 24 Sep 2008 19:27:15 -0400
Date: Wed, 24 Sep 2008 19:27:15 -0400
Message-Id: <200809242327.m8ONRFg30862@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: "Amelia Taylor" <amelia.taylor@coloradocollege.edu>,
	"Gregory G. Smith" <ggsmith@mast.queensu.ca>
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org
Subject: [Axiom-developer] New Journal
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, 24 Sep 2008 23:27:44 -0000

Amelia, Greg,

Having been a long and vocal supporter of literate publication,
I support your effort on this new Journal.

The Axiom project would be glad to participate.

Tim Daly
Axiom Lead Developer



From MAILER-DAEMON Wed Sep 24 19:50:49 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kie89-0002XF-Mn
	for mharc-axiom-developer@gnu.org; Wed, 24 Sep 2008 19:50:49 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kie88-0002XA-1I
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:50:48 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kie85-0002W1-KO
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:50:46 -0400
Received: from [199.232.76.173] (port=47400 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kie85-0002Vq-EU
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:50:45 -0400
Received: from mx-7.zoominternet.net ([24.154.1.26]:38433
	helo=cm-1.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kie84-0003Ty-Uv
	for axiom-developer@nongnu.org; Wed, 24 Sep 2008 19:50:45 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=ZAYK2qMzTrSD2gPYEy8A:9 a=BQafmoxYXMtniiG31zMA:7
	a=w5J1S-qxjMDMTj7YEN9nbUBy9oIA:4 a=WcGY3-TIXCwA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.45] ([24.154.1.45:53002] helo=pop-2.zoominternet.net)
	by mx-7.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id 66/9B-11990-542DAD84; Wed, 24 Sep 2008 19:50:29 -0400
Received: (qmail 16869 invoked from network); 24 Sep 2008 23:50:31 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-2.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <axiom-developer@nongnu.org>; 24 Sep 2008 23:50:31 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8ONoOl30880;
	Wed, 24 Sep 2008 19:50:24 -0400
Date: Wed, 24 Sep 2008 19:50:24 -0400
Message-Id: <200809242350.m8ONoOl30880@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: sage-devel@googlegroups.com
In-reply-to: <858ae873-4697-4489-8ad1-6984cc3f9770@b30g2000prf.googlegroups.com>
	(message from mabshoff on Wed, 24 Sep 2008 16:25:20 -0700 (PDT))
References: <200809241417.m8OEHn2I030301@u123.math.uiuc.edu>
	<85e81ba30809240849v391249b8x9becd649be3d95e5@mail.gmail.com>
	<158627b90809240904v589330dave6fc4db7e2477d07@mail.gmail.com>
	<85e81ba30809240908r26cebbecm6c4d5163d2676bbe@mail.gmail.com>
	<f67335450809240949y7bda6525lf8609a4e31e65375@mail.gmail.com>
	<6dd4c8ce-9380-4eb0-8ac3-3bf396a90ada@k13g2000hse.googlegroups.com>
	<d70c6591-e14e-448d-87b6-9eb685cfec71@p10g2000prf.googlegroups.com>
	<858ae873-4697-4489-8ad1-6984cc3f9770@b30g2000prf.googlegroups.com>
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, sage-devel@googlegroups.com
Subject: [Axiom-developer] Re: [sage-devel] Re: Fwd: New Journal
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, 24 Sep 2008 23:50:48 -0000

>> Hi. Dan Grayson sent Greg and me a message letting us know about this
>> discussion and I thought it might be helpful for if I joined the
>> discussion as one of the managing editors.
>
><SNIP>
>
>> I'm delighted that the journal has generated so much discussion.
>
>Yes, I think that forces between the different efforts in this area (I
>am aware of M2, Sage and also something in that direction by Daly and
>Traverso around Axiom)  should coordinate/merge since having three
>competing journals might not be best situation. This obviously depends
>on agreeing on a bunch of things like the license of the content and
>so on and since none of the journals has actually gone beyond the
>planning stage and put out an issue it remains to be seen what is
>happening.
>
>One thing that I see as a tiny problem is that right now it is the
>"Journal of Software for Algebra and Geometry" while at least of JSage
>(the Sage one to make it 100% clear) there was at least the
>possibility to go "beyond" algebra and geometry. Since we have not
>done anything in that direction the journal is vaporware for now, so
>the whole point might me moot.

Dr. Traverso (Univ. Pisa) and I have had many discussions about a
"live" or "literate" journal. The key concept is that the publication
should include the actual source code necessary to reproduce the
results in a particular version of a target system (e.g. Sage 3.1).

There are many fine points to discuss and debate but I think it is
vital to keep the research results with the actual implementation.
The current journal/conference/thesis mechanisms do not do that,
almost certainly because of their paper-based legacy.

If "reference" versions of the CAS programs were available then
these could be used to reproduce the results. Perhaps a CAS reference
site would be appropriate.

I'm not much concerned about the focus on Algebra and Geometry since
an idea has to start somewhere and an over-general attempt might fail.
I am hopeful that this journal can demonstrate the key concepts.
I'm willing to volunteer time and energy to make it happen.

Tim Daly
Axiom



From MAILER-DAEMON Thu Sep 25 10:30:48 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kirrk-0004pI-4n
	for mharc-axiom-developer@gnu.org; Thu, 25 Sep 2008 10:30:48 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kirrh-0004ng-RS
	for axiom-developer@nongnu.org; Thu, 25 Sep 2008 10:30:45 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kirrg-0004nU-Jp
	for axiom-developer@nongnu.org; Thu, 25 Sep 2008 10:30:45 -0400
Received: from [199.232.76.173] (port=54266 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kirrg-0004nR-HA
	for axiom-developer@nongnu.org; Thu, 25 Sep 2008 10:30:44 -0400
Received: from mx-8.zoominternet.net ([24.154.1.27]:42930
	helo=cm-2.zoominternet.net)
	by monty-python.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kirrg-0005LU-8j
	for axiom-developer@nongnu.org; Thu, 25 Sep 2008 10:30:44 -0400
X-SpamGroup: 2000
X-CM-Cat: Undefined:Undefined
X-CNFS-Analysis: v=1.0 c=1 a=E8rTNAPPKTgA:10 a=9x1qJYSYWOoMgoVr+WVG7Q==:17
	a=l-IT9Y0FAAAA:8 a=37mPLz1kAAAA:8 a=japap-7Oizl18ypkLiIA:9
	a=jWYCS5nZu2RnfyXfffQA:7 a=HjgQfjjPgbMLIp8cSMFMw2Si48QA:4
	a=zUBsD6tbDSsA:10
X-CM-Score: 0
X-Scanned-by: Cloudmark Authority Engine
Received: from [24.154.1.47] ([24.154.1.47:42374] helo=pop-4.zoominternet.net)
	by mx-8.zoominternet.net (envelope-from <daly@axiom-developer.org>)
	(ecelerity 2.2.2.30 r(24168)) with ESMTP
	id D8/E4-07245-C70ABD84; Thu, 25 Sep 2008 10:30:20 -0400
Received: (qmail 5313 invoked from network); 25 Sep 2008 14:30:23 -0000
Received: from unknown (HELO localhost.localdomain) ([72.23.19.139])
	(envelope-sender <daly@axiom-developer.org>)
	by pop-4.zoominternet.net (qmail-ldap-1.03) with SMTP
	for <axiom-developer@nongnu.org>; 25 Sep 2008 14:30:23 -0000
Received: (from root@localhost)
	by localhost.localdomain (8.11.6/8.11.6) id m8PEUQ231394;
	Thu, 25 Sep 2008 10:30:26 -0400
Date: Thu, 25 Sep 2008 10:30:26 -0400
Message-Id: <200809251430.m8PEUQ231394@localhost.localdomain>
From: root <daly@axiom-developer.org>
To: sage-devel@googlegroups.com
In-reply-to: <158627b90809250238t29df3aa0u4102f70aa1241c2a@mail.gmail.com>
	(john.cremona@gmail.com)
References: <200809241417.m8OEHn2I030301@u123.math.uiuc.edu>
	<85e81ba30809240849v391249b8x9becd649be3d95e5@mail.gmail.com>
	<158627b90809240904v589330dave6fc4db7e2477d07@mail.gmail.com>
	<85e81ba30809240908r26cebbecm6c4d5163d2676bbe@mail.gmail.com>
	<f67335450809240949y7bda6525lf8609a4e31e65375@mail.gmail.com>
	<6dd4c8ce-9380-4eb0-8ac3-3bf396a90ada@k13g2000hse.googlegroups.com>
	<d70c6591-e14e-448d-87b6-9eb685cfec71@p10g2000prf.googlegroups.com>
	<858ae873-4697-4489-8ad1-6984cc3f9770@b30g2000prf.googlegroups.com>
	<200809242350.m8ONoOl30880@localhost.localdomain>
	<158627b90809250238t29df3aa0u4102f70aa1241c2a@mail.gmail.com>
X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not
	recognized.
Cc: axiom-developer@nongnu.org, sage-devel@googlegroups.com
Subject: [Axiom-developer] Re: [sage-devel] Re: Fwd: New Journal
X-BeenThere: axiom-developer@nongnu.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: daly@axiom-developer.org
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, 25 Sep 2008 14:30:46 -0000

John,

>As the outgoing editor-in-chief of the LMS-JCM (London Mathematical
>Society Journal of Computation and Mathematics) (for the next 5 days,
>when Derek Holt takes over), and also an editor of the Journal of
>Algebra's Section on Computational Algebra, I feel obliged to ask
>exactly what the new journal(s) will provide which existing ones do
>not.  The JCM is all-electronic.  See here
>(http://www.lms.ac.uk/jcm/editorial.html) for its aims and scope,
>which explicitly include source code and tables and the like, which
>traditional journals do not have space for.
>
>I am definitely not saying that there's no room for anything new in
>this area, but I am interested to know what the LMS JCM is not doing
>which it could be.  Of course, it may just be that none of the j-sag
>board have heard of it, and if that is the case then I should
>certainly know that!

Dr. Traverso and I have been thinking along different lines in
terms of freely available electronic publications. Your site is
academically interesting but misses the point. Of course you might
not care about the goals we've been trying to achieve so the rest
of this note might not apply. 

Doyen was the initial idea. See <http://daly.axiom-developer.org/doyen>
(The Doyen CD for Sage by Alfredo Portes has this eventual goal.)

The basic idea is that I attend a conference where a paper is 
presented. During the lecture I can visit the URL, drag and drop
the paper being presented onto my system (Axiom, Sage, ...) and
immediately have a running version. Thus, if the author was
presenting efficiency claims, I could populate the tables for my
own machine during the lecture. Or I could execute the examples
and my own tests during the talk. In any case, I'd end up with
a useful tool which is immediately accessible rather than having
to re-understand (poorly), re-implement (badly), the years of
work that the author did.


The terms and conditions do not allow me to include the material
into Axiom or Sage. For Axiom's goals in particular this is not
useful.

Axiom is becoming a literate program (ref: Knuth, See:
<http://axiom-developer.org/axiom-website/documentation.html>

As a literate program it is necessary to be able to rework the
source material into a form that can further the user's ability
to understand. So the terms and conditions have to allow us to,
at bare minimum, redistribute the material, which the LMS Term
and Conditions do not. (ref: <http://www.lms.ac.uk/jcm/terms.html>)

Two key, long-term goals of Axiom are to make the whole system
available for research and available for teaching. In sum, these
require that the research be kept with the code and that the code
be intertwined with the associated research. As a matter of style
the eventual result will look quite different from your "publication"
style but the style is vitally important to the user's ability
to read the result in some literate fashion.

Furthermore, the distribution in PDF ("compiled form") without the
TeX ("source form") makes these papers only marginally useful for
further work (akin to "binary-only" algebra for Sage). The closed
source nature of the site reproduces the paper-based world. That 
misses the whole point of electronic copies.

If you read the terms and conditions for the LMS journal it is
clear that they keep the material from being useful in practice.

As intellectual "bricks" the license allows me to contemplate
the pretty shapes and random sizes of these bricks but I cannot
join and reshape them into a useful larger structure. LMS is
basically an "art gallery", not a supply house. That makes it
pretty, but not very useful as a source of further work.

Perhaps you might consider asking the authors for permission
to re-distribute in "attribution-only" form, the source form
of their documents. Think of it as a GPLv2 request that Sage
makes for their authors. Axiom is Modified BSD and we strongly
encourage people to re-use the material in any way they might
find useful.

It is the age of electronics. We want to use work in computational
mathematics NOW, not next year. We can't afford large amounts of
time to re-implement and re-debug every single new algorithm or
enhancement. Authors who make this easy will be "most quoted" in
running systems and those who don't will not. Sage gives the
possibility of thousands of users overnight. 

Besides, it is clearly a useful "citation" if your code is already
running on the tenure committee's laptops :-)

Tim Daly
Axiom










From MAILER-DAEMON Fri Sep 26 02:37:05 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kj6wr-0001AY-5W
	for mharc-axiom-developer@gnu.org; Fri, 26 Sep 2008 02:37:05 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kj6wp-00019K-V9
	for axiom-developer@nongnu.org; Fri, 26 Sep 2008 02:37:03 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kj6wn-00018z-Hr
	for axiom-developer@nongnu.org; Fri, 26 Sep 2008 02:37:02 -0400
Received: from [199.232.76.173] (port=52658 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kj6wn-00018v-EH
	for axiom-developer@nongnu.org; Fri, 26 Sep 2008 02:37:01 -0400
Received: from mx20.gnu.org ([199.232.41.8]:13013)
	by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32)
	(Exim 4.60) (envelope-from <daly@axiom-developer.org>)
	id 1Kj6wn-0007PR-0l
	for axiom-developer@nongnu.org; Fri, 26 Sep 2008 02:37:01 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]
	helo=axiom-developer.org) by mx20.gnu.org with esmtp (Exim 4.60)
	(envelope-from <daly@axiom-developer.org>) id 1Kj6wm-0003gf-AI
	for axiom-developer@nongnu.org; Fri, 26 Sep 2008 02:37:00 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8Q6aur3022969;
	Fri, 26 Sep 2008 01:36:56 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8Q6auJb022965;
	Fri, 26 Sep 2008 01:36:56 -0500
Date: Fri, 26 Sep 2008 01:36:56 -0500
Message-Id: <200809260636.m8Q6auJb022965@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-kernel: by mx20.gnu.org: Linux 2.6? (barebone, rare!)
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6,
	seldom 2.4 (older, 4)
Cc: 
Subject: [Axiom-developer] 20080925.01.tpd.patch (bookvol10.2 new categories
	added)
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, 26 Sep 2008 06:37:04 -0000

All of the categories from catdef and equation1 are now in 
the categories book. LOGIC from boolean was also moved.

========================================================================
Patch too large to post. See
<http://axiom-developer.org/axiom-website/patches.html#latest>



From MAILER-DAEMON Sat Sep 27 12:28:18 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KjceX-0004lt-Tg
	for mharc-axiom-developer@gnu.org; Sat, 27 Sep 2008 12:28:17 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KjceV-0004lF-4E
	for axiom-developer@nongnu.org; Sat, 27 Sep 2008 12:28:15 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KjceT-0004kk-Gr
	for axiom-developer@nongnu.org; Sat, 27 Sep 2008 12:28:14 -0400
Received: from [199.232.76.173] (port=52871 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KjceT-0004kh-BC
	for axiom-developer@nongnu.org; Sat, 27 Sep 2008 12:28:13 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:38016
	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 1KjceS-00035l-Lq
	for axiom-developer@nongnu.org; Sat, 27 Sep 2008 12:28:13 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8RGS7r3019173;
	Sat, 27 Sep 2008 11:28:07 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8RGS7Lk019170;
	Sat, 27 Sep 2008 11:28:07 -0500
Date: Sat, 27 Sep 2008 11:28:07 -0500
Message-Id: <200809271628.m8RGS7Lk019170@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 
	20080926.01.tpd.patch (bookvol10.2 new categories, attributes added)
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, 27 Sep 2008 16:28:15 -0000

A dozen new categories have been added.
The attributes are now explicit, explained, and cross-referenced.
==================================================================
Patch too large. See
<http://axiom-developer.org/axiom-website/patches.html>



From MAILER-DAEMON Sun Sep 28 18:39:16 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1Kk4v6-0005s1-Eh
	for mharc-axiom-developer@gnu.org; Sun, 28 Sep 2008 18:39:16 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1Kk4v4-0005rt-UE
	for axiom-developer@nongnu.org; Sun, 28 Sep 2008 18:39:15 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1Kk4v2-0005qR-QG
	for axiom-developer@nongnu.org; Sun, 28 Sep 2008 18:39:14 -0400
Received: from [199.232.76.173] (port=60672 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1Kk4v2-0005qJ-MZ
	for axiom-developer@nongnu.org; Sun, 28 Sep 2008 18:39:12 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:51384
	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 1Kk4v2-0006LC-DV
	for axiom-developer@nongnu.org; Sun, 28 Sep 2008 18:39:12 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8SMd8r3017548;
	Sun, 28 Sep 2008 17:39:08 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8SMd8pG017545;
	Sun, 28 Sep 2008 17:39:08 -0500
Date: Sun, 28 Sep 2008 17:39:08 -0500
Message-Id: <200809282239.m8SMd8pG017545@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 
	20080927.01.tpd.patch (bookvol10.2 new categories, absorb naalgc)
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, 28 Sep 2008 22:39:15 -0000

The categories from naalgc.spad are now part of bookvol10.2
See <http://axiom-developer.org/axiom-website/patches.html#latest>




From MAILER-DAEMON Tue Sep 30 06:51:44 2008
Received: from mailman by lists.gnu.org with archive (Exim 4.43)
	id 1KkcpT-0004Z5-6E
	for mharc-axiom-developer@gnu.org; Tue, 30 Sep 2008 06:51:43 -0400
Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43)
	id 1KkcpL-0004WH-08
	for axiom-developer@nongnu.org; Tue, 30 Sep 2008 06:51:35 -0400
Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43)
	id 1KkcpG-0004V6-Pf
	for axiom-developer@nongnu.org; Tue, 30 Sep 2008 06:51:32 -0400
Received: from [199.232.76.173] (port=34175 helo=monty-python.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.43) id 1KkcpE-0004UF-Nn
	for axiom-developer@nongnu.org; Tue, 30 Sep 2008 06:51:29 -0400
Received: from vs338.rosehosting.com ([209.135.140.38]:33104
	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 1KkcpF-0000Zp-2s
	for axiom-developer@nongnu.org; Tue, 30 Sep 2008 06:51:29 -0400
Received: from axiom-developer.org (lincoln.rosehosting.com [127.0.0.1])
	by axiom-developer.org (8.12.8/8.12.8) with ESMTP id m8UApNr3006226;
	Tue, 30 Sep 2008 05:51:23 -0500
From: daly@axiom-developer.org
Received: (from daly@localhost)
	by axiom-developer.org (8.12.8/8.12.8/Submit) id m8UApNKm006223;
	Tue, 30 Sep 2008 05:51:23 -0500
Date: Tue, 30 Sep 2008 05:51:23 -0500
Message-Id: <200809301051.m8UApNKm006223@axiom-developer.org>
To: axiom-developer@nongnu.org
X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6? (barebone, rare!)
Cc: 
Subject: [Axiom-developer] 
	20090928.01.tpd.patch (bookvol10.2 add categories, absorb trigcat)
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, 30 Sep 2008 10:51:38 -0000

trigcat.spad is gone, now part of bookvol10.2
<http://axiom-developer.org/axiom-website/patches.html#latest>

Tim



