-- Decouple NAGtypes and SLPexpressions
the only problem is: who exports "evaluate"? 

-- What slows us down?
not cataloging all gates?
create several examples of large circuits (1-10 sec to setup)

-- Circuit creation
gatePolynomial -- currently, has a naive algorithm to produce a circuit for a poly
gatePolynomial(Strategy=>"optimal evaluation of the support monomials")
gatePolynomial(Strategy=>"Horner")
gateMatrix {list of polynomials}
diff -- has to be provided for any type of Gate

-- Gates of the future
analytic gates (cos, sin, exp)
"many-to-many" gates
constant gates of non-number type (pi, algebraic numbers, described by a subroutine, ...)

-- Naming questions
evaluate vs value -- value is not used much (rename?)
sub vs compose -- could sub be more general?   

----------------- OLD TO-DO ----------------------------------------------------------------
-- functions that one may forget exist...

segmentHomotopyProjective


-* Expressions in M2 
   *** should have this as a Gate 
   ??? maybe?
                            Expression : Adjacent
                                      AssociativeExpression : Equation
                                                              Product  ***
                                                              Sum      ***
                                      BinaryOperation
                                      Divide                           ???
                                      FunctionApplication
                                      Holder : OneExpression           ???
                                               ZeroExpression          ???
                                      MatrixExpression                 ***
                                      Minus                            ***
                                      NonAssociativeProduct            ???
                                      Parenthesize                     
                                      Power                            ???
                                      RowExpression                    
                                      SparseMonomialVectorExpression
                                      SparseVectorExpression
                                      Subscript
                                      Superscript
                                      Table
   In addition: 
       Det     	   ***
       Submatrix   ???
       Minor       ???     

TO DO:

-- decide what types of non-terminal gates we need (see above)

*-
