Dane Sabo 2bbb1871cc refactor: scripts subdivision + TOML configs + results/ split + presentation outline
Architecture restructure from morning review:

1. code/scripts/ subdivided into sim/, reach/, barrier/, plot/.
   Easier nav; `barrier/` is the natural place for SOS scale-up scripts.
2. Heatup PJ reach variants consolidated behind TOML configs.
   reach_heatup_pj.jl now takes `--config path/to/config.toml`;
   configs/heatup/baseline.toml (wide entry, from predicates.json) and
   configs/heatup/tight.toml (narrow entry, reproduces all-6-halfspaces
   discharged result). Old reach_heatup_pj_tight.jl and
   reach_heatup_pj_tight_full.jl deleted (superseded).
3. Reach output .mat files moved from reachability/ to results/.
   reachability/ now = specs + docs; results/ = ephemeral outputs
   (gitignored *.mat). README added.
4. OVERNIGHT_NOTES.md archived to claude_memory/2026-04-20-21-overnight-
   session-summary.md (date range in the filename makes the history clearer).

All include() / Pkg.activate() paths in scripts updated for the new
depth. Smoke tests pass (reach_operation.jl generates its .mat in
the new results/ location; sim_sanity.jl matches MATLAB).

Presentation outline for the 20-min prelim talk landed in
presentations/prelim-presentation/outline.md. 14-slide assertion-
evidence format targeting OT-informed cybersecurity audience. Each
slide: one declarative assertion + one figure. Outline includes
which figures already exist and which need to be created, timing
checkpoints, cybersecurity angle to emphasize, and Q&A prep.

New config configs/heatup/with_steam_dump.toml + its companion
scripts/reach/reach_heatup_pj_sd.jl (12-state RHS with Q_sg as an
augmented bounded parameter x[10] and time as x[11]). Kicks off
point 3 from morning review.

Next up: scram X_entry expansion (morning point 2) — LOCA scenario
+ union of mode reach envelopes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 20:24:48 -04:00

396 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Preliminary Example Presentation — Assertion-Evidence Outline
**Format:** Assertion-evidence (Alley). Each slide: one declarative sentence
at the top, one piece of visual evidence below. No bullet soup.
**Duration:** 20 minutes. ~12 slides at ~1.5 min each (60 s typical, up to
2 min for the heavier ones).
**Audience:** OT-informed cybersecurity experts. Mostly CS, some control-theory
familiarity, very little reactor-physics background. Can assume fluency with:
LTL, automata, model-checking, reachability (as a concept), SMT/SAT. Must
explain: PKE, reactivity, precursors, hybrid systems.
**Running thread:** FRET natural-language requirement → LTL → synthesized
discrete controller → continuous plant → per-mode reach-avoid proof
→ hybrid correctness by composition.
**Design principles:**
- **Plots over bullets.** Every result slide anchors on one figure.
- **Physical intuition before math.** Reactor basics before PKE.
- **Honest limitations boxed on each result slide.** Audience are cyber
folks — they respect limits more than triumphs.
- **CS vocabulary by default, engineering terms defined inline.**
- **End with the seam**, not with a victory lap. The thesis question is
"how do discrete proofs and continuous proofs compose?" not "we verified
everything."
---
## Slide 1 — Title + hook
**Assertion:** Verified hybrid control for nuclear startup is a real problem
with no deployed solution.
**Evidence:** Title block + a single image showing a control-room board of
old-school analog gauges adjacent to a digital SCADA screen. Caption: "The
gap we're filling."
**Speak:** Introduce self + advisor + NRC fellowship context. Name the problem:
nuclear reactor operations are 70-80% human-error-driven at severe-accident
level (Chernobyl, TMI, Fukushima all primarily human factors). Plants run on
paper procedures that have no formal verification. The most advanced work to
date (HARDENS, NRC-funded) verified the discrete trip system in isolation and
stopped there. This talk: a preliminary example of bridging discrete
requirements all the way to continuous-state safety proofs, with the seam
between them as the research contribution.
**Reference:** thesis §2, ¶1-4. Cites Kemeny1979, Hogberg_2013, Kiniry2024.
**Figures to make:** find or compose the control-room image.
---
## Slide 2 — The hybrid-systems gap
**Assertion:** Existing tools verify either discrete *or* continuous systems,
never the seam between them.
**Evidence:** Two-column diagram. Left column: discrete (FRET, Spot,
SAL, HARDENS, TLA+). Right column: continuous (MATLAB, Modelica, CORA,
Flow*, HyTech). A dashed line between them labeled "the bridge problem."
**Speak:** HARDENS got to TRL 2-3 on the discrete side alone. Continuous-side
reach tools exist but assume the discrete controller is given as input. What
nobody has done: produce an *end-to-end* proof where the discrete controller's
transitions actually fire in physical time on the modeled plant.
**Reference:** thesis §2.2 "Formal Methods", §2.2.1 HARDENS, §2.2.2 Temporal
Logic. Thesis §2.3 (if exists — continuous methods).
---
## Slide 3 — Running example: the PWR_HYBRID_3 controller
**Assertion:** Our target is a 4-mode hybrid controller that takes a PWR
from hot standby to full power and back.
**Evidence:** The DRC state diagram (from `fret-pipeline/diagrams/PWR_HYBRID_3_DRC_states.png`).
Four nodes — shutdown, heatup, operation, scram — with labeled transitions.
**Speak:** One sentence of nuclear physics: a PWR has neutron population
(power), coolant temperatures at three locations, and precursor concentrations
that determine delayed-neutron generation. Startup is shutdown → heatup →
operation; any fault triggers scram. Mode transitions gated by boolean
conditions like `t_avg_in_range ∧ p_above_crit ∧ inv1_holds`.
Four modes means four *physical* behaviors the plant has to exhibit for
the discrete logic to be sound. This example stresses every layer of the
bridge we're building.
**Evidence path:** `fret-pipeline/diagrams/PWR_HYBRID_3_DRC_states.png`,
`fret-pipeline/pwr_hybrid_3.json` for one example requirement.
---
## Slide 4 — Layer 1: FRET → LTL → synthesized DRC
**Assertion:** Natural-language requirements become a verified discrete
controller automatically.
**Evidence:** One-panel figure: left half = snippet of FRET natural language
("Upon `control_mode = q_heatup ∧ t_avg_in_range ∧ p_above_crit ∧ inv1_holds`
DRC shall at the next timepoint satisfy `control_mode = q_operation`"), right
half = the corresponding LTL, bottom = arrow labeled `ltlsynt` pointing to
the synthesized state-diagram node.
**Speak:** FRET compiles natural-language requirements into LTL (Spot
ecosystem). `ltlsynt` turns LTL into an AIGER circuit representing the
minimal correct discrete controller. This is well-trodden ground in CS-land;
our contribution is *using it* on reactor operating procedures — so far
a formal-methods-free domain.
**Evidence path:** `fret-pipeline/README.md`, `pwr_hybrid_3.json` sample
requirement, `fret-pipeline/circuits/PWR_HYBRID_3_DRC.aag` AIGER circuit.
---
## Slide 5 — Layer 2: the plant model
**Assertion:** A 10-state PKE + thermal-hydraulics model is faithful enough
for reach analysis and tractable enough to actually compute with.
**Evidence:** The state-vector diagram: `x = [n, C_1, ..., C_6, T_f, T_c, T_cold]`
with arrows showing the coupling — neutron balance → fuel heating → coolant
transport → feedback to reactivity.
**Speak:** Point-kinetic equations + three thermal nodes. 10 states, 1
control input (rod worth u), 1 disturbance (steam-generator heat removal Q_sg).
Stiff system: prompt-neutron timescale is 10⁻⁴ s, thermal timescales are
seconds to minutes. That stiffness becomes critical later — it's what forces
the singular-perturbation move.
Five controllers: one per DRC mode (shutdown, heatup, operation under P, under
LQR, scram). All Julia, all in `code/src/` + `code/controllers/`.
**Evidence path:** `code/src/pke_th_rhs.jl`, `journal/journal.pdf` entry
2026-04-17 for derivation.
**Figures to make:** state-vector coupling diagram (can be ASCII → inkscape).
---
## Slide 6 — Layer 3: the reach-avoid obligation per mode
**Assertion:** Discrete correctness transfers to continuous correctness
via one reach-avoid obligation per mode.
**Evidence:** Taxonomy table from `reachability/WALKTHROUGH.md`:
| Mode | Kind | Obligation |
|---|---|---|
| shutdown | equilibrium | stay in X_safe forever |
| heatup | transition | from X_entry, reach X_exit in [T_min, T_max] while maintaining inv1 |
| operation | equilibrium | stay in X_safe forever under bounded Q_sg |
| scram | transition | from any mode, drive n safely subcritical in T_max |
**Speak:** This is the structural insight. Equilibrium modes → forever-invariance
proofs. Transition modes → reach-avoid proofs with time budgets. The DRC
transitions fire iff the reach set enters the right exit predicate. If
every mode's obligation is discharged, the hybrid system is correct by
composition. The methodological contribution of the chapter.
**Reference:** `reachability/WALKTHROUGH.md` §1, `reachability/predicates.json`
`mode_boundaries`.
---
## Slide 7 — Operation mode: discharge all 6 safety halfspaces (the win)
**Assertion:** Under LQR feedback and ±15% Q_sg variation, the operation-mode
reach tube discharges every safety halfspace with orders of magnitude of margin.
**Evidence:** The two-panel figure `docs/figures/reach_operation_tubes.png`.
Left: temperature tubes (T_c, T_hot, T_cold) overlaid; the near-zero width
of T_c visually demonstrates LQR contraction. Right: ΔT_core tube with a
right-axis in MW showing the power is tight around nominal.
Per-halfspace margin table (inset or second slide if space allows):
| Halfspace | Limit | Reach max | Margin |
|---|---:|---:|---:|
| fuel_centerline | 1200 °C | 328.9 | **+871 K** |
| t_avg_high_trip | 320 °C | 308.4 | **+11.6 K** |
| n_high_trip | 1.15 | 1.012 | **+0.14** |
**Speak:** LQR contracts the regulated direction (T_c) from 0.1 K to 0.03 K
halfwidth. Uncontrolled directions (precursors) expand but don't appear in
any safety predicate. Tightest margin is the high-flux trip at 12% headroom.
**Limitations box:** linear-reach of a nonlinear plant — *approximate, not
sound* yet for the physical plant. That's what the next slides address.
**Evidence path:** `code/scripts/reach/reach_operation.jl`,
`docs/figures/reach_operation_tubes.png`.
---
## Slide 8 — Quadratic Lyapunov barrier fails structurally
**Assertion:** The canonical quadratic Lyapunov barrier cannot certify this
plant — *even with LQR inside the barrier* — because of plant anisotropy.
**Evidence:** Bar chart comparing open-loop vs LQR-closed-loop Lyapunov bound
on `n_high_trip` direction: OL is 27 million × nominal, CL is 1,242 × nominal.
Title: "LQR helps 20,000× but both bounds are physically meaningless."
**Speak:** Plant has prompt timescale 10⁻⁴ s vs thermal timescale ~10 s.
Lyapunov matrix P inherits that 10⁴ spread. Resulting ellipsoid stretches
obscenely along the fast directions when projected to physical coordinates.
No amount of controller tuning fixes this — it's set by the plant's own
physics. The ellipsoid geometry cannot match the slab-shaped safe region.
**This is the motivation for polynomial (SOS) or polytopic barriers.**
**Reference:** `code/scripts/barrier/barrier_compare_OL_CL.jl`, journal entry
2026-04-20 (evening).
---
## Slide 9 — Prompt-jump reduction makes nonlinear reach tractable
**Assertion:** Singular-perturbation reduction of the fast neutronics gives
us 30× more reach horizon and a rigorous O(Λ) error bound via Tikhonov.
**Evidence:** Side-by-side: left panel = validate_pj_heatup.png (empirical:
PJ and full-state trajectories overlay perfectly over 50 minutes). Right panel
= the Tikhonov bound written out mathematically:
$$|x(t) - x_{\mathrm{PJ}}(t)| \leq C \cdot \Lambda = \mathcal{O}(10^{-4})$$
**Speak:** Setting dn/dt = 0 and solving algebraically for n gives us
`n = Λ·Σλᵢ·Cᵢ / (β - ρ)`. State drops from 10 to 9, removes the Λ⁻¹
stiffness. Reach tool (TMJets) can take steps on thermal timescale instead
of prompt timescale.
The magic: we *prove* the PJ approximation's validity condition (`β - ρ > 0`
with margin) **as part of the same reach obligation** via the
`prompt_critical_margin_heatup` halfspace in `inv1_holds`. No hand-waving —
the reach machinery proves both the safety claim and the approximation's
soundness together.
**Evidence path:** `code/src/pke_th_rhs_pj.jl`, `code/scripts/sim/validate_pj.jl`,
`journal/` entry 2026-04-21 "Tikhonov bound".
---
## Slide 10 — First sound nonlinear heatup reach (the second win)
**Assertion:** With PJ + a tightened entry box, nonlinear Taylor-model reach
discharges all 6 `inv1_holds` safety halfspaces over the first 300 s of heatup.
**Evidence:** The four-panel `reach_heatup_pj_tubes.png`: temperature tubes
overlaid, ΔT_core, ρ in dollars (stays between -0.25 $ and -0.05 $ —
sub-prompt-critical), n decaying.
**Speak:** TMJets Taylor-model integration. 12,932 reach-sets, 200 s wall time.
Tube **stable** — T_c envelope `[281.05, 291.0]` identical at 60 s and 300 s,
meaning the controller holds the state inside the tube indefinitely. This
is the first sound (modulo O(Λ) PJ error) nonlinear reach-avoid artifact
for this plant.
**Limitations box:** 300 s of a 5-hour `T_max`. Step budget caps horizon; entry
refinement (Blanchini-style) is the path to hours.
**Evidence path:** `code/scripts/reach/reach_heatup_pj.jl configs/heatup/tight.toml`,
`docs/figures/reach_heatup_pj_tubes.png`.
---
## Slide 11 — Degree-4 SOS polynomial barrier, a working proof of concept
**Assertion:** A degree-4 polynomial barrier certificate — the structure that
quadratic Lyapunov cannot provide — works on the operation-mode projection.
**Evidence:** Equation block showing the symbolic polynomial
(abbreviated — the actual 13-term polynomial from `code/scripts/barrier/barrier_sos_2d.jl`).
Side caption: "CSDP returned OPTIMAL. Solve: ~3 seconds."
**Speak:** Polynomials of degree 4 can localize to slab-shaped safety regions
in a way degree-2 (quadratic) cannot. The Prajna-Jadbabaie formulation: find
`B(x)` such that `B ≤ 0` on entry, `B ≥ 0` on unsafe, and `∇B·f ≤ 0` on
`{B=0}`. Sum-of-squares programming reduces this to an SDP. 2D projection
proof of concept; scaling to full 10-state requires bigger solver (Mosek or SCS).
**Reference:** `code/scripts/barrier/barrier_sos_2d.jl`, journal entry
2026-04-21.
---
## Slide 12 — The hybrid correctness story, assembled
**Assertion:** All four pieces — FRET/synthesis, plant model, reach tubes,
SOS/polytopic barriers — compose into a hybrid system correctness argument.
**Evidence:** The composition picture. DRC state diagram at center; each
DRC node has an arrow to a "per-mode obligation box" labeled with its proof
artifact (tube or barrier or certificate). Arrows between nodes = transitions,
labeled with the predicate polytope. Outer dashed box: "hybrid system
closed-loop safety."
**Speak:** What's been built, what's been proven, what's next. Transition
correctness between modes is the next thesis-blocking piece — each mode's
`X_exit` has to be inside the next mode's `X_entry` (with margin). That's an
inclusion check, not a reach — but it's the final structural piece.
---
## Slide 13 — Limitations and next steps
**Assertion:** This is a preliminary example, not a deployable system.
**Evidence:** A two-column list:
| What's proven | What's next |
|---|---|
| Operation mode safe under ±15% load (approximate, via linear reach) | Nonlinear operation reach (tight SOS barrier, LOCA disturbance) |
| Heatup PJ reach discharges all 6 safety halfspaces for 300 s | Extend to full 5-hr `T_max`; model steam-dump disturbance |
| Scram PJ n-decay monotone over 60 s | Expand `X_entry(scram)` to union of all mode tubes + LOCA |
| Degree-4 SOS barrier on 2D projection | Full 10-state SOS barrier |
| PJ error rigorously bounded by Tikhonov | Parametric α uncertainty; DNBR correlation |
**Speak:** The gap from prelim example to deployable system is well-defined:
more states, tighter bounds, real tech-spec numbers, hardware-in-the-loop.
None of these is a research novelty unto itself — they're engineering.
The research contribution is the composition framework, demonstrated end-to-end
on a nontrivial running example. Phase 2 of the thesis is filling in the
gaps and expanding to multiple plants.
---
## Slide 14 — Questions / acknowledgements
**Assertion:** (none — backup slide)
**Evidence:** Thanks to advisor, committee, NRC fellowship. Links to:
repo (gitea), journal PDF, thesis in progress.
**Speak:** Open for questions. Expect questions on:
- "Why not Stateflow/Simulink?" → (have answer prepared; HARDENS used
Cryptol for a reason — formal tool integration matters)
- "What's the relationship to LTLMoP / DragonFly?" → (survey answer)
- "How would this interact with ML components?" → (out of scope for now,
the whole pitch is *no ML in safety-critical loop*)
- "What's your threat model for cybersecurity?" → (tie back to OT audience —
formal methods guarantee the controller's logic; they do not protect the
comms layer or implementation-level vulns. Mention HARDENS' focus on
"correctness of implementation" vs our focus on "correctness of
specification")
---
## Presentation construction notes
### What to build in Beamer later
- Assertion-evidence template (one sentence at top, centered figure below).
- Consistent color coding: green for "discharged" / "proved", red for
"limitation" / "gap", blue for "discrete-layer", amber for "continuous-layer".
- The composition diagram on slide 12 — this will take the most Tikz work.
### Figures that need to be created or dressed up for the talk
- Slide 1: control-room visual.
- Slide 2: discrete/continuous tools comparison.
- Slide 3: use `fret-pipeline/diagrams/PWR_HYBRID_3_DRC_states.png`.
- Slide 4: FRET → LTL → AIGER panel.
- Slide 5: 10-state coupling diagram.
- Slide 7, 10: reuse `docs/figures/reach_*_tubes.png`.
- Slide 8: bar chart (new, easy matplotlib).
- Slide 9: reuse `validate_pj_heatup.png`.
- Slide 11: latex-typeset polynomial + CSDP log snippet.
- Slide 12: composition diagram (Tikz, will take time).
### Cybersecurity angle to emphasize
- The point the OT audience will care about: this kind of verification
**constrains what the controller can physically do**. Even if an attacker
gets past authentication and can inject arbitrary commands, the DRC-plus-
reach-certified envelope limits how bad things can get *within the
physical plant*. That's a different assurance axis than the usual
comms-security one and complements it.
- Formal methods as defense-in-depth: they catch bugs *before* deployment,
which reduces attack surface more than any runtime defense.
- The PJ reduction + Tikhonov approach might be of interest for other
safety-critical stiff systems (power grid, aerospace).
### Things to NOT do
- Don't get lost in reactor-physics detail. One sentence per physical
concept; get them to the CS content fast.
- Don't show code unless it's a slide about *why* the code structure
matters. Code screenshots are terrible evidence.
- Don't oversell. Honest limitations at every stage builds trust with
a skeptical audience.
- Don't use more than 2 bullet points on any slide. Alley rules.
### Timing checkpoints
- Slide 6 (mode-obligation taxonomy) by minute 8.
- Slide 10 (first nonlinear reach result) by minute 13.
- Slide 12 (composition story) by minute 17.
- Slide 13 (limitations) by minute 19.