Post Reply 
CAS command question
01-05-2017, 02:07 AM (This post was last modified: 01-05-2017 02:40 AM by Han.)
Post: #24
RE: CAS command question
(01-04-2017 08:37 PM)DrD Wrote:  Both of Arno K's comments are fitting, but I was referring to his first, "left is left, and right is right" comment. That says it all. The user solving the example problem would not need to be concerned about the intrinsic system level details, and can input the expressions as found, no need to worry about evaluation, format, or other internal concerns. Even more so, if tasked with creating a program solver for this example.

And this is the biggest pitfall for any CAS user. Mathematica uses f[x] for functions whereas Maple uses f(x). But then writing f(x)=x^2 in Maple doesn't actually create a function. In fact, functions are represented as name := (var) -> expression (like the Prime). Some systems use 0-based indexing and others use 1 as the starting index (and this varies even from country to country; I think the EU normally starts sequences at 0 whereas there is not a consistent convention in the US). This is why I make it a point to teach my own students that the first thing to using a CAS is knowing how it represents its objects. This is especially important when programming with a CAS.

When a user types f(2), should this be literally f(2) unevaluated? Or should the system return 4 if f was previously defined as f(x):=x^2? Being able to properly deal with symbolic input that has many equivalent forms is not trivial from a programming point of view, even though it is quite trivial mathematically. More relevant to our discussion, if x:=(a+b<c) then should x be treated literally as the symbol 'x' or should it be treated as equivalent to a+b<c? This is a simple yet important question because left(x) -- as you prefer it -- could either return a+b or give an error because the symbol x itself contains only a single letter and no "left hand side" (or "right hand side"). From a user point of view, it seems almost obvious that when we type left(x) we mean for x to be replaced by a+b<c. Except it is completely non-obvious from a programming point of view.

For what it's worth, Maple's lhs and rhs commands behave almost exactly this way (at least in Maple 17, anyway) except they prefer < and <= over > and >=. From their documentation:

Quote:There are three internal data types for inequalities, corresponding to the operators <>, <, and <=. Inequalities involving the operators > and >= are converted to the latter two cases for purposes of representation. An inequality has two operands, the left-hand side and the right-hand side. The names <>, <, <= are known to the type function.

The real problem here is not really about left/right -- in fact, the more I play around with them, the more I lean toward thinking that they are perfectly consistent in behavior and even properly named (see earlier post on how expressions are represented). The "only" problem I see here is that in the lack of documentation. The Prime's CAS documentation (and even non-CAS documentation) is unfortunately always lagging behind the feature-set.

For parisse: I honestly do not know of a good documentation system this late in the game, and one that comes to mind may be a bit too late: doxygen. Comments are turned into online documentation and one can embed mathematics code such as LaTeX. You probably know about it, but for those who don't -- it basically strips comments from source code and turns it into documentation. That way programmers can keep everything in a file and not have to write documentation in a separate file. I suppose one could go back and add in comments into the source code.

EDIT: forget what I said about doxygen; I misread what you mean for documentation.

Graph 3D | QPI | SolveSys
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
CAS command question - DrD - 01-02-2017, 06:44 PM
RE: CAS command question - Arno K - 01-02-2017, 09:55 PM
RE: CAS command question - parisse - 01-03-2017, 07:24 AM
RE: CAS command question - DrD - 01-03-2017, 11:33 AM
RE: CAS command question - Han - 01-04-2017, 03:06 PM
RE: CAS command question - DrD - 01-04-2017, 03:46 PM
RE: CAS command question - Han - 01-04-2017, 04:01 PM
RE: CAS command question - DrD - 01-04-2017, 08:37 PM
RE: CAS command question - Han - 01-05-2017 02:07 AM
RE: CAS command question - matthiaspaul - 01-03-2017, 10:54 PM
RE: CAS command question - compsystems - 01-04-2017, 03:23 AM
RE: CAS command question - John P - 01-04-2017, 11:09 PM
RE: CAS command question - Arno K - 01-03-2017, 08:09 AM
RE: CAS command question - parisse - 01-03-2017, 04:42 PM
RE: CAS command question - parisse - 01-04-2017, 07:07 AM
RE: CAS command question - DrD - 01-04-2017, 11:19 AM
RE: CAS command question - Han - 01-04-2017, 02:46 PM
RE: CAS command question - compsystems - 01-04-2017, 12:56 PM
RE: CAS command question - DrD - 01-04-2017, 02:53 PM
RE: CAS command question - Han - 01-04-2017, 03:51 PM
RE: CAS command question - DrD - 01-04-2017, 03:32 PM
RE: CAS command question - compsystems - 01-04-2017, 05:08 PM
RE: CAS command question - parisse - 01-04-2017, 08:25 PM
RE: CAS command question - Arno K - 01-04-2017, 11:56 PM
RE: CAS command question - parisse - 01-05-2017, 07:46 AM
RE: CAS command question - Arno K - 01-05-2017, 08:54 AM
RE: CAS command question - DrD - 01-05-2017, 11:38 AM
RE: CAS command question - compsystems - 01-05-2017, 12:46 PM
RE: CAS command question - DrD - 01-05-2017, 02:28 PM
RE: CAS command question - Han - 01-05-2017, 04:49 PM
RE: CAS command question - DrD - 01-06-2017, 05:59 PM
RE: CAS command question - Han - 01-06-2017, 08:11 PM
RE: CAS command question - parisse - 01-05-2017, 07:31 PM
RE: CAS command question - compsystems - 01-05-2017, 08:08 PM
RE: CAS command question - Han - 01-05-2017, 09:07 PM
RE: CAS command question - Han - 01-05-2017, 09:20 PM
RE: CAS command question - Alberto Candel - 01-05-2017, 10:02 PM
RE: CAS command question - compsystems - 01-05-2017, 10:46 PM
RE: CAS command question - Alberto Candel - 01-05-2017, 11:05 PM
RE: CAS command question - Han - 01-05-2017, 11:53 PM
RE: CAS command question - chromos - 01-06-2017, 06:57 PM
RE: CAS command question - DrD - 01-06-2017, 08:28 PM
RE: CAS command question - Han - 01-06-2017, 08:37 PM
RE: CAS command question - John P - 01-08-2017, 11:15 PM
RE: CAS command question - parisse - 01-07-2017, 07:52 AM
RE: CAS command question - compsystems - 01-06-2017, 06:59 PM
RE: CAS command question - Han - 01-06-2017, 08:27 PM
RE: CAS command question - compsystems - 01-06-2017, 08:46 PM
RE: CAS command question - DrD - 01-07-2017, 11:25 AM
RE: CAS command question - parisse - 01-07-2017, 08:15 PM
RE: CAS command question - DrD - 01-07-2017, 10:54 PM
RE: CAS command question - DrD - 01-08-2017, 05:27 PM
RE: CAS command question - parisse - 01-09-2017, 06:43 AM
RE: - compsystems - 01-07-2017, 01:02 PM
RE: CAS command question - Dirk.nl - 01-07-2017, 09:32 PM
RE: CAS command question - parisse - 01-08-2017, 07:11 AM
RE: CAS command question - DrD - 01-08-2017, 09:47 AM
RE: CAS command question - compsystems - 01-08-2017, 04:17 PM
RE: CAS command question - DrD - 01-08-2017, 08:26 PM
RE: CAS command question - compsystems - 01-08-2017, 06:48 PM
RE: CAS command question - parisse - 01-09-2017, 04:43 PM
RE: CAS command question - DrD - 01-09-2017, 06:09 PM
RE: CAS command question - parisse - 01-09-2017, 06:58 PM
RE: CAS command question - Han - 01-09-2017, 07:29 PM
RE: CAS command question - DrD - 01-09-2017, 10:57 PM
RE: CAS command question - Han - 01-10-2017, 05:44 AM
RE: CAS command question - parisse - 01-10-2017, 07:58 AM
RE: CAS command question - DrD - 01-10-2017, 10:53 AM
RE: CAS command question - Han - 01-10-2017, 03:33 PM
RE: CAS command question - parisse - 01-10-2017, 06:58 PM
RE: CAS command question - Han - 01-10-2017, 09:14 PM
RE: CAS command question - compsystems - 01-10-2017, 08:26 PM
RE: CAS command question - parisse - 01-11-2017, 06:46 AM
RE: CAS command question - DrD - 01-11-2017, 02:18 PM
RE: CAS command question - Han - 01-11-2017, 08:19 PM
RE: CAS command question - parisse - 01-11-2017, 05:40 PM
RE: CAS command question - DrD - 01-12-2017, 11:14 AM
RE: CAS command question - Arno K - 01-12-2017, 12:44 PM
RE: CAS command question - parisse - 01-12-2017, 07:29 PM
RE: CAS command question - DrD - 01-12-2017, 08:44 PM
RE: CAS command question - Arno K - 01-12-2017, 10:11 PM
RE: CAS command question - parisse - 01-13-2017, 06:54 AM
RE: CAS command question - DrD - 01-13-2017, 10:52 AM
RE: CAS command question - Han - 01-13-2017, 03:12 PM
RE: CAS command question - DrD - 01-13-2017, 04:47 PM
RE: CAS command question - parisse - 01-13-2017, 09:18 PM
RE: CAS command question - DrD - 01-13-2017, 10:36 PM
RE: CAS command question - parisse - 01-14-2017, 06:44 AM
RE: CAS command question - compsystems - 01-14-2017, 02:40 AM
RE: CAS command question - DrD - 01-14-2017, 11:36 AM
RE: CAS command question - parisse - 01-14-2017, 12:25 PM
RE: CAS command question - compsystems - 01-14-2017, 01:05 PM
RE: CAS command question - DrD - 01-14-2017, 02:20 PM
RE: CAS command question - parisse - 01-14-2017, 07:27 PM
RE: CAS command question - DrD - 01-14-2017, 02:11 PM
RE: CAS command question - Dirk.nl - 01-14-2017, 02:46 PM
RE: CAS command question - Mark Hardman - 01-14-2017, 02:58 PM
RE: CAS command question - John P - 01-14-2017, 03:11 PM
RE: CAS command question - DrD - 01-14-2017, 03:17 PM
RE: CAS command question - Dirk.nl - 01-14-2017, 03:27 PM
RE: CAS command question - DrD - 01-15-2017, 09:30 AM
RE: CAS command question - compsystems - 01-14-2017, 03:31 PM
RE: CAS command question - compsystems - 01-15-2017, 01:28 AM



User(s) browsing this thread: 8 Guest(s)