9.49 MagmaΒΆ
Initialisations
x:Symbol :='x
\[\]
| x |
Type: Symbol
y:Symbol :='y
\[\]
| y |
Type: Symbol
z:Symbol :='z
\[\]
| z |
Type: Symbol
word := OrderedFreeMonoid(Symbol)
\[\]
| OrderedFreeMonoidSymbol |
Type: Domain
tree := Magma(Symbol)
\[\]
| MagmaSymbol |
Type: Domain
Let’s make some trees
a:tree := x*x
\[\]
| [x,x] |
Type: Magma Symbol
b:tree := y*y
\[\]
| [y,y] |
Type: Magma Symbol
c:tree := a*b
\[\]
| [[x,x],[y,y]] |
Type: Magma Symbol
Query the trees
left c
\[\]
| [x,x] |
Type: Magma Symbol
right c
\[\]
| [y,y] |
Type: Magma Symbol
length c
\[\]
| 4 |
Type: PositiveInteger
Coerce to the monoid
c::word
\[\]
| x2y2 |
Type: OrderedFreeMonoid Symbol
Check ordering
a < b
\[\]
| true |
Type: Boolean
a < c
\[\]
| true |
Type: Boolean
b < c
\[\]
| true |
Type: Boolean
Navigate the tree
first c
\[\]
| x |
Type: Symbol
rest c
\[\]
| [x,[y,y]] |
Type: Magma Symbol
rest rest c
\[\]
| [y,y] |
Type: Magma Symbol
Check ordering
ax:tree := a*x
\[\]
| [[x,x],x] |
Type: Magma Symbol
xa:tree := x*a
\[\]
| [x,[x,x]] |
Type: Magma Symbol
xa < ax
\[\]
| true |
Type: Boolean
lexico(xa,ax)
\[\]
| false |
Type: Boolean