This adds one more way that I know of to get Maple to ``prove'' that 0=1. Thank you.
This adds one more way that I know of to get Maple to ``prove'' that 0=1. Thank you.
The URL stays the same, the page just seems to reload with nothing changed. It happens every time. One thing that may matter: I let Firefox fill-in my username/pw combo for me.
I know Firefox 2.0 is out, but I make it a policy never to use .0 software, it is usually much too flaky. I wait until at least one point release, if not two, have been released before I upgrade any software that I actually use to get work done.
As
announced last friday,
Google code search now includes a lot more languages (including two of my top 3, Haskell and OCaml), but still no Maple (and get a perfect 3/3). For mathematical languages, one has to make do with Mathematica, but also also
R. Even though R is for stats, it has a number of remarkably Maple-like features. Oh, and Matlab too.
Maybe I should lobby for Axiom, MuPAD, Reduce and Macsyma to be put on there -- see if they'll show up before Maple does!
Classic does have that 'get your work done smoothly and efficiently' feel, where Standard, with all its bells and whistles, just seems to slow me down. That keeps me going back to Classic. But perhaps I am in the minority: I use Maple to get
work done, not to make pretty documents (that's what LaTeX's for).
That comment about computers 'not powerful enough' seems to be a poor excuse - all 3 of my computers (they are all 3-4 years old) do strain with Standard. But they all work flawlessly with the latest releases of Firefox, Thunderbird, Acrobat, Cygwin, LaTeX, iTunes, Excel and PowerPoint (ie the software that I use all the time for one reason or another). And Maple Classic (and tty too).
I guess I am a real believer in
ISO 9241 - 11's definition of
usability:
Usability is defined in terms of measures of effectiveness, efficiency
and satisfaction. Ease of operation is an operational metric for effectiveness.
For simple products this component of usability is the most important: the
percentage of users who can successfully complete the main intended tasks with
the product. For more complex products efficiency of operation may also be
important: that the main task goals can be achieved in an acceptable period of time.
Maple is not a simple product. 'nuff said.
Classic does have that 'get your work done smoothly and efficiently' feel, where Standard, with all its bells and whistles, just seems to slow me down. That keeps me going back to Classic. But perhaps I am in the minority: I use Maple to get
work done, not to make pretty documents (that's what LaTeX's for).
That comment about computers 'not powerful enough' seems to be a poor excuse - all 3 of my computers (they are all 3-4 years old) do strain with Standard. But they all work flawlessly with the latest releases of Firefox, Thunderbird, Acrobat, Cygwin, LaTeX, iTunes, Excel and PowerPoint (ie the software that I use all the time for one reason or another). And Maple Classic (and tty too).
I guess I am a real believer in
ISO 9241 - 11's definition of
usability:
Usability is defined in terms of measures of effectiveness, efficiency
and satisfaction. Ease of operation is an operational metric for effectiveness.
For simple products this component of usability is the most important: the
percentage of users who can successfully complete the main intended tasks with
the product. For more complex products efficiency of operation may also be
important: that the main task goals can be achieved in an acceptable period of time.
Maple is not a simple product. 'nuff said.
The problem is one of scoping. When k=5 and you do
zz[k] := x -> x^3 + C[k]
what you actually define is
zz[5] := x -> x^3 + C[k]
. Note how the inner k is still there? What you really want is
zz[k] := unappy(x^3+C[k]), x)
.
Why are you getting the errors in the above? That's because after the end of your loop, k=8, and so
zz[1](4) tries to do (4^3 + C[8]) !
The problem is one of scoping. When k=5 and you do
zz[k] := x -> x^3 + C[k]
what you actually define is
zz[5] := x -> x^3 + C[k]
. Note how the inner k is still there? What you really want is
zz[k] := unappy(x^3+C[k]), x)
.
Why are you getting the errors in the above? That's because after the end of your loop, k=8, and so
zz[1](4) tries to do (4^3 + C[8]) !
Maple went through a serious modernization and rationalization between Maple V (Release 5.1) and Maple 6. Including some changes to the grammar. In particular "
became %
and .
became ||
.
The idea was that " was so common for proper strings (which Maple only got in Maple 6) that it would be better to be consistent with users' expectations, so % was chosen to mean previous result. Additionally, the needs for LinearAlgebra
for a non-commutative but short common symbol for multiplication far outweighed the need for concatenation, and thus the switch between . and ||.
Those were the most visible changes -- Maple 6 also introduced a whole lot more new ideas that made it quite different than the Maple V series. Some users complained bitterly, most users just moved on [we did provide some tool, namely updtsrc
which took care of most of the translation]. However, the current management at Maplesoft is firmly committed language-level backward compatibility [even if that means that past mistakes cannot be fixed].
.ms files go all the way back to the original Maple V GUI on Windows (I should know - I wrote most of it). Like the .mws format, it was not a very clever format (too much context-sensitivity, placement-sensitive semantics, very little possibility for error-recovery, inclusion of unecessary information, etc). I could dissect the .mw format as well for design flaws, but I am sure that its authors know very well by now where they've goofed. [A good XML DTD design is just as hard as a good design for a program, which is not widely known, and thus most XML DTDs out there are dreadful].
The .ms did manage to have one redeeming feature for its day: it was all ASCII, so that it could be emailed around, unlike the .m format of the time. But that's back in the days where most mailers really had a hard time with binary data!
.ms files go all the way back to the original Maple V GUI on Windows (I should know - I wrote most of it). Like the .mws format, it was not a very clever format (too much context-sensitivity, placement-sensitive semantics, very little possibility for error-recovery, inclusion of unecessary information, etc). I could dissect the .mw format as well for design flaws, but I am sure that its authors know very well by now where they've goofed. [A good XML DTD design is just as hard as a good design for a program, which is not widely known, and thus most XML DTDs out there are dreadful].
The .ms did manage to have one redeeming feature for its day: it was all ASCII, so that it could be emailed around, unlike the .m format of the time. But that's back in the days where most mailers really had a hard time with binary data!
Your
`type/FST` := proc(f)
type(f, 'function') and op(0, f)='FST' and nops(f)=2 and type([op(f)], 'listlist') and
andmap(proc(a) evalb(a >= 0 and a <= 1) end proc, op(1,f))
end proc:
should take full advantage of structured types and should be
`type/FST` :=
'FST'([list(And(numeric,
satisfies(proc(a) evalb(a >=0 and a <= 1)),
list(anything)])
This has several advantages. First, it is significantly faster since the overhead of a function call in Maple is so large. Second, it will give better error messages when something goes wrong. Third, the above makes sure that the first list contains numerics before checking for ≥ 0 which can give you infamous "cannot evaluate boolean" otherwise.
Using
type(f, 'function') and op(0, f)='FST' and nops(f)=2
is particularly hideous. However showed you this as a good way to do things should read a Maple manual from the early 90s or later... The above is assembler-style Maple, shudder. Structured types are your friends. Get comfortable with them. And then you'll see how powerful
indets
,
evalindets
and
typematch
really are.
An old feature of Maple (from the pre-GUI days!), the alias
function does just what you want.
alias(A={a,b,c})
will result in every occurence of {a,b,c} to print as A
A good suggestion. A more workable alternative might be to allow Maple to read .mw.gz files directly. Many browsers already know to deal with files like .ps.gz, etc. Or to create a .mwz format for compressed worksheets.
This reminds me of Wadler's
The Evolution of Language poster, which I now have hanging on my door. I have become a real fan of Descartes...
The man was an astounding genius. His work will keep mathematicians busy for another 50 years, if not more.
While I don't know how to relate much of his work to the ``applied sciences'', it is relatively easy to link Computer Algebra with many of the advances in Category Theory due to Grothendieck.
For example, all the mathematics that a computer can do must be ``constructive'' in an appropriate sense. So the right universe to look at is in a Topos, where you are working in the inner language of the Topos. This is alrealy well-known to people doing Functional programming. Bart Jacob's book "Categorical Logic and Type Theory" talks about this. Another nice reference for these ideas is Barr and Wells' "Category Theory for Computing Science".
My current favourites, for their applications to the theory of Computer Algebra that is, are Kripke, Carnap, Montague [for their work in logic], Joyal [Species] and Kolmogorov [for his work in complexity].