mm-144 I am looking for a way to solve the diet problem with integer programming> (not with the traditional linear programing), in order to set amount> constraints for the food items. Is there a way to do it with excel? If> not, is there a software, freeware or shareware, that could do it? I am a> clinical dietitian and I don't know much maths. I am only looking for a> fast and computerized way to make menus for my clinic. I formulated a> linear programming model in excel but I would like to set some constraints> for the amounts of the fod items.Any help?I think the solver plugging has integer programming capability in Excel.You could also look up the excellent solver software known as lp_solve, atftp://ftp.ics.ele.tue.nl/pub/lp_solve/README, and the GNU modeling package,GLTK, at http://www.gnu.org/software/glpk/glpk.html. There's a great FAQ onLP and MIP athttp://www-unix.mcs.anl.gov/otc/Guide/faq/ linear-programming-faq.html.HTH..... Bob I think the solver plugging has integer programming capability in Excel.> You could also look up the excellent solver software known as lp_solve, at> ftp://ftp.ics.ele.tue.nl/pub/lp_solve/README,Hmmm!!!! Interestingand the GNU modeling package, GLTK, athttp://www.gnu.org/software/glpk/glpk.html.What are the capabilities of this software? Could it model any kind ofproblem?There's a great FAQ on> LP and MIP at> http://www-unix.mcs.anl.gov/otc/Guide/faq/ linear-programming-faq.html.> HTH. =The modeling package I was thinking of is LPL, available athttp://diufpc03.unifr.ch/lpl/lpl.html. And GLPK is a solver package thatcan be plugged in. I have not used either of these packages myself. I haveused lp_solve, and it works great for reasonable problems. My guess is thatit should work great for your situation..... Bob The modeling package I was thinking of is LPL, available at> http://diufpc03.unifr.ch/lpl/lpl.html.Another modelling software?And GLPK is a solver package that> can be plugged in. I have not used either of these packages myself. I have> used lp_solve, and it works great for reasonable problems. My guess isthat> it should work great for your situation.> .... Bob > The modeling package I was thinking of is LPL, available at>> http://diufpc03.unifr.ch/lpl/lpl.html.Another modelling software?Yes -- I was googling around and got a little mixed up. GLPK is a solverpackage, apparently -- somewhat like lp_solve. LPL is a modeling package.Generally speaking, modeling packages allow you to set up problems insomething that looks pretty readable -- closer to the way you would writedown the problem algebraically. Many even allow you to specify inputs fromSQL databases and the like, so that you can set up the problem and then runit easily against different data sets. I have used a couple other modelingpackages that appear to be similar to LPL, but they're anything but cheap.They translate the nice formulation into MPS or a similar format, pass theproblem to the solver, read the results, and translate the results backinto something that looks like the model you formulated. Some companiesproduce both modeling and solver software; others produce just one or theother.To tell the truth, these days I would 'rst write a Python script togenerate the LP/MIP problem in the lp_solve format. Python easily readsdata from SQL databases, so it would be pretty simple to generate such aprogram..... Bob Yes -- I was googling around and got a little mixed up. GLPK is a solver> package, apparently -- somewhat like lp_solve. LPL is a modeling package.> Generally speaking, modeling packages allow you to set up problems in> something that looks pretty readable -- closer to the way you would write> down the problem algebraically. Many even allow you to specify inputs from> SQL databases and the like, so that you can set up the problem and thenrun> it easily against different data sets. I have used a couple other modeling> packages that appear to be similar to LPL, but they're anything but cheap.> They translate the nice formulation into MPS or a similar format, pass the> problem to the solver, read the results, and translate the results back> into something that looks like the model you formulated. Some companies> produce both modeling and solver software; others produce just one or the> other. To tell the truth, these days I would 'rst write a Python script to> generate the LP/MIP problem in the lp_solve format. Python easily reads> data from SQL databases, so it would be pretty simple to generate such a> program.> .... BobVasilis =I'd like to 'nd a package that can solve boolean equationsinvolving inequalities; for example, given: X > Y > Z (X > c * Y ) AND ( X > c * Z )Simplify the second equation to: X > c * YCan any of the symbolic systems like Maple simplify multipleequations of this form?Dave Paoletti I'd like to 'nd a package that can solve boolean equations>involving inequalities; for example, given: X > Y > Z (X > c * Y ) AND ( X > c * Z )Simplify the second equation to: X > c * YCan any of the symbolic systems like Maple simplify multiple>equations of this form?>REDLOG can dispose of the question.That second expression is different so a simpli'er can't 'nd it.A session with the the REDUCE via-telnet test server shows that.* Test server's page: http://www.zib.de/Symbolik/reduce/testreduce.html* REDLOG: http://www.fmi.uni-passau.de/~redlog/ http://www.ijs.co.nz/polytopes.htmHave a lot of fun...Welcome to the REDUCE test server at ZIBLoading image 'le: /usr/reducet/lisp/psl/sparclinux/red/reduce.img 1: load_package redlog;2: rlset ofsf;{}...113: s1 := (z= 0) or (a1 - b1 < 0 and a2 - b1 < 0 and b1 - b2 <= 0): As bugs go, that is a well able to make the solver quite useless, e.g.when the answer is known to be convex, the result seems to be full ofORs, and there is no simpli'er around to 'nd the obviously convexform.-- Craig Carey I'd like to 'nd a package that can solve boolean equations>involving inequalities; for example, given:> X > Y > Z> (X > c * Y ) AND ( X > c * Z )I don't see any equations here.>Simplify the second equation to:> X > c * YAm I to assume that c > 0?>Can any of the symbolic systems like Maple simplify multiple>equations of this form?Perhaps you're looking for a way to remove redundant inequalities froma system of linear inequalities. Linear programming can be used forthis. For nonlinear inequalities it becomes dif'cult.Robert Israel israel@math.ubc.caDepartment of Mathematics http://www.math.ubc.ca/~israel University of British Columbia legacy.mathforum.org (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) by legacy.mathforum.org (8.11.6/8.11.6/The Math Forum, $Revision: 1.10 $, legacy) id h9JJCbZ09899 = ...>>The CAS software is secretive over what is a local variables and what>>is the answer. E.g. in programs that are recursive solving a>>problem.>The answer to one function can be a local variable to another. What >are you talking about? Also unnecessary copying is not needed.LISP knows too little about the symbolic algebra language above it so ithas to be told if an tree-structure expression is a local variable ornot. I guess it does not happen, yet it is much more likely to happen insystem that is designed to not be too slow.When I try REDUCE, it seems to spend half of its time garbage collectingand that is just after starting. Also it gets slower and slower. Alsoit seems to simply garbage collect and take no steps to reduce the amounttime spent in the garbage collecting.Even if only 3% slower then LISP is worse. Perhaps Mr Fateman can listall very slow languages that seem to spend much too much time garbage collecting.Mr Kredel runs that symbolic algebra speed benchmarking initiativewebsite. http://krum.rz.uni-mannheim.de/cabench/cawww.html (a link to Mr Fateman's website where Mockmma can be obtained. It runs best in speeded-up commerical LISPs). http://krum.rz.uni-mannheim.de/cabench/diractiv.html (benchmarking)As mentioned in a previous message of sci.math.symbolic, dropping in aYacc parser is quite possible.Unfortunately Yacc provides only something in the style of LISP andthe hard to grasp view is that LISP naturally follows from algebra, andwhomever, and also LISP and it certainly maybe everything in the styleof Lisp, e.g. a LISP interpreter implemented with a Yacc parser andcapable of running Mockmma.Furthermore, why don't mathematiciasn write LISP code. A reason can bethat motivation is a bit low, and then they spot that the language isone of the world's worst designed languages. Mr Fateman was naming manypeople, but he seemed to be far from naming the LISP enthusiast who isholding the expectation that mathematicians snap-lock into thatinadequacy.Unlike LISP, that design I posted is now rewritten a lot and so that suchchanges are unable to affect code of other packages, they data structureimplementing algebraic expressions is inside of the private part of itspackage. LISP is inferior by a very large measure (not too much for MrFateman perhaps) for 'elds of data structures get implicitly numberedinstead of named, at least in symbolic algebra software.Craig Carey ...>The CAS software is secretive over what is a local variables and what>is the answer. E.g. in programs that are recursive solving a>problem.>The answer to one function can be a local variable to another. What >>are you talking about? > Also unnecessary copying is not needed.Also? There is a model of implementation of Lisp that does not requirea long-term heap because all data is stack allocated, and when a value is returned, it is re-copied somewhere else on the stack. This model is probably never used because it is almost always a bad idea. I don't know what unnecessary copying refers to. Why would any program do unnecessary copying?LISP knows too little about the symbolic algebra language above it so it> has to be told if an tree-structure expression is a local variable or> not. I guess it does not happen, yet it is much more likely to happen in> system that is designed to not be too slow.A tree structure is presumably a value, generally stored in a heap. It is not a local variable. If a local variable is bound to (i.e. points to) a value in the heap, the Lisp system certainly knows about it. Isuspect that you should read about reference count systems and garbagecollection systems, because maybe what you expect (that a systemshould know if a value is in use) is more intuitively solvedby reference counting. It is also solved by garbage collection, andusually faster. But you don't believe that.When I try REDUCE, it seems to spend half of its time garbage collecting> and that is just after starting. Also it gets slower and slower. Also> it seems to simply garbage collect and take no steps to reduce the amount> time spent in the garbage collecting.Maybe your reduce system is running on a poor implementation of Lisp(not very likely, but possible). Maybe you have too large a problemfor the among of memory you the size of your problem. It is possible thata more sophisticated lisp system would re-adjust the parameters ofthe GC to reduce the time spent in GC, but fundamentally, if youstart running out of memory, you usually go into some kind ofdeath spiral.Even if only 3% slower then LISP is worse. Perhaps Mr Fateman can list> all very slow languages that seem to spend much too much time > garbage collecting.Huh? You are unwilling to use a system that spends 3% of its timereclaiming storage? Then how do you justify writing in a highlevel language, when you could undoubtedly be 3% or (far more)I doubt that I can list all very slow languages.Execution speed is an attribute of an execution environment.Mr Kredel runs that symbolic algebra speed benchmarking initiative> website. http://krum.rz.uni-mannheim.de/cabench/cawww.html (a link to> Mr Fateman's website where Mockmma can be obtained. It runs best in> speeded-up commerical LISPs). http://krum.rz.uni-mannheim.de/cabench/diractiv.html (benchmarking)As mentioned in a previous message of sci.math.symbolic, dropping in a> Yacc parser is quite possible.Unfortunately Yacc provides only something in the style of LISP and> the hard to grasp view is that LISP naturally follows from algebra, and> whomever, and also LISP and it certainly maybe everything in the style> of Lisp, e.g. a LISP interpreter implemented with a Yacc parser and> capable of running Mockmma.I can't parse the sentence above.Furthermore, why don't mathematiciasn write LISP code. A reason can be> that motivation is a bit low, and then they spot that the language is> one of the world's worst designed languages.Since most mathematicians do not know how to program in many languages,I doubt that they would venture an opinion on which is designed better.Some mathematicians 'nd Lisp quite attractive. Mr Fateman was naming many> people, but he seemed to be far from naming the LISP enthusiast who is> holding the expectation that mathematicians snap-lock into that> inadequacy.Again, I can't parse the sentence. Mathematicians do whatever theywant to do, at least in academia. Most of them do not use computersexcept to typeset papers. Why would they program in Lisp or anyother language?Unlike LISP, that design I posted is now rewritten a lot and so that such> changes are unable to affect code of other packages, they data structure> implementing algebraic expressions is inside of the private part of its> package.Do you believe that Lisp has no method for information hiding? Readabout packages in Common Lisp. You can also de'ne local functionsand you can de'ne methods, all of which provide similar facilities. LISP is inferior by a very large measure (not too much for Mr> Fateman perhaps) for 'elds of data structures get implicitly numbered> instead of named, at least in symbolic algebra software.> You apparently are unfamiliar with Common Lisp.(defstruct monomial coef var exponent)(setf a1 (make-monomial :coef 2345 :var ? :exponent 2))(monomial-coef a1) > returns 2345(defun foo(&key x y) (+ x y))(foo :y 3 :x 4) > 7You can name 'elds in structures, and you can name arguments infunctions. You can learn about Common Lisp in many places.Reduce is written in PSL or a variant of it. PSL was de'ned about30 years ago and is not necessarily indicative of whatCommon Lisp means today. =...>>The CAS software is secretive over what is a local variables and what>>is the answer. E.g. in programs that are recursive solving a>>problem.>>The answer to one function can be a local variable to another. What >are you talking about? Also unnecessary copying is not needed.Also? There is a model of implementation of Lisp that does not require>a long-term heap because all data is stack allocated, and when a value >is returned, it is re-copied somewhere else on the stack. This model is > probably never used because it is almost always a bad idea. I don't >know what unnecessary copying refers to. Why would any program do >unnecessary copying?REDUCE does unnecessary copying and I guess it is very similar withother LISP based algebra solvers. Heaps are implemented out of arrays. If the arrays are not allocatedby the program itself then the program is probably a lot slower.So suppose the program allocates two memory pools, which are arraysof bytes from which 2 heaps are allocated. In Ada 95 the languageexplicitly supports new-ing of records on user de'ned heaps. Aprocedure can put the memory pool arrays on the stack (or at leastattempt to) or it can allocate them on the outmost heap that theoperating system manages. In return for a 3 times speed up, thereis a need to implement code to:* scan for contiguous space to return* garbage collect heaps, sub-heaps and records. Such recursive programming can be reasonably trivial in Ada 95.One of the heaps is running as if it was a stack: memory pool #2 in thispicture:Memory Pool #1: [XXXXXX_XXX_XX__XXXXX_XXX_XX__XXXXX_XXX_XX__XX_____] Memory Pool #2: [XXXXX____________________]Algebraic expressions can be made local by having a heap that providesits ?ark' and ?elease' operations. It behaves like a stack.The code is hopefully faster due to 3 time consuming actions now notbeing performed:(1) When the routine turns and the local variables vanish, they have not created empyt gaps in Memory Pool #1. Timing tests can show that the slowness is occurring inside of operating system code instead of the user-side software.(2) For Pool #2, there is no scanning for empty gaps.(3) There is no garbage collecting in Memory Pool 2.LISP symbolic algebra systems don't do that.I have observed big speed up improvements on using heaps.What LISP is missing is the 2nd heap. Please send in the best reasoningyou have got, for that, into the Usenet sci.math.symbolic group.The 2nd array is easy to add in since the code is already written(mark and release are easy) (might not be true if the 2nd reallocatesanother mark-release heap while the global memory pool does not, forthen extra code has to be written).So CAS solvers runs slowly and can't solve and it is not actually theresult of an intelligent trade-off.If there was a better way to design a CAS solver then do provide that.Also please explain if your viewpoint is biased somehow by the fact LISP knows too little about the symbolic algebra language above it so it>> has to be told if an tree-structure expression is a local variable or>> not. I guess it does not happen, yet it is much more likely to happen in>> system that is designed to not be too slow.A tree structure is presumably a value, generally stored in a heap. It >is not a local variable. If a local variable is bound to (i.e. points Are you considering some particular programming language environment butnot actually naming ?. In general your claim can be untrue for all thebest algebra solvers the world may see.>to) a value in the heap, the Lisp system certainly knows about it. I>suspect that you should read about reference count systems and garbage>collection systems, because maybe what you expect (that a system>should know if a value is in use) is more intuitively solved>by reference counting. It is also solved by garbage collection, and>usually faster. But you don't believe that.I assume that reference counting is too slow to use.A replacement for it is the swapping of pointers, e.g. swapping subtreesin an expression. It allocating and deallocating are running muchfaster due to the complete avoidance of someone else's garbage collector,then swapping has competition from that....> LISP is inferior by a very large measure (not too much for Mr>> Fateman perhaps) for 'elds of data structures get implicitly numbered>> instead of named, at least in symbolic algebra software.>>You apparently are unfamiliar with Common Lisp.(defstruct monomial coef var exponent)(setf a1 (make-monomial :coef 2345 :var ? :exponent 2))(monomial-coef a1) > returns 2345(defun foo(&key x y) (+ x y))(foo :y 3 :x 4) > 7>I looked at Mockmma and Axiom and they don't name 'elds in thestructures represesnting expressions.Perhaps they can get away with that since expressions can't keepgetting more and more complex, but if something went wrong thena discovery of that would not occur.>You can name 'elds in structures, and you can name arguments in>functions. You can learn about Common Lisp in many places.... =I responded to an essentially similar message from Craig Careyby W. Hansen, Compact list representation: de'ntion, garbage collection, and system implementation. This work was, so faras I can tell, never seriously adopted, becauseit is a bad idea. It requires that extensive copying be done, or that procedures can only return 'xed-size data. Any saving are obtained at substantial inconvenience.There is a paper by A. Appel that explain that with enough memory,stack allocation as you propose, is strictly slower than heap allocation. Please readwww.cs.princeton.edu/~appel/papers/45.psAlso, pools of storage are easily managed in Lisp; see the discussionof resources in Norvig's Paradigms of AI programming. This is awell-known technique, not invented by Lisp or Ada, or you or me...................Also please explain if your viewpoint is biased somehow by the factme. It would have been, at a minimum, inconvenient to do so in Ada 95.>LISP knows too little about the symbolic algebra language above it so it>has to be told if an tree-structure expression is a local variable or>not. I guess it does not happen, yet it is much more likely to happen in>system that is designed to not be too slow.>>A tree structure is presumably a value, generally stored in a heap. It >>is not a local variable. If a local variable is bound to (i.e. points > Are you considering some particular programming language environment but> not actually naming ?. In general your claim can be untrue for all the> best algebra solvers the world may see.What I said was a tree is a value, not a variable. This is a programming language issue, not a CAS issue.>>to) a value in the heap, the Lisp system certainly knows about it. I>>suspect that you should read about reference count systems and garbage>>collection systems, because maybe what you expect (that a system>>should know if a value is in use) is more intuitively solved>>by reference counting. It is also solved by garbage collection, and>>usually faster. But you don't believe that.> I assume that reference counting is too slow to use.I don't know why you assume that. It has its uses. Mathematica uses it.> A replacement for it is the swapping of pointers, e.g. swapping subtrees> in an expression. It allocating and deallocating are running much> faster due to the complete avoidance of someone else's garbage collector,> then swapping has competition from that.I don't understand this.I looked at Mockmma and Axiom and they don't name 'elds in the> structures represesnting expressions.Maybe people disagree with you that naming sub'elds is soimportant, or they use other ways of abstractly connectingnames and 'eld positions in records.Perhaps they can get away with that since expressions can't keep> getting more and more complex, but if something went wrong then> a discovery of that would not occur.> You seem to be concerned with debugging now, not ef'ciency.Stick to one topic. But before you write again, do some reading.RJF I responded to an essentially similar message from Craig CareySo there is no argument. The information in the books isirrelevant presumably since at best saying how to improve agarbage collector while I was arguing that there be a lotless use of such code.Here is a message from comp.lang.ada that says that garbage collectingalgorithms are not needed in Ada.| ...>The problem seems to be that nobody wants one bad enough to want to pay>for it. The subject has been raised here before and the usual response>from those working for vendors has been Our customers don't seem to>care. Since GNAT is available in source, its possible someone could go>cobble it in there and try to get it accepted for the general>distribution, but again, nobody seems to care enough to do that.|| Not quite true. There is a more subtle problem. There have been many| Ada compilers that supported GC over the years, but in every case except| possibly Symbolics, the general purpose garbage collection didn't get| exercised enough and eventually died due to bit rot.* (The extra cost| of supplying a garbage collector, such as a garbage collected storage| pool for Ada 95 is that you have to test it by forcing garbage| collection by exhausting storage space every time you modify the| compiler. This gets old fast. And calling the GC routines speci'cally| is not enough.)|| *Yes, I know that the belief that unmaintained code rots may not be true| for some things, but a storage allocation and management system that is| part of a compiler is one case where the bit rot is pretty fast.I correct an error here. Mr Daly got mislead by Mr Fateman despiteMr Fateman making that harder to do by quoting my text:I said that LISP (ie. actually REDUCE in Windows 98 (running my expression simplifying code)) spent 50% of its time garbage collecting(in PSL LISP).Also I said that even if 3% too slow, then that is not OK, if it isirrational and the opponents are blocking a view to the rationale.The reasoning for selecting LISP can bring sadness to the readers.However I delicately avoid asking for why Richard selected LISP.What is the reasoning for withholding the reasoning. That particularlanguage leads to code that: (a) gets ignored since hard to improve,etc., and that (b) is hard to improve but anyway, but due to badluck, it does not get used much. Also we processing is something that symbolic algebra LISP would be adapting to.For garbage collectors, the technical details involve swappingpointers to memory pool ?eap' arrays between tasks. Once again,something a LISP programmer could implement in a PC at home inone night, but likely to be missing from LISP and symbolic algebrasolvers. I am rejecting the 'x for that, which was that I shouldstart reading other people's writings. That last author didn'thave a URL.The G Steele LISP book is all throughout Gnutella, in the form ofa hard to use *.ps 'le.>by W. Hansen, Compact list representation: de'ntion, garbage >collection, and system implementation. This work was, so far>as I can tell, never seriously adopted, because>it is a bad idea. It requires that extensive copying be done, or that >procedures can only return 'xed-size data. Any saving are obtained at >substantial inconvenience.It sounds limiting: e.g. from the title, it is about LISP.There is a paper by A. Appel that explain that with enough memory,>stack allocation as you propose, is strictly slower than heap >allocation. Please read>www.cs.princeton.edu/~appel/papers/45.psAlso, pools of storage are easily managed in Lisp; see the discussion>of resources in Norvig's Paradigms of AI programming. This is a>well-known technique, not invented by Lisp or Ada, or you or me.>The paper says that by having a large virtual memory space in VAX-11/785with 128MB of memory running Edinburgh Standard ML program then thebig virtual space scheme is faster.The operating system could be supplying the garbage collecting code,is one possibility. VAXes are behind the year of the Alphacide.Possibly the database that supplied the link to Richard, is out of date....>me. It would have been, at a minimum, inconvenient to do so in Ada 95.I can't see anything to dispute there. But I would expect that end upwith a project that just about no one is interested in....>What I said was a tree is a value, not a variable. This is a >programming language issue, not a CAS issue.>>It is probably not even an issue for it is clear that a name (inputfor a lookup algorithm) is an expression....>> I assume that reference counting is too slow to use.I don't know why you assume that. It has its uses. Mathematica uses it.>Mathematica has what, exactly ?. A reference count could be when one expression simply points toanother. I suppose it is better to never create such a feature.The subroutines of the solver can calculate pointers when theyneed them. The expression in the global memory pool is locked to preventconcurrent access to it.When the subroutine has 'nished, then the pointer disappears too.So there is nothing like reference counting. Instead the pointers arecreated and the expression is never updated as that is occuring,particularly when 1 CPU, task, or Intel hyperthread.>> A replacement for [reference counting]>> is the swapping of pointers, e.g. swapping subtrees>> in an expression. It allocating and deallocating are running much If [not it]>> faster due to the complete avoidance of someone else's garbage collector,>> then swapping has competition from that. [pointers bewteen/in expressions]I don't understand this.>Swapping is implemented with algorithms like this: temp := x1 x1 := x2 x2 := tempThe probing for the information is destructive. The destructiveprobing can be completed with great speed. It would be done forsubroutine data. So far no one is saying that reference countingis good enough or needed despite how a clear aim is to stopcopying. A 3GL programmer creates pointers freely and expressionsare not modi'ed....>> Perhaps they can get away with that since expressions can't keep>> getting more and more complex, but if something went wrong then>> a discovery of that would not occur.>>You seem to be concerned with debugging now, not ef'ciency.>Stick to one topic. But before you write again, do some reading.I meant that having 'elds implicitly numbered in expressions might look like a good design to a member of the public.They would not 'nd out about some problems, I suppose, if any.I shoukld check that: do LISP based solver improve rapidly afterrequests were made ?.Maybe Richard Fateman can give us (or me) an analysis of thiswebpage and website. I was missing out on the reasoning for thewithholding of the evidence for the lasting idea that LISP itselftends to be appropriate if algebra problems are to be solved. As Una [Honeysuckle Creek, Australia] watched [Neil] Armstrong walking on the surface of the Moon she spotted a Coke bottle that was kicked in the right hand side of the [TV] picture. http://www.ufos-aliens.co.uk/cosmicapollo.html http://www.aulis.com/LISP is one of those in?xible languages where once an erroris made, it remains fallen where it fell. The topic is anexpanding collection of unanswered questions. >I responded to an essentially similar message from Craig Carey>>Apparently you haven't done your homework. And I should juststop here, but I can't resist tweaking you some more.> So there is no argument. The information in the books is> irrelevant presumably since at best saying how to improve a> garbage collector while I was arguing that there be a lot> less use of such code.If GC takes almost no time, there is no need to worry about it.Rather, you can worry about writing reliable code.If you think you can write a computer algebra system better withouta GC, you are welcome to try.Here is a message from comp.lang.ada that says that garbage collecting> algorithms are not needed in Ada.Anyone reading that quote would see that, despite numerous efforts, Ada's GC is too dif'cultto debug, and the applications are not apparently demanding enoughto require it.This is one good reason not to use Ada for symbolic computation,which ordinarily is notorious for intermediate expression swell.I was unaware that the free Gnu Ada system (GNAT) lacked a GC.I correct an error here. Mr Daly got mislead by Mr Fateman despite> Mr Fateman making that harder to do by quoting my text:Huh?I said that LISP (ie. actually REDUCE in Windows 98 (running my > expression simplifying code)) spent 50% of its time garbage collecting> (in PSL LISP).-Possibly if you see prices of 1 gigabyte at US$400). If you doubled theamount even if 3% too slow, then that is not OK, if it is> irrational and the opponents are blocking a view to the rationale.The rational view is that writing in a well-supported language isworth 3%.The reasoning for selecting LISP can bring sadness to the readers.> However I delicately avoid asking for why Richard selected LISP.I thank you for your delicacy. Huh??What is the reasoning for withholding the reasoning. That particular> language leads to code that: (a) gets ignored since hard to improve,> etc., and that (b) is hard to improve but anyway, but due to bad> luck, it does not get used much. Also we could be weeks away from> being told that Intel and LISP would be adapting to.Could you perhaps supply some references as to why Lisp inparticular is hard to improve? And why does this have anything todo with multi-CPU processing? Several lisp implementationshave support for multi-processing.For garbage collectors, the technical details involve swapping> pointers to memory pool ?eap' arrays between tasks. Once again,> something a LISP programmer could implement in a PC at home in> one night, but likely to be missing from LISP and symbolic algebra> solvers. I am rejecting the 'x for that, which was that I should> start reading other people's writings. That last author didn't> have a URL.I think that reading the discussion of RESOURCES might help. Here'sa comment though..http://www.geocrawler.com/archives/3/439/1999/6/0/ 2380849/The G Steele LISP book is all throughout Gnutella, in the form of> a hard to use *.ps 'le. there is an html version athttp://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository /ai/html/cltl/cltl2.html>>by W. Hansen, Compact list representation: de'ntion, garbage >>collection, and system implementation. This work was, so far>>as I can tell, never seriously adopted, because>>it is a bad idea. It requires that extensive copying be done, or that >>procedures can only return 'xed-size data. Any saving are obtained at >>substantial inconvenience.> It sounds limiting: e.g. from the title, it is about LISP.You didn't even look at the abstract, which is available free fromthe ACM digital library. You can get the text ifyou are an ACM digital library subscriber, or if you are neara decent computer science library.>>There is a paper by A. Appel that explain that with enough memory,>>stack allocation as you propose, is strictly slower than heap >>allocation. Please read>>www.cs.princeton.edu/~appel/papers/45.ps>>Also, pools of storage are easily managed in Lisp; see the discussion>>of resources in Norvig's Paradigms of AI programming. This is a>>well-known technique, not invented by Lisp or Ada, or you or me.> The paper says that by having a large virtual memory space in VAX-11/785> with 128MB of memory running Edinburgh Standard ML program then the> big virtual space scheme is faster.The operating system could be supplying the garbage collecting code,> is one possibility. VAXes are behind the year of the Alphacide.> Of course the operating system is not doing the garbage collection. Infact the paper includes an analysis -- machine independent -- of whenGC is better than stack allocation, and the analysis becomes more compelling as main storage becomes cheaper.The exact same analysis would hold for 64 bit computers.> Possibly the database that supplied the link to Richard, is out of date.I just looked in >>me. It would have been, at a minimum, inconvenient to do so in Ada 95.> I can't see anything to dispute there. But I would expect that end up> with a project that just about no one is interested in.Just about no one? How would you know? Google found 185 hits. I don't know how many are from other people though. I do have some indicationof people using parts of it. About 250 hits a day to Tilu. Therewas at least one NSF small business grant based on this code (thefurther development of it was done entirely independently of me, so Idon't know what eventually happened.) Some people cared about itenough to modify the one implementation-dependent 'le to run onother Lisps....>>What I said was a tree is a value, not a variable. This is a >>programming language issue, not a CAS issue.It is probably not even an issue for it is clear that a name (input> for a lookup algorithm) is an expression.A name may be an expression, but not every expression is a name....I assume that reference counting is too slow to use.>>I don't know why you assume that. It has its uses. Mathematica uses it.> Mathematica has what, exactly ?. Mathematica has reference counts and uses them. Mathematica does memory management with reference counts, so that pieces of memory are freed as soon as they stop being used. This means that Mathematica can make use of essentially all the memory that is available on a particular computer, without the need for operations such as garbage collection. (Mathematica by Wolfram 1988:xvi)This is, of course, puffery, because it suggests thatmaintaining reference counts is more ef'cient than garbagecollection. No evidence is cited in support of this, and Isuspect that there is no such evidence.A reference count could be when one expression simply points to> another. I suppose it is better to never create such a feature.Are you guessing at what a reference count is? Maybe you shouldlearn about it.The subroutines of the solver can calculate pointers when they> need them. The expression in the global memory pool is locked to prevent> concurrent access to it.Huh?When the subroutine has 'nished, then the pointer disappears too.> So there is nothing like reference counting. Instead the pointers are> created and the expression is never updated as that is occuring,> particularly when 1 CPU, task, or Intel hyperthread.> This is why you should read the Hansen paper, which, as I recallexplains this technique.>A replacement for [reference counting]> is the swapping of pointers, e.g. swapping subtrees... Perhaps they can get away with that since expressions can't keep>getting more and more complex, but if something went wrong then>a discovery of that would not occur.>You seem to be concerned with debugging now, not ef'ciency.>>Stick to one topic. But before you write again, do some reading.> I meant that having 'elds implicitly numbered in expressions might look> like a good design to a member of the public.They would not 'nd out about some problems, I suppose, if any.> It could be that a different design would be easier for someone elseto debug. Or might be worse.> I shoukld check that: do LISP based solver improve rapidly after> requests were made ?.How would you check this?Maybe Richard Fateman can give us (or me) an analysis of this> webpage and website. I was missing out on the reasoning for the> withholding of the evidence for the lasting idea that LISP itself> tends to be appropriate if algebra problems are to be solved.> ..snip...Well, now Mr Carey is somehow relating Lisp to the alleged faking ofthe Apollo moon landing.LISP is one of those in?xible languages where once an error> is made, it remains fallen where it fell. The topic is an> expanding collection of unanswered questions.> Actually, if you post any of your unanswered questions on comp.lang.lisp,I am sure that they will get prompt and thorough responses.RJF =...>Actually, if you post any of your unanswered questions on comp.lang.lisp,>I am sure that they will get prompt and thorough responses.They may say that questions for which a correct and true answer startsto ruin the possibility that Mr Fateman's views are more than garbagethemselves, have to go to the person who is the subject.What is the chief trait of LISP?.I ask readers to try to imagine that the designers of LISP are full ofa belief.The language syntax shows that values emerge from a ( character.I call it the leftwards moving snaking principle. So we presume thatprobably only one persons in sci.maths.symbolic needs to make astatements on whether something to worthless is regarded as solutionfor algebra.the ideal of programmers being involved in a human activity ofprogramming. Also systems should not fall out of the sky.| On the GREEN Language submitted to the DoD||...| Its Introduction (RM p.1) expresses a deep concern for| programming as a human activity|...| Prof Dr Edsger W. Dijkstra, Burroughs Research Fellow, Netherlands http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD660.PDF ;I suppose I am making progress: the rationale for the idea that LISPnaturally arises when maths problems are to be solved, is can beanswered best by persons who could not care at all what Mr Fatemen'slatest beliefs are. However they seem very similar to the 1992 views.> [...]> : Most free software is not very interesting or very good.> : (fortunately there are some exceptions!!) ...> In GiNaC it took us less than aweek before a version where> the expansion of (x+y+z+1)^20*((x+y+z+1)^20+1) that used only> reasonable amounts of memory was on the net. I'm sure the same will> happen to Bernard Parisse's inconsistency with sqrt((-x)^2), if he> hasn't already 'xed it. Now, contrast this to the release cycles of> some commercial software, especially in the absence of patches, as is> sadly the case with Maple. So far for Richard Fateman's ?mebait. Now comes mine... [...]> : You could learn lisp in 2 weeks. You could become a skilled> : programmer in a month.>...> I would be interested in learning[,] what Richard Fateman believes is> the reason why so many of his colleagues thin[k] that Lisp doen't> matter.>-- comment: Dijkstra's document (quoted) said that semicolons could be on theleft hand side of lines of the program.Similarly Mr Fateman has a point to clarify: suppose that these two: (, );are replaced with: Gruff,and Wagy.Example 1 for the student of the idealism of LISP (book authors areprobably not up to talking about this): - Gruff setq LHS_Val RHS_Val Wagy -Is it true or false that that arises in the same way LISP does. Onlyyou allege that (presumably since false).But perhaps we can 'nd out if wagy is on the same side and thebut end of the parenthese snake.Also if this was done: setq LHS_Val RHS_Valthen the memory pool can be speci'ed, and it can be a mark release.Are you up to the task of speeding up all existing LISP basedsymbolic algebra solvers. There is more to algebra than just replyingto me. =I sent this with some errors in it....>| Prof Dr Edsger W. Dijkstra, Burroughs Research Fellow, Netherlands...> http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD660.PDF ;Some of the minor criticisms got invalidated by a change in the waytypes and variables are de'ned. The 'nal claim of dishonesty vanishesdue to Ada not have Simula's simulation features....>you allege that (presumably since false).I need to wait.>But perhaps we can 'nd out if wagy is on the same side and the as the>but end of the parenthese snake. butt endLISP is ?xible enough to allow parentheses to be replaced with, say: Gruff ... Wagy ?.>Also if this was done: setq LHS_Val RHS_ValDrat, I meant to write: setq1 LHS_Val RHS_ValNow mark-release memory pool holds the value. It is ultra0-fast atallocating and there is no garbage collecting.then the memory pool can be speci'ed, and it can be a mark release.>Are you up to the task of speeding up all existing LISP based>symbolic algebra solvers. There is more to algebra than just replying>to me.>-Regarding Wolfram's Reference counting, you said that the informationwas from 1998. That is too out of date.What is the rationale for LISP and symbolic algebra systems making noadaptation to the future reality of many CPUs per computer ?.You might not be the best person to explain why LISP is ? not going to adapt.I have not seen anything good about reference counting. E.g. itmalfunctions in multitasking (Rational Ada compiler). It seems to beperhaps a bit slower than garbage collecting (someone of GNAT compiler).Swapping of pointers can replace it (but that requires the code to beadapted). Also large strings don't get copied.All that you write is based on the highly rejectible assumption thatthere is no option but LISP. That makes decimates the following youhave got. I get to that conclusion about you from merely this text here:Are you guessing at what a reference count is? Maybe you should>learn about it. The subroutines of the solver can calculate pointers when they>> need them. The expression in the global memory pool is locked to prevent>> concurrent access to it.Huh? When the subroutine has 'nished, then the pointer disappears too.>> So there is nothing like reference counting. Instead the pointers are>> created and the expression is never updated as that is occuring,>> particularly when 1 CPU, task, or Intel hyperthread.>>This is why you should read the Hansen paper, which, as I recall>explains this technique.>> data structure into a 32 pointer variable. E.g. in Ada one of thesecan be used: X'Access, X'Unchecked_Access, X'Address, for Y'Address use X'Address;So you seem to have been imagining that neither subroutines norprocedures can possibly exist. I describe something. You see it and theidea is incredibly simple. Then you think that it is not in LISP.I don't know if you claims to not understand me are valid.Here is the Hansen reference.What I check for is still this question: Is the only option LISP ?. (You did not understand that a procedure can take in mode expression argument and then created pointers as needed to that.>> For garbage collectors, the technical details involve swapping>> pointers to memory pool ?eap' arrays between tasks. Once again,>> something a LISP programmer could implement in a PC at home in>> one night, but likely to be missing from LISP and symbolic algebra>> solvers. I am rejecting the 'x for that, which was that I should>> start reading other people's writings. That last author didn't>> have a URL.http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ ai-repository/ai/html/cltl/cltl2.html>by W. Hansen, Compact list representation: de'ntion, garbage >collection, and system implementation. This work was, so far>as I can tell, never seriously adopted, because>it is a bad idea. It requires that extensive copying be done, or that >procedures can only return 'xed-size data. Any saving are obtained at >substantial inconvenience.> It sounds limiting: e.g. from the title, it is about LISP.You didn't even look at the abstract, which is available free from>the ACM digital library. You can get the text if>you are an ACM digital library subscriber, or if you are near>a decent computer science library.That paper of Hansen is on lists.comments about arrays. Perhaps you forgot.A better system uses swapping of pointers. It is not good enough toimply that you can't understand it. It is incredibly simple: At thetop level of the big data structures, two 32 bite pointers are swapped.Suppose a copy of an in mode expression is 250KB in size and it hasto be copied. If not used again, it can be swapped. I guess you havea limitation that no one else has: you imagine that the interior ofevery procedure is swimming inside of the global memory pool that theuser can modify at any moment. In an SMP system the user has to losethe right to always update anyway. Is there a rationale for imaginingthat superior solvers can't use all processors.What about parallel processing across the Internet. The swapping ofpointers (you might understand later) would not occur across theInternet. I have a suspicion that LISP is not the best way to go,for free supercomputer distributed computing. .. snip...mixture of ad hominem attack, indecipherable statements,references to random issues about languages and software.......Craig: Perhaps you should post in your native language.see> There is more to algebra than just replying> to me.> My apologies to sci.math.symbolic for having fed the troll.http://www.jargon.net/jargon'le/t/troll.htmlRJF> = Unlike LISP, that design I posted is now rewritten a lot and so that such changes are unable to affect code of other packages, they data structure implementing algebraic expressions is inside of the private part of its package.Do you believe that Lisp has no method for information hiding? Read> about packages in Common Lisp. You can also de'ne local functions> and you can de'ne methods, all of which provide similar facilities. LISP is inferior by a very large measure (not too much for Mr Fateman perhaps) for 'elds of data structures get implicitly numbered instead of named, at least in symbolic algebra software. Craig Carey Craig,Lisp is capable of supporting algebraic expressions. Axiom, a large,general purpose computer algebra system is written in Lisp. And itcompiles to machine code under GNU Common Lisp so it runs ef'ciently.It is hasty generalization to make a claim that one language is betterthan another in general. Good programmers master their tools and writegood programs in appropriate languages. Read the book:Common Lisp: The Language by Guy L., Jr. Steele Garbage collection appears to take (you claim 3%) time from the usefulcomputation. If you don't use garbage collection then every functionmust have code to manage storage. Your memory management code will alsorequire time (likely 3%) to execute. Writing memory management code ishard and very error prone. I helped write a memory manager for a majorcommercial operating system so I am well aware of the issues. Read the book:Garbage Collection : Algorithms for Automatic Dynamic Memory Managementby Richard Jones (Author), Rafael D Lins (Author)Tim Daly ......> http://krum.rz.uni-mannheim.de/cabench/cawww.html (a link to> Mr Fateman's website where Mockmma can be obtained. [...]> http://krum.rz.uni-mannheim.de/cabench/diractiv.html (benchmarking)As mentioned in a previous message of sci.math.symbolic, dropping in a>Yacc parser is quite possible.>I 'x up this poorly worded paragraph:>Unfortunately Yacc provides only something in the style of LISP andMr Fateman's> .. ] view is that LISP naturally follows from algebra, and>whomeverThen I say that Mr Fateman seems to mean LISP when saying LISP, despitehow he was saying that LISP just merely appears if CAS users are around.I would have assumed that Mr Fateman chose a bad language for himself,and then says others would select it for him.So far it sounds like Richard ought name the other people rather thansay that all CAS users tug in LISP from the 1960s while personally thatthe solver can't solve their own problems since too slow (which is thecase with QE solvers).The best parts of LISP are not in LISP, I'd argue.I'd say that the proof is that the ... intelligent readers wouldhave independently thought of the best features of LISP.But possibly Mr Fateman would explain that LISP means LISP.Richard is getting fairly seriously for such a thoroughly losablestance or viewpoint....>capable of running Mockmma.Some people reject GPLs.The Axiom code is almost under a GNU licence. | Noweb is copyright 1989-2000 by Norman Ramsey. All rights reserved.|...| You may sell noweb if you wish. For example, you may sell a CD-ROM| including noweb.|| You may sell a derived work, provided that all source code for your| derived work is available, at no additional charge, to anyone who buys| your derived work in any form. You must give permisson for said| source code to be used and modi'ed under the terms of this license.| You must state clearly that your work uses or is based on noweb and| that noweb is available free of change. You must also request that| bug reports on your work be reported to you.| =Winedt is good: www.winedt.orgWalter (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) = Whenever there are scoring tests being done, and unique rank could beassigned to results --the results of each repetition of the test could be viewed as subsetof the permuation group on n letters.1. Could any one provide further reference to this? =I need to implement an operator in Maple, but it sort of gets over myhead. ~ So I'd like to de'ne an operator A so that, ~ A (LegendreP(l,m,x)*r^n) = (n*(n-1)-l*(l+1)) * LegendreP(l-1,m,x) * r^(n-2) ~i.e, A acts on some function which is a linear combination of termscontaining the product LegendreP(l,m,x)*r^n to produce the resultabove. l,m, n are positive integers, r is real and r>=0.R. = I need to implement an operator in Maple, but it sort of gets over my> head. ~> So I'd like to de'ne an operator A so that, ~> A (LegendreP(l,m,x)*r^n) = (n*(n-1)-l*(l+1)) * LegendreP(l-1,m,x) *r^(n-2)> ~> i.e, A acts on some function which is a linear combination of terms> containing the product LegendreP(l,m,x)*r^n to produce the result> above. l,m, n are positive integers, r is real and r>=0.That's impossible, because r^n doesn't de'ne r and n uniquely so that r>=0and n>0. If r and x are variables, then that could be done as follows, whereI use AA instead of A with ~,> de'ne(A,A(c::realcons*LegendreP(l::posint,m::posint,x::symbol) *r::sym> bol^n::posint) = c*(n*(n-1)-l*(l+1)) * LegendreP(l-1,m,x) * r^(n-2));> AA:=expr->if op(0,expr)=`+` then map(A,expr) else A(expr) ':For example,> a:=2*LegendreP(3,1,x)*r^7+3*LegendreP(2,2,x)*r^5:> AA(a); 5 3 60 LegendreP(2, 1, x) r + 42 LegendreP(1, 2, x) r> AA(LegendreP(3,1,x)*r^7); 5 30 LegendreP(2, 1, x) rAlec Mihailovshttp://webpages.shepherd.edu/amihailo/ =I'm trying to 'nd how to display (?convert?) an integer given as either abinary, octal, decimal or hexadecimal form into one of the other base.Is this functionnality not already included into MuPAD ? I'm also searching a library of functions which can help me to demonstratesome simple mathematics for computer science, like for example booleantables with two ou three variables, step by step simpli'cation of simpleboolean expression and all these sort of things.claude-- azubi arrobas acm point org I'm also searching a library of functionsYou mean in MuPAD, or in any CAS?> which can help me to demonstrate some simple mathematics for computer> science, like for example boolean tables with two ou three variables,> step by step simpli'cation of simple boolean expressionMany of these have already been written for Maple (by academic thirdparties like you and me) and are available for free download at the Mapleviewing of MuPAD, it appears to be the closest to Maple of any CAS, withMacsyma being very close behind that (have never used Maxima). So it maybe possible to translate.I have a related package for Logic Puzzles -- the type that you 'nd inpuzzle magazines. This is more complicated than simplifying booleanexpressions, but you may be interested. It will show all the steps if youwant, or some of the steps. I included an interface so that the user can'ne tune to the exact amount of information that they want to see, andthis can be set up to change when a certain event is triggered in theproblem solution. (For example, you might want to see every detail upto the point that it is proved that the blue ball is in the red box, butthen only see major highlights of the rest of the derivation.)This is available as the Constraint Satisfaction Package in the Logicsection at the Maple Applications Center. I'm trying to 'nd how to display (?convert?) an integer given as either a> binary, octal, decimal or hexadecimal form into one of the other base.Is this functionnality not already included into MuPAD ?I'm also searching a library of functions which can help me to demonstrate> some simple mathematics for computer science, like for example boolean> tables with two ou three variables, step by step simpli'cation of simple> boolean expression and all these sort of things.> claude--> azubi arrobas acm point orgVery easy to do in Forth. Lots of free Forths that will run on your machine.Whatever it is ;-)E.g. octal 723 hex . 1D3 ok octal 723 decimal . 467 ok octal 723 binary . 111010011 ok etc. etc.The reason is that Forth maintains a system variable that holds the currentradix for conversion of integers. Typing octal executes a subroutineof that name that changes the radix to 8. A number typed at the keyboardmust be in base 8 or it will cause an error, as in: octal 729 Error: 729 is unde'nedThe Forth subroutine . prints the top of the stack to the outputdevice (CRT in this case). ok says everything went as it should.You could de'ne ternary (base 3) if you wished: : ternary 3 base ! ; ok octal 723 ternary . 122022 okIf you want to learn more, look at http://www.phys.virginia.edu/classes/551.jvn.fall01/especially the links A Beginner's Guide to Forth (HTML)and Forth system and example programs-- Julian V. NobleProfessor Emeritus of ^^^^^^^^^^^^^^^^^^http://galileo.phys.virginia.edu/~jvn/ Science knows only one commandment: contribute to science. -- Bertolt Brecht, Galileo. I'm trying to 'nd how to display (?convert?) an integer given as either a>binary, octal, decimal or hexadecimal form into one of the other base.Is this functionnality not already included into MuPAD ? Yes, take a look to int2text(), text2int() and e.g. numlib::g_adic()Example:>> // Converting the octal number 723 to a hexadecimal number>> int2text(text2int(723, 8),16) (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) =This is the largest dedicated personal site for Nudists / Naturists inthe world. Please tell your friends about us - the more people we have in our membership, the more fun it will be for all. welcome to try a free trail legacy.mathforum.org (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) =You are invited to participate in the Second North American WorkshopOn MKM to be held January 6, announcement below).Best wishes,Bill Farmer = Mathematical Knowledge Management Joint Mathematics Meetings Knowledge Management (MKM) is an exciting new 'eld in the intersection of mathematics and computer science. The need for good MKM is great: mathematical knowledge is mathematics' treasure; it is vital to engineering, science, and mathematics itself, and it is used by millions of people. The challenge of MKM is also great: mathematical knowledge is unsurpassed in its extent, richness, and interconnectedness. Current technology is not capable of ful'lling this need and meeting this challenge. New and more sophisticated theory and to introduce the issues and challenges of MKM to the North American mathematics community. The goal will be to share ideas and to explore ways mathematicians and MKM researchers can collaborate.Organizers William Farmer, McMaster University (wmfarmer@mcmaster.ca) Michael Kohlhase, International University Bremen (m.kohlhase@iu-bremen.de) Dana Scott, Carnegie Mellon University (dana.scott@cs.cmu.edu) Bernd Wegner, Technische Universitaet Berlin (wegner@math.tu-berlin.de)Format The workshop will be a include two invited talks and 10 short presentations (see the Call for Presentations below). There will be ample time set aside for both formal and informal discussion.Invited Speakers Dr. Daniel W. Lozier Mathematical Software Group National Institute of Standards and Technology http://math.nist.gov/~DLozier/ Dr. R. Keith Dennis Department of Mathematics Cornell University http://www.math.cornell.edu/People/Faculty/dennis.htmlWhy is MKM important to the North American mathematics community? First, mathematical knowledge is both the raw material and the 'nished product of mathematics. It is essential for the health of mathematics -- as well as engineering and science -- that mathematical knowledge be effectively managed. Second, effective MKM requires a sophisticated understanding of mathematics. Input from mathematicians, mathematics educators, and other members of the mathematics community is needed to steer MKM research in the right direction and keep it on track. Third, research in MKM is much more actively being pursued in Europe than in North America. Unless North Americans step up and play a role, the direction of MKM research may be largely determined by European interests.Relevant scienti'c and technological areas Computer algebra Computer theorem proving Digital libraries Formal methods of computing Intellectual property rights Knowledge representation Mathematical software design Mathematics documentation Mathematics education Mathematics publishing Web presentation of mathematics The new 'eld of MKM was launched in September 2001 with the First International Workshop on MKM at Hagenberg, Austria (http://www.risc.uni-linz.ac.at/institute/conferences/MKM2001/ ) organized by Bruno Buchberger and Olga Caprotti. The Second Bertinoro, Italy (http://www.cs.unibo.it/MKM03/), and the Third International Workshop on MKM will take place September consortium of researchers was founded under the leadership of Michel Hazelwinkel. The European members of the consortium received funding from the EU in 2002 for a large MKM exploratory project named the Mathematical Knowledge Management Network (see http://monet.nag.co.uk/mkm//index.html). The First North American Workshop on MKM (NA-MKM 2002) took place in June 2002 in Hamilton, Ontario, Canada (http://imps.mcmaster.ca/na-mkm-2002/). It was attended by 32 researchers and students from Canada and the United States.Registration If you are interesting in attending yourself: 1. Name 2. Af'liation There is no registration 10-minute presentations related to any aspect of MKM. Please send your proposal in the form of a 1-2 page extended abstract Workshop Questions Please send questions to William Farmer at wmfarmer@mcmaster.ca. =When generating Fortran code for some very long equations, I get thefollowing...unanticipated...warning message:Warning, The following variable name replacements were made: [cg, cg0,cg1, cg2] = [gam_1, v_1,gam_2, v_2]I did not ask for any variable name replacements to occur. I havelooked in vain under CodeGeneration, CodeGenerationOptions, etc, for away to turn this unwanted feature off, but haven't found ANYinformation -- not even any mention that this sort of thing canhappen.Does anyone know how to get Maple to...just... use my variables?some Fortran lines actually mapping one set to another (e.g. cg =gam_1), but my problem is that the original variable names appear*nowhere* in the Fortran 'le!Apparently it's my job to diligently watch the warning messages as myenormous script runs and write down all the replacements Maple madealong the way, and then write my *own* code to do the mapping? Myscript is very long and I can't be going back to read every messageabout variable replacement and inserting little 'xer lines offortran code.Previously I ran my Maple scripts under Maple 7, and have made thenecessary changes to make them compatible with Maple 9 (e.g.,optimized goes to optimize..??) I never had this problem underMaple 7.FYI, the call I made wasFortran([gxx=gd[1,1]],optimize,precision=double,output=` gd.inc`):I'm using Maple 9.00 under Mac OS X.Many Hawley When generating Fortran code for some very long equations, I get the> following...unanticipated...warning message: Warning, The following variable name replacements were made: [cg, cg0,> cg1, cg2] = [gam_1, v_1,gam_2, v_2] I did not ask for any variable name replacements to occur. I have> looked in vain under CodeGeneration, CodeGenerationOptions, etc, for a> way to turn this unwanted feature off, but haven't found ANY> information -- not even any mention that this sort of thing can> happen.Look at page ?CodeGeneration,General,FortranDetails in the third paragraphunder Description.> Does anyone know how to get Maple to...just... use my variables?Quick answer: Don't use underscores.Longer answer: there is probably a quick way to patch theCodeGeneration code just bysubstituting underscore into a list of allowed characters.> Apparently it's my job to diligently watch the warning messages as my> enormous script runs and write down all the replacements Maple made> along the way, and then write my *own* code to do the mapping? My> script is very long and I can't be going back to read every message> about variable replacement and inserting little 'xer lines of> fortran code.Why do you want to look at the Fortran code at all? And if you don't wantto look at it, why do you care what the variable names are? =Carl,> Look at page ?CodeGeneration,General,FortranDetails in the third paragraph> under Description.> Does anyone know how to get Maple to...just... use my variables?Quick answer: Don't use underscores.> Longer answer: there is probably a quick way to patch the> CodeGeneration code just by> substituting underscore into a list of allowed characters.Ah-hah! Silly me. I guess I've been using Fortran extensions for solong... I got the code from someone who was generating C code, so Ididn't even think about underscored being invalid characters forvariable names in Fortran 77.> Why do you want to look at the Fortran code at all? And if you don't want> to look at it, why do you care what the variable names are?Well, I don't care, except for two things: 1) Those variables it wasreplacing are some of the actual imputs to the program code...which isnot a big deal, I could map those myself. But more importantly 2) Ihave many, many such Maple-generated equations, which follow oneanother and which depend on the results of the previous equations, andI can easily imagine that Maple could perform its typicallynon-deterministic behavior and map the variable names differently forthe next equation. Such random remappings of variable names wouldbe...catastrophic.Scott = When generating Fortran code for some very long equations, I get the following...unanticipated...warning message: Warning, The following variable name replacements were made: [cg, cg0, cg1, cg2] = [gam_1, v_1,gam_2, v_2] Does anyone know how to get Maple to...just... use my variables?> Quick answer: Don't use underscores.> Longer answer: there is probably a quick way to patch the> CodeGeneration code just by> substituting underscore into a list of allowed characters.While researching the above, I've discovered that the CodeGenerationpackage is far more sophisticated than I was aware of before. There is aninterface for de'ning translations into any reasonable language that youwant to make up. You can even de'ne the precedence of operators in thetarget language and the indentation styles. (Because of thismulti-language aspect, I've left this in sci.math.symbolic. There is aprede'ned translation into Matlab, and I think that one could createtranslators to the other CAS's also.)I do not know if **standard** Fortran 77 allows the underscore. TheCodeGeneration package thinks that it does not. However, an interface isprovided such that you can de'ne a new language MyF77 whose onlydifference is that it allows underscores. Thus, you will not have to makea hack like I suggested in my previous answer.Because of the tremendous number of options in the CodeGeneration package,I don't know how to do this yet. I'll be looking at it over the next fewdays. I think that there is a chapter about it in one of the ProgrammingGuides. 5. A set or a list indexed by [] (the empty index) returns the sequence of> entries. Hence, if L is a list, then {L[]} is the same as> convert(L, set).Which is the same as {op(L)}. But the [] trick reduces the mental stackdepth required to enter long expressions without needing to pause thetyping to check for matching bracketing symbols.So, just today I have realized the signi'cance of this mental stackdepth thing clearly enough to give it that name. Of course, I had anintuition about it for years, which I was why I intuitively preferredsyntaxes that reduce the stack depth. So, what else can be done alongthese lines in an ideal computer language? I guess it is just a matter ofde'ning more pre'x, post'x, and in'x operators.The two other Maple things that reduce that stack depth that I can thinkof right now are a/b/c instead of a/(b*c) and ModuleA:-MemberB rather thanModuleA[MemberB].It is things like this that make it much easier for me to think in Maplethan in Lisp, which has has so many parentheses. <3F998AEC.7060905@skynet.be> 5. A set or a list indexed by [] (the empty index) returns the sequence of entries. Hence, if L is a list, then {L[]} is the same as convert(L, set).Which is the same as {op(L)}. But the [] trick reduces the mental stack> depth required to enter long expressions without needing to pause the> typing to check for matching bracketing symbols.So, just today I have realized the signi'cance of this mental stack> depth thing clearly enough to give it that name. Of course, I had an> intuition about it for years, which I was why I intuitively preferred> syntaxes that reduce the stack depth. So, what else can be done along> these lines in an ideal computer language? I guess it is just a matter of> de'ning more pre'x, post'x, and in'x operators.The two other Maple things that reduce that stack depth that I can think> of right now are a/b/c instead of a/(b*c) and ModuleA:-MemberB rather than> ModuleA[MemberB].It is things like this that make it much easier for me to think in Maple> than in Lisp, which has has so many parentheses.Have you tried Forth?-- Julian V. NobleProfessor Emeritus of ^^^^^^^^^^^^^^^^^^http://galileo.phys.virginia.edu/~jvn/ Science knows only one commandment: contribute to science. -- Bertolt Brecht, Galileo. =On equivalents of Well-foundness vy Rudnicki & Trubulec p9-10Absolute equality is built-in as re?xive, symmetric and transitivepredicate written in the common in'x notation:de'nition let x,y be Any; pred x=y; re?xivity; symetry; antonym x <> y;end;Why transitivity is not mentioned explicitly in the de'nition? On equivalents of Well-foundness vy Rudnicki & Trubulec p9-10> Absolute equality is built-in as re?xive, symmetric and transitive> predicate written in the common in'x notation:de'nition let x,y be Any;> pred x=y;> re?xivity;> symetry;> antonym x <> y;> end; Why transitivity is not mentioned explicitly in the de'nition?> legacy.mathforum.org (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) legacy.mathforum.org (legacy-1.mathforum.org [144.118.94.27]) by support1.mathforum.org (8.11.6/8.11.6/The Math Forum, (from apache@localhost) =! Thats all thats in the question, my teacher says that it is quite simple after u have drawn it but I can't seem to grasp the connections. Also it's two circles.Your teacher is right. The circles have X-axis as a common tangent, so> have the same Y co.9ardinate 5 for either center ; Let the x co.9ardinate> of the circle center be h ; The equation of a circle is> (x-h)^2+(y-5)^2=5^2 ; When (x,y) = ( 0,8) is plugged in,we obtain h +- 4 ; You get two circles with centers ( 4,5) and ( -4,5) . Join> (0,8) to the centers, join centers, and draw radii at tangent points.> You get two joined (along side measuring 3) Pythogorian right> triangles with sides (3,4,5) sitting like a roof on a rectangle> house with sides (8 X 5), all symmetric to Y-axis.Good answer.I have a question: How do can I introduce the Unit Circle to students