Initialisations
x:Symbol :='x
x
Type: Symbol
y:Symbol :='y
y
Type: Symbol
z:Symbol :='z
z
Type: Symbol
word := OrderedFreeMonoid(Symbol)
OrderedFreeMonoid Symbol
Type: Domain
tree := Magma(Symbol)
Magma Symbol
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
2 2
x y
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
See Also: