====================================================================
Magma examples
====================================================================

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:
o )show Magma

