basic information

45 views
Skip to first unread message

Sara Muli

unread,
Oct 30, 2022, 6:22:25 AM10/30/22
to maca...@googlegroups.com
Dear all,

I am attending a course in Computer Algebra Systems and very soon  I have to present Macaulay2.
Could someone help me with some basic information?
 
Architecture of the system.
Main features, strong points, weak points.
Language specifics ( (dev-language, user language).

Thank you in advance!

Daniel R. Grayson

unread,
Oct 30, 2022, 6:12:23 PM10/30/22
to Macaulay2
The system is composed of two main components, the "engine", which is written in C++ by Mike Stillman, and the "interpreter",
which is written by me in a type-safe language I designed, called "D", since it gets translated directly to C or C++.
From the start, we realized that the Groebner basis algorithms would take
a long time on complicated examples, so the interpreter didn't have to be super-fast, but it has turned out to be quite fast.

I designed the top-level language, based on mutable hashtables as types.  Every top-level object has a "parent" and a "class".  The latter is
always a type.  The former is useful only for types, and reflects the inheritance used when dispatching method functions.  In other
words, if x is of type X and y is of type Y, then if a method is not found for f(x,y) by looking at the entry for (f,X,Y) in the younger of
X and Y, then the ancestors of X and Y are consulted until the top is reached.  The top type is called "Thing", since it's supposed to apply 
to any kind of object, and the bottom type is called Nothing, since it's intended that there should be nothing of that type.  However,
to indicate an empty spot in a list, there is a special object of type Nothing, called "null", which is placed at that spot.  It turns out
to be easy for authors of applications to introduce new types of things, and they often do this; an example is "Graph".  Indeed, a lot
of our own code is written in that style - for example, our code for chain complexes, or coherent sheaves, or algebraic varieties.

Every top-level object in the system has a hashcode and can thus be used as a key in a hashtable.

The various primitive types of objects, nets, numbers, hashtables, lists, sequences, and so on, are types whose parent is Thing.

Authors can package their creations in something we call "packages".  Authors' names can be attached, and the packages can come
with their own documentation and test code.  The documentation is converted to html during the installation process.  There are two formats for
writing documentation, the old style, which is fairly pedantic, and the new style, "SimpleDoc", where the documentation can occupy an entire file
and items are separated by indentation level.

Internally, we make heavy use of the Boehm conservative garbage collector ( https://www.hboehm.info/gc/ ).  This allows us to have
circular chains of references, which couldn't happen with reference counting.

The copious use of test code ensures that changes we make don't destroy important functionality.

Users can download binary distributions, which we create every 6 months by bumping the version number (oops, we have to do that in 2 weeks!),
or they can download the source code (which under the GNU license) from github.com and compile it themselves.  Since Mike and I are aging,
we have an active Macaulay2 "Internals" group, which meets every month, and attempts to get users acquainted with the internal workings
of the system.

Discussions occur on our google group (here), and bugs are reported as "issues" at github.com.  Users with packages or code to contribute
can submit a pull request at github.com, and we're getting more and more of those.  (One of our users focuses on locating misspelled words
in the documentation and code -- that's very useful.)

The main website is at http://macaulay2.com/.  That's where our binary distributions are, the documentation can be viewed, notices of
upcoming events are posted, and preprints referring to Macaulay2 are tracked: they currently number 2828.

If you have any further questions, let me know.

Dan

Sara Muli

unread,
Nov 1, 2022, 7:39:34 AM11/1/22
to maca...@googlegroups.com
Dear Professor,

Thank you very much! This is very helpful!

--
You received this message because you are subscribed to the Google Groups "Macaulay2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to macaulay2+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/macaulay2/4392e727-7833-45a5-b8ba-afc4b6e64811n%40googlegroups.com.

Sara Muli

unread,
Nov 8, 2022, 8:42:52 AM11/8/22
to maca...@googlegroups.com
Dear Professor Grayson,

might you help me with some more information?
What is the difference between Macaulay2 and Singular?
What are the main features, strong points, pitfalls?
Thank you in advance!

On Sun, Oct 30, 2022 at 11:12 PM Daniel R. Grayson <danielrich...@gmail.com> wrote:

Daniel R. Grayson

unread,
Nov 10, 2022, 2:12:02 PM11/10/22
to Macaulay2
I've never been a Singular user, so it would be better to ask one.  Maybe start a new topic here on that.
Reply all
Reply to author
Forward
0 new messages