Chapter 25: Appendix A: Complete Operational | The Resolution

Appendix A: Complete Operational Semantics for BSF

Chapter 25 of The Resolution of Math

This appendix presents the complete set of operational semantics rules for the Bounded Simulation Framework (BSF) used in our case studies. These rules define how arithmetic, boolean, comparison, error propagation, and guard checking operations behave under bounded resource conditions.

Arithmetic Operations

Subtraction

(E-Sub-Zero) ⟨e, R⟩ ⇒ ⟨v, R’⟩

⟨sub(e, 0), R⟩ ⇒ ⟨v, R’+(1,0,0)⟩ (E-Sub-Succ) ⟨e1, R⟩ ⇒ ⟨S(v1), R1⟩ ⟨e2, R1⟩ ⇒ ⟨S(v2), R2⟩

⟨sub(v1, v2), R2⟩ ⇒ ⟨v3, R3⟩

⟨sub(S(e1), S(e2)), R⟩ ⇒ ⟨v3, R3+(1,0,0)⟩ (E-Sub-Under) ⟨e2, R⟩ ⇒ ⟨S(v2), R’⟩

⟨sub(0, S(e2)), R⟩ ⇒ ⟨error(“E102”), R’⟩

Multiplication

(E-Mul-Zero) ⟨e2, R⟩ ⇒ ⟨v2, R’⟩

⟨mul(0, e2), R⟩ ⇒ ⟨0, R’+(1,0,0)⟩ (E-Mul-Succ) ⟨e1, R⟩ ⇒ ⟨S(v1), R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩

⟨mul(v1, v2), R2⟩ ⇒ ⟨v3, R3⟩

⟨add(v2, v3), R3⟩ ⇒ ⟨v4, R4⟩

⟨mul(S(e1), e2), R⟩ ⇒ ⟨v4, R4+(1,0,0)⟩

Division

(E-Div) ⟨div_safe(e1, e2, 0), R⟩ ⇒ ⟨v, R’⟩

⟨div(e1, e2), R⟩ ⇒ ⟨v, R’+(1,0,0)⟩ (E-Div-Guard) steps ≥ max_div_steps

⟨div_safe(e1, e2, steps), R⟩ ⇒ ⟨error(“E004”), R⟩ (E-Div-Zero) ⟨e2, R⟩ ⇒ ⟨0, R’⟩

⟨div_safe(e1, e2, steps), R⟩ ⇒ ⟨error(“E103”), R’⟩ (E-Div-Base) ⟨e1, R⟩ ⇒ ⟨v1, R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩

lt(v1, v2) = B1

⟨div_safe(e1, e2, steps), R⟩ ⇒ ⟨0, R2+(1,0,0)⟩ (E-Div-Rec) ⟨e1, R⟩ ⇒ ⟨v1, R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩

(v1, v2) = B0 ∧ v2 ≠ 0 ∧ steps < max_div_steps

⟨sub(v1, v2), R2⟩ ⇒ ⟨v3, R3⟩

⟨div_safe(v3, v2, S( ⟨div_safe(e1, e2, steps), R⟩ ⇒ ⟨S(v4), R4+(1,0,0))

Boolean Operations

(E-And-False) ⟨e1, R⟩ ⇒ ⟨B0, R’⟩

⟨and(e1, e2), R⟩ ⇒ ⟨B0, R’+(1,0,0)⟩ (E-And-True) ⟨e1, R⟩ ⇒ ⟨B1, R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩

⟨and(e1, e2), R⟩ ⇒ ⟨v2, R2+(1,0,0)⟩ (E-Or-True) ⟨e1, R⟩ ⇒ ⟨B1, R’⟩

⟨or(e1, e2), R⟩ ⇒ ⟨B1, R’+(1,0,0)⟩ (E-Or-False) ⟨e1, R⟩ ⇒ ⟨B0, R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩

⟨or(e1, e2), R⟩ ⇒ ⟨v2, R2+(1,0,0)⟩ (E-Not-B0) ⟨e, R⟩ ⇒ ⟨B0, R’⟩

⟨not(e), R⟩ ⇒ ⟨B1, R’+(1,0,0)⟩ (E-Not-B1) ⟨e, R⟩ ⇒ ⟨B1, R’⟩

⟨not(e), R⟩ ⇒ ⟨B0, R’+(1,0,0)⟩

Comparison Operations

(E-Eq-Zero) ⟨0, 0⟩ ⇒ ⟨B1, R’+(1,0,0)⟩ (E-Eq-Succ) ⟨e1, R⟩ ⇒ ⟨S(v1), R1⟩ ⟨e2, R1⟩ ⇒ ⟨S(v2), R2⟩

⟨eq(v1, v2), R2⟩ ⇒ ⟨v3, R3⟩

⟨eq(S(e1), S(e2)), R⟩ ⇒ ⟨v3, R3+(1,0,0)⟩ (E-Eq-Diff) ⟨e1, R⟩ ⇒ ⟨v1, R1⟩

⟨e2, R1⟩ ⇒ ⟨v2, R2⟩ structure(v1) ≠ structure(v2)

⟨eq(e1, e2), R⟩ ⇒ ⟨B0, R2+(1,0,0)⟩

Guard and Error Propagation

(E-Guard-Stack) R.stack_depth ≥ max_stack_dept

⟨e, R⟩ ⇒ ⟨error(“E002”), R⟩ (E-Guard-Nat) depth(S(v)) > max_nat_size

⟨S(e), R⟩ ⇒ ⟨error(“E201”), R⟩ (E-Error-Prop) ⟨e1, R⟩ ⇒ ⟨error(msg), R’⟩

⟨op(e1, e2), R⟩ ⇒ ⟨error(msg), R’⟩

These rules form the complete operational semantics required to interpret and evaluate all constructs in the Bounded Simulation Framework while preserving safety, determinism, and finite resource guarantees.