1====================================================================
2Magma examples
3====================================================================
4
5Initialisations
6
7  x:Symbol :='x
8    x
9                         Type: Symbol
10
11  y:Symbol :='y
12    y
13                         Type: Symbol
14
15  z:Symbol :='z
16    z
17                         Type: Symbol
18
19  word := OrderedFreeMonoid(Symbol)
20    OrderedFreeMonoid Symbol
21                         Type: Domain
22
23  tree := Magma(Symbol)
24    Magma Symbol
25                         Type: Domain
26
27Let's make some trees
28
29  a:tree := x*x
30    [x,x]
31                         Type: Magma Symbol
32
33  b:tree := y*y
34    [y,y]
35                         Type: Magma Symbol
36
37  c:tree := a*b
38    [[x,x],[y,y]]
39                         Type: Magma Symbol
40
41Query the trees
42
43  left c
44    [x,x]
45                         Type: Magma Symbol
46
47  right c
48    [y,y]
49                         Type: Magma Symbol
50
51  length c
52    4
53                         Type: PositiveInteger
54
55Coerce to the monoid
56
57  c::word
58     2 2
59    x y
60                         Type: OrderedFreeMonoid Symbol
61
62Check ordering
63
64  a < b
65    true
66                         Type: Boolean
67
68  a < c
69    true
70                         Type: Boolean
71
72  b < c
73    true
74                         Type: Boolean
75
76Navigate the tree
77
78  first c
79    x
80                         Type: Symbol
81
82  rest c
83    [x,[y,y]]
84                         Type: Magma Symbol
85
86  rest rest c
87    [y,y]
88                         Type: Magma Symbol
89
90Check ordering
91
92  ax:tree := a*x
93    [[x,x],x]
94                         Type: Magma Symbol
95
96  xa:tree := x*a
97    [x,[x,x]]
98                         Type: Magma Symbol
99
100  xa < ax
101    true
102                         Type: Boolean
103
104  lexico(xa,ax)
105    false
106                         Type: Boolean
107
108See Also:
109o )show Magma
110
111