There are many arithmetic operations that can be performed on gates. This makes it easy to create combine existing gates into new gates.
i1 : declareVariable X; declareVariable Y;

i3 : m1 = Y*Y
o3 = (Y * Y)
o3 : ProductGate

i4 : m2 = X^3
o4 = (X * X * X)
o4 : ProductGate

i5 : F = m1m2X
o5 = (((Y * Y) + (1 * (X * X * X))) + (1 * X))
o5 : SumGate

i6 : X + 2
o6 = (X + 2)
o6 : SumGate

By extension, arithmetic operations also work with gate matrices:
i7 : M = matrix {{X, Y}}
o7 = {{X, Y}}
o7 : GateMatrix

i8 : 3*M
o8 = {{(3 * X), (3 * Y)}}
o8 : GateMatrix

i9 : transpose M * M
o9 = {{((X * X)), ((X * Y))}, {((Y * X)), ((Y * Y))}}
o9 : GateMatrix
