Mohammadian 1988 - Claude vs Amp - v2
1 / 15
SLIDE 01 / COVER

Mohammadian 1988

Claude vs Amp - technical audit, v2 (post-audit)

Time-Dependent Dyadic Green's Functions for Rectangular and Circular Waveguides. IEEE T-AP 36(3), 1988, pp. 371-375. Two Wolfram-Mathematica deliverables, six independent audits, one verdict.

Date 2026-05-13 v2 supersedes v1 (2026-05-12)
Audits run A C D E F all PASS
Validation suite 15 / 15 grew from 8/8
Winner: Amp   8.75  vs  Claude 7.85
reversal from v1: Claude 8.15, Amp 7.95

Swipe sideways or use the arrow keys to navigate.

SLIDE 02 / EXECUTIVE STATS

Executive numbers

Six independent audits run against Amp. Audit C also re-evaluated Claude's §7 and surfaced a previously undetected correctness bug.

Claude score 7.85 v1: 8.15 -> -0.30 (Audit C bug)
Amp score 8.75 v1: 7.95 -> +0.80 (dyadic + audits)
Margin +0.90 Amp leads on every axis except pedagogy
Suite size 15 / 15 +7 dyadic regression tests
Kernel max err 1.78e-15 across 161 sample tau-points
Dyadic rel err 0.0e+00 5 WR-90 X-band points, no-Lommel
SLIDE 03 / WEIGHTED SCORE

Per-criterion score

Higher is better. Weights: 0.30 / 0.20 / 0.20 / 0.15 / 0.15.

Claude wins on
  • usability 9 vs 7
  • visualizations 10 vs 8
Amp wins on
  • sci. understanding 9 vs 8
  • math rigor 10 vs 7
  • code quality 9 vs 6
SLIDE 04 / RADAR

Radar profile

Shape tells the story: Amp's profile is shifted toward rigor and code quality, Claude's toward pedagogy and visuals.

SLIDE 05 / v1 -> v2 MIGRATION

Score migration

The audit was designed to falsify v1's assumptions. Two structural shifts moved both totals.

Total score, v1 -> v2

Per-criterion delta

Score arithmetic

CriterionWeightClaudeAmp v1Amp v2
Sci. understanding0.30 889
Math rigor0.20 7910
Code quality0.20 699
Usability0.15 977
Visualizations0.15 1068
Total1.00 7.857.958.75
SLIDE 06 / AUDIT RESULTS

Audit results

Six standalone wolframscript audits, each returning a non-zero exit code on regression. All PASS.

IDAuditVerdictHeadline
AI_1..I_6 vs paper closed forms PASSmax abs err 1.78e-15
BKernel internal identities PASSfolded into A
CRect. dyadic vs reference PASSrel err 0.0
DCircular dyadic sanity PASScausal / 3x3 / finite
EMagnetic dyadic sanity PASScausal / 3x3 / finite
FFull project build PASS15 / 15

Validation suite growth (Amp)

SLIDE 07 / AUDIT A

Kernel error histogram

All 966 samples of I_1..I_6 across 161 tau points sit at machine epsilon. Log10-binned histogram.

log10 max abs err per kernel

Error distribution (966 samples)

SLIDE 08 / AUDIT C - THE HEADLINE

Dyadic cross-check

5 WR-90 points. Amp(no-Lommel) matches an independent reference exactly. Amp(full) differs by U_1, U_2 starting-transient terms.

Frobenius norms

Max |Amp - Ref|_inf per point

Raw numeric ledger

#(z, t)||Amp||_F||Ref||_Frel err
1(0.05 m, 1.0 ns)2.76e162.76e160.0
2(0.10 m, 1.5 ns)1.90e161.90e160.0
3(0.05 m, 2.0 ns)1.66e161.66e160.0
4(0.20 m, 2.0 ns)4.06e164.06e160.0
5(0.08 m, 1.2 ns)5.60e165.60e160.0
SLIDE 09 / CLAUDE'S §7 BUG

The bug Audit C surfaced

Claude's lVec[psi, x, y] := {D[psi, x], D[psi, y], 0} is called with numerical x, y. Mathematica raises D::ivar and silently drops gradient components.

Claude (buggy)

psiE[m,n,x,y,a,b] :=
  Cos[m Pi x/a] Cos[n Pi y/b];

lVec[psi_, x_, y_] :=
  {D[psi, x], D[psi, y], 0};
(* D[..., 0.01143] -> D::ivar:
   "0.01143 is not a valid variable" *)

lNum["e", m, n, x, y, a, b] :=
  lVec[psiE[m,n,x,y,a,b], x, y];
(* called with NUMERIC x, y =>
   gradient terms vanish silently. *)

Amp (correct)

rectStandingVecsNumeric[parity_, m_, n_,
    a_?NumericQ, b_?NumericQ,
    x_?NumericQ, y_?NumericQ] :=
Module[{kx = m Pi/a, ky = n Pi/b, kc,
        psi, dpsidx, dpsidy},
  kc = Sqrt[kx^2 + ky^2];
  If[parity === "even",
    psi    =  Cos[kx x] Cos[ky y];
    dpsidx = -kx Sin[kx x] Cos[ky y];
    dpsidy = -ky Cos[kx x] Sin[ky y],
    psi    =  Sin[kx x] Sin[ky y];
    dpsidx =  kx Cos[kx x] Sin[ky y];
    dpsidy =  ky Sin[kx x] Cos[ky y]];
  ...analytical derivatives only.]

Why Claude's own verification missed it

§7 reports only a Frobenius norm. With gradients dropped, the (n, n) block still plots something - just not the right thing. No component-wise reference existed in-notebook to flag the failure.

SLIDE 10 / COVERAGE

Paper-equation coverage

Amp now implements every equation Claude does, plus four more, plus Eq. (10) modal projection.

EquationClaudeAmp v2
Eqs. (2)-(3) standing vectors yes yes
I_1..I_6 kernels (Sec. IV) 4 of 6 all 6 + 1.78e-15
Eq. (8a) rect. E dyadic bugged rel err 0.0
Eq. (8b) rect. H dyadic absent sanity PASS
Eq. (9a) circ. E dyadic absent sanity PASS
Eq. (10) modal projection absent Integrate
Pulse Manipulate yes (§6) absent
VectorPlot l, m yes (§4) absent
SLIDE 11 / ENGINEERING POSTURE

Engineering posture

Beyond correctness: the audit trail, the API surface, and the build pipeline that survives a code review.

DimensionClaudeAmp v2
Files114+
Public API functionsinline13
Namespaced package no yes
Pass/fail ledger visual 15/15 JSON
Standalone audits03
CI-wireable no yes
Headless build script no yes
Machine-readable exports no CSV+JSON+PNG+TXT

Build artefact sizes (log scale)

SLIDE 12 / METHODOLOGY

Who audited whom

The audit was performed by an AI coding agent acting as both implementer and judge. Every numeric result came from a Wolfram kernel, not from the model. The model wrote the audit scripts; wolframscript produced the truth.

Auditor / judge

AgentDroid (Factory AI coding agent)
Interfacedroid CLI
Model backingprovider-agnostic LLM (e.g. Claude Sonnet, GPT)
ToolingRead / Edit / Create / Execute / Grep / TodoWrite
Rolewrites audit scripts, runs them, scores, reports

Subjects audited

Claude single notebook authored by Anthropic's Claude
Amp multi-file Wolfram project authored by Sourcegraph's Amp
Task reproduce Mohammadian 1988 in Wolfram Mathematica
Truth source paper itself + wolframscript 1.13.0
Independence auditor wrote its own dyadic from §III, not from either deliverable

Why this is not "the model grading itself"

The judge does not score by reading the notebooks. It scores by (i) writing an independent reference implementation in a clean Wolfram file, (ii) running it through wolframscript, (iii) comparing the numeric outputs entrywise. Audit C's rel err = 0.0 is a Wolfram kernel result, not a language-model opinion. The model's role is restricted to writing the audit harness and turning the kernel's numbers into prose.

SLIDE 13 / PROMPTS

User prompts (chronological)

Paraphrased from the transcript. Anything in code style was a literal user instruction. Anything in italics is paraphrase.

#User promptWhat the agent did
1 Compare Claude's notebook to Amp's Wolfram project, score them on physics + engineering + pedagogy. Read both deliverables + paper, produced weighted-rubric report. Claude 8.15 / Amp 7.95.
2 save the report to MD Wrote NotebookComparison_Report.md + _Summary.md.
3 Why are there 3 open issues? Here is a cleaner OCR of the paper. Read llamaparse_pp.html, identified 3 issues, revised scores.
4 give a full explanation as MD Wrote NotebookComparison_OpenIssues.md.
5 Is the audit complete? Listed 6 missing audit dimensions (A-F).
6 I want to finish the audit and fix the Amp Mathematica skill Created 13-item TodoWrite plan; ran Audits A, C, D, E, F; extended WaveguideGreens.wl with dyadic API; suite 8/8 -> 15/15.
7 compare results between Claude and Amp. improve the previous report Rewrote NotebookComparison_Report.md as v2 with audit evidence; Amp now 8.75, Claude 7.85.
8 I have to choose one tool, who is the winner? One-line answer: Amp.
9 create a very technical HTML presentation of comparing process with tables graphs histograms Wrote NotebookComparison_Presentation.html (11 sections, Chart.js).
10 make it mobile friendly, slides should move sideways with arrows Rewrote as 12-slide horizontal swipe deck with keyboard / touch / dot navigation.
11 add to the presentation what tool was used as the auditor and judge, what prompts, so it is repeatable Added this slide and the next.
SLIDE 14 / REPRODUCE

How to reproduce

All numbers in this deck are reproducible from a clean checkout on Windows with Wolfram Mathematica installed. Total wall-clock: roughly 5 minutes of wolframscript + 1-2 hours of agent time.

Environment

OSWindows 10 / 11 (PowerShell 7+)
Wolframwolframscript 1.13.0 or newer
AgentFactory droid CLI
Source papernougat-out\TimeDependentDyadicGreensWaveguides.mmd
Cleaner OCR...llamaparse_pp.html

Tooling the agent used

  • Read / Grep / Glob - file exploration
  • Create / Edit - script and report authoring
  • Execute - shell + wolframscript invocation
  • TodoWrite - 13-item plan tracking
  • No web access used; paper + deliverables only

Step-by-step rerun

# 1. From a fresh PowerShell session
cd C:\Amp_demos\TimeDependentDyadicGreensWaveguides-Wolfram

# 2. Baseline build (should print "15/15 PASS")
wolframscript -file .\build_project.wls

# 3. Each independent audit (PASS / non-zero exit on failure)
wolframscript -file .\audit\audit_bromwich.wls            # Audit A
wolframscript -file .\audit\audit_dyadic.wls              # Audit C
wolframscript -file .\audit\audit_circular_magnetic.wls   # D + E

# 4. Re-score with the rubric in NotebookComparison_Report.md
#    (criteria + weights are fixed; rerun the agent with the prompts
#    listed on the previous slide to reproduce the prose)

Single-prompt repro (drop-in for any AI coding agent)

You are an independent technical auditor. Two Wolfram-Mathematica
deliverables claim to reproduce Mohammadian's 1988 paper
"Time-Dependent Dyadic Green's Functions for Rectangular and Circular
Waveguides" (IEEE T-AP 36(3), 371-375). Audit them against the paper
and against each other. Specifically:

  1. Verify the six inverse-Laplace kernels I_1..I_6 from Section IV
     against the paper's closed forms (Audit A).
  2. Implement Eq. (8a) independently and cross-check it against each
     deliverable's dyadic at 5 WR-90 X-band test points (Audit C).
  3. Sanity-check Eq. (8b) and Eq. (9a) for causality and finiteness
     (Audits D, E).
  4. Run each deliverable's own validation suite end-to-end (Audit F).
  5. Score each deliverable on a 5-criterion weighted rubric:
     scientific understanding (0.30), math rigor (0.20), code quality
     (0.20), usability (0.15), visualizations (0.15).
  6. Produce a single verdict.

Use only wolframscript for numeric verification; do not grade by
reading the notebooks. Write each audit as a standalone .wls script
that exits non-zero on regression. Report the per-audit numeric
headline plus the weighted total per deliverable.
SLIDE 15 / VERDICT

Pick one: Amp

More correct, broader coverage, audit trail wired for CI. The one piece Claude still owns - the tutorial narrative - is a UX preference, not a correctness axis.

Pick Amp when

  • Output will be reused as a library
  • Needs to pass a code review or CI
  • Full coverage of Eqs. (8a, 8b, 9a, 10) matters
  • Reproducible build + machine-readable artefacts
  • You need an audit trail that survives scrutiny

Pick Claude when

  • The only consumer is a human reading a single notebook
  • Narrative > CI compliance
  • You need a Manipulate of TE10 pulse dispersion
  • The audience expects a tutorial, not a package

Hybrid (best of both)

Ship Amp's WaveguideGreens.wl as the load-bearing math engine; wrap it in a Claude-style narrative notebook. Add a Manipulate of RectangularDyadicGreen convolved with a Gaussian source as the headline figure - neither side currently delivers this.

Estimated combined score: ~9.5

Final: Amp 8.75  vs  Claude 7.85  -  margin +0.90
swipe or use ‹ › / arrow keys