Step-by-step derivation
S001 · implies
Before
source roles = [qf-surjective-codomain-change, [A, B, B2, operation, pairs]]
After
derived = [changed_codomain, no-invented-domain]
Conditions: none
Keep EACH bank’s keys/operation/domain distinct:LDL/PULSE/function legacy table underscores,TREE full tree_* with its declared domain,and permissive BASE signed without invented op/domain.All arithmetic respects the binary-primitive contract.
Step identifiers and dependencies
Rule: R69_SOURCE_specific_keys_operation_domain_AND_binary_contract · Uses: G001
S002 · implies
Before
source roles = [function ORIGINAL A, 100, [-2, -1, 0]]
After
derived = [[-2, -1, 0]]
Conditions: none
Type EVERY RAW SAFE label,distinctness and THIS bank’s cardinality bound;empty is allowed.Sort ONLY the derived representation,not original JSON.Do not exchange TREE and LDL limits.
Step identifiers and dependencies
Rule: Finite_RAW_ALL_SAFE_distinct_labels_then_derived_sort · Uses: G001, S001
S003 · implies
Before
source roles = [function ORIGINAL B, 100, [0, 1]]
After
derived = [[0, 1]]
Conditions: none
Type EVERY RAW SAFE label,distinctness and THIS bank’s cardinality bound;empty is allowed.Sort ONLY the derived representation,not original JSON.Do not exchange TREE and LDL limits.
Step identifiers and dependencies
Rule: Finite_RAW_ALL_SAFE_distinct_labels_then_derived_sort · Uses: G001, S002
S004 · implies
Before
source roles = [function ORIGINAL table, 0, [-2, 0]]
After
derived = [[-2, 0]]
Conditions: none
BEFORE deduplication,type EACH RAW pair as EXACTLY TWO SAFE components.Identical rows may be representation duplicates,but no unvalidated cell may be silently discarded.
Step identifiers and dependencies
Rule: Pairs_EVERY_RAW_two_SAFE_cells_BEFORE_any_dedup · Uses: G001, S003
S005 · implies
Before
source roles = [function ORIGINAL table, 1, [-1, 1]]
After
derived = [[-1, 1]]
Conditions: none
BEFORE deduplication,type EACH RAW pair as EXACTLY TWO SAFE components.Identical rows may be representation duplicates,but no unvalidated cell may be silently discarded.
Step identifiers and dependencies
Rule: Pairs_EVERY_RAW_two_SAFE_cells_BEFORE_any_dedup · Uses: G001, S004
S006 · implies
Before
source roles = [function ORIGINAL table, 2, [0, 0]]
After
derived = [[0, 0]]
Conditions: none
BEFORE deduplication,type EACH RAW pair as EXACTLY TWO SAFE components.Identical rows may be representation duplicates,but no unvalidated cell may be silently discarded.
Step identifiers and dependencies
Rule: Pairs_EVERY_RAW_two_SAFE_cells_BEFORE_any_dedup · Uses: G001, S005
S007 · implies
Before
source roles = [[-2, -1, 0], [0, 1], [[-2, 0], [-1, 1], [0, 0]]]
After
derived = [Yes]
Conditions: none
FIRST qualify the WHOLE total function A→B:EXACTLY one output for EVERY A and all pairs in A×B.Identical repeated rows normalize in THIS legacy bank,unlike a different PULSE table rule.Qualify ORIGINAL B even for later codomain changes.
Step identifiers and dependencies
Rule: Function_WHOLE_qualified_total_AtoB_before_SURJECTIVE_claim · Uses: G001, S006
S008 · implies
Before
source roles = [function NEW codomain B2, 100, [0, 1, 107]]
After
derived = [[0, 1, 107]]
Conditions: none
Type EVERY RAW SAFE label,distinctness and THIS bank’s cardinality bound;empty is allowed.Sort ONLY the derived representation,not original JSON.Do not exchange TREE and LDL limits.
Step identifiers and dependencies
Rule: Finite_RAW_ALL_SAFE_distinct_labels_then_derived_sort · Uses: G001, S007
S009 · implies
Before
source roles = [[0, 1], [0, 1, 107], [[-2, 0], [-1, 1], [0, 0]]]
After
derived = [Yes]
Conditions: none
FIRST require B2 to contain the ENTIRE attained range for the same table to remain a total function.It may add/remove unattained targets and need not contain ALL old B.Never discard an actual output to force surjectivity.
Step identifiers and dependencies
Rule: Surjective_NEW_codomain_contains_WHOLE_range_not_oldB_required · Uses: G001, S008
S010 · implies
Before
source roles = [NEW B2, -2, 0, 0]
After
derived = [Yes]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S009
S011 · implies
Before
source roles = [NEW B2, -1, 1, 0]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S010
S012 · implies
Before
source roles = [NEW B2, 0, 0, 0]
After
derived = [Yes]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S011
S013 · implies
Before
source roles = [NEW B2, -2, 0, 1]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S012
S014 · implies
Before
source roles = [NEW B2, -1, 1, 1]
After
derived = [Yes]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S013
S015 · implies
Before
source roles = [NEW B2, 0, 0, 1]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S014
S016 · implies
Before
source roles = [NEW B2, -2, 0, 107]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S015
S017 · implies
Before
source roles = [NEW B2, -1, 1, 107]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S016
S018 · implies
Before
source roles = [NEW B2, 0, 0, 107]
After
derived = [No]
Conditions: none
Compare EVERY permitted input’s output with THIS target.List EACH fiber completely;do not confuse target/input or infer surjectivity from cardinalities alone.
Step identifiers and dependencies
Rule: Surjective_EVERY_source_target_fiber_comparison · Uses: G001, S017
S019 · implies
Before
source roles = [[-2, -1, 0], [0, 1, 107], [[0, [-2, 0]], [1, [-1]], [107, []]]]
After
derived = [[107], No]
Conditions: none
Surjectivity requires a preimage for EVERY declared target;multiple preimages are allowed.For a QUALIFIED empty function,the empty-codomain condition is vacuous.The missing set is B(or B2)minus range,not a replacement of the ORIGINAL codomain.
Step identifiers and dependencies
Rule: Surjective_ALL_codomain_targets_covered_including_EMPTY_vacuity · Uses: G001, S018