Step-by-step derivation
S001 · implies
Before
source roles = [qf-injective-table-property, injective, no-required-domain, []]
After
derived = [[injective_YesNo_STRING]]
Conditions: none
Legacy banks enforce their exact source keys/operation/domain.BASE integers retain metadata without treating it as an oracle.Distinguish NUMBER,string,fraction pair and vector equality formats;retain original bilingual data/AST/status.
Step identifiers and dependencies
Rule: R64_SOURCE_exact_legacy_interface_BASE_metadata_AND_output_roles · Uses: G001
S002 · implies
Before
source roles = [ORIGINAL f domain, [-2, -1, 0]]
After
derived = [[-2, -1, 0]]
Conditions: none
RAW sets are distinct,SAFE and≤100.Sort only a derived work table,retaining original lists/hashes.
Step identifiers and dependencies
Rule: FiniteMap_RAW_distinct_SAFE_set_bound100 · Uses: G001, S001
S003 · implies
Before
source roles = [ORIGINAL f codomain, [-4, -3, -2, -1]]
After
derived = [[-4, -3, -2, -1]]
Conditions: none
RAW sets are distinct,SAFE and≤100.Sort only a derived work table,retaining original lists/hashes.
Step identifiers and dependencies
Rule: FiniteMap_RAW_distinct_SAFE_set_bound100 · Uses: G001, S002
S004 · implies
Before
source roles = [ORIGINAL f, [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[[-2, -1], [-1, -1], [0, -2]]]
Conditions: none
FIRST type EVERY raw pair and enforce raw length≤200,THEN normalize identical rows as one ordered pair.Do not merge different outputs of one input.Empty domains do not waive RAW checks.
Step identifiers and dependencies
Rule: FiniteMap_RAW200_bound_BEFORE_identical_row_ASSET_normalization · Uses: G001, S003
S005 · implies
Before
source roles = [ORIGINAL f, 0, -2, -1, [-2, -1, 0], [-4, -3, -2, -1]]
After
derived = [Yes, Yes, Yes]
Conditions: none
EVERY row input belongs to the domain and output to the codomain,including orphan/unused rows.
Step identifiers and dependencies
Rule: FiniteMap_EACH_normalized_row_declared_domain_codomain_types · Uses: G001, S004
S006 · implies
Before
source roles = [ORIGINAL f, 1, -1, -1, [-2, -1, 0], [-4, -3, -2, -1]]
After
derived = [Yes, Yes, Yes]
Conditions: none
EVERY row input belongs to the domain and output to the codomain,including orphan/unused rows.
Step identifiers and dependencies
Rule: FiniteMap_EACH_normalized_row_declared_domain_codomain_types · Uses: G001, S005
S007 · implies
Before
source roles = [ORIGINAL f, 2, 0, -2, [-2, -1, 0], [-4, -3, -2, -1]]
After
derived = [Yes, Yes, Yes]
Conditions: none
EVERY row input belongs to the domain and output to the codomain,including orphan/unused rows.
Step identifiers and dependencies
Rule: FiniteMap_EACH_normalized_row_declared_domain_codomain_types · Uses: G001, S006
S008 · implies
Before
source roles = [ORIGINAL f, -2, [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [1, Yes]
Conditions: none
EACH declared input needs EXACTLY one row for totality.A first lookup must not hide missing or multiple outputs.
Step identifiers and dependencies
Rule: FiniteMap_EACH_declared_input_exactly_one_output_row · Uses: G001, S007
S009 · implies
Before
source roles = [ORIGINAL f, -1, [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [1, Yes]
Conditions: none
EACH declared input needs EXACTLY one row for totality.A first lookup must not hide missing or multiple outputs.
Step identifiers and dependencies
Rule: FiniteMap_EACH_declared_input_exactly_one_output_row · Uses: G001, S008
S010 · implies
Before
source roles = [ORIGINAL f, 0, [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [1, Yes]
Conditions: none
EACH declared input needs EXACTLY one row for totality.A first lookup must not hide missing or multiple outputs.
Step identifiers and dependencies
Rule: FiniteMap_EACH_declared_input_exactly_one_output_row · Uses: G001, S009
S011 · implies
Before
source roles = [ORIGINAL f, [-2, -1, 0], [-4, -3, -2, -1], [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[Yes, Yes, Yes], [1, 1, 1], Yes]
Conditions: none
Permit lookups ONLY after BOTH all-row typing and all-input totality.Empty-set vacuity cannot conceal an invalid row.
Step identifiers and dependencies
Rule: FiniteMap_TOTAL_qualification_BEFORE_lookups_even_empty_domain · Uses: G001, S010
S012 · implies
Before
source roles = [ORIGINAL f, -4, [-2, -1, 0], [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[], 0]
Conditions: none
List ALL preimages at EVERY codomain label,including empty fibers;do not delete unattained B labels.
Step identifiers and dependencies
Rule: FiniteMap_EVERY_codomain_fiber_including_unattained · Uses: G001, S011
S013 · implies
Before
source roles = [ORIGINAL f, -3, [-2, -1, 0], [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[], 0]
Conditions: none
List ALL preimages at EVERY codomain label,including empty fibers;do not delete unattained B labels.
Step identifiers and dependencies
Rule: FiniteMap_EVERY_codomain_fiber_including_unattained · Uses: G001, S012
S014 · implies
Before
source roles = [ORIGINAL f, -2, [-2, -1, 0], [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[0], 1]
Conditions: none
List ALL preimages at EVERY codomain label,including empty fibers;do not delete unattained B labels.
Step identifiers and dependencies
Rule: FiniteMap_EVERY_codomain_fiber_including_unattained · Uses: G001, S013
S015 · implies
Before
source roles = [ORIGINAL f, -1, [-2, -1, 0], [[-2, -1], [-1, -1], [0, -2]]]
After
derived = [[-2, -1], 2]
Conditions: none
List ALL preimages at EVERY codomain label,including empty fibers;do not delete unattained B labels.
Step identifiers and dependencies
Rule: FiniteMap_EVERY_codomain_fiber_including_unattained · Uses: G001, S014
S016 · implies
Before
source roles = [ORIGINAL f, [-2, -1, 0], [-4, -3, -2, -1], [[], [], [0], [-2, -1]]]
After
derived = [No, No, No]
Conditions: none
Injective means every fiber≤1,surjective every fiber≥1,and BOTH mean bijective.Unattained B does not defeat injectivity.Empty→empty is bijective;empty→nonempty is only injective.
Step identifiers and dependencies
Rule: FiniteMap_injective_surjective_BOTH_needed_for_inverse · Uses: G001, S015