#### Fōrmulæ is an open source framework for collaborative, symbolic computation

### Symbolic computation

Symbolic computation refers to the study and development of algorithms and software for manipulating mathematical expressions and other kind of objects as arrangements of symbols.

### Symbolic computation frameworks

A symbolic computation framework, in general is a specification for how symbolic expressions are defined, created, manipulated, etc.

The Fōrmulæ framework, in particular, also provide specifications for the following:

- How expressions are graphically visualized
- How expressions are edited
- How expressions are transformed in other expressions, by a process of simplification or reduction

The Formulæ framework is provided as a Java library, so programmers can use it to create Java programs that manipulate expressions symbolically.

Moreover, a programmer can use the Formulæ library to define -in terms of code- how an specific set of expressions are defined, visualized, edited and/or simplified. That set of expressions usually belongs to a specific field of knowledge, i.e. algebra, physics, chemistry, etc.

### Packaging

The code written by a programmer, defining how a set of expressions are visualized, edited and/or reduced can be packaged as a single file that can be easily transported and published, so there can be packages for arithmetic, plotting functions, astronomy, etc. written independently by different programmers

### Integrating packages

Several packages, from different sources can be dynamically attached to a single program, in order that it can symbolically manipulate the expressions the packages contain.

Even when packages are written by different persons, at different times, once they are joined, they are able to cooperatively work with each other.

### Front ends

The Fōrmulæ library is a specification, not a end user program. It can, however be used to write a front end program intended to manipulate expressions symbolically.

As a branch of the Fōrmulæ project, there is the development of a front end program, called **"Desktop"**. It works in a similar way to a CAS, this is, creating a set of of question-answer expressions.

- It can dynamically load packages
- It can create and edit expressions included in the loaded packages
- It can invoke the reduction or simplifications of expressions created, according with the rules provided in the loaded packages
- The work can be saved/loaded to/from a file

Other front ends programs can be written, for different interfaces, i.e. as a spreadsheet or integrated with a handwriting recognition program

### Practical uses

They can be used in several ways. The following are a few examples:

- You can use it as a computer algebra system (CAS), much like Mathematica, Mathlab, Maple, etc.
*(trademarks of their respective owners)*. Unlike those, you can select and use the packages you need, and you don´t have functionality you will never use. - It can be used as a graphics program, in which can draw formulae, diagrams, functions plots, charts etc. and save or export them to other programs.
- It can be used as a tool for teaching. i.e., for teaching how to program, it can help to build programming structures either by flowchart or indented code. They do not only look good, they actually run.
- It can be used as a scripting programming language. These scripts are language and platform independent.
- If you are a programmer, you can use it to dynamically ask the user to introduce formulae and expressions required by your programs. It could be used by a payroll program in order to define (out of code) how the payroll is calculated,
- A researcher on computer sciences, mathematics, numerical algorithms, etc. could publish his/her work with an expression package containing the results of his/her research in order to other persons could immediately use it