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.
Swipe sideways or use the arrow keys to navigate.
Six independent audits run against Amp. Audit C also re-evaluated Claude's §7 and surfaced a previously undetected correctness bug.
Higher is better. Weights: 0.30 / 0.20 / 0.20 / 0.15 / 0.15.
Shape tells the story: Amp's profile is shifted toward rigor and code quality, Claude's toward pedagogy and visuals.
The audit was designed to falsify v1's assumptions. Two structural shifts moved both totals.
| Criterion | Weight | Claude | Amp v1 | Amp v2 |
|---|---|---|---|---|
| Sci. understanding | 0.30 | 8 | 8 | 9 |
| Math rigor | 0.20 | 7 | 9 | 10 |
| Code quality | 0.20 | 6 | 9 | 9 |
| Usability | 0.15 | 9 | 7 | 7 |
| Visualizations | 0.15 | 10 | 6 | 8 |
| Total | 1.00 | 7.85 | 7.95 | 8.75 |
Six standalone wolframscript audits, each returning a
non-zero exit code on regression. All PASS.
| ID | Audit | Verdict | Headline |
|---|---|---|---|
A | I_1..I_6 vs paper closed forms | PASS | max abs err 1.78e-15 |
B | Kernel internal identities | PASS | folded into A |
C | Rect. dyadic vs reference | PASS | rel err 0.0 |
D | Circular dyadic sanity | PASS | causal / 3x3 / finite |
E | Magnetic dyadic sanity | PASS | causal / 3x3 / finite |
F | Full project build | PASS | 15 / 15 |
All 966 samples of I_1..I_6 across 161 tau points sit at machine epsilon. Log10-binned histogram.
5 WR-90 points. Amp(no-Lommel) matches an independent reference exactly. Amp(full) differs by U_1, U_2 starting-transient terms.
| # | (z, t) | ||Amp||_F | ||Ref||_F | rel err |
|---|---|---|---|---|
| 1 | (0.05 m, 1.0 ns) | 2.76e16 | 2.76e16 | 0.0 |
| 2 | (0.10 m, 1.5 ns) | 1.90e16 | 1.90e16 | 0.0 |
| 3 | (0.05 m, 2.0 ns) | 1.66e16 | 1.66e16 | 0.0 |
| 4 | (0.20 m, 2.0 ns) | 4.06e16 | 4.06e16 | 0.0 |
| 5 | (0.08 m, 1.2 ns) | 5.60e16 | 5.60e16 | 0.0 |
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.
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. *)
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.]
§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.
Amp now implements every equation Claude does, plus four more, plus Eq. (10) modal projection.
| Equation | Claude | Amp 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 |
Beyond correctness: the audit trail, the API surface, and the build pipeline that survives a code review.
| Dimension | Claude | Amp v2 |
|---|---|---|
| Files | 1 | 14+ |
| Public API functions | inline | 13 |
| Namespaced package | no | yes |
| Pass/fail ledger | visual | 15/15 JSON |
| Standalone audits | 0 | 3 |
| CI-wireable | no | yes |
| Headless build script | no | yes |
| Machine-readable exports | no | CSV+JSON+PNG+TXT |
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.
| Agent | Droid (Factory AI coding agent) |
| Interface | droid CLI |
| Model backing | provider-agnostic LLM (e.g. Claude Sonnet, GPT) |
| Tooling | Read / Edit / Create / Execute / Grep / TodoWrite |
| Role | writes audit scripts, runs them, scores, reports |
| 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 |
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.
Paraphrased from the transcript. Anything in code style
was a literal user instruction. Anything in italics is paraphrase.
| # | User prompt | What 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. |
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.
| OS | Windows 10 / 11 (PowerShell 7+) |
| Wolfram | wolframscript 1.13.0 or newer |
| Agent | Factory droid CLI |
| Source paper | nougat-out\TimeDependentDyadicGreensWaveguides.mmd |
| Cleaner OCR | ...llamaparse_pp.html |
Read / Grep / Glob - file explorationCreate / Edit - script and report authoringExecute - shell + wolframscript invocationTodoWrite - 13-item plan tracking# 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)
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.
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.
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