Skip to main content
Phase 2: Methods & Tools2.8

Branch-and-Bound Verification

How branch-and-bound combines incomplete and complete verification methods for scalable neural network verification, including the alpha-beta-CROWN algorithm.

What you will be able to do

  • Describe how a branch-and-bound verifier turns an incomplete bound into a complete answer
  • Choose a splitting heuristic and explain its effect on the search tree
  • Read a "complete" result and know which bounds produced it

Complete verification methods like SMT and MILP provide definitive answers but struggle with large networks. Incomplete methods like bound propagation scale beautifully but sometimes return “unknown.” What if you could combine both---using incomplete methods for speed and complete methods for precision exactly where needed?

Branch-and-bound verification does exactly this: it partitions the input space into smaller regions, uses fast incomplete methods to verify each region, and refines (branches) only on regions where bounds are too loose. And it is worth being exact about the result, because the tempting description here — near-complete — is not a category a verification method can occupy, and using it hides the thing that actually differs.

A branch-and-bound run is complete. Given unbounded time it terminates with either a proof or a witness, for the same reason an exact solver does: it keeps splitting regions until each is decided, and it never discards a region it could not decide. What it is not is fast, and the two are independent — the soundness and completeness chapter is about exactly this. Three things follow, and each is a fact about a different object:

  • The method is complete. Its guarantee does not weaken when it is hybrid.
  • The run may not conclude, because a timeout stops it. A timeout is a fact about that run, not a downgrade of the method.
  • The cost is what makes it impractical on a large network, since the region count can grow exponentially and nothing prunes it except a bound that decides a region early.

This guide explores how branch-and-bound works for neural network verification, why it performs strongly on many benchmarks, and how to use it effectively.

The Core Idea: Divide and Conquer

Verification asks: does a property hold for all inputs in a region? When the region is large, incomplete methods return loose bounds---too conservative to verify. But if you partition the region into smaller pieces, bounds get tighter.

Key insight: Incomplete verification works much better on small input regions than large ones. Approximation error accumulates less when the input region is tight.

Branch-and-Bound Strategy

  1. Try incomplete verification on the full region

  2. If verified: Done---the property holds

  3. If falsified: Found counterexample---property violated

  4. If unknown: Bounds are too loose

    • Branch: Split the region into smaller subregions
    • Bound: Verify each subregion with incomplete methods
    • Repeat: Refine further if needed

Continue until all regions are verified, a counterexample is found, or computational budget is exhausted.

This is complete verification (eventually tries all possible input combinations) achieved through incremental refinement rather than upfront enumeration.

Mathematical Formulation

Verification problem: Determine if property ϕ\phi holds for all x∈Xx \in \mathcal{X}:

∀x∈X,ϕ(f(x))=true\forall x \in \mathcal{X}, \quad \phi(f(x)) = \text{true}

Incomplete verification computes bounds on f(x)f(x) for x∈Xx \in \mathcal{X}:

y‾≤f(x)≤y‾∀x∈X\underline{y} \leq f(x) \leq \overline{y} \quad \forall x \in \mathcal{X}

If these bounds satisfy the property (e.g., y‾y0>max⁡c≠y0y‾c\underline{y}_{y_0} > \max_{c \neq y_0} \overline{y}_c), verification succeeds. If they violate it, verification fails. Otherwise, unknown.

Branch-and-bound partitions X\mathcal{X} into subregions X1,…,Xk\mathcal{X}_1, \ldots, \mathcal{X}_k where X=⋃iXi\mathcal{X} = \bigcup_i \mathcal{X}_i:

∀x∈X,ϕ(f(x))  ⟺  ⋀i(∀x∈Xi,ϕ(f(x)))\forall x \in \mathcal{X}, \phi(f(x)) \iff \bigwedge_i \left(\forall x \in \mathcal{X}_i, \phi(f(x))\right)

Verify each Xi\mathcal{X}_i separately. If all verify, the full region is verified. If any region is falsified, the full verification fails.

Branching Strategies

How you partition the input space affects the whole cost of the search, because every region that cannot be decided immediately has to be split and re-bounded.

Input Space Branching

Idea: Split the input region X\mathcal{X} directly.

For an ℓ∞\ell_\infty ball Bϵ(x0)={x:∥x−x0∥∞≤ϵ}\mathcal{B}_\epsilon(x_0) = \{x : \|x - x_0\|_\infty \leq \epsilon\}:

  • Dimension selection: Choose a dimension ii to split
  • Split: Create X1={x∈X:xi≤(x0)i}\mathcal{X}_1 = \{x \in \mathcal{X} : x_i \leq (x_0)_i\} and X2={x∈X:xi>(x0)i}\mathcal{X}_2 = \{x \in \mathcal{X} : x_i > (x_0)_i\}
  • Recurse: Verify each subregion

Dimension selection heuristics:

  • Largest interval: Split dimension with widest bound
  • Gradient-based: Split dimension with largest gradient (most influential)
  • Adaptive: Learn which dimensions benefit most from splitting

Pros: Intuitive, directly reduces input uncertainty

Cons: High-dimensional inputs require many splits; doesn’t exploit network structure

Activation Space Branching

Idea: Split based on ReLU activation states, not inputs.

For a ReLU with uncertain activation (pre-activation zz could be positive or negative):

  • Branch 1: Assume ReLU is active (z≥0z \geq 0, so y=zy = z)
  • Branch 2: Assume ReLU is inactive (z<0z < 0, so y=0y = 0)
  • Verify: Each branch with ReLU constraint fixed

ReLU selection heuristics:

  • Largest uncertainty: Split ReLU with widest pre-activation bounds
  • Output sensitivity: Split ReLU that most affects output bounds
  • Layer-wise: Prioritize earlier layers (impacts more subsequent computations)

Pros: Exploits network structure; fewer branches than input space splitting for deep networks

Cons: Requires tracking activation states; doesn’t directly reduce input region

StrategyPartitionsBest ForComplexity per Branch
Input spaceInput dimensionsShallow networks, small input dimensionsLow (just tightens bounds)
Activation spaceReLU statesDeep networks, many ReLUsLow (adds constraints)
HybridBoth input and activationGeneral networksMedium (adaptive)

Bounding Methods

Once you’ve branched, you need to verify each subregion. Branch-and-bound uses incomplete methods for this:

Bound Propagation Options

Interval Bound Propagation (IBP (Gowal et al. 2019)):

  • Fastest: propagates interval bounds layer-by-layer
  • Loosest: most conservative approximation
  • Use for: initial coarse bounds, rapid screening

CROWN (Zhang et al. 2018):

  • Fast: backward linear bound propagation
  • Tighter: better approximation than IBP
  • Use for: most branch-and-bound implementations

DeepPoly (Singh et al. 2019):

  • Moderate speed: abstract interpretation with polyhedra
  • Tight: more precise than CROWN for some networks
  • Use for: when tightness matters more than speed

alpha-beta-CROWN (Xu et al. 2021, Wang et al. 2021):

  • Adaptive: optimizes bound parameters (alpha, beta coefficients)
  • Tightest: among the strongest bound tightness available in practice
  • Use for: production-grade verification, when computational budget allows

Tightness-Speed Tradeoff: Tighter bounds reduce branching (fewer subregions needed) but cost more per region. The optimal choice depends on:

  • Network size: Larger networks benefit more from tight bounds (less branching)
  • Property difficulty: Hard properties need tight bounds
  • Computational budget: Limited time favors faster bounds

The alpha-beta-CROWN Algorithm

alpha-beta-CROWN is a leading branch-and-bound verifier with strong results in VNN-COMP (Bak et al. 2021) and related benchmark evaluations.

Key Innovation: Optimized Bounds

Standard bound propagation fixes relaxation parameters. alpha-beta-CROWN optimizes them:

For ReLU relaxation: Instead of fixed linear upper/lower bounds, parameterize them with α,β\alpha, \beta:

y≤αz+βy \leq \alpha z + \beta

Then optimize α,β\alpha, \beta to minimize the output bounds. This tightens approximation significantly.

Optimization: Use gradient descent to optimize bound parameters:

min⁡α,βoutput_bound(f(x);α,β)s.t.relaxation is sound\min_{\alpha, \beta} \quad \text{output\_bound}(f(x); \alpha, \beta) \quad \text{s.t.} \quad \text{relaxation is sound}

Multi-Neuron Constraints

alpha-beta-CROWN considers relationships between multiple ReLUs simultaneously (multi-neuron relaxation) rather than treating each ReLU independently. This captures more network structure, tightening bounds further.

Result: Tighter bounds than standard CROWN, and the number of branches is where that tightness is cashed in — a tighter per-region bound decides more regions without splitting, so the tree is smaller. The reduction factor depends on the network, so it is not stated here; what transfers is that the two improvements compound, because each branch that is never created is also never bounded.

Branch-and-Bound Integration

alpha-beta-CROWN uses optimized bounds within branch-and-bound:

  1. Initial verification: Run alpha-beta-CROWN on full input region
  2. If unknown: Branch on most uncertain domain or activation
  3. Re-optimize: For each subregion, re-optimize alpha, beta parameters
  4. Verify subregions: Use optimized bounds
  5. Repeat: Continue until all regions verified or budget exhausted

Practical Implementation

Algorithm Workflow

def branch_and_bound_verify(network, input_region, property, bound_method):
    # Priority queue: (estimated_difficulty, region)
    queue = [(0, input_region)]

    while queue:
        _, region = queue.pop()

        # Compute bounds using incomplete method
        bounds = bound_method(network, region)

        # Check if bounds satisfy property
        if bounds.satisfies(property):
            continue  # Region verified
        elif bounds.violates(property):
            return FALSIFIED, bounds.counterexample
        else:  # Unknown
            # Branch: split region
            subregions = branch(region, network, bounds)
            queue.extend(subregions)

    return VERIFIED

Key components:

  • Queue management: Priority queue orders regions by estimated difficulty
  • Bounding: Use incomplete method (CROWN, alpha-beta-CROWN) for each region
  • Branching: Split unverified regions
  • Termination: Verify all regions, find counterexample, or timeout

Performance Optimizations

Early termination: If any region is falsified, stop immediately---you’ve found a counterexample.

Bound caching: Reuse bound computations for overlapping regions when possible.

GPU acceleration: Parallelize bound computation across multiple regions. alpha-beta-CROWN on GPU can verify thousands of regions in parallel.

Adaptive branching: Use tight bounds to guide where to branch. Branch on dimensions/activations that most reduce uncertainty.

Timeout per region: Set timeouts for each subregion. If a region times out, count it as unverified and move on.

When to Use Branch-and-Bound

Use when:

  • Network is too large for pure complete methods (SMT, MILP)
  • You need tighter guarantees than pure incomplete methods provide
  • Willing to spend hours or days, because completeness is bought with search rather than with a looser guarantee
  • Have GPU available for parallel bound computation
  • Properties are moderately difficult (not trivial, not impossibly hard)

Don’t use when:

  • Network is small enough for Marabou (Katz et al. 2019) (pure complete is faster)
  • Need instant results (pure incomplete methods are faster)
  • Network has millions of parameters (even branch-and-bound won’t scale)
  • Properties are extremely loose (incomplete methods suffice)

Representative Results

alpha-beta-CROWN has achieved impressive results in verification competitions:

VNN-COMP: Repeatedly strong performance across multiple years and benchmark categories.

Scalability: Handles networks with hundreds of thousands of neurons, which is far beyond what a complete solver is applied to in practice. The comparison is about what gets attempted, not about a limit: the exponential worst case is the same for both, and the difference is that branch-and-bound’s search is pruned in a way SMT and MILP’s is not.

Certified accuracy: On standard benchmarks such as MNIST and CIFAR-10, reported certified accuracy is among the strongest for branch-and-bound-based pipelines.

Competition Success: alpha-beta-CROWN illustrates why hybrid approaches are effective: they are often faster than pure complete methods while being more decisive than purely incomplete ones.

Where the cost goes

The worst case is unchanged. Branch-and-bound is exponential in the worst case, exactly as SMT and MILP are, and the same instances that are hard for one are hard for the other. What differs is the constant and the pruning, not the asymptotics — so an instance that defeats it will defeat a complete solver too, and the honest statement is about what gets attempted rather than about a ceiling the method has.

Budget exhaustion produces a run that concluded nothing. This is the point most worth being careful about, because it is where a tool’s output invites a misreading. If the budget runs out, the regions already decided were decided correctly and the rest are simply undecided — and a property is verified only when every input is decided. So the output is UNKNOWN for the property. A tool may print a progress figure, and “80% of the space is decided” is a true statement about the run; what it is not is a partial guarantee. A property that is 80% decided is not 80% verified.

The search is sensitive to configuration. Branching strategy, which bound method supplies the per-region bounds, and the timeout all change the outcome, and the best settings move with the network and the property. This is ordinary for a heuristic search and worth knowing before reading a number off a single run.

Memory grows with the frontier. Keeping the undecided regions alive costs memory, and a deep enough tree exhausts it before the timeout does — which is a failure mode that looks like a hang rather than like a budget stop, and is worth distinguishing from one.

Key Takeaways

Branch-and-bound verification is one of the strongest approaches for neural network verification at scale. By combining incomplete methods (for speed) with systematic refinement (for tightness), it achieves practical verification of networks that pure complete methods cannot handle.

alpha-beta-CROWN exemplifies this approach: optimized bound propagation plus intelligent branching, verified on networks with hundreds of thousands of neurons. That is well beyond the size at which a complete solver is practical, and the reason is pruning rather than a different worst case — both remain exponential in the worst case, and only one of them discards most of its search tree.

Understanding branch-and-bound clarifies the frontier of neural network verification: we can verify non-trivial networks through clever algorithms and hybrid approaches, but fundamental complexity barriers remain. The field advances by pushing these boundaries incrementally, making verification practical for ever-larger networks.

Further Reading

This guide provides comprehensive coverage of branch-and-bound verification for neural networks. For readers interested in diving deeper, we recommend the following resources organized by topic:

Incomplete Bound Propagation Methods:

Branch-and-bound relies on incomplete methods for bounding. CROWN provides fast backward linear bound propagation. DeepPoly uses abstract interpretation with carefully designed abstract domains. IBP offers the fastest but loosest bounds. Understanding these methods is essential for effective branch-and-bound implementation.

alpha-beta-CROWN State-of-the-Art:

The alpha-beta-CROWN verifier combines optimized bound propagation with branch-and-bound and has reported strong competition results. It optimises the linear relaxation coefficients per layer rather than fixing them, which tightens the per-region bounds and so reduces the number of regions that have to be split. GPU acceleration enables parallel verification of thousands of subregions.

Complete Verification for Comparison:

Pure complete methods provide context for branch-and-bound’s hybrid approach. SMT-based verification handles small networks definitively but struggles with scale, and MILP-based approaches face similar limits. Branch-and-bound does not extend complete verification by giving something up: it reaches the same guarantee by paying in search instead. The guarantee is identical and the cost profile is different, which is why it transfers to networks where MILP does not.

Complexity Foundations:

The NP-completeness of neural network verification means that all complete methods---including branch-and-bound---face exponential worst-case complexity. Understanding this fundamental barrier helps set realistic expectations: branch-and-bound extends the frontier of tractable verification but doesn’t eliminate complexity barriers.

Incomplete Methods as Alternative:

When branch-and-bound is too expensive, pure incomplete methods provide fast but potentially loose verification. For very large networks, accepting “unknown” results may be necessary. Randomized smoothing offers an alternative probabilistic certification approach that scales even better.

Related Topics:

For understanding the incomplete methods that branch-and-bound uses for bounding, see bound propagation. For complete methods that branch-and-bound extends, see SMT and MILP verification and Marabou and Reluplex. For the mathematical foundations of the verification problem, see verification problem. For understanding the theoretical guarantees, see soundness and completeness.

Primary references:

  • Bunel et al., “Branch and Bound for Piecewise Linear Neural Network Verification”, JMLR 2020 https://jmlr.org/papers/v21/19-468.html
  • Botoeva et al., “Efficient Verification of ReLU-Based Neural Networks via Dependency Analysis”, AAAI 2020 (Venus); Kouvaros and Lomuscio, “Scalable Verification of Neural Networks via Neuron Decomposition”, IJCAI 2021 https://ojs.aaai.org/index.php/AAAI/article/view/5729
  • Xu et al., “Fast and Complete: Enabling Complete Neural Network Verification with Rapid and Massively Parallel Incomplete Verifiers”, ICLR 2021 (alpha-CROWN); Wang et al., “Beta-CROWN: Efficient Bound Propagation with Per-neuron Split Constraints”, NeurIPS 2021 (beta-CROWN) https://arxiv.org/abs/2103.06624
  • Bak, Liu and Johnson, “The Second International Verification of Neural Networks Competition (VNN-COMP 2021): Summary and Results”, 2021; Brix et al., “First Three Years of the International Verification of Neural Networks Competition”, Int. J. Softw. Tools Technol. 2023 https://arxiv.org/abs/2301.05815
  • Katz, Barrett, Dill, Julian and Kochenderfer, “Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks”, CAV 2017 https://arxiv.org/abs/1702.01135
  • Katz et al., “The Marabou Framework for Verification and Analysis of Deep Neural Networks”, CAV 2019 https://doi.org/10.1007/978-3-030-25540-4_26