Step-by-step derivation
S001 · implies
Before
source roles = [qf-str22-oscillator-energy-snapshot, oscillator-energy-snapshot]
After
derived = [[mass, spring, position, velocity, kinetic, potential, total]]
Conditions: none
Use this bank exact ordered tuple and hyphenated operation.Rational outputs reduce with positive denominators and OMIT/1 for integers,unlike the preceding legacy bank.Do not change original bilingual snapshots or meaning.
Step identifiers and dependencies
Rule: STR22_exact_interface_and_source_ORDERED_tuple_roles · Uses: G001
S002 · implies
Before
source roles = [Oscillator mass, [2, 1]]
After
derived = [2, 2, 1]
Conditions: none
A raw rational is a PAIR with each component within±1e6 and nonzero denominator.Normalize denominator sign and gcd.Do not accept a scalar or reduce before checking the RAW input bounds.
Step identifiers and dependencies
Rule: STR22_RAW_rational_PAIR_profile_and_sign_gcd_normalization · Uses: G001, S001
S003 · implies
Before
source roles = [Oscillator spring, [6, 1]]
After
derived = [6, 6, 1]
Conditions: none
A raw rational is a PAIR with each component within±1e6 and nonzero denominator.Normalize denominator sign and gcd.Do not accept a scalar or reduce before checking the RAW input bounds.
Step identifiers and dependencies
Rule: STR22_RAW_rational_PAIR_profile_and_sign_gcd_normalization · Uses: G001, S002
S004 · implies
Before
source roles = [2, 6]
After
derived = [[Yes, Yes], Yes]
Conditions: none
For the undamped linear oscillator m*x_second+k*x=0 require BOTH m,k strictly positive.Qualification may legally contain0/negative candidates;do not repair them with abs or replacement.
Step identifiers and dependencies
Rule: Oscillator_BOTH_strict_model_qualifications_not_repaired · Uses: G001, S003
S005 · implies
Before
source roles = [Oscillator position, [7, 3]]
After
derived = [7/3, 7, 3]
Conditions: none
A raw rational is a PAIR with each component within±1e6 and nonzero denominator.Normalize denominator sign and gcd.Do not accept a scalar or reduce before checking the RAW input bounds.
Step identifiers and dependencies
Rule: STR22_RAW_rational_PAIR_profile_and_sign_gcd_normalization · Uses: G001, S004
S006 · implies
Before
source roles = [Oscillator velocity, [0, 2]]
After
derived = [0, 0, 1]
Conditions: none
A raw rational is a PAIR with each component within±1e6 and nonzero denominator.Normalize denominator sign and gcd.Do not accept a scalar or reduce before checking the RAW input bounds.
Step identifiers and dependencies
Rule: STR22_RAW_rational_PAIR_profile_and_sign_gcd_normalization · Uses: G001, S005
S007 · calculation
Before
Oscillator ORIGINAL velocity squared := mul(0, 0)
After
Oscillator ORIGINAL velocity squared = 0
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S006
S008 · implies
Before
source roles = [Oscillator ORIGINAL velocity squared, mul, [0, 0]]
After
derived = [[1, 1], [0, 1], 0]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S007
S009 · calculation
Before
Oscillator ORIGINAL mass times velocity squared := mul(2, 0)
After
Oscillator ORIGINAL mass times velocity squared = 0
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S008
S010 · implies
Before
source roles = [Oscillator ORIGINAL mass times velocity squared, mul, [2, 0]]
After
derived = [[1, 1], [0, 1], 0]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S009
S011 · calculation
Before
Oscillator ORIGINAL kinetic half := div(0, 2)
After
Oscillator ORIGINAL kinetic half = 0
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S010
S012 · implies
Before
source roles = [Oscillator ORIGINAL kinetic half, div, [0, 2]]
After
derived = [[2, 1], [0, 1], 0]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S011
S013 · calculation
Before
Oscillator ORIGINAL position squared := mul(7/3, 7/3)
After
Oscillator ORIGINAL position squared = 49/9
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S012
S014 · implies
Before
source roles = [Oscillator ORIGINAL position squared, mul, [7/3, 7/3]]
After
derived = [[1, 1], [49, 9], 49/9]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S013
S015 · calculation
Before
Oscillator ORIGINAL spring times position squared := mul(6, 49/9)
After
Oscillator ORIGINAL spring times position squared = 98/3
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S014
S016 · implies
Before
source roles = [Oscillator ORIGINAL spring times position squared, mul, [6, 49/9]]
After
derived = [[3, 1], [98, 3], 98/3]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S015
S017 · calculation
Before
Oscillator ORIGINAL potential half := div(98/3, 2)
After
Oscillator ORIGINAL potential half = 49/3
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S016
S018 · implies
Before
source roles = [Oscillator ORIGINAL potential half, div, [98/3, 2]]
After
derived = [[2, 1], [49, 3], 49/3]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S017
S019 · calculation
Before
Oscillator ORIGINAL snapshot total energy := sum(0, 49/3)
After
Oscillator ORIGINAL snapshot total energy = 49/3
Conditions: none
Use the ORIGINAL operands exactly,without floating point.Only the declared SOURCE rational operations use their profile;additional integer teaching algebra adds no new input-domain restriction.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S018
S020 · implies
Before
source roles = [Oscillator ORIGINAL snapshot total energy, sum, [0, 49/3]]
After
derived = [[1], [49, 3], 49/3]
Conditions: none
SOURCE addition first uses denominator gcd;multiplication cross-cancels.Then BOTH raw result components must be within1e6 BEFORE final reduction.Division also checks the nonzero reciprocal.Do not apply an uncancelled-product profile or reduce the final result before the raw gate.
Step identifiers and dependencies
Rule: STR22_EACH_SOURCE_rational_gcd_cross_cancel_THEN_RAW_gate · Uses: G001, S019
S021 · implies
Before
source roles = [2, 6, 7/3, 0]
After
derived = [0, 49/3, 49/3]
Conditions: none
Compute T=mv²/2,V=kx²/2 and T+V in original operation order.Square signed x,v rather than clipping them.A SINGLE-state snapshot does not prove trajectory conservation,solution existence or stability.
Step identifiers and dependencies
Rule: Oscillator_ENERGY_at_ONEstate_not_conservation · Uses: G001, S020