<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on My Hugo Project</title><link>https://ostensible-paradox.pages.dev/en/posts/</link><description>Recent content in Posts on My Hugo Project</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 22 May 2026 22:20:00 +0800</lastBuildDate><atom:link href="https://ostensible-paradox.pages.dev/en/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Erbar-Maas Singular Causal Interventions</title><link>https://ostensible-paradox.pages.dev/en/posts/erbar_mass_en/</link><pubDate>Fri, 22 May 2026 22:20:00 +0800</pubDate><guid>https://ostensible-paradox.pages.dev/en/posts/erbar_mass_en/</guid><description>An interactive laboratory demonstrating singular limits on Continuous-Time Markov Chains.</description><content:encoded><![CDATA[<p>How do we reconcile the physical, continuous dynamics of a thermodynamic system with the discontinuous, logical operations of causal graph surgery?</p>
<p>In classical causal inference (Pearl, 2009), a causal intervention is modeled via the <strong>do-operator</strong>, which surgically severs incoming causal links to a target variable and forces it to a fixed value. While mathematically clean, this &ldquo;graph surgery&rdquo; is a discontinuous operation: it instantly zeroes out transition rates, defying physical processes which must obey continuous probability conservation and finite transmission speeds.</p>
<p>The <strong>Erbar-Maas Singular Intervention Theorem</strong> provides a rigorous mathematical bridge. By representing causal interventions as the infinite-rate singular limit of continuous-time restoration forces, we recover Pearl&rsquo;s discontinuous causal surgery exactly as a timescale separation limit on Continuous-Time Markov Chains (CTMCs).</p>
<p>Below is an interactive mathematical laboratory showcasing the convergence, Wasserstein geometry, and entropy gradient flows behind this theorem.</p>
<hr>
<link rel="stylesheet" href="/css/interactive-proof.min.11d50387654578442c07d15c73d8dff500cc122fc7e3ba51459ca4daf7307c7b.css" integrity="sha256-EdUDh2VFeEQsB9Fcc9jf9QDMEi/H47pRRZyk2vcwfHs=">

<div id="interactive-proof-lab" class="interactive-proof-lab">
  
  <div class="ipl-intro">
    <div class="ipl-badge">
      <svg class="ipl-icon" viewBox="0 0 24 24" width="14" height="14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg>
      Causal Modeling Limit
    </div>
    <h2 class="ipl-title">Erbar-Maas Singular Intervention Theorem</h2>
    <p class="ipl-subtitle">
      Interactive theorem builder proving that Pearl’s discontinuous graph surgeries can be recovered exactly as the infinite-rate singular state perturbation of physical Continuous-Time Markov Chain (CTMC) models.
    </p>
  </div>

  
  <div class="ipl-grid">
    
    
    <div class="ipl-left-panel">
      
      <div class="ipl-panel-gridbg"></div>
      
      
      <div class="ipl-panel-header">
        <span class="ipl-status-indicator">
          <span class="ipl-pulse-dot"></span>
          CTMC CAUSAL SIMULATOR 1.2
        </span>
        <span id="ipl-slide-number">SLIDE 1 / 7</span>
      </div>

      
      <div class="ipl-board-arena">
        
        
        <div class="ipl-visualizer-row">
          
          
          <div id="causal-graph-map" class="ipl-graph-box">
            <span class="ipl-box-label">Finite Causal State Network</span>
            
            
            <div class="ipl-graph-workspace">
              
              
              <div class="ipl-node-container ipl-node-a" data-node="0">
                <div class="ipl-node">A</div>
                <span class="ipl-node-prob">0.650</span>
              </div>

              
              <div class="ipl-node-container ipl-node-b" data-node="1">
                <div class="ipl-node">B</div>
                <span class="ipl-node-prob">0.250</span>
              </div>

              
              <div class="ipl-node-container ipl-node-c" data-node="2">
                <div class="ipl-node">C<span class="ipl-do-badge ipl-hidden" id="ipl-do-badge">DO</span></div>
                <span class="ipl-node-prob">0.100</span>
              </div>

              
              <svg class="ipl-graph-svg" viewBox="0 0 320 240">
                <defs>
                  <marker id="ipl-arrow-orange" viewBox="0 0 10 10" refX="24" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
                    <path d="M 0 0 L 10 5 L 0 10 z" fill="#d97706" />
                  </marker>
                  <marker id="ipl-arrow-blue" viewBox="0 0 10 10" refX="24" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
                    <path d="M 0 0 L 10 5 L 0 10 z" fill="#818cf8" />
                  </marker>
                </defs>

                
                
                <line id="ipl-line-ac" x1="70" y1="170" x2="150" y2="70" stroke="#818cf8" stroke-width="2" marker-end="url(#ipl-arrow-blue)" class="ipl-transition-line" />
                
                
                <line id="ipl-line-bc" x1="250" y1="170" x2="170" y2="70" stroke="#818cf8" stroke-width="2" marker-end="url(#ipl-arrow-blue)" class="ipl-transition-line" />

                
                <line id="ipl-line-ab" x1="100" y1="190" x2="220" y2="190" stroke="#818cf8" stroke-width="1.5" class="ipl-transition-line" />
              </svg>

            </div>

            
            <div id="ipl-legend-badge" class="ipl-legend-badge">
              Standard reversible paths
            </div>
          </div>

          
          <div id="generator-heatmap-detail" class="ipl-matrix-box">
            <div class="ipl-matrix-header">
              <span class="ipl-box-label">Active Matrix Algebra</span>
              <p id="ipl-matrix-name" class="ipl-matrix-name">REVERSIBLE GENERATOR Q</p>
            </div>

            
            <div class="ipl-matrix-grid" id="ipl-matrix-grid">
              
            </div>

            
            <div id="ipl-lambda-control" class="ipl-slider-container ipl-hidden">
              <div class="ipl-slider-label-row">
                <span>RESTORATIVE RATE λ (Forcing Power):</span>
                <span id="ipl-lambda-value" class="ipl-value-highlight">λ = 5</span>
              </div>
              <input 
                id="forcing-power-slider"
                type="range"
                min="1"
                max="40"
                step="1"
                value="5"
                class="ipl-range-slider"
              />
            </div>
          </div>

        </div>

        
        <div id="simulation-monitor" class="ipl-monitor-bar">
          <div class="ipl-monitor-col">
            <span class="ipl-monitor-label">Active Simulation Time t</span>
            <div class="ipl-time-control">
              <input 
                id="simulation-time-slider"
                type="range"
                min="0.1"
                max="5.0"
                step="0.1"
                value="1.0"
                class="ipl-range-slider"
              />
              <span id="ipl-time-value" class="ipl-monitor-value-small">1.0s</span>
            </div>
          </div>

          <div class="ipl-monitor-col border-left">
            <span class="ipl-monitor-label">Information Entropy H(p|π)</span>
            <span id="ipl-entropy-value" class="ipl-monitor-value value-emerald">
              0.00000 nats
            </span>
          </div>

          <div class="ipl-monitor-col border-left">
            <span class="ipl-monitor-label">State-Space Mass</span>
            <span id="ipl-mass-value" class="ipl-monitor-value value-indigo">
              A: 65% • B: 25% • C: 10%
            </span>
          </div>
        </div>

        
        <div class="ipl-explanation-banner">
          <h3 id="ipl-step-title" class="ipl-step-title">Reversible CTMC & Causal State Space</h3>
          <p id="ipl-step-explanation" class="ipl-step-explanation">We formulate our system on a finite state graph with generator Q. Reversibility (detailed balance with respect to stationary measure π) guarantees our chain lacks circulating currents, enabling a clean potential landscape.</p>
        </div>

      </div>

      
      <div class="ipl-control-panel">
        
        
        <div class="ipl-scrubber-row">
          <span class="ipl-scrubber-limit-label">1. BASE STOCHASTICS</span>
          <div class="ipl-scrubber-bar" id="ipl-scrubber-bar">
            
          </div>
          <span class="ipl-scrubber-limit-label">7. CAUSAL LIMIT</span>
        </div>

        <div class="ipl-buttons-row">
          
          
          <div class="ipl-media-controls">
            <button id="btn-prev-step" class="ipl-btn-icon" title="Previous Slide" disabled>
              <svg viewBox="0 0 24 24" width="16" height="16" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
            </button>

            <button id="btn-autoplay-toggle" class="ipl-btn-text" title="Auto Play">
              
              <svg id="autoplay-play-icon" class="ipl-media-icon" viewBox="0 0 24 24" width="14" height="14" stroke="currentColor" stroke-width="2" fill="currentColor" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
              
              <svg id="autoplay-pause-icon" class="ipl-media-icon ipl-hidden" viewBox="0 0 24 24" width="14" height="14" stroke="currentColor" stroke-width="2" fill="currentColor" stroke-linecap="round" stroke-linejoin="round"><rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect></svg>
              <span id="autoplay-btn-label">Auto-Play</span>
            </button>

            <button id="btn-next-step" class="ipl-btn-icon" title="Next Slide">
              <svg viewBox="0 0 24 24" width="16" height="16" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
            </button>

            <button id="btn-reset-timeline" class="ipl-btn-icon" title="Reset Simulator Settings">
              <svg viewBox="0 0 24 24" width="15" height="15" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
            </button>
          </div>

          
          <div id="ipl-speed-control" class="ipl-speed-control ipl-hidden">
            <span>AUTOPLAY LAPSE:</span>
            <input
              id="autoplay-speed-slider"
              type="range"
              min="2000"
              max="8000"
              step="500"
              value="3500"
              class="ipl-range-slider-mini"
            />
            <span id="ipl-speed-value">3.5s</span>
          </div>

          
          <div class="ipl-scene-jump">
            <span>STAGE:</span>
            <select id="scene-selection-dropdown" class="ipl-dropdown">
              
            </select>
          </div>

        </div>

      </div>

    </div>

    
    <div class="ipl-right-panel">
      
      
      <div id="theory-knowledge-card" class="ipl-card">
        <h3 class="ipl-card-title">
          <svg viewBox="0 0 24 24" width="18" height="18" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
          Dynamic Knowledge Base
        </h3>
        
        
        <div class="ipl-tab-row" id="ipl-concept-tabs">
          
        </div>

        
        <div id="concept-details-container" class="ipl-concept-box">
          <div id="concept-details-content">
            
          </div>
        </div>
      </div>

      
      <div id="equation-display-container" class="ipl-card ipl-eq-card">
        <div class="ipl-card-badge">Algebraic Proof Face</div>
        <h4 class="ipl-card-sub-title">Active Mathematical Statement</h4>
        
        <div id="math-display" class="ipl-math-display">
          
        </div>

        <p class="ipl-help-text">
          <svg viewBox="0 0 24 24" width="10" height="10" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
          Anchor nodes: click any <span class="ipl-underline-dashed">underlined algebraic sequence</span> above to toggle detailed tutoring.
        </p>
      </div>

      
      <div id="log-mean-calculator-widget" class="ipl-card">
        <h4 class="ipl-card-title-small">
          <svg viewBox="0 0 24 24" width="15" height="15" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
          Erbar-Maas Edge Mobility Calculator
        </h4>
        <p class="ipl-widget-desc">
          Continuous entropy trajectories evaluate edge weights using the Logarithmic Mean Λ(p_i, p_j). Compute live values between hypothetical state density distributions:
        </p>
        
        <div class="ipl-calc-row">
          <div class="ipl-calc-col">
            <span class="ipl-calc-label">DENSITY P_A:</span>
            <div class="ipl-calc-slider-wrapper">
              <span class="ipl-calc-bound">0.05</span>
              <input 
                id="calc-slider-a"
                type="range"
                min="0.05"
                max="0.95"
                step="0.05"
                value="0.65"
                disabled
                class="ipl-range-slider-mini"
              />
              <span class="ipl-calc-bound">0.95</span>
            </div>
            <div class="ipl-calc-display-box" id="calc-display-a">
              p_A = 0.650
            </div>
          </div>

          <div class="ipl-calc-divider">↔</div>

          <div class="ipl-calc-col">
            <span class="ipl-calc-label">DENSITY P_B:</span>
            <div class="ipl-calc-slider-wrapper">
              <span class="ipl-calc-bound">0.05</span>
              <input 
                id="calc-slider-b"
                type="range"
                min="0.05"
                max="0.95"
                step="0.05"
                value="0.25"
                disabled
                class="ipl-range-slider-mini"
              />
              <span class="ipl-calc-bound">0.95</span>
            </div>
            <div class="ipl-calc-display-box" id="calc-display-b">
              p_B = 0.250
            </div>
          </div>
        </div>

        <div class="ipl-calc-result-box">
          <span class="ipl-calc-result-label">Λ(p_A, p_B) = </span>
          <span id="ipl-calc-result-value" class="ipl-calc-result-value">0.417237</span>
        </div>
      </div>

    </div>

  </div>

  
  <div id="tutor-discussion-drawer" class="ipl-drawer ipl-hidden">
    
    <div class="ipl-drawer-left">
      <div class="ipl-drawer-meta-section">
        <span class="ipl-drawer-eyebrow">Active Mathematical Factor</span>
        <h3 id="ipl-drawer-factor-label" class="ipl-drawer-factor-title">Detailed Balance Equation</h3>
        <div class="ipl-drawer-bar"></div>
        <p class="ipl-drawer-role-row">
          ALGEBRAIC ROLE: <span id="ipl-drawer-factor-role" class="value-orange-dark">Symmetric Energy Landscape</span>
        </p>
        <p id="ipl-drawer-factor-details" class="ipl-drawer-details">
          Ensures that microscopic transitions are balanced in equilibrium. In physics, this equates to time-reversal symmetry.
        </p>
      </div>

      
      <button id="btn-close-highlight" class="ipl-btn-primary uppercase-tracking">
        Clear Highlight
      </button>
    </div>

    
    <div class="ipl-drawer-right">
      <div class="ipl-drawer-right-header">
        <h4 class="ipl-drawer-chat-title">
          <svg viewBox="0 0 24 24" width="16" height="16" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
          Algebraic Tutor & Q&A Discussion
        </h4>
        <span class="ipl-drawer-chat-badge">VIRTUAL COACH</span>
      </div>

      
      <div id="comment-chat-history" class="ipl-chat-history">
        
      </div>

      
      <div id="faq-shortcuts-area" class="ipl-faq-section">
        <span class="ipl-faq-header">Direct Explanatory Inquiries:</span>
        <div id="ipl-faq-list" class="ipl-faq-list">
          
        </div>
      </div>

      
      <form id="ipl-chat-form" class="ipl-chat-form">
        <input
          id="custom-math-query-input"
          type="text"
          placeholder="Ask a custom question regarding this theorem structure..."
          class="ipl-chat-input"
          autocomplete="off"
        />
        <button id="btn-submit-tutor" type="submit" class="ipl-btn-primary uppercase-tracking flex-center gap-1">
          <svg viewBox="0 0 24 24" width="12" height="12" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>
          Send
        </button>
      </form>
    </div>
  </div>

  
  <div id="standby-notice-container" class="ipl-standby-notice">
    <div class="ipl-standby-left">
      <div class="ipl-standby-icon-box">
        <svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="ipl-pulse-fast"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"></path><line x1="9" y1="18" x2="15" y2="18"></line><line x1="10" y1="22" x2="14" y2="22"></line></svg>
      </div>
      <div>
        <h4 class="ipl-standby-title">Click Algebraic Statements to Discuss</h4>
        <p class="ipl-standby-desc">
          We have embedded active highlighted anchors inside the math formulations. Click any underlined statement in the active math block to open the interactive discussion tutor.
        </p>
      </div>
    </div>
    <button id="btn-discover-anchor" class="ipl-btn-primary uppercase-tracking flex-center gap-1">
      <svg viewBox="0 0 24 24" width="14" height="14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
      Quick Demo Highlight
    </button>
  </div>

</div>
<script defer src="/js/interactive-proof.min.be39078ef25af25606a8dbb6bbf27bbee509fe8e86d683f7e51ee9bb32105e92.js" integrity="sha256-vjkHjvJa8lYGqNu2u/J7vuUJ/o6G1oP35R7puzIQXpI="></script>

<hr>
<h2 id="the-mathematical-framework">The Mathematical Framework</h2>
<p>To understand the core details of this singular limit, we can outline the mathematical structures that govern the simulation above:</p>
<h3 id="1-continuous-time-markov-chains-ctmcs">1. Continuous-Time Markov Chains (CTMCs)</h3>
<p>Let our system be defined on a finite state graph with three states $\mathcal{S} = {A, B, C}$. The state distribution $p(t) = [p_A(t), p_B(t), p_C(t)]$ evolves according to the Kolmogorov forward equation:</p>
<p>$$\dot{p}(t) = p(t) Q$$</p>
<p>where $Q$ is the infinitesimal generator matrix satisfying:</p>
<ul>
<li>$Q_{ij} \geq 0$ for all $i \neq j$ (positive transition intensities).</li>
<li>$\sum_{j} Q_{ij} = 0$ (probability conservation).</li>
</ul>
<h3 id="2-detailed-balance-and-gradient-flow">2. Detailed Balance and Gradient Flow</h3>
<p>We assume the unperturbed chain is reversible with respect to a stationary distribution $\pi$, satisfying the detailed balance condition:</p>
<p>$$\pi_i Q_{ij} = \pi_j Q_{ji}$$</p>
<p>Under this symmetry, the linear Markovian evolution can be rewritten as the steepest descent (gradient flow) of the relative entropy:</p>
<p>$$\mathcal{H}(p \mid \pi) = \sum_{i \in \mathcal{S}} p_i \log \frac{p_i}{\pi_i}$$</p>
<p>under the discrete Riemannian metric introduced by Erbar and Maas. The metric tensor equips the probability simplex with a discrete Wasserstein geometry, where the mobility along edge $(i, j)$ is weighted by the <strong>logarithmic mean</strong> of their densities:</p>
<p>$$\Lambda(p_i, p_j) = \frac{p_i - p_j}{\log p_i - \log p_j}$$</p>
<h3 id="3-pearls-graph-surgery-vs-singular-perturbation">3. Pearl&rsquo;s Graph Surgery vs. Singular Perturbation</h3>
<p>A hard intervention forcing the system into state $C$ corresponds to severing incoming rates into $C$:</p>
<p>$$Q_{do} = \begin{pmatrix}</p>
<ul>
<li>(Q_{AB} + 0) &amp; Q_{AB} &amp; 0 \
Q_{BA} &amp; - (Q_{BA} + 0) &amp; 0 \
Q_{CA} &amp; Q_{CB} &amp; - (Q_{CA} + Q_{CB})
\end{pmatrix}$$</li>
</ul>
<p>Alternatively, we model this physically by adding a restorative term $\lambda R$ that forces mass into $C$ with rate parameter $\lambda$:</p>
<p>$$Q_\lambda = Q_{do} + \lambda R_C$$</p>
<p>As $\lambda \to \infty$, the system exhibits two distinct timescales:</p>
<ol>
<li><strong>Fast transient phase ($O(1/\lambda)$):</strong> Any arbitrary initial probability mass collapses onto the intervention face (State $C$) via a projection operator $\Pi_C$.</li>
<li><strong>Slow evolutionary phase:</strong> The remaining probability mass evolves under the projected slow dynamics $\Pi_C Q_{do} \Pi_C$ constrained to the target subspace.</li>
</ol>
<p>The equivalence is established via:</p>
<p>$$\lim_{\lambda \to \infty} e^{t Q_\lambda} = \Pi_C e^{t \Pi_C Q_{do} \Pi_C}$$</p>
<p>proving that causal graph surgery is the exact singular limit of physical restoration.</p>
]]></content:encoded></item><item><title>Why mealy machine, Why?</title><link>https://ostensible-paradox.pages.dev/en/posts/the-death-of-the-mealy-machine/</link><pubDate>Thu, 21 May 2026 03:20:06 +0800</pubDate><guid>https://ostensible-paradox.pages.dev/en/posts/the-death-of-the-mealy-machine/</guid><description>&lt;p>Why did the Mealy machine linger for so long?&lt;/p>
&lt;p>It was the first formal object that perfectly encoded a core obsession, and because of that, it became impossible to let go of—even long after its utility had expired.&lt;/p>
&lt;p>The digital trail of drafts and planning sessions reveals this reluctance. In the preparation notes, the verdict was clear:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>§3.2 Mealy notation | M = (Q, Σ, Δ, δ, λ, q₀) | Drop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>App A.1 | Theorem 1 + Mealy proof | Drop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It was marked for deletion. Even the prism agent had pointed out the redundancy: &lt;em>&amp;ldquo;The Mealy machine result is simply the zero-cut special case of the static certificate&amp;rdquo;&lt;/em>—strictly weaker, less general, and less rigorous than what followed. Yet, like a ghost in the machine, it kept reappearing. It haunted &lt;code>2026jan.tex&lt;/code>, lingered on &lt;code>Desktop/cc.tex&lt;/code>, and found its way back into the AIES submission. Every attempt to excise it failed; it kept surviving.&lt;/p></description><content:encoded><![CDATA[<p>Why did the Mealy machine linger for so long?</p>
<p>It was the first formal object that perfectly encoded a core obsession, and because of that, it became impossible to let go of—even long after its utility had expired.</p>
<p>The digital trail of drafts and planning sessions reveals this reluctance. In the preparation notes, the verdict was clear:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>§3.2 Mealy notation | M = (Q, Σ, Δ, δ, λ, q₀) | Drop
</span></span><span style="display:flex;"><span>App A.1 | Theorem 1 + Mealy proof | Drop
</span></span></code></pre></div><p>It was marked for deletion. Even the prism agent had pointed out the redundancy: <em>&ldquo;The Mealy machine result is simply the zero-cut special case of the static certificate&rdquo;</em>—strictly weaker, less general, and less rigorous than what followed. Yet, like a ghost in the machine, it kept reappearing. It haunted <code>2026jan.tex</code>, lingered on <code>Desktop/cc.tex</code>, and found its way back into the AIES submission. Every attempt to excise it failed; it kept surviving.</p>
<p>The truth is that the Mealy machine was never really about AI liability. It was about a personal epistemic preoccupation. It formalized the exact structural boundary that defines every paper in the bibliography:</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">Paper</th>
          <th style="text-align: left">The Obsession, Dressed Differently</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><strong>ccModel / 2026jan</strong></td>
          <td style="text-align: left">Mealy machine: $\lambda$ is non-injective $\to$ no decoder exists from outputs to states.</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Double Certificates</strong></td>
          <td style="text-align: left">$\varepsilon_{\text{state}}^{\text{UB}}$: a cut-set bound on the leakage of hidden-state information to public traces.</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>cascade/paper</strong></td>
          <td style="text-align: left">Epistemic boundary: demonstrating that output-only review cannot reconstruct internal execution states.</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>POPL d-separation</strong></td>
          <td style="text-align: left"><code>Reachable</code> as a <code>Prop</code>-value versus <code>StaticRoute</code> as a $\Sigma$-type—showing how reachability conceals a structure that must be decompiled.</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Liability Paradox</strong></td>
          <td style="text-align: left">The fundamental claim that no finite sequence of observations can uniquely determine an internal state.</td>
      </tr>
  </tbody>
</table>
<p>The attraction was never to automata theory itself, but rather to that precise, visceral moment when observation fails to reconstruct cause. The Mealy machine was the simplest, most elegant caricature of that failure: a closed box with hidden gears where turning the crank produces outputs that could have been generated by multiple, incompatible internal configurations.</p>
<p><img alt="A closed box with hidden gears" loading="lazy" src="/images/mealy-machine/hidden-gears.jpg"></p>
<p>But the tragedy of the Mealy machine was its simplicity. It could only yield a blunt, binary verdict—non-injectivity leading to undecidability—when the actual goal was a graded, constructive, and decompilable account of epistemic loss.</p>
<p>That is what the POPL paper finally achieves. It replaces hand-waving claims about the impossibility of state recovery with a mechanical witness extractor. Through the well-founded measure of <code>route_improves_of_bad</code>, the <code>StaticRoute</code> witness extractor, and the <code>dSeparated_iff_dSeparates</code> bisimulation, the POPL paper represents the Mealy machine fully grown.</p>
<p>Keeping the Mealy machine around was a lingering attachment to the object that first made this obsession legible. But legibility is not the same as rigor. The POPL paper marks the transition to a proper formal home—moving from automata theory to causal graphs, from prose proofs to Lean 4, and from binary undecidability to explicit witness extraction.</p>
<p>The Mealy machine had to die so that <code>route_improves_of_bad</code> could live.</p>
]]></content:encoded></item><item><title>From Boolean Verdicts to Quantitative Witnesses: Why DAG Topology Needs a Trail Semantics</title><link>https://ostensible-paradox.pages.dev/en/posts/from-boolean-verdicts-to-quantitative-witnesses/</link><pubDate>Tue, 19 May 2026 03:30:00 +0800</pubDate><guid>https://ostensible-paradox.pages.dev/en/posts/from-boolean-verdicts-to-quantitative-witnesses/</guid><description>&lt;p>Since Pearl (2009), causal inference on DAGs has crystallized around a powerful but austere toolkit: boolean d-separation and do-calculus. Does evidence flow? Full stop. Does it flow after an intervention? Full stop. This framework is sufficient for causal &lt;em>identification&lt;/em>—determining whether an effect is estimable from observed data. But it is curiously silent on a question that seems equally natural: &lt;strong>how much&lt;/strong> flows, &lt;strong>through which channels&lt;/strong>, and with &lt;strong>what residual structure&lt;/strong>?&lt;/p></description><content:encoded><![CDATA[<p>Since Pearl (2009), causal inference on DAGs has crystallized around a powerful but austere toolkit: boolean d-separation and do-calculus. Does evidence flow? Full stop. Does it flow after an intervention? Full stop. This framework is sufficient for causal <em>identification</em>—determining whether an effect is estimable from observed data. But it is curiously silent on a question that seems equally natural: <strong>how much</strong> flows, <strong>through which channels</strong>, and with <strong>what residual structure</strong>?</p>
<p>I want to argue that this silence is not a minor gap; it is a symptom of two communities talking past each other. And the bridge between them is a rigorous notion of <em>trail as witness</em>.</p>
<hr>
<h2 id="the-boolean-trap">The Boolean Trap</h2>
<p>Traditional DAG analysis gives you a verdict at the endpoints. $X$ is d-separated from $Y$ given $Z$: True or False. The intervened distribution $P(y \mid do(x))$ is identifiable: Yes or No. This is the &ldquo;full stop&rdquo; regime.</p>
<p>But a boolean verdict discards the path. It tells you that water reaches the tap, but not whether it travelled through lead pipes, detoured through a cistern, or was siphoned off midway. To know the <em>texture</em> of a causal chain—to distinguish a default association from a derived conclusion, or to know whether an observed correlation persists because of the presence of one variable or the absence of another—you need to traverse the trail in slow motion, node by node, junction by junction.</p>
<p>Trail traversal gives the texture of causal chains; endpoint booleans do not.</p>
<hr>
<h2 id="two-communities-one-missing-link">Two Communities, One Missing Link</h2>
<p>Remarkably, two intellectual neighborhoods have been circling this problem from opposite ends without quite meeting in the middle:</p>
<p><strong>The Causal Inference community (Pearl et al.)</strong> is structurally obsessed. It abstracts the world into absolute black-and-white: if d-separation holds, the answer is True; otherwise, False. They are plumbers who care only whether the pipe is open, not what contaminant rides the flow. After 2009, the field&rsquo;s theoretical engine on this particular front seems to have stalled—perhaps because every remaining graph-theoretic challenge starts to look like the Four Color Problem, solvable only by brute force unless a new representational insight appears.</p>
<p><strong>The Quantitative Information Flow (QIF) community (Alvim, Palamidessi, Smith et al.)</strong> is capacity-obsessed. They compute leakage in bits, bound it with Shannon capacity, and seek KKT certificates for optimality. But their channel models are often toy simplifications, stripped of topological depth. They measure the volume of water without being able to trace the pipe&rsquo;s winding route through the labyrinth.</p>
<p>Both communities study DAGs plus information flow. Yet:</p>
<ul>
<li>Causal inference has the topology but no quantitative bound.</li>
<li>QIF has the quantitative machinery but no trail-level topological witness.</li>
</ul>
<p>No one has connected them. Why? Because the causal side asks &ldquo;Is it identifiable?&rdquo; and the QIF side asks &ldquo;How many bits leak?&quot;—and neither side has a formalism that answers both at once while retaining the path as a first-class object.</p>
<hr>
<h2 id="lemma-1-the-collider-ancestor-leak--rerouting">Lemma 1: The Collider Ancestor Leak &amp; Rerouting</h2>
<p>Consider a collider $u \rightarrow w \leftarrow v$. Textbook d-separation says evidence can pass through $w$ only when $w$ or a descendant is observed. But this description conflates two distinct phenomena.</p>
<p>Suppose we are testing whether $X$ and $Y$ are d-separated given $Z$. If a descendant of $w$ leads <em>only</em> to $X$ or $Y$ and <strong>not</strong> to $Z$, then the collider is not &ldquo;activated by $Z$&rdquo; in any global sense. It is activated because it creates a connected route from a source to a destination. The conditioning set is, locally, a red herring.</p>
<h3 id="path-normalization--rerouting">Path Normalization / Rerouting</h3>
<p><strong>Claim:</strong> If a descendant of $w$ leads to $X$, the original long path was never necessary; the descendant path itself provides a shorter route.</p>
<p><em>Proof sketch.</em> Take any active trail passing through collider $w$ and reaching $X$ via descendant $d$. Replace the subpath from $w$ to $X$ with $w \leadsto d \leadsto X$. By minimality of active trails (or induction on cutset size), the rerouted path is no longer than the original and preserves endpoint connectivity. The original trail was therefore non-minimal, containing a redundant detour shortcuttable through the collider&rsquo;s own descendant. ∎</p>
<p>The upshot: collider &ldquo;activation&rdquo; is often just topological connectivity leaking outward, not a special global event mediated by the conditioning set.</p>
<hr>
<h2 id="lemma-2-the-junction-obligation-problem">Lemma 2: The Junction Obligation Problem</h2>
<p>If we accept that trails matter, we need a local criterion for their validity that does not require re-scanning the entire graph at every step.</p>
<h3 id="decompiling-the-trail">Decompiling the Trail</h3>
<p>Decompose an active trail into a stateful path type—call it <code>ActiveRoute</code> or <code>BayesBallPathT</code>. Each traversal step carries a direction tag:</p>
<ul>
<li><strong><code>outOf</code></strong>: leaving via an outgoing edge.</li>
<li><strong><code>into</code></strong>: entering via an incoming edge.</li>
</ul>
<p>These tags are not bookkeeping; they encode the <em>obligation</em> imposed by the junction just traversed.</p>
<h3 id="global-topology--local-type-constraints">Global Topology → Local Type Constraints</h3>
<p>In the global formulation, a junction $(A, B, C)$ is valid only after inspecting the whole graph and the conditioning set. Under the state-machine view:</p>
<ol>
<li><strong>Obligations are pushed to interfaces.</strong> The direction label at a boundary encodes what junction type is expected on the other side.</li>
<li><strong>Composition is type checking.</strong> Concatenating two path segments requires only that the output state of the first matches the input obligation of the second. No global inspection needed.</li>
<li><strong>Local consistency implies global consistency.</strong> If every adjacent pair of segments satisfies their shared interface obligation, the entire trail is valid by construction.</li>
</ol>
<p>The global topological constraint of d-separation becomes a <strong>local type-system constraint</strong> on path segments. The type of a segment is its pair of boundary states; composition is well-typed iff obligations align.</p>
<hr>
<h2 id="what-is-still-missing">What Is Still Missing</h2>
<p>Lemmas 1 and 2 give us a cleaner, more local way to reason about <em>whether</em> a trail is active. But they do not yet answer the quantitative question:</p>
<blockquote>
<p>Not &ldquo;does information flow?&rdquo; but &ldquo;how many bits flow through this specific trail?&rdquo;</p></blockquote>
<p>That question requires machinery that currently lives only in QIF:</p>
<ul>
<li><strong>Channel capacity</strong> between observables and secrets along a specific topological route.</li>
<li><strong>KKT conditions</strong> to certify that a given leakage bound is optimal under the graph&rsquo;s structural constraints.</li>
<li><strong>Shannon bounds</strong> that respect the DAG&rsquo;s conditional-independence structure rather than assuming a flat channel matrix.</li>
</ul>
<p>What does not yet exist—and what I am groping toward—is a framework where:</p>
<ol>
<li>The DAG provides the topological syntax.</li>
<li>The trail provides the witness (the specific path whose capacity we measure).</li>
<li>KKT + channel capacity provide the quantitative certificate.</li>
<li>A proof assistant (Lean4, Coq) checks both the topological type constraints (Lemma 2) and the information-theoretic bounds.</li>
</ol>
<hr>
<h2 id="takeaway">Takeaway</h2>
<p>Pearl&rsquo;s boolean tools are not wrong; they are <em>insufficient</em> for anyone who wants to know the texture of a causal chain. QIF&rsquo;s quantitative tools are not wrong; they are <em>topologically blind</em>. The missing piece is a <strong>trail semantics</strong> that makes the path a first-class object—so that we can ask not only whether an intervention opens a channel, but how wide that channel is, what contaminants it carries, and whether the leakage is bounded.</p>
<p>We need to move from &ldquo;full stop&rdquo; to &ldquo;slow-motion replay.&rdquo; The trail is the witness.</p>
]]></content:encoded></item><item><title>Constructing El Gamal &amp; Kim Proof Chain for CutSetBound.lean</title><link>https://ostensible-paradox.pages.dev/en/posts/constructing-el-gamal-kim-proof-chain-for-cutsetbound-lean/</link><pubDate>Fri, 15 May 2026 10:00:00 +0800</pubDate><guid>https://ostensible-paradox.pages.dev/en/posts/constructing-el-gamal-kim-proof-chain-for-cutsetbound-lean/</guid><description>&lt;h1 id="reconstructing-the-relay-channel-modernizing-the-cut-set-bound-and-degraded-capacity-proofs">Reconstructing the Relay Channel: Modernizing the Cut-set Bound and Degraded Capacity Proofs&lt;/h1>
&lt;p>When aiming to &amp;ldquo;extract dependencies and compress proof chains,&amp;rdquo; few starting points are as effective as the core results from Chapter 16 of El Gamal and Kim: the &lt;strong>cut-set upper bound for general discrete memoryless relay channels&lt;/strong> and the &lt;strong>capacity theorem for physically degraded relay channels&lt;/strong>. These results, originating from the landmark 1979 Cover–El Gamal paper, hold immense historical significance but carry a structural &amp;ldquo;debt&amp;rdquo; that allows for substantial modernization and simplification.&lt;/p></description><content:encoded><![CDATA[<h1 id="reconstructing-the-relay-channel-modernizing-the-cut-set-bound-and-degraded-capacity-proofs">Reconstructing the Relay Channel: Modernizing the Cut-set Bound and Degraded Capacity Proofs</h1>
<p>When aiming to &ldquo;extract dependencies and compress proof chains,&rdquo; few starting points are as effective as the core results from Chapter 16 of El Gamal and Kim: the <strong>cut-set upper bound for general discrete memoryless relay channels</strong> and the <strong>capacity theorem for physically degraded relay channels</strong>. These results, originating from the landmark 1979 Cover–El Gamal paper, hold immense historical significance but carry a structural &ldquo;debt&rdquo; that allows for substantial modernization and simplification.</p>
<h3 id="why-reconstruct">Why Reconstruct?</h3>
<p>The achievability proof in the original 1979 paper relies on a &ldquo;random partition + ambiguity set intersection&rdquo; strategy. While elegant for its time, it is no longer the shortest path to the result.</p>
<p>If our goal is simply to reach the same Decode–Forward rate, we can employ a more direct &ldquo;降维打击&rdquo; (dimensionality reduction) through <strong>regular encoding and backward decoding</strong>. This approach entirely eliminates the need for random partitioning, binning analysis, and the lengthy Slepian–Wolf style derivations. Simultaneously, the converse can be modularized into three clear steps: two applications of Fano&rsquo;s inequality, a causal Markov chain argument, and a single-letterization lemma via concavity.</p>
<p>The core logic of this reconstruction is that degradedness is not a prerequisite for achievability. The Decode–Forward construction holds for general relay channels; the degradedness assumption is only required in the final step of the converse to tighten the bound.</p>
<h3 id="selecting-theorems-where-is-the-room-for-compression">Selecting Theorems: Where is the Room for Compression?</h3>
<p>Within the landscape of network information theory, I have selected several candidates for modular reconstruction. The criterion is not just the fame of the conclusion, but the potential for the proof chain to be further abstracted and streamlined.</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">Candidate Theorem</th>
          <th style="text-align: left">Text Location</th>
          <th style="text-align: left">Core Statement</th>
          <th style="text-align: left">Simplification Potential</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><strong>Capacity of Physically Degraded Relay Channels</strong></td>
          <td style="text-align: left">§16.4, p.386</td>
          <td style="text-align: left">$C = \max \min {I(X_1;Y_2</td>
          <td style="text-align: left">X_2), I(X_1,X_2;Y_3)}$</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Cut-set Bound for General Relay Channels</strong></td>
          <td style="text-align: left">§16.2, p.384</td>
          <td style="text-align: left">The outer bound for capacity</td>
          <td style="text-align: left"><strong>High</strong>. Causality arguments can be modularized without coupling to specific coding schemes.</td>
      </tr>
      <tr>
          <td style="text-align: left"><strong>Gel&rsquo;fand–Pinsker Theorem</strong></td>
          <td style="text-align: left">§7.6, p.178</td>
          <td style="text-align: left">Capacity with non-causal state information at the encoder</td>
          <td style="text-align: left"><strong>High</strong>. The auxiliary variable selection and Csiszár sum identity offer excellent room for abstraction.</td>
      </tr>
  </tbody>
</table>
<h3 id="reorganizing-the-logical-chain">Reorganizing the Logical Chain</h3>
<p>We compress the entire proof into the following logical path:</p>
<ol>
<li><strong>The Two-Cut Converse</strong>:
<ul>
<li><strong>Cut 1</strong>: At the receiver, using Fano&rsquo;s inequality to bound $I(X_1, X_2; Y_3)$.</li>
<li><strong>Cut 2</strong>: In an &ldquo;enhanced&rdquo; system where the relay&rsquo;s observations are shared, bounding $I(X_1; Y_2, Y_3 | X_2)$.</li>
<li>This relies only on Fano, causality, and memorylessness—no degradedness required.</li>
</ul>
</li>
<li><strong>Achievability via Backward Decoding</strong>:
<ul>
<li>Utilize block-Markov superposition coding.</li>
<li>The relay decodes forward (block-by-block), while the destination decodes backward.</li>
<li>The &ldquo;magic&rdquo; of backward decoding is that once the next block&rsquo;s message is known, the current block&rsquo;s decision becomes a standard single-user problem, bypassing the need for binning.</li>
</ul>
</li>
<li><strong>Specializing to Degraded Channels</strong>:
<ul>
<li>Introduce the physical degradedness Markov chain $X_1 \to (X_2, Y_2) \to Y_3$.</li>
<li>The second cut&rsquo;s mutual information term collapses, closing the gap between the upper and lower bounds.</li>
</ul>
</li>
</ol>
<h3 id="next-steps-toward-formalization">Next Steps: Toward Formalization</h3>
<p>The current proof draft is mathematically closed. The remaining refinements involve a detailed bookkeeping of the $\delta(\varepsilon)$ terms in the typicality analysis and a formalization of the notation for extending the three-node model to general time-expanded Directed Acyclic Graphs (DAGs).</p>
<p>For formal verification projects like Lean, the most elegant path is to decompose this into three independent lemmas: the <strong>Two-Cut Converse Lemma</strong>, the <strong>Backward Decoding Achievability Lemma</strong>, and the <strong>Additive Decomposition for Orthogonal Networks</strong>. This represents the purest and most modular form of these classic information-theoretic results.</p>
]]></content:encoded></item></channel></rss>