[Skip Navigation] [CSUSB] / [CNS] / [CSE] / [R J Botting] / [ MATHS ] / 10_manifesto
[Contents] [Source Text] || [Notation] || [Copyright] || [Contact] [Search ]
Thu Nov 15 12:15:03 PST 2012


    The MATHS Manifesto

      MATHS Is Not A Programming Language.

    1. 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.

    2. 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 needed.

    3. 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.

    4. 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 practitioners.

    5. 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.

    6. 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.

    7. It will support many methods and fit with any flavor of programming.

    8. Methods::= Equational ADT specifications
    9. | Data directed design (eg LCP, JSP, ...)
    10. | Dynamic analysis and design(eg JSD, CSP, ...)
    11. | Data analysis(Codd, Bachman, Chen...)
    12. | Structured analysis and design(eg Yourdon, SSADM, ... )
    13. | Backtrack Programming
    14. | Expert Systems
    15. | Rapid prototyping
    16. | OOA/D
    17. | Flavor programming
    18. | ... ,


    19. Flavor::=
    20. ( hacked | literate | disciplined | extreme | agile | ...)
    21. & ( low_level | high_level | very_high_level | 4GL | meta | ...)
    22. & ( spaghetti | functional | structured | recursive | modular | concurrent | logic | object_oriented | ...)
    23. ~ ( linear | quadratic | dynamic | integer |... ).

      MATHS documents are modular and reusable.

    24. 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.

    25. 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.

    26. 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, and maintain.

    27. 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.

      Current Status

    28. A prototype exists. Sample documents are available on the the WWW [ http://cse.csusb.edu/dick/samples/ ] that include descriptions of Ada, C, C++, HTML, Java, ..., Z simple problems, and [ http://cse.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://cse.csusb.edu/dick/maths/ ]


    29. 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.

      1. 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 associated.

      2. 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 Ulf Schenemann [ http://www.cs.mun.ca/~ulf/ ] for helping to correct a mistake here.

      . . . . . . . . . ( end of section Acknowledgements and Disclaimers.) <<Contents | End>>


      1. This manifesto is a snapshot of work in progress taken on Thu Nov 15 12:14:03 PST 2012

      2. 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 ]

      3. 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.

      4. 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 here [ 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. A "Net" has a number of variables (including none) and a number of properties (including none) that connect variables. You can give them a name and then reuse them. 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. A quick example: a circle might be described by Net{radius:Positive Real, center:Point, area:=π*radius^2, ...}.

    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 see

  1. STANDARD::= See http://www.csci.csusb.edu/dick/maths/math_11_STANDARD.html


  2. above::reason="I'm too lazy to work out which of the above statements I need here", often the last 3 or 4 statements. The previous and previous but one statments are shown as (-1) and (-2).
  3. given::reason="I've been told that...", used to describe a problem.
  4. given::variable="I'll be given a value or object like this...", used to describe a problem.
  5. goal::theorem="The result I'm trying to prove right now".
  6. goal::variable="The value or object I'm trying to find or construct".
  7. let::reason="For the sake of argument let...", introduces a temporary hypothesis that survives until the end of the surrounding "Let...Close.Let" block or Case.
  8. hyp::reason="I assumed this in my last Let/Case/Po/...".
  9. QED::conclusion="Quite Easily Done" or "Quod Erat Demonstrandum", indicates that you have proved what you wanted to prove.
  10. QEF::conclusion="Quite Easily Faked", -- indicate that you have proved that the object you constructed fitted the goal you were given.
  11. RAA::conclusion="Reducto Ad Absurdum". This allows you to discard the last assumption (let) that you introduced.