On May 20, 2016, at 1:35 AM, Ted Kosan <ted....@gmail.com> wrote:If anyone has questions, comments, or bug reports, please submit them
to the Math Future group.
On May 20, 2016, at 1:35 AM, Ted Kosan <ted....@gmail.com> wrote:If anyone has questions, comments, or bug reports, please submit them
to the Math Future group.In MATCHING TREE PARTS USING PROPERTIESI'm getting unexpected results for negative integers.Consider the expression:In> tree8 := '((1* -2 + x) == 3*(4 - -5/x))the subexpression -5/x is interpreted as -(5/x) rather than (-5)/xand pattern n_Integer highlights only the 2 and 5, not -2 and -5.I would admit that programming languages, and even conventional math notation, tend to obscure the differences among subtraction, negation, and negative numbers,
On May 20, 2016, at 10:23 PM, Ted Kosan <ted....@gmail.com> wrote:Wolfram Alpha also appears to parse -5/x as -(5/x).
> It's difficult to argue with "success", but I'm > not in universal agreement with Wolfram. Are you aware of a definitive interpretation in mathematics for what the precedence rules are for all of the arithmetic operators? My understanding is there are different interpretations (https://en.wikipedia.org/wiki/Order_of_operations). In Patternatics I am thinking of putting in place a student right to have all mathematical expressions that are given to them in homework and on tests to be provided in fully parenthesized form to eliminate all chances of ambiguity. > I also understand that parsing infix operator > expressions with general precedence and a > mixture of left and right ordering is non-trivial; > I'm looking forward to seeing how you do it. In MathPiper, the arities, precedences, and associativities of all operators are configurable using MathPiper code. The following section of the file src/org/mathpiper/scripts4/a_initialization/stdopers/stdopers.mpw is where these properties of the arithmetic operators are defined in the MathPiper library: %mathpiper Infix("+",70); OperatorSpacesSet("+", "Infix", " ", " "); Infix("-",70); OperatorSpacesSet("-", "Infix", " ", " "); RightPrecedenceSet("-",40); Infix("/",30); OperatorSpacesSet("/", "Infix", "", ""); Infix("*",40); OperatorSpacesSet("*", "Infix", "", ""); Infix("^",20); LeftPrecedenceSet("^",19); RightAssociativeSet("^"); OperatorSpacesSet("^", "Infix", "", ""); Prefix("+",50); OperatorSpacesSet("+", "Prefix", " ", ""); Prefix("-",50); OperatorSpacesSet("-", "Prefix", " ", ""); RightPrecedenceSet("-",40); %/mathpiper > Since you are making a point of keeping > "rationals" rational, e.g. you define / with > higher precedence than * and don't approximate > with decimals, I might have supposed you would > also want to keep integers integral and not > confound them with Naturals. :-) (BTW, it seems > that even so, a "rational" like 3/4 will be > interpreted as division of integers, not as an > atomic number.) The word "interpreted" you used here is the key to understanding how a CAS which is based on transformation rules works. When an expression such as '((1* -2 + x) == 3*(4 - -5/x)) is parsed, the ' "Hold" operator prevents it from being evaluated. This means that the tree that is placed into memory is a "dead" tree that does not have any interpretation associated with it beyond the structural relationships which exist between the operators and their operands. The interpretations that MathPiper provides for operators and operands are defined in the global transformation rules that are stored in the rulebase. Evaluating a tree consists of recursively applying these rules/interpretations until the tree has been completely interpreted. Most procedures in MathPiper, including the "Integer?" procedure, have all of their arguments evaluated before they receive them. This is why the "Integer?" procedure will normally return "True" when -2 is passed to it: In> Integer?(-2) Result: True When evaluation of the "Integer?" procedure's argument is prevented by using the ' "Hold" operator, what is passed to this procedure is an uninterpreted tree that it does not interpret as being an integer: In> Integer?( '(-2) ) Result: False The structural difference between the evaluated version of -2 and the unevaluated version of -2 can be seen by using the "Show TreeView", "ViewList", or "UnparseLisp" procedures. Since this is a simple tree, lets use "UnparseLisp". Notice that the evaluated version of -2 returns a number in atom form while the unevaluated version returns a tree consisting of the "-" operator and its operand "2": // Evaluated. In> UnparseLisp(-2) Side Effects: -2 // Unevaluated. In> UnparseLisp( '(-2) ) Side Effects: (- 2) MathPiper has tracing procedures that can be used to view the sequence of rules that are applied to a tree while it is being evaluated. Lets use the "TraceExcept" procedure to see if we can identify the global transformation rule that transforms -2 from a dead tree into a number atom. %mathpiper TraceExcept("") -2; %/mathpiper %mathpiper Result: -2 Side Effects: Enter<**** user rulebase>{(-, -2); Arg(arg1 -> 2); Enter<builtin>{(Number?, Number?(x)); Arg(parameter1 -> 2); Leave<builtin>}(Number?(x) -> True, Local variables: x -> 2, arg1 -> 2, ); **** Rule in function (-) matched: Precedence: 55, Rule Type: org.mathpiper.lisp.rulebases.PatternRule, Arity: 1, Parameters: arg1<hold=false>, Predicates: (Pattern) Number?(x), True, Variables: x, Types: Variable: _; , Body: SubtractN(0, x) Enter<builtin>{(SubtractN, SubtractN(0,x)); Arg(parameter1 -> 0); Arg(parameter2 -> 2); Leave<builtin>}(SubtractN(0,x) -> -2, Local variables: x -> 2, arg1 -> 2, ); Leave<**** user rulebase>}( -2 -> -2, Local variables: x -> 2, arg1 -> 2, ); . %/mathpiper_trace The line in the above output that starts with "**** Rule in function (-) matched: Precedence: 55" indicates that the global transformation rule that performed the transformation is in the section of the rulebase that holds the definitions for the "-" operator. It also indicates that this rule has precedence 55. In the "MathPiperDocs" plugin, if the documentation for the "-" operator is opened, and the "View source code" link at the bottom of the page is selected, a copy of the worksheet that holds the global rule definitions for the "-" operator are brought up in the editor. The following transformation rule is the one that transforms the dead tree (- 2) into the number atom -2: %mathpiper 55 # (- (x_Number?)) <-- SubtractN(0,x); %/mathpiper > Where I'm headed with this is the hierarchy of > numbers: Naturals, Integers, Rationals, Reals, > Complex, ???, and on to "units" numbers, Vectors, > Tensors, etc. I expect to have more to say about > this; I am just looking forward to being able to > "say" it in MathPiper! > > And besides numbers, we need to be able to talk > about Groups. If you locate the documentation for the "Complex" procedure in the "MathPiperDocs" plugin, and select the "View source code" link that is at the bottom of the page, the worksheet that defines the transformation rules for complex numbers will be brought up in the editor. These rules may give you some ideas on how to handle the other mathematical objects you listed. Ted
Joe wrote:> It's difficult to argue with "success", but I'm > not in universal agreement with Wolfram. Are you aware of a definitive interpretation in mathematics for what the precedence rules are for all of the arithmetic operators? My understanding is there are different interpretations (https://en.wikipedia.org/wiki/Order_of_operations).
Precedence
Math traditionally gives multiplication precedence over addition. In math class (or a skill testing question from a cereal box contest), if you were asked what 2 + 3 * 4 was, you would know the answer was 14.
This is not too confusing if there are only a few functions and only a few levels of precedence (division | multiplication | addition and subtraction). But it gets awkward in languages such as C which have many functions and many levels of precedence.
With the large number of verbs in J it would have been difficult to define the precedence, let alone trying to remember it when reading or writing. Moreover, being able to name things means you would also have to figure out what to do with the sentence:
2 plus 3 times 4
In a break with traditional math and in contrast to most other programming languages, J has no verb precedence. It will take you a little while to stop doing the multiplication first, but the overall simplification is worthwhile.
Remember: there is no verb precedence.
On May 21, 2016, at 6:18 PM, Ted Kosan <ted....@gmail.com> wrote:Are you aware of a definitive interpretation in mathematics for what the precedence rules are for all of the arithmetic operators? My understanding is there are different interpretations
On May 21, 2016, at 7:29 PM, kirby urner <kirby...@gmail.com> wrote:In a language such as J, the successor to APL, we have so many operators that trying to maintain precedence by ordering is simply too much overhead.
On May 23, 2016, at 2:28 AM, Ted Kosan <ted....@gmail.com> wrote:I have thought about the possibility of giving MathPiper the ability
to use icons as operators. This would enable people to draw their own
custom operators, and we may be able to have them registered with the
MathPiper project to prevent conflicts. I think students of all ages
would learn quite a bit from creating their own custom operators and
then writing transformation rules for them.
of this World).you could say we're in a branch of Chaos Math (fractals a denizenlittle will change the sig a whole lot i.e. butterfly effects matter andWith the bitcoin model, you have these one-way functions that hashstrings to give a unique fingerprint. Altering the string even just a
So all these CPUs and GPUs scream through a space by trial and
error, hoping to reverse-solve a simple hash. The system calibrates
the space of the answers (the possible answer key) to force a 10
minute solution on average, if that makes sense (I'd think adding
a bit would double the time so how does one do a merely linear
adjustment here again?).
On May 25, 2016, at 4:35 AM, Ted Kosan <ted....@gmail.com> wrote:Can you explain in more detail what you mean by a clear break between a conventional formula and a tree representation of that formula?
On May 25, 2016, at 4:35 AM, Ted Kosan <ted....@gmail.com> wrote:Have you programmed in Java at all? You might find looking through the Java source code of MathPiper's implementation to be interesting.
On May 25, 2016, at 4:35 AM, Ted Kosan <ted....@gmail.com> wrote:The following video shows an earlier version of the "Manipulate" procedure I have been working on, but it should be close enough to the current version of "Manipulate" to understand how to use it:
https://www.youtube.com/edit?o=U&video_id=kYtsQ_PczlY
On May 26, 2016, at 12:55 PM, Ted Kosan <ted....@gmail.com> wrote:OK, that one works better, but I'm getting no audio on my mac.
On May 26, 2016, at 8:16 PM, Ted Kosan <ted....@gmail.com> wrote:Joe wrote:
> OK, that one works better, but I'm getting no audio on my mac.
I should have mentioned that this is a test video which does not have any sound.
When I started working with expression trees, they cleared up various misconceptions I had about how mathematical expressions were structured.
> 1. In the formula
> In> Manipulate('(-20 == -4*x - 6*x))
>
> I would have expected the "-4" to be parsed as a negative coefficient
> instead of as unary minus of the product.
> Of course, they evaluate to the same thing.
I used to expect this too, but unary minus has a lower precedence than the "*" operator does. The Khan Academy math parser also parses -4*x as the unary minus of the product. This can be seen by entering "-20 = -4*x - 6*x" into the following expression structure tool:
http://patternmatics.org/test/expression_structure.html
> 2. In Manipulate, rule 11:
> q_ * q_ + q_ <-- (r + 1) * q
>
> Shouldn't it have an r_ in the LHS, as:
> r_ * q_ + q_ <-- (r + 1) * q
Yes, this is a bug! However, the rule was specified correctly as r_ * q_ + q_, and the bug was in the LaTeX that displayed the rule
> 3. In general, I'm not sure why there are not underscore variables q_, r_ etc. on all the
> RHS of the Manipulate rules (as for example, on Rule 17 Distribute).
> Aren't all the RHS terms also trees?
In MathPiper's transformation rules, if the pattern on the left side of the <- or <-- operators matches, the subtree that matched each underscore variable in the pattern is assigned to the variable part of the underscore variable. For example if '(1 + 2) matched the pattern variable q_, then '(1 + 2) will be assigned to a local variable named "q" in the "replacement_tree" part of the rule. These local variables are in the scope of the replacement tree which is on the right side of the <- or <-- operators, and they are also in the scope of the post predicate code.
> 4. The significance of the color code in the Manipulate rules is not clear.
> I gather that the blue represents operators, or tree roots.
> But what is the significance of the yellow?
The parts of the patterns that are in orange serve to highlight the syntactic effect that the rule will achieve. For example, in rule 10 "Eliminate Unknown 1", both copies of the pattern variable "s_" should contain the unknown, and applying the rule will replace the matched subtree that has two copies of the unknown with a subtree that only has a single copy of the unknown. As I am looking at this color scheme, I think it may be helpful to apply the highlighting to the right side of the rules to.
> 6a. I can see that you have introduced additional rules to handle multiple occurrences
> of the unknown. I'm assuming these are sufficient for formulas linear in the unknowns,
> but not for non-linear, as there are no rules for powers, roots, and logs. Perhaps not
> even ratio and proportion: x/y = u/v ?
The equation solver and the manipulator are a work in progress, and I wanted to get the tree visualization tools and the explanation system working before I added support for more advanced mathematics.
> (In my classes, I had never gone beyond one linear occurrence of the unknown.)
What was the reason for never gone beyond one linear occurrence of the unknown?
> 6b. It takes some contortions to un-distribute "ax - bx" to (a-b)x.
> I was able to do so by converting to (ax + (-b)x),
> but I'm uneasy in general with the idea of converting subtraction of a term to sign of a factor.
> [That's not what I would like to teach students to do;
> I"m not sure it generalizes beyond integers.]
> Is there a reason for not having rules for - and /,
> or alternatively, generalized rules for addop and mulop
> that include both + - and * / respectively?
There is a trade-off between the number of rules provided and the visual complexity of the rules as a whole. The greater the number of rules that are provided, the more choices the user has for applying manipulations. However, the greater the number of rules that are provided, the more rules the user needs to look through.
> or alternatively, generalized rules for addop and mulop
> that include both + - and * / respectively?
The current set of rules is designed to minimize visual complexity. However, the system is able to support multiple sets of rules and other ones can be optimized for other purposes.
> 8. But I'm always looking for improvements:
> I realize it would be a presentation challenge,
> but could the rules be displayed in tree form (as in the left pane)
> rather than in linear form?
Providing tree forms for the rules is on my todo list.
An issue related to this is in some manipulation systems instead of manipulating the tree to match the rules, the rules are manipulated to match the tree.
> 9. An alternative "tree" format is "outline" form, something like this:
>
> ('(-20 == -4*x - 6*x))
>
> == ..
> |
> -20
> |
> - .
> |
> * ..
> | |
> | -4
> | |
> | x
> |
> * ..
> |
> 6
> |
> x
This format looks interesting, and I think an unparser can be written for it.
Ted
--
You received this message because you are subscribed to the Google Groups "MathFuture" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mathfuture+...@googlegroups.com.
To post to this group, send email to mathf...@googlegroups.com.
Visit this group at https://groups.google.com/group/mathfuture.
For more options, visit https://groups.google.com/d/optout.
On May 28, 2016, at 3:46 AM, Ted Kosan <ted....@gmail.com> wrote:I think I can see were you are going with a tree/graph editor and
teaching students how to think of problems in tree form. I don't think
GeoGebra can edit trees and graphs. However, if we can find a
Java-based open source tree and graph editor you like I may be able to
add it to MathPiperIDE as a plugin. Jung and JGraphX are two that come
to mind:
https://www.google.com/search?q=jung+graph&hs=ita&channel=fs&source=lnms&tbm=isch&sa=X
https://www.google.com/search?q=jgraphx&espv=2&biw=1920&bih=945&source=lnms&tbm=isch&sa=X
Do either of these two look like they would work for what you have in mind?
On May 28, 2016, at 5:28 AM, Ted Kosan <ted....@gmail.com> wrote:Wow, you are picking this manipulation system up quick! It appears you are at a point where you can start adding rules to the manipulator yourself.
On May 28, 2016, at 8:43 AM, Bradford Hansen-Smith <wholem...@gmail.com> wrote:Ted, thank you for the Harvey Reid reference.He speaks clearly to the problem I encounter with the 2-D concept and use of the circle and then folding circles as multi-dimensional beyond the flat linear thinking in math language, and now in programing technology. We do not understand the difference between spatial experience and a 2-D description that represents the abstraction of spatial experience.
http://www.woodpecker.com/writing/essays/guitarnotation.html
On May 25, 2016, at 4:35 AM, Ted Kosan <ted....@gmail.com> wrote:
Joe Wrote:What I'm nervous about is that a "tree" is being represented as a "string",
> which requires some kind of convention to identify the "root" and the order of the leaves,
> which is a very iffy convention if you have to mix operators with different numbers of operands and order of evaluation.
On May 28, 2016, at 5:28 AM, Ted Kosan <ted....@gmail.com> wrote:If you want to add more rules, I recommend that you use "Define q_ - r_" as a template and modify it. Just keep increasing the ManualSequence number for each new rule you make.
In these rules, "Head" is the rule's pattern, "Guard" is the post predicate, and "Body" is the replacement tree. The rule descriptions are a work in progress.
I am interested to see what manipulation rules you come up with!
On May 31, 2016, at 1:37 AM, Ted Kosan <ted....@gmail.com> wrote:What I am hoping is that students can first learn how equation solving
works at this high level of detail so they really understand what
axiomatic systems are and how they work. Then, when they use more
advanced solvers such as the following one, they should have a better
understanding of the mathematics involved in producing a solution:
In> Solve((_x + _a)*(_x - _a) == 0, _x)
Result: [_x == _a,_x == -_a]
Ted
On May 31, 2016, at 1:37 AM, Ted Kosan <ted....@gmail.com> wrote:What I am hoping is that students can first learn how equation solving
works at this high level of detail so they really understand what
axiomatic systems are and how they work. Then, when they use more
advanced solvers such as the following one, they should have a better
understanding of the mathematics involved in producing a solution:
In> Solve((_x + _a)*(_x - _a) == 0, _x)
Result: [_x == _a,_x == -_a]
TedOf course, the challenging direction would be:Solve( _x^2 - _a^2 == 0, x)Can't do that with the "rules of algebra" that are included in the current set--no power and root operators, or even divide.
On Jun 1, 2016, at 1:34 PM, Ted Kosan <ted....@gmail.com> wrote:This need to have students understand how mathematical expressions are
related to interpretations brings us back to the need to teach
students logic starting at a very early age.
On Jun 1, 2016 15:15, "Joseph Austin" <drtec...@gmail.com> wrote:
>
>
>> On Jun 1, 2016, at 1:34 PM, Ted Kosan
> Square and cube: ratio of length, area and volume of rectangular surface or solid to unit length.
This one is not constant though. Volume:Length is a 3rd power relationship I.e. 2x length -> 8x volume (4x area). True for any shape, not just squares and cubes. You didn't say constant so I'm not correcting, just agreeing this set of changing ratios is important.
Kirby
On Jun 1, 2016, at 1:26 AM, kirby urner <kirby...@gmail.com> wrote:CAS in general is able to solve such problems. I was playing with Sympy this evening:Python 3.5.1 |Anaconda 2.4.0 (x86_64)| (default, Dec 7 2015, 11:24:55)[GCC 4.2.1 (Apple Inc. build 5577)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> from sympy.solvers import solve>>> from sympy import Symbol>>> x = Symbol('x')>>> solve(-4*x - (6*x) + 20, x)[2]>>> a = Symbol('a')>>> solve(x**2 - a**2, x)[-a, a]>>>Kirby
On Jun 3, 2016, at 12:23 AM, Ted Kosan <ted....@gmail.com> wrote:The
following website contains most of the research papers that have been
written on PRESS:
http://www.research.ed.ac.uk/portal/en/persons/alan-bundy%28bfb547ed-a4df-4a6c-b1be-8ecd9b13419f%29/publications.html?pageSize=all&page=0
One old guy asking another, what does smart mean? Is it just accumulated knowledge or does it include life experience that together progressively generates understanding sometimes called wisdom. Maybe this term is not part of a deterministic world of computers and machines. It would be good to know if we have discarded the concept of wisdom having simply given it over to the functional value of a programmer's skill.
On Sun, Jun 5, 2016 at 6:00 AM, Bradford Hansen-Smith <wholem...@gmail.com> wrote:One old guy asking another, what does smart mean? Is it just accumulated knowledge or does it include life experience that together progressively generates understanding sometimes called wisdom. Maybe this term is not part of a deterministic world of computers and machines. It would be good to know if we have discarded the concept of wisdom having simply given it over to the functional value of a programmer's skill.Useful query. This being a Sunday, renamed First Day in the Quaker namespace by Puritan intruders who had a problem a so-called "pagan language" (real Quakers don't -- but sometimes say First Day anyway, finding it charming), I'm in the mood to ponder a query such as the above. Means: open ended question.Big for me these days is ye old "phase space" meme as that's what gives us permission to call anything a "space" provided we're willing to parameterize it with some not-causally-colluding independent inputs. Actually the inputs may well be entangled but for our purposes we have an API of input pins and output pins along with documented and tested behavior. "If you do this, I do that" says the chip instructions. Some of them even run instructions, as controlled by these pins (programs and data, all just more bits).We know anything too mono-dimensional and universe,
Bradford wrote:
> One old guy asking another, what does smart mean? Is it just accumulated
> knowledge or does it include life experience that together progressively
> generates understanding sometimes called wisdom. Maybe this term is not part
> of a deterministic world of computers and machines. It would be good to know
> if we have discarded the concept of wisdom having simply given it over to
> the functional value of a programmer's skill.
Computation is controlled deduction, and the development of deduction
is one of the crowning achievements of the human race because it
enables a very high level of precision in thinking to be achieved. I
think much of the value humans obtain from computers comes from the
fact that they force the humans who program them to think precisely.
Instead of the world of computers discarding the concept of wisdom, I
think it puts pressure on humans to precisely define what wisdom is. I
have read that "wisdom" has a technical meaning that is so central to
reality that each of the world's main scriptures and myths have the
following symbols for it:
Greece: Hera/Fire
Rome: Juno
Iran: Armaiti
Scandinavia: Frigg
Chaldea: Istar
Christian: Holy Ghost
Kabbalah: World of Emanation
Ottoman Sufi: Relatively Invisible
Indian: Buddhi
Egypt: Isis
Japan: Ama-terasu
China: Fire
Medieval: Fire
Ted
On Jun 5, 2016, at 1:26 PM, Ted Kosan <ted....@gmail.com> wrote:I think much of the value humans obtain from computers comes from the
fact that they force the humans who program them to think precisely.
Kirby,I've observed that society tends to start doing things for very good reasons,then keep doing them because "we've always done it that way"long after the original reasons are gone or even contradicted.
For example:Prior to the widespread availability of the typewriter, one could make a good case for teaching cursive penmanship.
Prior to the widespread availability of calculators, one could make a good case for teaching the multiplication table, long division, etc.
Prior to the "discovery" of binary and hexadecimal in the context of computers, one could make a case for teaching the decimal number system (though some cultures preferred twelve or sixty).
In NC, the state legislature is currently debating abandoning the recently-adopted Common Core "Integrated" Math Curriculum of Math I, II, III and returning to the traditional Algebra 1, Geometry, Algebra 2 sequence.One item of contention is the course Advanced Functions and Modeling.
This seemed like the kind of course I have been suggesting,though it is said to be oriented to non-math majors,
and placed at the end of the curriculum rather than the beginning. (In an earlier life, I had worked alongside a math professor who was actively engaged in an "Algebra Reform" project, and it seemed they were taking a similar "data first" approach.)Looking at the final exam, howeverI have my doubts that the course actually teaches anything about the practical use of mathematics.In contrast, given the significance of computers in contemporary society, it seems reasonable to insist that all citizens be familiar with the basic principles of their functioning, and equipped to use readily available programming systems to create (or customize) apps for their readily available devices. Then in some future century, our descendants will wonder why they are still teaching kids "coding" when everything is being run by artificial intelligence!Joe Austin
On Jun 4, 2016, at 9:38 PM, Ted Kosan <ted....@gmail.com> wrote:I am hoping we can use the new techniques to
create a third kind of person:
3) Those who understand how to do math and can do it.
What we tend to do instead is keep doing the same thing, hoping for a different result, which is Einstein's definition of insanity.
Joe
On May 21, 2016, at 6:18 PM, Ted Kosan <ted....@gmail.com> wrote:In MathPiper, the arities, precedences, and associativities of all operators are configurable using MathPiper code. The following section of the file src/org/mathpiper/scripts4/a_initialization/stdopers/stdopers.mpw is where these properties of the arithmetic operators are defined in the MathPiper library:
…/mathpiperide_source_dist_v901_beta/src/library_apps/mathpiper4/
So is it enough to edit that section and reexecute it,
On Jun 6, 2016, at 9:42 PM, Ted Kosan <ted....@gmail.com> wrote:%mathpiper
Retract("/", 1);
Prefix("/", 50);
RulebaseHoldArguments("/", ["u"]);
/u_ <-- 1/u;
%/mathpiper
Joe,
I forgot to add the following line of code to the example:
LibraryLock(False);
Ted
--
On Jun 9, 2016, at 5:18 AM, Ted Kosan <ted....@gmail.com> wrote:
I just released version .902 of MathPiperIDE, and it has initial support for creating custom rule sets for "Manipulate".
On Jun 10, 2016, at 8:13 PM, Ted Kosan <ted....@gmail.com> wrote:Try changing the precedence of the new unary / operator from 50 to 30:
Prefix("/", 30);
On Jun 10, 2016, at 8:02 PM, Ted Kosan <ted....@gmail.com> wrote:Joe wrote:However: I noticed I could not apply the "Undefine" rules to the negative numbers--
not sure how useful that might have been.
It is interesting that there are the following two forms for negative
numbers. For example, -1 can be represented by a unary - operator that
has '1' as its operand:
a)
In> UnparseLisp('(-1))
Result: -1
Side Effects:
(-
1)
b)
As a 32 bit int in two's complement form: 0xFFFFFFFF.
Are you saying that the undefine rule for unary minus operators was
able to undefine a number that was in form a) ?
If you
would like to continue playing with MathPiper after the last lesson
has been submitted, we will probably move the discussion over to the
MathPiper developer list.
Steps and integrated ruleset attached, FYI.
Ted