\start
Date: Thu, 2 Aug 2018 13:05:14 +0200
From: Fabio Stumbo <stf@unife.it>
To: Axiom-devel <axiom-developer@nongnu.org>
Subject: [Axiom-developer] Broken package for Ubuntu 18.04?

I upgrade my pc to Ubuntu 18.04 and installed Axiom from the standard 
repository via "apt install axiom".


\begin{verbatim}When I try to launch axiom I get an error for a missing file:


[~]$ axiom
Cannot find the executable /usr/lib/axiom-20170501/bin/AXIOMsys
axiom
  [-ht |-noht] whether to use HyperDoc
  [-gr |-nogr] whether to use Graphics
  [-clef |-noclef] whether to use Clef
  [-noiw |-iw] start in interpreter in a separate window
  [-ihere |-noihere] start an interpreter in this window
  [-nox] don't use X Windows
  [-go |-nogo] whether to start system
  [-ws wsname] use named workspace
  [-list] list workspaces only
  [-grprog fname] use named program for Graphics
  [-htprog fname] use named program for HyperDoc
  [-clefprog fname] use named program for Clef
  [-sessionprog fname] use named program for session
  [-clientprog fname] use named program for spadclient
  [-h] show usage
Goodbye.


and actually the named executable does not exist.


Is it my fault in some way?


Fabio

\start
Date: Tue, 7 Aug 2018 08:18:18 -0400
From: Tim Daly <axiomcas@gmail.com>
To: fabio stumbo <stf@unife.it>, axiom-dev <axiom-developer@nongnu.org>
Subject: Re: [Axiom-developer] Ubuntu 18.04

I will build a machine and test it, then get back to you. -- Tim

\start
Date: Sat, 11 Aug 2018 23:08:52 -0400
From: Tim Daly <axiomcas@gmail.com>
To: Camm Maguire <camm@maguirefamily.org>, fabio stumbo <stf@unife.it>, 
	axiom-dev <axiom-developer@nongnu.org>, Tim Daly <daly@axiom-developer.org>
Subject: [Axiom-developer] Ubuntu 18.04 and Axiom

Camm,

apt-get install axiom on Ubuntu 18.04.01 installs everything but the
axiomsys executable. I thought this was automatically packaged.

How can we fix this?

Tim

\start
Date: Sun, 12 Aug 2018 01:23:30 -0400
From: Tim Daly <axiomcas@gmail.com>
To: Camm Maguire <camm@maguirefamily.org>, fabio stumbo <stf@unife.it>, 
	axiom-dev <axiom-developer@nongnu.org>,
	Nathaniel Daly <nathaniel.daly@gmail.com>
Subject: [Axiom-developer] Axiom and Ubuntu18.04

Ubuntu 18.04 seems broken in various ways.
In particular, it runs out of memory, something I haven't seen in ages.
I will continue to debug it.

However, you can download a running axiom from this link.

http://axiom-developer.org/axiom-website/downloads/axiom-ubuntu-may2017-bin.tgz
tar -zxf axiom-ubuntu-may2017.bin.tgz
cd axiom
export AXIOM=`pwd`/mnt/ubuntu
export PATH=$AXIOM/bin:$PATH
axiom

Tim

\start
Date: Sun, 12 Aug 2018 10:17:27 -0400
From: Tim Daly <axiomcas@gmail.com>
To: Fabio Stumbo <stf@unife.it>, axiom-dev <axiom-developer@nongnu.org>, 
	Camm Maguire <camm@maguirefamily.org>, Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] Axiom and Ubuntu18.04

Now that I got the termite rant out of the way....

apt-get install gcc-4.8
update-alternatives
alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 1

This installs a working gcc compiler (before the termites arrived).
Beware that this changes gcc to version 4.8 which is NOT what you
probably want.

I am going to fix the 18.04 version but it will take a while.
The gcc libraries appear to have been "reorganized" by some termite.
I have to reverse-engineer that "fix" and figure out how to write new,
"correct" code.

You can, as an alternative, do:

docker pull daly/axiom
docker run -i -t daly/axiom axiom

<rant> Ubuntu used to be a developer platform. However, 18.04 does
not even include 'make' or 'xterm' by default. Some termite has taken
over the teams at Ubuntu, likely trying to turn it into a user-affectionate
platform. Stewart Feldman introduced make in 1976. Everybody and his
grandmother uses it. Now it is no longer standard in a unix-like system?

Termites... the worst bug in software </rant>

On Sun, Aug 12, 2018 at 8:44 AM, Fabio Stumbo <stf@unife.it> wrote:

>
> Tim, many thanks for your attention.
>
> Sadly, I have issues also with these binaries using functions which worked
> (and still work) on older versions of axiom.
> As an example, consider this simple function which converts an integer in
> choosen given basis:
>
> toBase: (NNI,PI)-> List NNI
> toBase(n,b) ==
>   q := n
>   l := [] :: List NNI
>   while q>0 repeat
>    r := divide(q,b).remainder
>    l := append([r],l)
>    q := divide(q,b).quotient
>   l
>
>
> If I save it in a file (say, r.input) and run it in axiom, I get the
> following
>
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------
>
> [dom 12 ago 14:40:04 ~]$ axiom
>
>                        AXIOM Computer Algebra System
>                           Version: Axiom (May 2017)
>                Timestamp: Wednesday May 17, 2017 at 19:17:38
> ------------------------------------------------------------
> -----------------
>    Issue )copyright to view copyright notices.
>    Issue )summary for a summary of useful system commands.
>    Issue )quit to leave AXIOM and return to shell.
>    Visit http://axiom-developer.org for more information
> ------------------------------------------------------------
> -----------------
>
>    Re-reading interp.daase
>    Re-reading operation.daase
>    Re-reading category.daase
>    Re-reading browse.daase
> (1) ->
> (1) -> )read r
> toBase: (NNI,PI)-> List NNI
>
> Type: Void
> Time: 0 sec
> toBase(n,b) ==
>   q := n
>   l := [] :: List NNI
>   while q>0 repeat
>    r := divide(q,b).remainder
>    l := append([r],l)
>    q := divide(q,b).quotient
>   l
>
> Type: Void
> Time: 0 sec
> (3) -> toBase(423142423432,20)
>    Compiling function toBase with type (NonNegativeInteger,PositiveInteger)
> -> List(NonNegativeInteger)
> Unrelocated non-local symbol: _GLOBAL_OFFSET_TABLE_
> (3) ->
> Correctable error: Console interrupt.
> Fast links are on: do (si::use-fast-links nil) for debugging
> Signalled by SYSTEM::GCL-TOP-LEVEL.
> If continued: Type :r to resume execution, or :q to quit to top level.
> Console interrupt.
>
> Broken at SYSTEM::GCL-TOP-LEVEL.  Type :H for Help.
>     1 (continue) Type :r to resume execution, or :q to quit to top level.
>     2  Return to top level.
> BOOT>>
>
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------
>
>
> Yet, it works  smoothly in 16.04 axiom binaries.
>
>


\start
Date: Sun, 12 Aug 2018 14:44:35 +0200
From: Fabio Stumbo <stf@unife.it>
To: Tim Daly <axiomcas@gmail.com>, axiom-dev <axiom-developer@nongnu.org>
Subject: Re: [Axiom-developer] Axiom and Ubuntu18.04

Tim, many thanks for your attention.

Sadly, I have issues also with these binaries using functions which 
worked (and still work) on older versions of axiom.
As an example, consider this simple function which converts an integer 
in choosen given basis:

toBase: (NNI,PI)-> List NNI
toBase(n,b) ==
   q := n
   l := [] :: List NNI
   while q>0 repeat
    r := divide(q,b).remainder
    l := append([r],l)
    q := divide(q,b).quotient
   l


If I save it in a file (say, r.input) and run it in axiom, I get the 
following

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[dom 12 ago 14:40:04 ~]$ axiom

                        AXIOM Computer Algebra System
                           Version: Axiom (May 2017)
                Timestamp: Wednesday May 17, 2017 at 19:17:38
-----------------------------------------------------------------------------
    Issue )copyright to view copyright notices.
    Issue )summary for a summary of useful system commands.
    Issue )quit to leave AXIOM and return to shell.
    Visit http://axiom-developer.org for more information
-----------------------------------------------------------------------------

    Re-reading interp.daase
    Re-reading operation.daase
    Re-reading category.daase
    Re-reading browse.daase
(1) ->
(1) -> )read r
toBase: (NNI,PI)-> List NNI

Type: Void
Time: 0 sec
toBase(n,b) ==
   q := n
   l := [] :: List NNI
   while q>0 repeat
    r := divide(q,b).remainder
    l := append([r],l)
    q := divide(q,b).quotient
   l

Type: Void
Time: 0 sec
(3) -> toBase(423142423432,20)
    Compiling function toBase with type 
(NonNegativeInteger,PositiveInteger) -> List(NonNegativeInteger)
Unrelocated non-local symbol: _GLOBAL_OFFSET_TABLE_
(3) ->
Correctable error: Console interrupt.
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by SYSTEM::GCL-TOP-LEVEL.
If continued: Type :r to resume execution, or :q to quit to top level.
Console interrupt.

Broken at SYSTEM::GCL-TOP-LEVEL.  Type :H for Help.
     1 (continue) Type :r to resume execution, or :q to quit to top level.
     2  Return to top level.
BOOT>>

Yet, it works  smoothly in 16.04 axiom binaries.

\start
Date: Sun, 12 Aug 2018 09:54:46 -0400
From: Tim Daly <axiomcas@gmail.com>
To: Fabio Stumbo <stf@unife.it>, Camm Maguire <camm@maguirefamily.org>, 
	Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] Axiom and Ubuntu18.04

CODE ROT vs TERMITES

All maintenance involves dealing with rot. In the real world, environmental
factors gradually wear away existing structures and you have to tear out a
wall and rebuild it. Sun, wind, and rain weakened the old wall so it no
longer
could function as intended.

Software undergoes the same change of environment. For example, Axiom's
X11 interface still works but is dying of code rot. It needs to be replaced
by
a brower-based front end.  This is general code rot.

On the other hand, there are active environmental threats, such as termites.
They attack perfectly serviceable structures and cause destruction rather
than rot.

In software, there is a class of developer I call a TERMITE. These people
think
that it is ok to break code that has run for many years. Axiom has compiled
and run fine since the 1980s. ADB, used to develop Android apps, has worked
fine for the last 10 years. Now code that used to compile and run no longer
does.

Why? Because they miss the golden rule... DO NOT REGRESS.

TERMITES change code because they feel it is "right" and to hell with
people
who have running code.

This is why Axiom has a regression test suite. DO NOT REGRESS.

Linus Torvolds said it best: (https://lkml.org/lkml/2018/8/3/621):

>From Linus Torvalds <>
Date Fri, 3 Aug 2018 09:37:35 -0700
Subject Re: LVM snapshot broke between 4.14 and 4.1

[ Dammit. I haven't had to shout and curse at people for a while, but
this is ABSOLUTELY THE MOST IMPORTANT THING IN THE UNIVERSE WHEN IT
COMES TO SOFTWARE DEVELOPMENT ]

On Fri, Aug 3, 2018 at 6:31 AM Zdenek Kabelac <zkabelac@redhat.com> wrote:
>
> IMHO (as the author of fixing lvm2 patch) user should not be upgrading kernels
> and keep running older lvm2 user-land tool (and there are very good reasons
> for this).

Yeah, HELL NO!

Guess what? You're wrong. YOU ARE MISSING THE #1 KERNEL RULE.

We do not regress, and we do not regress exactly because your are 100% wrong.

And the reason you state for your opinion is in fact exactly *WHY* you
are wrong.

Your "good reasons" are pure and utter garbage.

The whole point of "we do not regress" is so that people can upgrade
the kernel and never have to worry about it.

> Kernel had a bug which has been fixed

That is *ENTIRELY* immaterial.

Guys, whether something was buggy or not DOES NOT MATTER.

Why?

Bugs happen. That's a fact of life. Arguing that "we had to break
something because we were fixing a bug" is completely insane. We fix
tens of bugs every single day, thinking that "fixing a bug" means that
we can break something is simply NOT TRUE.

So bugs simply aren't even relevant to the discussion. They happen,
they get found, they get fixed, and it has nothing to do with "we
break users".

Because the only thing that matters IS THE USER.

How hard is that to understand?

Anybody who uses "but it was buggy" as an argument is entirely missing
the point. As far as the USER was concerned, it wasn't buggy - it
worked for him/her.

Maybe it worked *because* the user had taken the bug into account,
maybe it worked because the user didn't notice - again, it doesn't
matter. It worked for the user.

Breaking a user workflow for a "bug" is absolutely the WORST reason
for breakage you can imagine.

It's basically saying "I took something that worked, and I broke it,
but now it's better". Do you not see how f*cking insane that statement
is?

And without users, your program is not a program, it's a pointless
piece of code that you might as well throw away.

Seriously. This is *why* the #1 rule for kernel development is "we
don't break users". Because "I fixed a bug" is absolutely NOT AN
ARGUMENT if that bug fix broke a user setup. You actually introduced a
MUCH BIGGER bug by "fixing" something that the user clearly didn't
even care about.

And dammit, we upgrade the kernel ALL THE TIME without upgrading any
other programs at all. It is absolutely required, because flag-days
and dependencies are horribly bad.

And it is also required simply because I as a kernel developer do not
upgrade random other tools that I don't even care about as I develop
the kernel, and I want any of my users to feel safe doing the same
time.

So no. Your rule is COMPLETELY wrong. If you cannot upgrade a kernel
without upgrading some other random binary, then we have a problem.

                     Linus




On Sun, Aug 12, 2018 at 8:44 AM, Fabio Stumbo <stf@unife.it> wrote:

>
> Tim, many thanks for your attention.
>
> Sadly, I have issues also with these binaries using functions which worked
> (and still work) on older versions of axiom.
> As an example, consider this simple function which converts an integer in
> choosen given basis:
>
> toBase: (NNI,PI)-> List NNI
> toBase(n,b) ==
>   q := n
>   l := [] :: List NNI
>   while q>0 repeat
>    r := divide(q,b).remainder
>    l := append([r],l)
>    q := divide(q,b).quotient
>   l
>
>
> If I save it in a file (say, r.input) and run it in axiom, I get the
> following
>
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------
>
> [dom 12 ago 14:40:04 ~]$ axiom
>
>                        AXIOM Computer Algebra System
>                           Version: Axiom (May 2017)
>                Timestamp: Wednesday May 17, 2017 at 19:17:38
> ------------------------------------------------------------
> -----------------
>    Issue )copyright to view copyright notices.
>    Issue )summary for a summary of useful system commands.
>    Issue )quit to leave AXIOM and return to shell.
>    Visit http://axiom-developer.org for more information
> ------------------------------------------------------------
> -----------------
>
>    Re-reading interp.daase
>    Re-reading operation.daase
>    Re-reading category.daase
>    Re-reading browse.daase
> (1) ->
> (1) -> )read r
> toBase: (NNI,PI)-> List NNI
>
> Type: Void
> Time: 0 sec
> toBase(n,b) ==
>   q := n
>   l := [] :: List NNI
>   while q>0 repeat
>    r := divide(q,b).remainder
>    l := append([r],l)
>    q := divide(q,b).quotient
>   l
>
> Type: Void
> Time: 0 sec
> (3) -> toBase(423142423432,20)
>    Compiling function toBase with type (NonNegativeInteger,PositiveInteger)
> -> List(NonNegativeInteger)
> Unrelocated non-local symbol: _GLOBAL_OFFSET_TABLE_
> (3) ->
> Correctable error: Console interrupt.
> Fast links are on: do (si::use-fast-links nil) for debugging
> Signalled by SYSTEM::GCL-TOP-LEVEL.
> If continued: Type :r to resume execution, or :q to quit to top level.
> Console interrupt.
>
> Broken at SYSTEM::GCL-TOP-LEVEL.  Type :H for Help.
>     1 (continue) Type :r to resume execution, or :q to quit to top level.
>     2  Return to top level.
> BOOT>>
>
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------------------
>
>
> Yet, it works  smoothly in 16.04 axiom binaries.
>
>

\start
Date: Mon, 13 Aug 2018 00:09:14 +0200
From: Fabio Stumbo <stf@unife.it>
To: Tim Daly <axiomcas@gmail.com>, axiom-dev <axiom-developer@nongnu.org>,
	Tim Daly <daly@axiom-developer.org>
Subject: Re: [Axiom-developer] Axiom and Ubuntu18.04

I see that the problem is more complex than I could imagine.


For the time being, I'll be happy with my workaround: I have built a 
virtual machine with lubuntu 16.04 and nothing else than axiom.

It works and (hopefully!) always will... ;)


Thanks

Fabio

Il 12/08/2018 16:17, Tim Daly ha scritto:
> Now that I got the termite rant out of the way....
>
> apt-get install gcc-4.8
> update-alternatives
> alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 1
>
> This installs a working gcc compiler (before the termites arrived).
> Beware that this changes gcc to version 4.8 which is NOT what you
> probably want.
>
> I am going to fix the 18.04 version but it will take a while.
> The gcc libraries appear to have been "reorganized" by some termite.
> I have to reverse-engineer that "fix" and figure out how to write new,
> "correct" code.
>
> You can, as an alternative, do:
>
> docker pull daly/axiom
> docker run -i -t daly/axiom axiom
>
> <rant> Ubuntu used to be a developer platform. However, 18.04 does
> not even include 'make' or 'xterm' by default. Some termite has taken
> over the teams at Ubuntu, likely trying to turn it into a 
> user-affectionate
> platform. Stewart Feldman introduced make in 1976. Everybody and his
> grandmother uses it. Now it is no longer standard in a unix-like system?
>
> Termites... the worst bug in software </rant>
>
> On Sun, Aug 12, 2018 at 8:44 AM, Fabio Stumbo <stf@unife.it 
> <mailto:stf@unife.it>> wrote:
>
>
>     Tim, many thanks for your attention.
>
>     Sadly, I have issues also with these binaries using functions
>     which worked (and still work) on older versions of axiom.
>     As an example, consider this simple function which converts an
>     integer in choosen given basis:
>
>     toBase: (NNI,PI)-> List NNI
>     toBase(n,b) ==
>       q := n
>       l := [] :: List NNI
>       while q>0 repeat
>        r := divide(q,b).remainder
>        l := append([r],l)
>        q := divide(q,b).quotient
>       l
>
>
>     If I save it in a file (say, r.input) and run it in axiom, I get
>     the following
>
>     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>     [dom 12 ago 14:40:04 ~]$ axiom
>
>                            AXIOM Computer Algebra System
>     Version: Axiom (May 2017)
>                    Timestamp: Wednesday May 17, 2017 at 19:17:38
>     -----------------------------------------------------------------------------
>        Issue )copyright to view copyright notices.
>        Issue )summary for a summary of useful system commands.
>        Issue )quit to leave AXIOM and return to shell.
>        Visit http://axiom-developer.org for more information
>     -----------------------------------------------------------------------------
>
>        Re-reading interp.daase
>        Re-reading operation.daase
>        Re-reading category.daase
>        Re-reading browse.daase
>     (1) ->
>     (1) -> )read r
>     toBase: (NNI,PI)-> List NNI
>
>     Type: Void
>     Time: 0 sec
>     toBase(n,b) ==
>       q := n
>       l := [] :: List NNI
>       while q>0 repeat
>        r := divide(q,b).remainder
>        l := append([r],l)
>        q := divide(q,b).quotient
>       l
>
>     Type: Void
>     Time: 0 sec
>     (3) -> toBase(423142423432,20)
>        Compiling function toBase with type
>     (NonNegativeInteger,PositiveInteger) -> List(NonNegativeInteger)
>     Unrelocated non-local symbol: _GLOBAL_OFFSET_TABLE_
>     (3) ->
>     Correctable error: Console interrupt.
>     Fast links are on: do (si::use-fast-links nil) for debugging
>     Signalled by SYSTEM::GCL-TOP-LEVEL.
>     If continued: Type :r to resume execution, or :q to quit to top level.
>     Console interrupt.
>
>     Broken at SYSTEM::GCL-TOP-LEVEL.  Type :H for Help.
>         1 (continue) Type :r to resume execution, or :q to quit to top
>     level.
>         2  Return to top level.
>     BOOT>>
>
>     ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>
>     Yet, it works  smoothly in 16.04 axiom binaries.

\start
Date: Mon, 20 Aug 2018 04:49:02 -0400
From: Tim Daly <axiomcas@gmail.com>
To: axiom-dev <axiom-developer@nongnu.org>, Tim Daly <daly@axiom-developer.org>
Subject: [Axiom-developer] Proving Axiom Sane and Continuous Reasoning

One of the (many) reasons people feel that proving code is unacceptable
is that every change requires a proof check. This is certainly the case.
Of course, code that implements known mathematical functions would
have far fewer changes as the specifications would not change.

But, then, every change to a code base SHOULD require a code review.
Part of that review would be to check that the change is 'sane' (e.g.
passes a proof check against specifications).

Since code development is a continuous process, Peter O'Hearn has
suggested that proof technology should also be continuous. His paper
"Continuous Reasoning: Scaling the Impact of Formal Methods"
(LICS 18, ACM, ISBN 978-1-4503-5583) talks about this idea and
gives examples from Facebook. They have a tool, called "Infer" that
is run on code patches and generates comments (likely proof obligations
but I don't know for sure) that would be discussed during code review.

The current design for proving Axiom sane includes a compiler stage
that does proof checking. Failing proofs would generate proof obligations
as "error messages".

Peter's paper is worth a read.

Tim

\start
Date: Wed, 22 Aug 2018 22:10:51 -0400
From: Tim Daly <axiomcas@gmail.com>
To: axiom-dev <axiom-developer@nongnu.org>, Tim Daly <daly@axiom-developer.org>
Subject: [Axiom-developer] Running an open source project

"You either die a hero or you live long enough to see yourself become the
villain"
https://www.youtube.com/watch?v=h0sfFX7WH1c

\documentclass{book}
%\newcommand{\VolumeName}{Volume 2: Axiom Users Guide}
%\input{bookheader.tex}
\pagenumbering{arabic}
\mainmatter
\setcounter{chapter}{0} % Chapter 1

\usepackage{makeidx}
\makeindex
\begin{document}



\end{verbatim}
\eject
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Bibliography}
\bibliographystyle{axiom}
\bibliography{axiom}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Index}
\printindex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
