The MATHS Manifesto
MATHS Is Not A Programming Language.
- MATHS is not for "writing programs." MATHS uses the characters of ASCII
to express a mixture of informal and formal documentation. Some formulae can be
implemented as systems, objects, data bases, or hardware. It does not depend
on any implementation. MATHS describes ideas not algorithms. It
helps all parts of the software process. MATHS stands for "Multi-purpose
Abstractions, Terminology, Heuristics and Symbols."
MATHS is a low-cost improvement to the software process.
- MATHS is designed to make formal methods a part of the software process.
MATHS does not require expensive hardware. MATHS does not need complex
software. A laptop computer with an ASCII editor and printer is all that is
- MATHS decreases the overhead of making a "good" documentation "look
good." Rigorous specifications in MATHS can be pre-processed, without
additional marking up, ready for a text processor to prepare publication
quality documentation. Many figures can be generated automatically since many
MATHS formulae have a precise graphic representation. Tools can produce
HTML pages automatically.
- MATHS minimizes training costs by borrowing from well known notations. It
builds on ideas of Computer Science - EBNF, programming languages, data
bases.... It is simple to set up local electronic help systems for
- MATHS includes features to make documentation and source code reusable.
It enables the creation of an electronic repository of ideas, data and code
ready for reuse. MATHS lets you refer to any published
document or public Internet document and use its content.
- MATHS is not "Artificial Intelligence" but "Intelligence Amplification."
It uses the existing skills and knowledge of its users but makes the
recording of thoughts a computer aided process.
MATHS is not a method. It fits many methods.
- It will support many methods and fit with any flavor of programming.
- Methods::= Equational ADT specifications
| Data directed design (eg LCP, JSP, ...)
| Dynamic analysis and design(eg JSD, CSP, ...)
| Data analysis(Codd, Bachman, Chen...)
| Structured analysis and design(eg Yourdon, SSADM, ... )
| Backtrack Programming
| Expert Systems
| Rapid prototyping
| Flavor programming
- | ... ,
- ( hacked | literate | disciplined | extreme | agile | ...)
- & ( low_level | high_level | very_high_level | 4GL | meta | ...)
- & ( spaghetti | functional | structured | recursive | modular | concurrent | logic | object_oriented | ...)
- ~ ( linear | quadratic | dynamic | integer |... ).
MATHS documents are modular and reusable.
- The MATHS user can describe complex things piece by piece. Instead of one
complex description MATHS makes it possible to define each part of the problem
independently of the rest. There are rules for combining the pieces into a
whole. Research and practice shows that multiple descriptions are better than
a monolithic description.
- The simple reuse mechanism allows the extension of existing documents. There
is a special notation whereby an author can indicate a "hole" in the document
[ holefaq.html ]
and invite others to fil in the hole or plug in their own work.
- MATHS encourages working from what is, to what should be, and then to
detailed design. Understanding, documenting, and solving problems replaces 90%
of what has been called "programming." Research and practice shows how to use
MATHS to express syntactic and semantic structures and translate them into
code. Experience shows that such systems are easier to understand, validate,
- MATHS shows how to recognize and parse the formal parts of documentation.
The formal parts can be organized, summarized, indexed and checked. MATHS
documents are compatible with Electronic mail and BBS systems. There can be
world-wide repositories and encyclopedia of ideas.
- A prototype exists. Sample documents are available on the the WWW
[ http://csci.csusb.edu/dick/samples/ ]
that include descriptions of Ada, C, C++, HTML, Java, ..., Z simple problems, and
[ http://csci.csusb.edu/dick/maths/ ]
most of College Algebra and Discrete Mathematics.
A formal definition is being developed.
The reference manuals and introduction are available at
[ http://csci.csusb.edu/dick/maths/ ]
or via anonymous FTP from
- I've been working on notation since I designed a programming language for a
manual calculator in 1962. MATHS started when I first tried to prepare a set
of notes on grammar theory on a Frieden Flexowriter... It has developed
through about 20 or 30 prototypes since then [Thanks1].
Acknowledgements and Disclaimers.
- MATHS would not have come to being without the support provided by the
California State University, San Bernardino. MATHS is the sole invention and
construction of Richard J. Botting. It may not reflect the opinions, policies
or beliefs of any other being, system, or organization with which he has been
- This document describes an idea and not a product or service. There is no
guarantee of positive results since MATHS requires intelligence, knowledge and
skill to be used well. It comes from scientific research with the primary
goal of increasing knowledge. I will modify it as its defects are found.
I'd like to thank
[ http://www.cs.mun.ca/~ulf/ ]
for helping to correct a mistake here.
. . . . . . . . . ( end of section Acknowledgements and Disclaimers.) <<Contents | End>>
- This manifesto is a snapshot of work in progress taken on
Tue Aug 31 17:07:22 PDT 1999.
- This manifesto is not in the "public domain" but it can be copied and
distributed for any purpose as long as this section is included in its
entirety. Permission is given for parts to be quoted if this paragraph is
included. This manifesto may not be changed but suggestions for improvements
sent by Electronic Mail are welcome. Up to date copies are available free by
Electronic Mail from rbotting at csusb.edu and
also on the WWW at
[ 10.manifesto.html ]
or by anonymous FTP at
- Any improvements, corrections, additions, or examples in the description
of MATHS should be submitted to me by Electronic Mail. They will be reviewed
and may be returned for improvement or rejected outright. If acceptable then
an acknowledgment of the contribution will be EMailed back. In future
versions the contribution will be acknowledged.
- A similar copyright holds for published examples of MATHS documentation -
namely that it can be reused (given due acknowledgment), but not altered
without the current owner's permission. Any improvements, corrections,
additions, or examples should be submitted to the current owner of that
document by Electronic Mail. If acceptable they should be acknowledged and
the contribution documented in later versions.
. . . . . . . . . ( end of section Copyright) <<Contents | End>>
. . . . . . . . . ( end of section The MATHS Manifesto) <<Contents | End>>
Notes on MATHS Notation
Special characters are defined in
[ intro_characters.html ]
that also outlines the syntax of expressions and a document.
Proofs follow a natural deduction style that start with
assumptions ("Let") and continue to a consequence ("Close Let")
and then discard the assumptions and deduce a conclusion. Look
[ Block Structure in logic_25_Proofs ]
for more on the structure and rules.
The notation also allows you to create a new network of variables
and constraints, and give them a name. The schema, formal system,
or an elementary piece of documentation starts with "Net" and finishes "End of Net".
For more, see
[ notn_13_Docn_Syntax.html ]
for these ways of defining and reusing pieces of logic and algebra
in your documents.
For a complete listing of pages in this part of my site by topic see
[ home.html ]
Notes on the Underlying Logic of MATHS
The notation used here is a formal language with syntax
and a semantics described using traditional formal logic
[ logic_0_Intro.html ]
plus sets, functions, relations, and other mathematical extensions.
For a more rigorous description of the standard notations
- STANDARD::= See http://www.csci.csusb.edu/dick/maths/math_11_STANDARD.html
- above::reason="I'm too lazy to work out which of the above statements I need here", often the last 2 or three statements.
- given::reason="I've been told that...", used to describe a problem.
- given::variable="I'll be given a value or object like this...", used to describe a problem.
- goal::theorem="The result I'm trying to prove right now".
- goal::variable="The value or object I'm trying to find or construct".
- let::reason="For the sake of argument let...", intoduces a temporary hypothesis that survives until the end of the surrounding "Let...Close.Let" block or Case.
- hyp::reason="I assumed this in my last Let/Case/Po/...".
- QED::conclusion="Quite Easily Done" or "Quod Erat Demonstrandum", indicates that you have proved what you wanted to prove.
- QEF::conclusion="Quite Easily Faked", -- indicate that you have proved that the object you constructed fitte the goal you were given.
- RAA::conclusion="Reducto Ad Absurdum".