# Nonlinear Backend

## Graphs, Caches, Forward and Reverse Propagation

EAGO makes use of a specialized tape structure for each function in order to compute valid composite bounds and relaxations. Each variable, constant, and expression is respresented by a node in a directed graph structure.

Missing docstring for `EAGO.Node`

. Check Documenter's build log for details.

Missing docstring for `EAGO.NodeClass`

. Check Documenter's build log for details.

Missing docstring for `EAGO.AtomType`

. Check Documenter's build log for details.

Missing docstring for `EAGO.AbstractDirectedGraph`

. Check Documenter's build log for details.

Missing docstring for `EAGO.DirectedTree`

. Check Documenter's build log for details.

Each field of the ith `EAGO.Node`

using a basic access function. For instance the ith node's `ex_type`

for graph `d`

may be accessed by `ex_type(d, i)`

. The `sparsity`

of node `i`

returns an ordered list of `children`

nodes which form the argument tuple for the operator performed at node `i`

. The `sparsity`

of node `i`

returns a list of `parent`

nodes which form the argument tuple for the operator performed at node `i`

. The `parameter_values`

and `constant_values`

functions are used to access the ith parameter values or ith constant values.

EAGO organizes information associated with each node in a given graph structure using an `EAGO.AbstractCache`

which stores the given information.

Missing docstring for `EAGO.AbstractCache`

. Check Documenter's build log for details.

Missing docstring for `EAGO.initialize!(::AbstractCache, ::AbstractDirectedGraph)`

. Check Documenter's build log for details.

Information in a given `EAGO.AbstractCache`

is populated by performing a series of forward and reverse passes of the graph structure which dispatch off of an `EAGO.AbstractCacheAttribute`

which indicates what particular information is desired.

Missing docstring for `EAGO.AbstractCacheAttribute`

. Check Documenter's build log for details.

Three included `AbstractCacheAttributes`

are used to

Missing docstring for `EAGO.Relax`

. Check Documenter's build log for details.

Missing docstring for `EAGO.RelaxAA`

. Check Documenter's build log for details.

Missing docstring for `EAGO.RelaxMulEnum`

. Check Documenter's build log for details.

The forward and reverse routines are overloaded as follows:

Missing docstring for `EAGO.f_init!(t::AbstractCacheAttribute, g::AbstractDirectedGraph, c::AbstractCache)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.fprop!(t::AbstractCacheAttribute, v::Variable, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.fprop!(t::AbstractCacheAttribute, v::Subexpression, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.fprop!(t::AbstractCacheAttribute, v::Expression, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.fprop!(t::AbstractCacheAttribute, v::Parameter, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.fprop!(t::AbstractCacheAttribute, v::Constant, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.r_init!(t::AbstractCacheAttribute, g::AbstractDirectedGraph, c::AbstractCache)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.rprop!(t::AbstractCacheAttribute, v::Variable, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.rprop!(t::AbstractCacheAttribute, v::Subexpression, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.rprop!(t::AbstractCacheAttribute, v::Expression, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.rprop!(t::AbstractCacheAttribute, v::Parameter, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Missing docstring for `EAGO.rprop!(t::AbstractCacheAttribute, v::Constant, g::AbstractDirectedGraph, c::AbstractCache, k::Int)`

. Check Documenter's build log for details.

Forward and reverse subroutines are overloaded for individual operators using through functions of the forms `fprop!(t::AbstractCacheAttribute, v::Val{AtomType}, g::AbstractDirectedGraph, b::AbstractCache, k::Int)`

and `rprop!(t::AbstractCacheAttribute, v::Val{AtomType}, g::AbstractDirectedGraph, b::AbstractCache, k::Int)`

.

## Other routines

Missing docstring for `EAGO.is_safe_cut!(m::GlobalOptimizer, f::MathOptInterface.ScalarAffineFunction{Float64})`

. Check Documenter's build log for details.