anchor.diff:              Binary (IfThenElse (sSize left, sSize right), sSub a, sSub b)
           | Binary (op, a, b) -> Binary (op, sSub a, sSub b)
   
  +    /// true if all size symbols can be evaluated to numeric values 
       let canEvalAllSymSizes expr =
           let rec canEval expr =  
               match expr with
  
positive.code:         | Power        
          | IfThenElse of SizeSpecT * SizeSpecT
          
      and ElemExprT<'T> =
          | Leaf of LeafOpT<'T>
          | Unary of UnaryOpT<'T> * ElemExprT<'T>
          | Binary of BinaryOpT<'T> * ElemExprT<'T> * ElemExprT<'T>
          
  
      let scalar a =
          Leaf (Const a)
            
      type ElemExprT<'T> with
  
          // elementwise unary
  
negative.code:             ArrayND.set idx ev res
          res
  
      /// returns the required number of arguments of the element expression
      let rec requiredNumberOfArgs expr =
          match expr with
          | Leaf (ArgElement (Arg n, _)) -> 
  