Research note · Benchmarking

Benchmarking Lanyon against Frontier Models: Nonlinear PDEs

In this technical deep dive, we extend previous benchmarking by comparing the current frontier models against Lanyon in terms of accuracy and cost for the solutions to *nonlinear* partial differential equations.

Jimmy JunoAugust 202614 minute read

Having seen how the current frontier models perform for creating solvers for linear hyperbolic PDEs, we turn now to the question of how these frontier models compare to Lanyon for nonlinear hyperbolic PDEs. Lanyon’s capabilities are increasingly clear in comparison to the new challenges the frontier models must solve: shocks, rarefaction waves, and even more complex nonlinear structures which must be correctly and stably solved for by their numerical schemes. As we will see, many more mistakes can creep into the implementations of discretizations of nonlinear hyperbolic PDEs compared to linear hyperbolic PDEs. The power of a neurosymbolic architecture which produces formally verified code is made manifest as our models approach the needed sophistication to simulate the physical world.

The benchmarks

As before, our benchmarking is divided into two different cases based on the capabilities of Lanyon shown in our discussion of Burgers’ equation and the corresponding GitHub repository and the Euler equations for compressible hydrodynamics and the corresponding GitHub respository. We evaluate the same five frontier models:

  • Kimi K3
  • Claude Opus 4.81
  • Claude Fable 5
  • GPT-5.5
  • GPT-5.6 Sol

and again sub-divide between a detailed and terse prompt for three separate trials to evaluate the frontier models under different run conditions and characterize variation run to run. Further details on how the differing prompts are constructed and the rubric for evaluation can be found in our benchmarking for linear hyperbolic PDEs.

The two problems we evaluate are:

Burgers’ equation: top-line results

variant config cost/trial wallclock mech hygiene panel
detailed claude-fable-5 \$10.31 ± 1.72 28.8 ± 2.6 min 3/3 3/3 faithful x3
detailed claude-opus-4-8 \$7.29 ± 1.31 30.3 ± 4.0 min 3/3 3/3 faithful x3
detailed gpt-5.5 \$2.05 ± 0.29 7.7 ± 2.1 min 3/3 3/3 faithful x3
detailed gpt-5.6-sol \$1.94 ± 0.46 10.3 ± 1.8 min 3/3 3/3 faithful x3
detailed kimi-k3 \$3.08 ± 0.55 54.5 ± 2.0 min 3/3 3/3 faithful x3
terse claude-fable-5 \$8.94 ± 1.07 27.3 ± 2.5 min 3/3 3/3 faithful x2, partial x1
terse claude-opus-4-8 \$4.40 ± 0.88 22.1 ± 2.7 min 3/3 3/3 partial x3
terse gpt-5.5 \$1.30 ± 0.21 7.0 ± 2.3 min 2/3 3/3 faithful x3
terse gpt-5.6-sol \$1.32 ± 0.27 6.8 ± 1.4 min 3/3 3/3 faithful x3
terse kimi-k3 \$3.75 ± 0.93 69.6 ± 18.8 min 3/3 3/3 faithful x3

As before, in the “mech” column, we are checking all three of: does the C code compile, does the C code run, and does the Lean code type check, for each of the three trials. For the “hygiene” column we are checking for zero use of sorry/admit, zero axiom declarations, and zero use of native_decide for each of the three trials. Note again that a score of faithful in our automated scoring here is a measure of “does the Lean match the C” and not a measure of faithful implementation of the prompt.

For assessing cost, we likewise again focus on the token usage:

variant config output tokens (mean, vendor-billed) cumulative input (mean) cache-hit share
detailed claude-fable-5 140k 2.03M 93%
detailed claude-opus-4-8 142k 4.58M 94%
detailed gpt-5.5 28k 1.11M 84%
detailed gpt-5.6-sol 28k 1.67M 96%
detailed kimi-k3 not reported; per-trial bounds (see below) not reported not reported
terse claude-fable-5 116k 1.94M 94%
terse claude-opus-4-8 105k 1.93M 93%
terse gpt-5.5 21k 0.60M 85%
terse gpt-5.6-sol 22k 0.91M 95%
terse kimi-k3 not reported; per-trial bounds (see below) not reported not reported

Kimi per-trial bounds (floor-ceiling, trial cost in parens):

  • detailed — t1: 15k-163k (\$2.44); t2: 22k-222k (\$3.32); t3: 17k-231k (\$3.47)
  • terse — t1: 24k-308k (\$4.62); t2: 15k-184k (\$2.76); t3: 19k-257k (\$3.86)

with these Kimi bounds computed as a floor from visible content in the transcript (assistant text + tool-call arguments at ~3.5 chars/token) to a ceiling from the trial’s entire billed cost converted at the \$15/MTok output rate as if input were free.

And finally the assessment of the C code:

variant config t1 t2 t3
detailed claude-fable-5 2nd / TVD 2nd / TVD 2nd / TVD
detailed claude-opus-4-8 2nd / TVD 2nd / TVD 2nd / TVD
detailed gpt-5.5 1st 2nd / TVD 2nd / TVD
detailed gpt-5.6-sol 2nd / TVD 2nd / TVD 2nd / TVD
detailed kimi-k3 2nd / TVD 1st 2nd / TVD
terse claude-fable-5 2nd / no-TVD 2nd / no-TVD 2nd / no-TVD
terse claude-opus-4-8 2nd / TVD 2nd / no-TVD 2nd / no-TVD
terse gpt-5.5 1st 1st 1st
terse gpt-5.6-sol 1st 1st 1st
terse kimi-k3 1st 1st 1st

The bolding here corresponds to two failure modes; in the detailed cases, there were explicit prompt violations, either not implementing a second order method, or not implementing a wave propagation scheme which made use of the left- and right-going fluctuations. In the one terse case, we are flagging specific Lean check failures, where we find the lakefile declares a lean_lib whose root module file does not exist, and no .lake/build exists in the workspace in which we had the agents work. In other words, for the GPT 5.5 t1 terse trial, the Lean does not build. Note that a separate analysis revealed the Lean produced does type check and that it (mostly) matches the implementation in C, so that we were able to separately grade the faithfulness of the Lean verification.

Burgers’ equation: results breakdown

Our reference Lanyon (inviscid) Burgers’ equation solver in one dimension took $\sim 6$ seconds to generate and utilized $663$ output tokens. The prompts utilized to generate both the sine wave shock and step function rarefaction wave are described in our Burgers’ equation deep dive. As before, there is a significant cost-advantage in terms of time and output tokens— identical to the Maxwell equations analysis, upwards of a factor of 30-200 cost reduction in output tokens.

Where the nonlinear tests begin to complicate the formal verification is how the models sidestep verification under the strain of harder problems, identical to the failure mode first demonstrated in our analysis of the Maxwell equations benchmarks. In this case, in multiple instances across Fable 5 and Opus 4.8 runs, the Lean only verifies the first order update and does not include anything about the second order reconstruction. Further, a new failure mode has appeared in nonlinear hyperbolic PDEs: proof of the total variation diminishing (TVD) property for a second order scheme depends on the type of limiter utilized and whether or not the limiter satisfies Sweby’s criteria—see the work of Gorard and Hakim (2025) on a discussion of the verification of Sweby’s criteria—in addition to the choice of CFL. So in a number of terse Fable 5 and Opus 4.8 runs, without the guidance to utilize a minmod limiter, the agents chose to use more anti-diffusive limiters such as monotonized-center. While these limiters can be Sweby, without a sufficiently small CFL, these limiters will not be TVD, and thus oscillations can be introduced around the generated shock in the sine wave shock problem.

These failure modes are not present within Lanyon. As before, our verification pipeline reliably tracks the implemented C code, including a desired default second order TVD implementation, by construction. The proof and the code derive from the same artifact. While in these initial demonstrations Lanyon’s informed choices do utilize more aggressive limiters, such as minmod, to ensure the subsequent TVD property, ongoing work continues to push the capabilities of Lanyon to verify increasingly sophisticated limiters and provide a balance between robustness and numerical diffusion.

Euler equations: top-line results

variant config cost/trial wallclock mech hygiene panel
detailed claude-fable-5 \$19.46 ± 2.22 50.4 ± 10.8 min 3/3 3/3 faithful x3
detailed claude-opus-4-8 \$11.48 ± 3.99 46.7 ± 12.9 min 3/3 3/3 partial x2, faithful x1
detailed gpt-5.5 \$4.40 ± 1.16 12.3 ± 0.7 min 2/3 3/3 faithful x3
detailed gpt-5.6-sol \$2.28 ± 0.61 11.3 ± 1.9 min 3/3 3/3 faithful x3
detailed kimi-k3 \$6.25 ± 2.58 91.3 ± 32.3 min 2/3 (1 DNF) 3/3 partial x2, faithful x1
terse claude-fable-5 \$14.73 ± 2.97 44.6 ± 10.5 min 3/3 2/3 faithful x1, partial x1, misformalized x1
terse claude-opus-4-8 \$8.35 ± 2.89 43.6 ± 15.6 min 3/3 3/3 partial x3
terse gpt-5.5 \$2.72 ± 0.49 7.7 ± 1.0 min 3/3 3/3 partial x3
terse gpt-5.6-sol \$1.60 ± 0.45 7.4 ± 1.5 min 3/3 3/3 faithful x2, partial x1
terse kimi-k3 \$4.48 ± 1.62 84.6 ± 13.3 min 3/3 1/3 misformalized x2, partial x1

Note that for this particular demonstration, one Kimi K3 detailed run did not finish in an allotted two hour time window, which we marked as a failure, one GPT 5.5 detailed run did not ship Lean proofs which built (the agent never utilized lake build to determine that the Lean correctly type checks), and two Kimi K3 terse runs and one Fable 5 terse run utilized native_decide to skirt a careful type checking of their proofs.

Again, we examine cost in terms of output tokens:

variant config output tokens (mean, vendor-billed) cumulative input (mean) cache-hit share
detailed claude-fable-5 209k 6.72M 97%
detailed claude-opus-4-8 219k 8.12M 95%
detailed gpt-5.5 41k 2.12M 77%
detailed gpt-5.6-sol 35k 1.91M 97%
detailed kimi-k3 not reported; per-trial bounds (see below) not reported not reported
terse claude-fable-5 155k 4.62M 95%
terse claude-opus-4-8 157k 5.39M 94%
terse gpt-5.5 30k 1.07M 72%
terse gpt-5.6-sol 27k 1.11M 95%
terse kimi-k3 not reported; per-trial bounds (see below) not reported not reported

Kimi per-trial bounds (floor-ceiling, trial cost in parens):

  • detailed — t1: 11k-238k (\$3.57); t2: 28k-432k (\$6.47); t3: 33k-581k (\$8.71, DNF)
  • terse — t1: 28k-287k (\$4.31); t2: 35k-412k (\$6.18); t3: 18k-197k (\$2.96)

And the C implementation:

variant config t1 t2 t3
detailed claude-fable-5 2nd / TVD 2nd / TVD 2nd / TVD
detailed claude-opus-4-8 2nd / TVD X 2nd / TVD
detailed gpt-5.5 X X 2nd / OSC FE
detailed gpt-5.6-sol 2nd / OSC FE 2nd / OSC FE X
detailed kimi-k3 X 2nd / OSC FE 2nd / TVD DNF
terse claude-fable-5 2nd / TVD 2nd / TVD nd=2 2nd / TVD
terse claude-opus-4-8 2nd / TVD 2nd / TVD 2nd / TVD
terse gpt-5.5 1st 1st 1st
terse gpt-5.6-sol 1st 1st 1st
terse kimi-k3 2nd / TVD nd=1 2nd / TVD nd=5 2nd / TVD

Here, we have bolded new failure modes. X corresponds to a completely incorrect solver, even if there is a successful Lean verification of the first order update in one dimension, the resulting 2D Riemann solution had pathological issues related to an incorrect use of the second order correction, and 2nd / OSC FE corresponds to a second-order-in-space, unstable first order in time update.

Euler equations: results breakdown

Our reference 2D Euler solver produced with Lanyon required $\sim 23$ seconds to construct and utilized $2940$ output tokens. The specific prompt utilized for this non-trivial 2D Riemann problem is described in the Euler equations deep dive. While the cost of Lanyon for the increased complexity of the Euler equations in multiple dimensions has increased, the results are still a fraction of the frontier models. Even in the best case, the GPT-5.6 Sol terse and detailed runs, where the output tokens generated are a factor of $\sim 10$ larger, no GPT-5.6 Sol run, detailed or terse, compares favorably with Lanyon’s output. The solution is either wrong, linearly unstable, or at best, only first order in space and time, compared to the uniformly second order methods which heuristically satisfy TVD due to their solution structure even in the abscence of formal proofs of TVD for vector nonlinear hyperbolic PDEs.

Nonlinear benchmarks
Two distinct failure modes in nonlinear benchmarking: an incorrect solution (left) produced by inaccurately handling the in-cell flux correction term from the limited states, and an oscillatory solution (right) produced by utilizing a first order forward Euler method for the time stepping, which is linearly unstable in smooth regions.

In fact, the only model which came even close to Lanyon in terms of accuracy for this particular test was Fable 5, and only with the detailed prompt, at $\sim 70$ times as many output tokens and $>130$ times the wallclock time. Every other model encountered new pathologies which go beyond cheating at verification or triaging difficult components of the proofs. A variety of failure modes previously encountered still occur in our benchmarking of the more complex Euler equations, such as uses of native_decide, or proofs not matching the implemented solvers and only partial post hoc formalization of the code. Indeed, these previously observed failure modes became more pronounced for the Euler equations due to the terse prompt leaving it to the agent’s discretion for which Riemann solver to use. Certain runs, such as the terse Fable 5 t2 and t3 trials, and the terse Opus 4.8 t1 and t2 trials, utilized a Roe solve, a more accurate but much more complicated Riemann solver to verify. The agents’ verification choices included failure modes such as not actually utilizing Roe averages, building the proofs with $\sqrt{\rho}$ as a free variable to avoid the conditional nature of the Roe proofs that require careful accounting of $\rho > 0$, or specific uses of native_decide to try to bridge the proofs to finite precision arithmetic.

However, the more striking feature of this culmination of benchmarking into a test of agent performance on a system of nonlinear hyperbolic PDEs is that the failure modes are so dramatic; models outright failed to produce the correct solution or implemented linearly unstable schemes.. Some of these failure modes are perhaps unsurprising. The consistent story with the incorrect solution is that the models failed to account for the intra-cell flux correction which arises when utilizing a limited second order reconstruction of the state, an error Lanyon avoids with its built in knowledge of the most general form of the numerical flux in terms of the average of the fluxes and jump in the fluctuations. Likewise, the oscillatory behavior is the result of the frontier models, despite all of their capabilities, ultimately not using knowledge that forward Euler is linearly unstable for these problems in smooth regions. Thus, the subsequent time stepper must be some higher order scheme, something like a full Lax-Wendroff or strong-stability-preserving Runge-Kutta method. In the end, where Lanyon’s reliability was previously a measure of its consistency, it is now the case that Lanyon’s reliability corresponds to a measurable quality increase in the solvers produced.

Final discussion

Our central thesis from our announcement post: “Code is now abundant, but correctness remains scarce,” is vindicated. While through the scalar PDE benchmarking we were merely posing the question, i.e., could the frontier models produce something approximating our formally verified solvers, we are now confronted with the reality that the frontier models can regularly fail at constructing solvers for more complicated systems of PDEs: the same complicated PDEs which can be used to describe the physical world. This consistency of failure is mirrored by the consistency Lanyon provides with its neurosymbolic architecture and the distillation of decades of collective experience in computational physics into an agent that is making informed decisions to create correct-by-construction solvers for numerically integrating these complex systems of PDEs.

The addition of more physics in these systems of PDEs is unlikely to make things easier for any of these frontier models. Dissipative terms such as viscosity and thermal conduction that transform the Euler equations into the Navier-Stokes equations, electromagnetic forces which extend the Euler equations to the equations of magnetohydrodynamics, and reactive sources to capture the physics of e.g., disassociative processes in hyper-sonic vehicle re-entry or chemical reactions in propulsion problems, all introduce new failure modes in the abscence of formal verification. The fact that we experienced a genuine phase transition in failure testing the frontier capabilities in writing solvers for the Euler equations demonstrates the need for Lanyon. Formally verified solvers, composed of any number of formally verified pieces, e.g., starting with the Euler equations and adding more and more physics, are the only path forward for building trust in the output of computational models of the physical world. Lanyon provides that trust.

References and Footnotes


  1. To facilitate consistency with the previous benchmarking run, we have elected to continue to utilize Opus 4.8 instead of Opus 5 for this comparison. This decision is also partially made in light of Opus 5’s inconsistency in performance at higher effort, with some benchmarks showing degradation of performance at the maximum effort. Because we are ultimately interested in whether or not the frontier models can successfully implement numerical solvers, irrespective of cost, we do not complicate this analysis with an “effort” axis and have elected not to extensively explore a model like Opus 5’s performance along this axis. ↩︎