PWR-HYBRID-3/journal/preamble.tex
Dane Sabo 7a1023e252 tight-entry heatup PJ: ALL 6 inv1_holds halfspaces discharged
Second heatup PJ probe with tightened X_entry (T_c width 6K vs
baseline 14K) gives:

  T=60s:  5710 sets in 101s — T_c envelope [281.05, 291.0] 
  T=300s: 12932 sets in 206s — T_c envelope [281.05, 291.0] 

T_c envelope STABLE (identical at 60s and 300s) — the tube reached
steady shape and stopped growing. Low-T_avg trip (280) cleared at
lower bound 281.05, ~1K margin.

**First sound nonlinear reach-avoid proof for any mode of this plant:**
for the tightened entry and T = 300s, every inv1_holds halfspace
holds along the tube.  Sound w.r.t. PJ dynamics (<= 0.1% error vs
full state).

The baseline wider-entry run was loose on T_c low bound (272.4),
confirming that the looseness was entry-box-width driven (14K too
wide for TMJets + orderQ=2) rather than intrinsic to the method.
Entry splitting / refinement is the path to the full baseline set.

Also: LaTeX preamble now has the unicode-to-math literate map
attached to the listing STYLES themselves (not just global \lstset),
so terminal-output listings pasted from Julia with Δ, ≥, °,  etc.
render correctly.  Journal 34 pages, clean build.

OVERNIGHT_NOTES.md updated with tight-entry win.

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

243 lines
6.9 KiB
TeX
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.

% preamble.tex — shared LaTeX setup for the HAHACS lab journal.
%
% Intent: a reader in 2030 picks up this journal and can rebuild the
% work from scratch. This file defines the visual vocabulary — code
% listings, figures, callouts — that each dated entry uses.
\documentclass[11pt, letterpaper]{article}
% --- Page geometry ------------------------------------------------------------
\usepackage[margin=1in, headheight=15pt]{geometry}
\usepackage{parskip} % blank line between paragraphs; no indent
\usepackage{microtype}
% --- Fonts --------------------------------------------------------------------
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{inconsolata} % monospaced font for code
% --- Math ---------------------------------------------------------------------
\usepackage{amsmath, amssymb, amsthm, mathtools}
\usepackage{siunitx}
\sisetup{detect-all, per-mode=symbol}
% siunitx doesn't ship \degreeFahrenheit; declare it via ensuremath.
\DeclareSIUnit\degreeFahrenheit{\ensuremath{^\circ}F}
% --- Graphics -----------------------------------------------------------------
\usepackage{graphicx}
\graphicspath{{./figures/}{../docs/figures/}}
\usepackage{caption}
\captionsetup{font=small, labelfont=bf}
% --- Code listings ------------------------------------------------------------
\usepackage{listings}
\usepackage{xcolor}
% Palette
\definecolor{code-bg}{HTML}{F7F7F2}
\definecolor{code-rule}{HTML}{D0D0C8}
\definecolor{code-comment}{HTML}{708070}
\definecolor{code-keyword}{HTML}{0050A0}
\definecolor{code-string}{HTML}{A04060}
\definecolor{code-number}{HTML}{806010}
\lstdefinelanguage{Julia}%
{morekeywords={abstract,break,case,catch,const,continue,do,else,elseif,%
end,export,false,for,function,immutable,import,importall,if,in,%
macro,module,otherwise,quote,return,struct,switch,true,try,type,%
typealias,using,while,mutable,global,local,let,primitive,where},%
sensitive=true,%
morecomment=[l]\#,%
morecomment=[n]{\#=}{=\#},%
morestring=[s]{"}{"},%
morestring=[m]{'}{'},%
}
\lstdefinestyle{labstyle}{
backgroundcolor=\color{code-bg},
basicstyle=\ttfamily\small,
breaklines=true,
breakatwhitespace=false,
captionpos=b,
commentstyle=\color{code-comment}\itshape,
frame=single,
framerule=0.5pt,
rulecolor=\color{code-rule},
keywordstyle=\color{code-keyword}\bfseries,
numberstyle=\tiny\color{code-comment},
showspaces=false,
showstringspaces=false,
showtabs=false,
stringstyle=\color{code-string},
tabsize=2,
numbers=left,
numbersep=6pt,
xleftmargin=14pt,
extendedchars=true,
inputencoding=utf8,
literate=
{Δ}{{$\Delta$}}1
{λ}{{$\lambda$}}1
{μ}{{$\mu$}}1
{α}{{$\alpha$}}1
{β}{{$\beta$}}1
{ρ}{{$\rho$}}1
{Σ}{{$\Sigma$}}1
{Λ}{{$\Lambda$}}1
{}{{$\leq$}}1
{}{{$\geq$}}1
{}{{$\to$}}1
{±}{{$\pm$}}1
{°}{{$^\circ$}}1
{×}{{$\times$}}1
{}{{$\checkmark$}}1
{}{{$\times$}}1
{ε}{{$\varepsilon$}}1
}
\lstset{style=labstyle}
% Enable UTF-8 in listings (required for Greek letters and math symbols
% pasted from terminal output: Δ, λ, μ, etc.).
\lstset{
extendedchars=true,
inputencoding=utf8,
literate=
{Δ}{{$\Delta$}}1
{λ}{{$\lambda$}}1
{μ}{{$\mu$}}1
{α}{{$\alpha$}}1
{β}{{$\beta$}}1
{ρ}{{$\rho$}}1
{Σ}{{$\Sigma$}}1
{Λ}{{$\Lambda$}}1
{}{{$\leq$}}1
{}{{$\geq$}}1
{}{{$\to$}}1
{±}{{$\pm$}}1
{°}{{$^\circ$}}1
{×}{{$\times$}}1
{ε}{{$\varepsilon$}}1
}
\lstdefinestyle{terminal}{
backgroundcolor=\color{black!90},
basicstyle=\ttfamily\small\color{green!80!white},
commentstyle=\color{white!60},
frame=none,
numbers=none,
breaklines=true,
xleftmargin=0pt,
extendedchars=true,
inputencoding=utf8,
literate=
{Δ}{{$\Delta$}}1
{λ}{{$\lambda$}}1
{μ}{{$\mu$}}1
{α}{{$\alpha$}}1
{β}{{$\beta$}}1
{ρ}{{$\rho$}}1
{Σ}{{$\Sigma$}}1
{Λ}{{$\Lambda$}}1
{}{{$\leq$}}1
{}{{$\geq$}}1
{}{{$\to$}}1
{±}{{$\pm$}}1
{°}{{$^\circ$}}1
{×}{{$\times$}}1
{}{{{$\checkmark$}}}1
{}{{$\times$}}1
{ε}{{$\varepsilon$}}1
{}{{$\in$}}1
}
% --- Callout boxes ------------------------------------------------------------
\usepackage[most]{tcolorbox}
\newtcolorbox{limitation}[1][]{%
colback=red!5!white,
colframe=red!55!black,
title=\textbf{Limitation},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{derivation}[1][]{%
colback=blue!3!white,
colframe=blue!40!black,
title=\textbf{Derivation},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{deadend}[1][]{%
colback=gray!8!white,
colframe=gray!50!black,
title=\textbf{Dead end},
fonttitle=\bfseries,
boxrule=0.5pt,
arc=2pt,
borderline west={2pt}{0pt}{gray!40},
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{decision}[1][]{%
colback=green!3!white,
colframe=green!35!black,
title=\textbf{Decision},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
% TODO-for-A-pass marker: highlighted so we can find them for later deep-pass.
\newcommand{\apass}[1]{%
{\fboxsep=2pt\colorbox{orange!20}{\textbf{[A-pass]}}\,\textit{#1}}
}
% --- Session header ----------------------------------------------------------
% Usage: \session{2026-04-17}{afternoon, ~5 hr}{summary line}
\newcommand{\session}[3]{%
\noindent\rule{\linewidth}{0.8pt}
\vspace{2pt}
\noindent\textbf{\Large Session: #1} \hfill \textit{#2}\par
\vspace{2pt}
\noindent\emph{#3}\par
\vspace{4pt}
\noindent\rule{\linewidth}{0.4pt}
\vspace{6pt}
}
% --- Code macros --------------------------------------------------------------
\newcommand{\juliafile}[2][]{\lstinputlisting[language=Julia,caption={#2},#1]{#2}}
\newcommand{\matlabfile}[2][]{\lstinputlisting[language=Matlab,caption={#2},#1]{#2}}
\newcommand{\pyfile}[2][]{\lstinputlisting[language=Python,caption={#2},#1]{#2}}
% --- Cross-reference helpers --------------------------------------------------
\usepackage[colorlinks=true, linkcolor=blue!50!black, citecolor=blue!40!black,
urlcolor=teal!60!black]{hyperref}
\usepackage{bookmark}
\usepackage{cleveref}
% --- Headers & footers --------------------------------------------------------
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{HAHACS lab journal}
\fancyhead[R]{\leftmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.3pt}
% --- A small quiet easter egg for anyone who greps the preamble ---------------
% "Looks ordinary on the surface but is something else underneath."
% — the name behind Split. Keep the journal honest; under every summary
% there's a derivation; under every derivation there's a doubt.