Step-by-step derivation
S001 · implies
Before
source roles = [qf-quadratic-exact-roots, exact_roots]
After
derived = [[increasing_reduced_positive_denominator_root_SET_retaining1]]
Conditions: none
List this scalar/label/set/point answer role or mode-specific ordered fields,not an imposed universal tuple.Retain legacy domain/underscore operation and integer fractions with/1;original bilingual snapshots stay unchanged.
Step identifiers and dependencies
Rule: source_answer_roles_or_ordered_fields_without_JS · Uses: G001
S002 · calculation
Before
Legacy quadratic ORIGINAL b squared := mul(21, 21)
After
Legacy quadratic ORIGINAL b squared = 441
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S001
S003 · calculation
Before
Legacy quadratic ORIGINAL a times c := mul(-6, 27)
After
Legacy quadratic ORIGINAL a times c = -162
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S002
S004 · calculation
Before
Legacy quadratic ORIGINAL four times ac := mul(4, -162)
After
Legacy quadratic ORIGINAL four times ac = -648
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S003
S005 · calculation
Before
Legacy quadratic ORIGINAL b squared minus fourac := sub(441, -648)
After
Legacy quadratic ORIGINAL b squared minus fourac = 1089
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S004
S006 · implies
Before
source roles = [-6, 21, 27, 1089]
After
derived = [4a*(a*x^2+b*x+c)=(2a*x+b)^2-D, 2]
Conditions: none
With a!=0,multiplication by4a is invertible and the equation is equivalent to(2ax+b)²=D.Negative D gives no real root,zero D one value and positive D two DISTINCT values.A repeated root counts once;D is unbounded derived BigInt.
Step identifiers and dependencies
Rule: Legacy_quadratic_GENERAL_complete_square_iff_DISTINCT_real_roots · Uses: G001, S005
S007 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square0 := mul(545, 545)
After
Legacy quadratic DERIVED discriminant exact midpoint square0 = 297025
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S006
S008 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 0, [0, 1090], 545]
After
derived = [297025, No, 0, 545]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S007
S009 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square1 := mul(272, 272)
After
Legacy quadratic DERIVED discriminant exact midpoint square1 = 73984
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S008
S010 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 1, [0, 545], 272]
After
derived = [73984, No, 0, 272]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S009
S011 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square2 := mul(136, 136)
After
Legacy quadratic DERIVED discriminant exact midpoint square2 = 18496
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S010
S012 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 2, [0, 272], 136]
After
derived = [18496, No, 0, 136]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S011
S013 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square3 := mul(68, 68)
After
Legacy quadratic DERIVED discriminant exact midpoint square3 = 4624
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S012
S014 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 3, [0, 136], 68]
After
derived = [4624, No, 0, 68]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S013
S015 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square4 := mul(34, 34)
After
Legacy quadratic DERIVED discriminant exact midpoint square4 = 1156
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S014
S016 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 4, [0, 68], 34]
After
derived = [1156, No, 0, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S015
S017 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square5 := mul(17, 17)
After
Legacy quadratic DERIVED discriminant exact midpoint square5 = 289
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S016
S018 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 5, [0, 34], 17]
After
derived = [289, Yes, 17, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S017
S019 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square6 := mul(25, 25)
After
Legacy quadratic DERIVED discriminant exact midpoint square6 = 625
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S018
S020 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 6, [17, 34], 25]
After
derived = [625, Yes, 25, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S019
S021 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square7 := mul(29, 29)
After
Legacy quadratic DERIVED discriminant exact midpoint square7 = 841
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S020
S022 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 7, [25, 34], 29]
After
derived = [841, Yes, 29, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S021
S023 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square8 := mul(31, 31)
After
Legacy quadratic DERIVED discriminant exact midpoint square8 = 961
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S022
S024 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 8, [29, 34], 31]
After
derived = [961, Yes, 31, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S023
S025 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square9 := mul(32, 32)
After
Legacy quadratic DERIVED discriminant exact midpoint square9 = 1024
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S024
S026 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 9, [31, 34], 32]
After
derived = [1024, Yes, 32, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S025
S027 · calculation
Before
Legacy quadratic DERIVED discriminant exact midpoint square10 := mul(33, 33)
After
Legacy quadratic DERIVED discriminant exact midpoint square10 = 1089
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S026
S028 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 10, [32, 34], 33]
After
derived = [1089, Yes, 33, 34]
Conditions: none
Squaring is monotone on nonnegative integers;maintain low²<=n<high².The midpoint is BigInt floor((low+high)/2),not floating sqrt,and strictly shrinks the integer bracket.Derived values do not inherit SAFE bounds.
Step identifiers and dependencies
Rule: Legacy_isqrt_EACH_BigInt_integer_midpoint_bracket · Uses: G001, S027
S029 · calculation
Before
Legacy quadratic DERIVED discriminant terminal root square := mul(33, 33)
After
Legacy quadratic DERIVED discriminant terminal root square = 1089
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S028
S030 · calculation
Before
Legacy quadratic DERIVED discriminant terminal successor square := mul(34, 34)
After
Legacy quadratic DERIVED discriminant terminal successor square = 1156
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S029
S031 · implies
Before
source roles = [Legacy quadratic DERIVED discriminant, 1089, 33, 34]
After
derived = [1089, 1156]
Conditions: none
Adjacent integer bounds certify floor sqrt=low;an exact root separately needs low²=n,and the principal root is the single nonnegative branch.
Step identifiers and dependencies
Rule: Legacy_isqrt_terminal_floor_and_single_nonnegative_branch · Uses: G001, S030
S032 · calculation
Before
Legacy quadratic ORIGINAL negated b := sub(0, 21)
After
Legacy quadratic ORIGINAL negated b = -21
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S031
S033 · calculation
Before
Legacy quadratic ORIGINAL minus numerator := sub(-21, 33)
After
Legacy quadratic ORIGINAL minus numerator = -54
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S032
S034 · calculation
Before
Legacy quadratic ORIGINAL plus numerator := sum(-21, 33)
After
Legacy quadratic ORIGINAL plus numerator = 12
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S033
S035 · calculation
Before
Legacy quadratic ORIGINAL denominator2a := mul(2, -6)
After
Legacy quadratic ORIGINAL denominator2a = -12
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S034
S036 · calculation
Before
Legacy quadratic ORIGINAL raw rational branch0 := div(-54, -12)
After
Legacy quadratic ORIGINAL raw rational branch0 = 9/2
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S035
S037 · implies
Before
source roles = [0, -54, -12]
After
derived = [9, 2, 9/2]
Conditions: none
Normalize positive denominator and gcd for EACH original branch.Original2a may be negative;derived numerator/denominator do not inherit SAFE.Integer roots retain p/1.
Step identifiers and dependencies
Rule: Legacy_quadratic_EACH_raw_branch_positive_den_gcd_normalization · Uses: G001, S036
S038 · calculation
Before
Legacy quadratic ORIGINAL raw rational branch1 := div(12, -12)
After
Legacy quadratic ORIGINAL raw rational branch1 = -1
Conditions: none
Substitute original roles exactly,without floating approximation or changed operands;extra teaching identities add no source-domain restrictions.
Step identifiers and dependencies
Rule: exact_rational_arithmetic · Uses: G001, S037
S039 · implies
Before
source roles = [1, 12, -12]
After
derived = [-1, 1, -1/1]
Conditions: none
Normalize positive denominator and gcd for EACH original branch.Original2a may be negative;derived numerator/denominator do not inherit SAFE.Integer roots retain p/1.
Step identifiers and dependencies
Rule: Legacy_quadratic_EACH_raw_branch_positive_den_gcd_normalization · Uses: G001, S038
S040 · implies
Before
source roles = [-6, 1089, [9/2, -1/1]]
After
derived = [[-1/1, 9/2], {-1/1, 9/2}]Conditions: none
Sort by exact rational value/cross products,not lexically or by assuming the minus branch is smaller(negative a reverses it).At D0 list the repeated value once;the complete-square IFF also proves no roots omitted.
Step identifiers and dependencies
Rule: Legacy_quadratic_EXACT_numeric_sort_and_D0_set_dedup · Uses: G001, S039