DragginMath: About DragginMath Notation

Because it uses a screen and keyboard, DragginMath must read and write a math notation that is only similar to what we traditionally write on paper. The differences are necessary, and math in the computer era is easier to deal with if we stop pretending they are or should be the same.

One of the biggest problems with traditional math notation is that it is difficult to serialize. For example, imagine trying to collaborate with a friend over the telephone on a complicated algebra problem. There is a traditional formal language for speaking math, but it works poorly for any but the simplest expressions. Few people learn this language. Even fewer are willing to use it. Whether people use it or not, the usual result is a frustrating mess. Traditional notation assumes you can see it. If you can’t, life gets difficult.

In the 1950s, computer pioneers saw the need to create math notations that were easy to serialize. These notations were the foundation of programming languages. Many people recoil in terror at the mention of programming languages on the assumption they must be complicated and hard to learn. There are aspects of computer programming that are difficult, but the languages themselves are usually quite simple, and most have their origins in traditional math notation.

DragginMath uses programming language technology to listen to your keyboard and present algebra to you on the screen. This is simpler than the corresponding concepts as they are traditionally taught in algebra classes. If you already know algebra, some of the differences will surprise you. If you don’t already know algebra, welcome to a newer, easier world of mathematics. You will eventually have to learn about what came before, and DragginMath gives you a better path to understanding it when you do.

Speaking and Writing are the Same

Read the symbols and just say the corresponding words in order. There are no special keys. There are no tiny characters. There are no grouping symbols other than parentheses. Say open and close instead of the quantity. Say over instead of divided by. Say raise instead of to the. The crossbars (vinculum) of ÷ and do not exist in this notation; use open and close shamelessly to delimit operands wherever needed. The distinctions between the three uses of dash and two uses of ÷ disappear when typing, but you can say the proper words when reading because it makes you a better person.

( Open. Just open. No left parenthesis or parenthesee (which is not even a word).
) Close. Just close. No right parenthesis or parenthesee (which is still not a word).
+ Plus.
Minus.
Times.
÷ Over.
Negate. A prefix unary operator. Written shorter than . Type .
Negative. Written prefixed, small, and high up. Type .
± Plus-and-minus or Wobble. Both binary and unary.
|| Absolute. A prefix unary operator. ||x means traditional |x|.
Invert. A prefix unary operator. Type ÷. Most fonts put too much whitespace after ⅟. Sorry.
= Equals. Also all of the inequality relations < ≤ ≠ ≥ >.
Raise. a↑b means traditional ab. Unary ↑x means traditional ex.
Root. a√b means traditional a√b. For traditional a√b, write a∗√b. Unary √x means 2√x.
Log. a↓b means traditional logab. Unary ↓x means traditional ln x.
! Factorial. A postfix unary operator.
¡ Antifactorial. A postfix unary operator. Inverse of !
Permute. aⓟb means permute a things b at a time.
Combine. aⓒb means combine a things b at a time.
≕ Assign. Associate an expression with a name. Not the same as =.
; Semicolon. For separating expressions.
End. For those rare times when you need to say this explicitly.
Begin. For those even rarer times when you need to say this explicitly.

Operator Precedence & Associativity

One of the fixtures of traditional notation is Operator Precedence: the idea that some operators bind more tightly together than others. For example, 2+3*4 = 14, not 20. This has a basis in practical experience. Operators really do tend to group together in certain ways, and Operator Precedence makes it easier to write the majority of expressions.

The way Operator Precedence is traditionally taught is a mistake from the outset. It is complicated and generates isolated parts of the result in the wrong order, making it hard to understand either the process or its outcome. However, this is the standard technique that has the weight of generations of pedagogy behind it. Most people can’t imagine an alternative and are annoyed at the suggestion that one might exist.

In the 1960s, computer scientists developed another way of reading expressions that is inherently simpler than the traditional process. Sixty years later, the Math Ed community still does not know about this. DragginMath uses this newer way of reading expressions. The process is visible on the screen whenever you enter an expression into the app.

A related issue is Associativity: when you write a+b+c, does that mean (a+b)+c or a+(b+c)? Most operators are traditionally left-associative. Add is the basic example, where a+b+c means (a+b)+c. Raise is the exception, where a↑b↑c means a↑(b↑c) unless you are in a spreadsheet, where it means (a↑b)↑c.

Regardless of how these things are processed, it is necessary to know the precedence and associativity of each operator. This information is usually presented in a table, where higher position in the table denotes higher precedence and stronger binding.

OperatorCategoryArityAssociativity
! ¡FactorialUnary PostfixLeft
↑ √ ↓ExponentialBinary and Unary PrefixRight or Left, See (1) below.
– ± || ⅟SignUnary Prefix, See (2) below.Right
ⓒ ⓟCombinatoricBinaryLeft
∗ ÷MultiplicativeBinaryLeft
+ − ±AdditiveBinaryLeft
= < ≤ ≠ ≥ >RelationBinaryLeft
AssignmentBinaryLeft
;SeparatorBinaryLeft

While there is broad agreement on the content of this table, some contentious exceptions and special cases exist. On its Configuration ☰ screen, DragginMath gives you control over these directly so you can play with the alternatives.

  1. Choose the Associativity of Raise, Root, and Log. Traditionally, each of these have special notations all their own. In DragginMath, they are ordinary operators with both binary and unary forms, and all have the same associativity. A configuration switch lets you choose Left or Right Associativity. Only spreadsheets use a left-associative Raise. While chained raises can be done in spreadsheets, one can realistically wonder if anyone ever has. But it would be irresponsible not to at least bring this choice to your attention, and DragginMath lets you make the choice.
  2. Choose the relative Precedence of Raise↑ vs. Negate . This is actually a choice for all exponential operators ↑√↓ vs. all unary sign operators -±⅟||. The consensus in math is -a↑b = -(a↑b), but the Fortran programming language standard asserts that -a↑b = (-a)↑b. Fortran is not the force it once was, and some Fortran compilers defy the standard in this regard, but once again it would be irresponsible not to at least bring this choice to your attention.
  3. Choose whether writing a dash in front of a numeral such as 1 is understood as -1 (negate 1) or ⁻1 (negative 1). Since people doing algebra on paper don’t need to distinguish strongly between these two forms, most don’t even know this can be a problem. Yes, it can be a problem, and when writing math with a keyboard that provides only the dash , one must take a stand. There are good arguments for either choice, and this can interact in unpleasant ways with Choice (2), above.

Perhaps you already have strong opinions about these choices. Whatever your opinions, if you seriously play around with the choices, you may find your strong opinions wavering. Sometimes a decent education consists of learning that the world is simply not as simple as we might like.