[Top][All Lists]

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

[Axiom-developer] Lazy re-evaluation (was: More AxiomUI)

From: Page, Bill
Subject: [Axiom-developer] Lazy re-evaluation (was: More AxiomUI)
Date: Tue, 21 Jun 2005 18:42:27 -0400

On Tuesday, June 21, 2005 5:05 PM Bob McElrath

> Kai Oliver Kaminski address@hidden wrote:
>> What kind of dependency tracking would you need? Just within a
>> single page? For multiple pages? Send me use cases, tell me what
>> you need.
>I've been thinking about this a lot lately.

Although I have not played with this much but both Tim Daly and
William Sit assure me that the old Axiom Hypertex browser
already implements this kind of dependency tracking. That is
apparently the purpose of the \free{} and \bound{} attributes
embedded the Axiom commands contained in the hypertex pages.

I would prefer to call this something like "lazy re-evaluation".

I think it is notable that neither Maple nor Mathematica have
lazy re-evaluation in their standard worksheet interfaces.
But Maple (and perhaps Mathematica as well) does have a kind
of "spread sheet" worksheet sub-mode that does this in the
context of a tabular array of related commands. There is also
an external interface between Maple and Excel (the Microsoft
spreadsheet) that allows worksheet cells to contain Maple
commands and display their output.

This bring up a related issue: Maybe we should also be thinking
about a similar interface between say OpenOffice spreadsheets
and Axiom? For that matter, why not between OpenOffice documents
in general and Axiom? I think the missing link here might be
the ability to easily display LaTeX math in this environment -
something that is possible given jsMath in a browser. And it
is possible by design using TeXmacs. (BTW, TeXmacs has some
interesting new features and there are some improvements that
could be made to the existing TeXmacs - Axiom interface.)

Unfortunately the authoring of hypertex pages in Axiom is not
an easily accessible user feature, so in spite of having the
possibiliy of lazy re-evaluation, right now it only applies to
hypertex browser pages. It does not really provide this as a
"worksheet" option as such.

> Mathematica seems to keep an array of input and output.
> (In[] and Out[]).  If we treat these as simple variables,
> dependency tracking would be as simple as keeping a linked
> list among variables.  (e.g. a "has" or "indeterminants"
> function)  In addition to that each variable would need a
> "modified" flag.  Any time a "modified" flag is toggled,
> axiom could traverse the dependency tree and mark outputs
> with a "recompute" flag.

Of course Axiom also keeps a list of inputs and has a fairly
sophisticated )history command.

Can \free and \bound names really be determined automatically?
I think it is awkward to require the use to declare them
separately the way it is done now in the hypertex browser.
Perhaps this is possible with the help of some new code in
Axiom itself. Should this be a front-end browser function or
a back-end Axiom function. For example a function in Axiom
might be able to return the list of input history numbers of
those commands that need to be re-executed. These could be
mapped to corresponding output areas in the browser.

> [clip nice example]

> A user interface could choose to highlight out[1] as needs-
> recomputing, or just go ahead and do it. (spreadsheet-style)

I think it would be pretty neat if the browser could do such
highlighting and very useful if with one click you could ask
Axiom to minimally recompute just those comands that need
re-computing. This should be quite easy in principle using the
kind of AJAX techniques that Kai mentioned elsewhere. The hardest
part would be writing the Axiom code that dynamically computes
the dependency tree.

Bill Page.

reply via email to

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