axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Axiom git


From: Tim Daly
Subject: Re: Axiom git
Date: Tue, 14 Feb 2023 20:09:40 -0500

ACL2

>Just to throw into the mix given the thoughts you express below, acl2
>builds within the same gcl image as axiom, and might be useful for your
>theorem proving needs.

ACL2 is useful for hardware verification. It might be useful for validating
the FPGA configuration. However, the Verilog language eventually
generates a binary image to be loaded. I'm unaware of any effort to
connect ACL2 to the Verilog toolchain. I'll look again just to be sure.

ISOLATION

>I do understand that you have determined it better to work in a more
>isolated fashion -- makes sense.  Do you intend your work to be made
>available to end users in precompiled and/or source form from time to
>time?  This question AFAICT is entirely apart from whether or not you
>want to avoid team management in a typical 'foss' setting.  I am sorry
>that your experience with 'open source' was found to be counter
>productive.

I'm working "in a more isolated fashion" but not particularly by a
deliberate choice. Everyone simply left the project.

I think this is due to a matter of philosophy. Axiom is an amazing
effort, carefully built using the leading theories of the time, such as
work by Barbara Liskov on CLU[0]. I think  it is important to preserve
it, hence my efforts. Apparently no-one agrees. Waldek does amazing
work. Who will follow after him?

PRESERVATION

The "literate programming goal" is a preservation task.

Axiom is complex. To develop within it requires a great deal of effort.
To maintain it requires even more effort. The long term problem is
the lack of explanation (not documentation). Who is going to maintain
the compiler / interpreter? What are daase files? What theories
underlie the algorithms? What are the literature references and
PhD thesis references?

The "computer algebra test suite goal" (CATS [1])  is a preservation task.

It is an effort to test Axiom versus various existing bodies. You can see the
Kamke suite, Albert Rich's suite, etc. The goal was to develop a comprehensive
suite testing all of Axiom, such as the untested Clifford Algebra work.

The "merge with existing systems goal" is a preservation task.

Merging had two streams. The first was libraries. I have re-created BLAS
and LAPACK in Lisp so they can be called directly. I also pushed to
connect Axiom to William Stein's SageMath work, done by Bill Page just
before the fork festival.

Preservation goals are fine. I did a lot of literate work and test work.

RESEARCH

My real interest is further research.

The "prove Axiom correct goal" is what I'm still pursuing. This is a
much deeper, non-preserving "research" goal. It is time for the two
streams to merge. The 6 years I spent as a "visiting scholar" at CMU
was used to understand the proof work. A side effect, since I was in
the computer science department, was a much deeper understanding
of dependent type theory and category theory.

Axiom, unlike other systems, is built on a group theory scaffold.
This give it a near-perfect architecture to include theorems and proofs.

The inheritance mechanism needs to be extended to inherit these
theorems, collecting them up at the point a function is defined so
they can all be used to prove the function correct. Here "correct"
is with respect to the function specification, which leads to another
path of a specification language.

There are difficult practical problems and difficult research problems.

Practically, for example, the proof theory crowd has no focus on
organizing theorems so they match Axiom's category structure.
Finding, reshaping, and possibly re-proving theorems to fit Axiom
is one of my more tedious paths to tread. I should note that the
proof crowd strongly rejects the notion of proving programs correct.
The resistance to merging is not only on the computer algebra side.

Research problems are everywhere, even seemingly mundane
things like re-proving the Groebner basis algorithm in an Axiom
hierarchy. Much deeper problems include the limits of fully
dependent types (which, in theory, include all of lisp and Axiom
to instantiate a type). Or ensuring that the system fully supports
functors from category theory. Or the issue of termination[2], etc.

I see Axiom as a research platform. In an ideal world it has more
than enough problems to spin off PhD students for years to come.


SIMPLIFY, SIMPLIFY

>If so, as you work, hopefully in a public area like github, and
>determine at some point that a snapshot should be taken, I can help make
>sure the result doesn't suffer from bit rot by keeping the build
>machinery current within Debian and equivalents.

Let's look at history. I killed the Meta compiler and Dick Jenks lost
his mind over it (it was his research product). I removed Aldor support
(which almost nobody used) and got chastised. I removed Boot (since
only half a dozen people speak it) and started a major revolt. Now I'm
removing SPAD as it can't support the dependent type theory or the
proof hierarchy. Notably, all of the things I removed had no effect on
Axiom's ability to compute.

The new top level is lisp. The system is being restructured using CLOS
and the Meta-Object protocol. The algebra is now in a CLOS hierarchy.
Notably, the resulting system will have no effect on Axiom's ability to compute.

PHILOSOPHY

The lisp top-level decision has a philosophical base.

"The language one speaks influences the way one thinks about reality,"
known as the Sapir-Whorf hypothesis [3].

My programming hypothesis I call the "impedence theory". The tools you
use may be closer to the problem (e.g. SPAD) or closer to the solution
(i.e. the hardware, the proof, the algebra, etc.). Most languages are
"high level" and far from the solution so people create their own
language like SPAD to express their ideas. I like to think of this as
"connecting to a fire hydrant with a soda straw". From the full range of
ideas (the hydrant) the language limits what can be thought (the straw).
This is what I call an "intellectual impedence mismatch".

Unfortunately the SPAD straw won't support the new research.

Lisp is the only language I know that does not have the impedence
issue. One can create high level software in perfect cooperation with
machine-level manipulation, e.g. (integrate (car x)).

Nobody, absolutely nobody, will want to use this new Axiom.

TARBALL

>Alternatively, if you would prefer total privacy and/or work on
>something totally different, I'll ensure that the last 20170501 sources
>are preserved for posterity, again free from bit rot.  It would be
>helpful if this final released tarball was again available via your
>website.

Point me at the tarball and I'll host it.

>As for github, I'm afraid I do not know (yet) how to add users to
>repositories.  I can find out, but we can save ourselves some effort in
>the case that this is not your intended working tree.  For example, is
>github in a buildable state at the moment?

Microsoft has made github much more painful to use. I'll see if I
can figure out how to grant you write access.

The github sources mirror my local Axiom tree.
The SANE branch is separate and local.

PAST and FUTURE

>You obviously have accumulated a lot of knowledge and familiarity with
>this great system, which seems to me to be of great value to present and
>future users.  As I get older, my thoughts increasingly gravitate toward
>strategies for leaving the fruits of my labors in a form that
>researchers yet to come will find useful.  I'm happy to assist with the
>AXIOM legacy in whatever form you choose to leave it.

I've spent approximately 20 years trying to "leave the fruits of (other
people's) labor" in useful form. The community has other goals.
No-one seems to be planning beyond their own local use.
It is easy to see where that will end.

I haven't "left" Axiom. I'm still developing it. It doesn't look the same
but it computes the same. The new version will have a firmer foundation
based on the state of the art in proofs, type theory, and category theory.

I could use a few grad students if you find any to spare :-)

Tim

[0] CLU: https://en.wikipedia.org/wiki/CLU_(programming_language)
[1] CATS: http://axiom-developer.org/axiom-website/CATS/index.html
[2] Christina David, Daniel Kroening, and Matt Lewis
"Unrestricted Termination and Non-Termination Arguments For
Bit-Vector Programs" https://arxiv.org/pdf/1410.5089.pdf
[3] Sapir-Whorf: https://www.sciencedirect.com/topics/psychology/sapir-whorf-hypothesis

On Tue, Feb 14, 2023 at 2:47 PM Camm Maguire <camm@maguirefamily.org> wrote:
Greetings!  What a comprehensive tour de force!

Just to throw into the mix given the thoughts you express below, acl2
builds within the same gcl image as axiom, and might be useful for your
theorem proving needs.

I do understand that you have determined it better to work in a more
isolated fashion -- makes sense.  Do you intend your work to be made
available to end users in precompiled and/or source form from time to
time?  This question AFAICT is entirely apart from whether or not you
want to avoid team management in a typical 'foss' setting.  I am sorry
that your experience with 'open source' was found to be counter
productive.

If so, as you work, hopefully in a public area like github, and
determine at some point that a snapshot should be taken, I can help make
sure the result doesn't suffer from bit rot by keeping the build
machinery current within Debian and equivalents.

Alternatively, if you would prefer total privacy and/or work on
something totally different, I'll ensure that the last 20170501 sources
are preserved for posterity, again free from bit rot.  It would be
helpful if this final released tarball was again available via your
website.

As for github, I'm afraid I do not know (yet) how to add users to
repositories.  I can find out, but we can save ourselves some effort in
the case that this is not your intended working tree.  For example, is
github in a buildable state at the moment?

You obviously have accumulated a lot of knowledge and familiarity with
this great system, which seems to me to be of great value to present and
future users.  As I get older, my thoughts increasingly gravitate toward
strategies for leaving the fruits of my labors in a form that
researchers yet to come will find useful.  I'm happy to assist with the
AXIOM legacy in whatever form you choose to leave it.

Take care,

Tim Daly <axiomcas@gmail.com> writes:

> Camm,
>
> The "next generation" of Axiom has a few goals that is significantly
> reshaping the whole project. I call the effort SANE (a synonym of
> rational, judicious, sound, rational). I gave a talk about it at Notre
> Dame a few years ago (pre-covid).
>
> There are two streams of mathematical development that seem to be
> related but have only James Davenport in common, at least from my
> survey of the last 25 years of publications. One stream is computer
> algebra, the other is proof theory (e.g. COQ, LEAN, etc.).
>
> The proof people can't trust the computer algebra stream since, while
> some of the algorithms such as Buchberger's Groebner basis have
> been proven, most of the computer algebra is ad-hoc.
>
> The computer algebra stream seems unaware of the proof work.
> While truly impressive algorithms have been developed they tend to
> have the "it works for me" level of test and validation.
>
> MERGING proof and computer algebra
>
> My current effort merges LEAN [0] and Axiom. There is the usual
> Axiom hierarchy (category/domain/package) and a parallel hierarchy
> containing definitions, theorems, and proofs. Each function in Axiom
> inherits from both. This allows Axiom's group theory scaffold to be
> placed on proven grounds, usable in the proof of the functions.
> (Axiom builds a separate subtree containing all of Axiom's functions
> at the moment).
>
> Additionally, the REP representation of the domain is now broken out
> into a separate chain since the representation has its own associated
> theorems, again usable in the proof of the functions.
>
> Axiom is rather strongly typed but post-IBM development of type
> theory has moved to dependent types [1]. This allows for much more
> precise type specifications.
>
> DEPENDENT TYPE extensions of Axiom's types
>
> One interesting thing about my type theory efforts in Axiom is that
> a type computation can involve all of lisp and other Axiom algorithms.
> A dependent type might even be recursive, which raises issues of
> finding the fixed point to end the recursion. It is a challenge to
> manage the complexity (but endless fun).
>
> That said, since the types express the associated theorems, they
> become available for proving functions in the domain. More precise
> type information gives better, shorter, and more focused proof trees.
>
> LISP
>
> I've been doing the work using CLOS. I've moved the Axiom
> hierarchy into a CLOS class tree format. The top level of Axiom
> is now using lisp syntax rather than SPAD. I might put a SPAD
> language cover over the whole of it. Currently SPAD doesn't
> have the necessary syntax to handle dependent types or logic.
>
> It is hard enough getting things working without worrying about
> reworking the compiler to create "syntactic sugar". As Axiom has
> shown, a separate compiler / interpreter has subtle issues.
>
> Using lisp as the "top level" has two rather useful effects. First,
> the interpreter and compiler are the same so the current Axiom
> issue goes away. Second, all of the lisp tools are available and
> make sense rather than some random error message from the
> Axiom algorithm.
>
> There is also the issue of "trust". I've been working to push the
> "trusted code", aka the compiler output "all the way down to the
> metal". In the instance, that means pushing the generated code
> down to run on an FPGA hardware base that offers support for
> the generated code. RISC-V[2] soft core cpu work has made this
> much easier. RISC-V allows for "extended instructions" which can
> be dynamically defined to support specific workloads (in this case,
> Axiom).
>
> The FPGA tool chain for small chips works well. Note that Intel
> (which bought Altera) and AMD (which bought Xilinx) have CPUs
> which include a native FPGA. Unfortunatly they are only available
> to data centers. I expect this to change in the future.
>
> Ultimately the system is designed to be "trusted" from the metal
> to the top-level algorithms. I've been experimenting with sending
> the proof along with the runtime code. Checking a proof is much
> faster and easier than the initial proof. This allows the proof to
> run on a separate processor checking the result using the
> specific values known at runtime. The idea of "proof carrying
> code" is not new but interesting in this new context.
>
> STEELE's book
>
> As an aside, I published a hypertex version of Steele's book a
> few years ago. It used to be on my server until someone attacked
> and destroyed my server. A copy, with the associated latex sources
> is online here [3].
>
> Anyway, I've been thinking of building a new version of the book that
> contains things like "pre-conditions", "post-conditions", and "invariants"
> for each of the lisp functions. People using lisp could have these
> available for program validation.
>
> OPEN SOURCE
>
> Having released Axiom as open source I learned a few lessons.
>
> One is that not everyone agrees with and works toward the
> published project goals. Another is that a community is
> rather fragile and easily collapsed. A third is that I am not
> suited for "management" and should not try to lead a project.
>
> You'll notice that I've stopped updating the Axiom source tree.
> I thought FOSS development was a great idea when I started
> in 1997. The Axiom effort has convinced me otherwise.
> I've stopped working in "open source".
>
> GITHUB
>
> If you know the commands to give you write access I'd be
> happy to enable you. Please let me know how.
>
> Again, many thanks for your work.
>
> Tim
>
> [0] LEAN https://leanprover-community.github.io/
>
> [1] Dependent Types: https://en.wikipedia.org/wiki/Dependent_type
>
> [2] RISC-V https://riscv.org/
>
> [3] Hyperlinked Steele's book: https://www.softwarepreservation.org/projects/LISP/common_lisp_family
>
> On Mon, Feb 13, 2023 at 9:38 AM Camm Maguire <camm@maguirefamily.org> wrote:
>
>  Greetings!
>
>  Tim, is it your intention that github serves as the official repository
>  henceforward?  Are you intending to tag releases here, and/or push
>  tarballs to the website?  Debian axiom is using sources from 20170501,
>  which were available back then in tar form but seem to be gone now.  Are
>  you planning any further releases?
>
>  It seems your goals are very ambitious.  It may be worthwhile making
>  sure the tree is periodically and incrementally kept up to date and
>  releasable as you move forward, say once a year or so.  If you would
>  like to grant me access to the tree (github id cammgh), I can volunteer
>  to maintain the gcl interface if desired.
>
>  Take care,
>  --
>  Camm Maguire                                        camm@maguirefamily.org
>  ==========================================================================
>  "The earth is but one country, and mankind its citizens."  --  Baha'u'llah
>

--
Camm Maguire                                        camm@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah

Attachment: AxiomNobodyCares.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]