ExpressionTreeForge.jl is a manipulator of expression trees. It supports several expression tree implementations and defines methods to analyze and manipulate them, including:

  • partial separability detection;
  • evaluation of the expression, and its first and second derivatives;
  • bound propagation;
  • convexity detection.


Julia ≥ 1.6.

How to install

pkg> add
pkg> test ExpressionTreeForge

How to use

See the tutorial.


This module is used together with PartitionedStructures.jl by PartiallySeparableNLPModels.jl and PartiallySeparableSolvers.jl to define a trust-region method exploiting partial separability through partitioned quasi-Newton approximations.

Bug reports and discussions

If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.

If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers, so questions about any of our packages are welcome.