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