Sym is a tool for creating and manipulating symbolic content. By symbolic content, we mean both mathematical expressions and other symbolic content (source code is one example). Almost anything that can be represented as a tree of symbols can potentially be content in Sym.

While Sym can do many things, it's mainly a tool for creating and manipulating equations. When Sym was designed, there were two main goals.

The first goal was to create a fast equation editor. All you have do to create expressions is type an object name - all of the objects are available from what is called the autocomplete list. There are tools to make it easy to find the object you need.

The second goal was to make it possible to get to pretty much any form you want using just few commands- for example Simplify, Move, Expand, Factor are some of the basic commands. You just highlight a term and select a command. Each command has a keyboard shortcut.

In Sym, all of the symbolic content is rendered - so mathematical content look like mathematics, not like command line text.

Sym is also designed to be extensible. Users can create new objects and functionality to manipulate them. New functionality is created using a functional programming language built into the application. This new content can be packaged into libraries which can then be included in other documents. As a result, the objects and functionality available in any Sym document depend almost entirely on which libraries are loaded. Even the renderings are included in the libraries and Sym includes a Rendering Editor to create renderings for new objects.

Sym is also a programming language. In some ways similar to languages like Haskell and Erlang, Sym is a functional programming language that is distinct from most other languages in that "statements" in Sym are not text. Instead, they are symbolic expressions just like all of the other content in Sym documents. This leads in a natural way to functionality that can generate and modify other code.


This is an early Beta version. At this point, the "engine" that drives Sym is fully functional, but the set of libraries available is still fairly limited. It's probably fair to say that the current libraries are more of an illustration of what's possible than a complete implementation. Still, it should be possible to do a fair number of the problems typical of a first year college calculus course.

In addition, this documentation is still in development and some of the topics are only partially completed.