The Substance program tells Penrose what objects and relations to draw. In the set-theory example, for example, we can have the following Substance program:
Set A, B, C
IsSubset (A, C)
IsSubset (B, C)
NotIntersecting (A, B)
The first line declares the objects that are to be drawn, the last line tells Penrose to automatically label the objects based on their names. All other lines invoke the predicates defined in the Domain schema to declare relations between objects.
Notably, like the Domain schema, the Substance program does not contain any instructions about how, say, a
Set must be rendered, or how the relation
IsSubset should be reflected in the diagram. The Substance program only declares the existence of these objects and relations, whereas the Style program shows how these objects and relations can be drawn.
Comments are ignored by the Penrose engine. In the Substance program, comments are declared using double dashes:
-- this is a comment