{ "_comment": [ "Concretization of the FRET-spec predicates as numerical halfspaces.", "This file is the single source of truth — all reach-analysis code loads", "from here, and any future predicate changes happen here first.", "", "Each predicate in fret-pipeline/pwr_hybrid_3.json (t_avg_above_min,", "t_avg_in_range, p_above_crit, inv1_holds, inv2_holds) lives here as a", "polytope over the 10-state vector x = [n, C1..C6, T_f, T_c, T_cold].", "A polytope is {x : A_poly * x <= b_poly}, with units noted per entry." ], "_units": { "temperatures": "degrees Celsius (SI, internal model units)", "n": "normalized power, 1.0 = full power", "_display_note": "Figures and prints show Fahrenheit; predicates stored in C." }, "references": { "T_c0": "308.35 °C — full-power avg coolant (from pke_params.m)", "T_f0": "328.35 °C — full-power fuel", "T_cold0": "290.0 °C — full-power cold leg", "T_standby": "275.02 °C — hot standby T_avg, defined as T_c0 - 33.33 C (= T_c0 - 60 F)" }, "derived": { "T_standby_offset_F": -60.0, "T_standby_offset_C": -33.333333333, "t_avg_in_range_halfwidth_F": 5.0, "t_avg_in_range_halfwidth_C": 2.777777, "t_avg_above_min_margin_F": 10.0, "t_avg_above_min_margin_C": 5.555555, "p_above_crit_threshold_n": 1.0e-4 }, "predicates": { "t_avg_above_min": { "meaning": "Coolant has been warmed above a cold-start threshold; shutdown may transition to heatup.", "concretization": "T_c >= T_standby + 5.556 C (= hot-standby + 10 F margin)", "halfspaces": [ { "state_index": 9, "coeff": -1.0, "rhs_expr": "-(T_standby + 5.556)", "comment": "-T_c <= -(T_standby+5.556) i.e. T_c >= T_standby+5.556" } ] }, "t_avg_in_range": { "meaning": "Average coolant temperature is inside the operating band.", "concretization": "|T_c - T_c0| <= 2.778 C (= 5 F tech-spec-like deadband)", "halfspaces": [ { "state_index": 9, "coeff": 1.0, "rhs_expr": "T_c0 + 2.778" }, { "state_index": 9, "coeff": -1.0, "rhs_expr": "-(T_c0 - 2.778)" } ] }, "p_above_crit": { "meaning": "Reactor power is in the 'power range' instrumentation regime, above source/intermediate.", "concretization": "n >= 1e-4 (0.01% of rated)", "halfspaces": [ { "state_index": 1, "coeff": -1.0, "rhs_expr": "-1.0e-4", "comment": "n >= 1e-4" } ] }, "inv1_holds": { "meaning": "Heatup safety invariant — fuel not overheated, coolant subcooled, ramp rate nominal.", "concretization": "(T_f <= 1200 C) AND (T_cold >= T_standby - 10 C) AND (dT_avg/dt <= 28 C/hr placeholder)", "halfspaces": [ { "state_index": 8, "coeff": 1.0, "rhs_expr": "1200.0", "comment": "T_f <= 1200 C (fuel design limit; placeholder)" }, { "state_index": 10, "coeff": -1.0, "rhs_expr": "-(T_standby - 10.0)", "comment": "T_cold >= T_standby - 10 (minimal subcooling proxy)" } ], "_status": "PLACEHOLDER — ramp-rate constraint not expressible as a state halfspace without augmentation; DNBR not modeled." }, "inv2_holds": { "meaning": "Operation safety invariant — power range, T_avg band, coolant subcooling.", "concretization": "(n in [0.2, 1.1]) AND (T_c in [T_c0 - 8.33, T_c0 + 8.33] C) AND (T_cold in [T_cold0 - 20, T_cold0 + 10] C)", "halfspaces": [ { "state_index": 1, "coeff": 1.0, "rhs_expr": "1.1", "comment": "n <= 1.1" }, { "state_index": 1, "coeff": -1.0, "rhs_expr": "-0.2", "comment": "n >= 0.2" }, { "state_index": 9, "coeff": 1.0, "rhs_expr": "T_c0 + 8.33", "comment": "T_c <= T_c0 + 15 F" }, { "state_index": 9, "coeff": -1.0, "rhs_expr": "-(T_c0 - 8.33)", "comment": "T_c >= T_c0 - 15 F" }, { "state_index": 10, "coeff": 1.0, "rhs_expr": "T_cold0 + 10", "comment": "T_cold <= T_cold0 + 10" }, { "state_index": 10, "coeff": -1.0, "rhs_expr": "-(T_cold0 - 20)", "comment": "T_cold >= T_cold0 - 20" } ], "_status": "PLACEHOLDER — DNBR not modeled; bands chosen to match typical PWR tech-spec deadbands but not calibrated against a specific plant." } }, "_placeholder_warning": [ "The halfspace numbers for inv1_holds and inv2_holds are engineering", "placeholders, not derived from a specific plant's tech specs or DNBR", "correlation. They are the authors' best guess at the shape such", "invariants should take and should be revised before the thesis defense.", "The t_avg_* and p_above_crit predicates are defensible for the demo." ] }