SS001A

divisor_signed_table_reindex_from_components

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

Real component composition implements the signed lookup pullback exactly, at every bounded target index.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

Exact expanded first-order arithmetic statement

forall F G pb pc nb nc qb qc mb mc r s l. ((F) = (((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) * S ((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) + ((((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))))) -> ((G) = (((((qb) + (qc)) * S ((qb) + (qc)) + ((qc) + (qc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))) * S ((((qb) + (qc)) * S ((qb) + (qc)) + ((qc) + (qc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))) + ((((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))))) -> (((forall fms_i_component_datapositive fms_j_component_datapositive fms_v_component_datapositive. (exists fms_gap_component_datapositive. fms_gap_component_datapositive + S (fms_i_component_datapositive) = (l)) -> (((exists fs_h_fms_component_datapositive_index. fs_h_fms_component_datapositive_index + S (fms_j_component_datapositive) = S ((S (fms_i_component_datapositive)) * s)) /\ exists fs_q_fms_component_datapositive_index. r = fs_q_fms_component_datapositive_index * S ((S (fms_i_component_datapositive)) * s) + (fms_j_component_datapositive))) -> (((exists fs_h_fms_component_datapositive_source. fs_h_fms_component_datapositive_source + S (fms_v_component_datapositive) = S ((S (fms_j_component_datapositive)) * pc)) /\ exists fs_q_fms_component_datapositive_source. pb = fs_q_fms_component_datapositive_source * S ((S (fms_j_component_datapositive)) * pc) + (fms_v_component_datapositive))) -> (((exists fs_h_fms_component_datapositive_target. fs_h_fms_component_datapositive_target + S (fms_v_component_datapositive) = S ((S (fms_i_component_datapositive)) * qc)) /\ exists fs_q_fms_component_datapositive_target. qb = fs_q_fms_component_datapositive_target * S ((S (fms_i_component_datapositive)) * qc) + (fms_v_component_datapositive)))) /\ (forall fms_i_component_datanegative fms_j_component_datanegative fms_v_component_datanegative. (exists fms_gap_component_datanegative. fms_gap_component_datanegative + S (fms_i_component_datanegative) = (l)) -> (((exists fs_h_fms_component_datanegative_index. fs_h_fms_component_datanegative_index + S (fms_j_component_datanegative) = S ((S (fms_i_component_datanegative)) * s)) /\ exists fs_q_fms_component_datanegative_index. r = fs_q_fms_component_datanegative_index * S ((S (fms_i_component_datanegative)) * s) + (fms_j_component_datanegative))) -> (((exists fs_h_fms_component_datanegative_source. fs_h_fms_component_datanegative_source + S (fms_v_component_datanegative) = S ((S (fms_j_component_datanegative)) * nc)) /\ exists fs_q_fms_component_datanegative_source. nb = fs_q_fms_component_datanegative_source * S ((S (fms_j_component_datanegative)) * nc) + (fms_v_component_datanegative))) -> (((exists fs_h_fms_component_datanegative_target. fs_h_fms_component_datanegative_target + S (fms_v_component_datanegative) = S ((S (fms_i_component_datanegative)) * mc)) /\ exists fs_q_fms_component_datanegative_target. mb = fs_q_fms_component_datanegative_target * S ((S (fms_i_component_datanegative)) * mc) + (fms_v_component_datanegative)))))) -> (forall dsr_index_component_result dsr_image_component_result dsr_value_component_result. (exists pvs_gap_component_resultbound. pvs_gap_component_resultbound + S (dsr_index_component_result) = (l)) -> (((exists ff_h_pvs_component_resultmap. ff_h_pvs_component_resultmap + S (dsr_image_component_result) = S ((S (dsr_index_component_result)) * s)) /\ exists ff_q_pvs_component_resultmap. r = ff_q_pvs_component_resultmap * S ((S (dsr_index_component_result)) * s) + (dsr_image_component_result))) -> (exists dst_positive_code_component_resultsource dst_positive_scale_component_resultsource dst_negative_code_component_resultsource dst_negative_scale_component_resultsource dst_positive_component_resultsource dst_negative_component_resultsource. (((F) = (((((dst_positive_code_component_resultsource) + (dst_positive_scale_component_resultsource)) * S ((dst_positive_code_component_resultsource) + (dst_positive_scale_component_resultsource)) + ((dst_positive_scale_component_resultsource) + (dst_positive_scale_component_resultsource))) + (((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) * S ((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) + ((dst_negative_scale_component_resultsource) + (dst_negative_scale_component_resultsource)))) * S ((((dst_positive_code_component_resultsource) + (dst_positive_scale_component_resultsource)) * S ((dst_positive_code_component_resultsource) + (dst_positive_scale_component_resultsource)) + ((dst_positive_scale_component_resultsource) + (dst_positive_scale_component_resultsource))) + (((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) * S ((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) + ((dst_negative_scale_component_resultsource) + (dst_negative_scale_component_resultsource)))) + ((((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) * S ((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) + ((dst_negative_scale_component_resultsource) + (dst_negative_scale_component_resultsource))) + (((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) * S ((dst_negative_code_component_resultsource) + (dst_negative_scale_component_resultsource)) + ((dst_negative_scale_component_resultsource) + (dst_negative_scale_component_resultsource)))))) /\ (((((exists ff_h_pvs_component_resultsourcepositive. ff_h_pvs_component_resultsourcepositive + S (dst_positive_component_resultsource) = S ((S (dsr_image_component_result)) * dst_positive_scale_component_resultsource)) /\ exists ff_q_pvs_component_resultsourcepositive. dst_positive_code_component_resultsource = ff_q_pvs_component_resultsourcepositive * S ((S (dsr_image_component_result)) * dst_positive_scale_component_resultsource) + (dst_positive_component_resultsource))) /\ (((((exists ff_h_pvs_component_resultsourcenegative. ff_h_pvs_component_resultsourcenegative + S (dst_negative_component_resultsource) = S ((S (dsr_image_component_result)) * dst_negative_scale_component_resultsource)) /\ exists ff_q_pvs_component_resultsourcenegative. dst_negative_code_component_resultsource = ff_q_pvs_component_resultsourcenegative * S ((S (dsr_image_component_result)) * dst_negative_scale_component_resultsource) + (dst_negative_component_resultsource))) /\ (exists ge_balance_positive_component_resultsourcevalue ge_balance_negative_component_resultsourcevalue. (((((dsr_value_component_result) = 2 * (ge_balance_positive_component_resultsourcevalue) /\ (ge_balance_negative_component_resultsourcevalue) = 0) \/ exists ge_signed_half_component_resultsourcevaluedecode. (((dsr_value_component_result) = 2 * ge_signed_half_component_resultsourcevaluedecode + 1 /\ (ge_balance_positive_component_resultsourcevalue) = 0) /\ (ge_balance_negative_component_resultsourcevalue) = S ge_signed_half_component_resultsourcevaluedecode))) /\ ((dst_positive_component_resultsource) + ge_balance_negative_component_resultsourcevalue = (dst_negative_component_resultsource) + ge_balance_positive_component_resultsourcevalue))))))))) -> (exists dst_positive_code_component_resulttarget dst_positive_scale_component_resulttarget dst_negative_code_component_resulttarget dst_negative_scale_component_resulttarget dst_positive_component_resulttarget dst_negative_component_resulttarget. (((G) = (((((dst_positive_code_component_resulttarget) + (dst_positive_scale_component_resulttarget)) * S ((dst_positive_code_component_resulttarget) + (dst_positive_scale_component_resulttarget)) + ((dst_positive_scale_component_resulttarget) + (dst_positive_scale_component_resulttarget))) + (((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) * S ((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) + ((dst_negative_scale_component_resulttarget) + (dst_negative_scale_component_resulttarget)))) * S ((((dst_positive_code_component_resulttarget) + (dst_positive_scale_component_resulttarget)) * S ((dst_positive_code_component_resulttarget) + (dst_positive_scale_component_resulttarget)) + ((dst_positive_scale_component_resulttarget) + (dst_positive_scale_component_resulttarget))) + (((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) * S ((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) + ((dst_negative_scale_component_resulttarget) + (dst_negative_scale_component_resulttarget)))) + ((((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) * S ((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) + ((dst_negative_scale_component_resulttarget) + (dst_negative_scale_component_resulttarget))) + (((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) * S ((dst_negative_code_component_resulttarget) + (dst_negative_scale_component_resulttarget)) + ((dst_negative_scale_component_resulttarget) + (dst_negative_scale_component_resulttarget)))))) /\ (((((exists ff_h_pvs_component_resulttargetpositive. ff_h_pvs_component_resulttargetpositive + S (dst_positive_component_resulttarget) = S ((S (dsr_index_component_result)) * dst_positive_scale_component_resulttarget)) /\ exists ff_q_pvs_component_resulttargetpositive. dst_positive_code_component_resulttarget = ff_q_pvs_component_resulttargetpositive * S ((S (dsr_index_component_result)) * dst_positive_scale_component_resulttarget) + (dst_positive_component_resulttarget))) /\ (((((exists ff_h_pvs_component_resulttargetnegative. ff_h_pvs_component_resulttargetnegative + S (dst_negative_component_resulttarget) = S ((S (dsr_index_component_result)) * dst_negative_scale_component_resulttarget)) /\ exists ff_q_pvs_component_resulttargetnegative. dst_negative_code_component_resulttarget = ff_q_pvs_component_resulttargetnegative * S ((S (dsr_index_component_result)) * dst_negative_scale_component_resulttarget) + (dst_negative_component_resulttarget))) /\ (exists ge_balance_positive_component_resulttargetvalue ge_balance_negative_component_resulttargetvalue. (((((dsr_value_component_result) = 2 * (ge_balance_positive_component_resulttargetvalue) /\ (ge_balance_negative_component_resulttargetvalue) = 0) \/ exists ge_signed_half_component_resulttargetvaluedecode. (((dsr_value_component_result) = 2 * ge_signed_half_component_resulttargetvaluedecode + 1 /\ (ge_balance_positive_component_resulttargetvalue) = 0) /\ (ge_balance_negative_component_resulttargetvalue) = S ge_signed_half_component_resulttargetvaluedecode))) /\ ((dst_positive_component_resulttarget) + ge_balance_negative_component_resulttargetvalue = (dst_negative_component_resulttarget) + ge_balance_positive_component_resulttargetvalue))))))))))

Constructive proof overview

Generated structural guide

Real component composition implements the signed lookup pullback exactly, at every bounded target index.

The unchanged tactic script uses 2 declared prerequisites and contains 64 exact native proof lines.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

64 script commands · 10 reading checkpoints · 1 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Named ingredients (2)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro pb
  4. L4
    intro pc
  5. L5
    intro nb
  6. L6
    intro nc
  7. L7
    intro qb
  8. L8
    intro qc
  9. L9
    intro mb
  10. L10
    intro mc
02Fix variables and assumptionsL11–20

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro r
  2. L12
    intro s
  3. L13
    intro l
  4. L14
    intro hF
  5. L15
    intro hG
  6. L16
    intro hcompose
  7. L17
    intro i
  8. L18
    intro j
  9. L19
    intro z
  10. L20
    intro hi
03Fix variables and assumptionsL21–22

Work with arbitrary variables or the premises of the current implication.

  1. L21
    intro hmap
  2. L22
    intro hsource
04Separate the logical casesL23–23

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L23
    cases hcompose
05Establish hpartsL24–33

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table at to components.

  1. L24
    have hparts : ∃ p. ∃ n. BetaAt(pb,pc,j,p) ∧ (BetaAt(nb,nc,j,n) ∧ SignedBalance(z,p,n))Definitions: SignedBalanceBetaAt
  2. L25
    specialize divisor_signed_table_at_to_components (F)
  3. L26
    specialize divisor_signed_table_at_to_components (pb)
  4. L27
    specialize divisor_signed_table_at_to_components (pc)
  5. L28
    specialize divisor_signed_table_at_to_components (nb)
  6. L29
    specialize divisor_signed_table_at_to_components (nc)
  7. L30
    specialize divisor_signed_table_at_to_components (j)
  8. L31
    specialize divisor_signed_table_at_to_components (z)
  9. L32
    apply divisor_signed_table_at_to_components
  10. L33
    exact hF
06Use earlier factsL34–34

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L34
    exact hsource
07Separate the logical casesL35–38

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L35
    cases hparts
  2. L36
    cases hparts_witness
  3. L37
    cases hparts_witness_witness
  4. L38
    cases hparts_witness_witness_right
08Use earlier factsL39–48

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L39
    specialize divisor_signed_table_at_from_components (G)
  2. L40
    specialize divisor_signed_table_at_from_components (qb)
  3. L41
    specialize divisor_signed_table_at_from_components (qc)
  4. L42
    specialize divisor_signed_table_at_from_components (mb)
  5. L43
    specialize divisor_signed_table_at_from_components (mc)
  6. L44
    specialize divisor_signed_table_at_from_components (i)
  7. L45
    specialize divisor_signed_table_at_from_components (x)
  8. L46
    specialize divisor_signed_table_at_from_components (x1)
  9. L47
    specialize divisor_signed_table_at_from_components (z)
  10. L48
    apply divisor_signed_table_at_from_components
09Use earlier factsL49–58

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L49
    exact hG
  2. L50
    specialize hcompose_left (i)
  3. L51
    specialize hcompose_left (j)
  4. L52
    specialize hcompose_left (x)
  5. L53
    apply hcompose_left
  6. L54
    exact hi
  7. L55
    exact hmap
  8. L56
    exact hparts_witness_witness_left
  9. L57
    specialize hcompose_right (i)
  10. L58
    specialize hcompose_right (j)
10Use earlier factsL59–64

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L59
    specialize hcompose_right (x1)
  2. L60
    apply hcompose_right
  3. L61
    exact hi
  4. L62
    exact hmap
  5. L63
    exact hparts_witness_witness_right_left
  6. L64
    exact hparts_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 64 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro pb
  4. 0004intro pc
  5. 0005intro nb
  6. 0006intro nc
  7. 0007intro qb
  8. 0008intro qc
  9. 0009intro mb
  10. 0010intro mc
  11. 0011intro r
  12. 0012intro s
  13. 0013intro l
  14. 0014intro hF
  15. 0015intro hG
  16. 0016intro hcompose
  17. 0017intro i
  18. 0018intro j
  19. 0019intro z
  20. 0020intro hi
  21. 0021intro hmap
  22. 0022intro hsource
  23. 0023cases hcompose
  24. 0024have hparts : exists p n. (((((exists ff_h_pvs_component_valuespositive. ff_h_pvs_component_valuespositive + S (p) = S ((S (j)) * pc)) /\ exists ff_q_pvs_component_valuespositive. pb = ff_q_pvs_component_valuespositive * S ((S (j)) * pc) + (p))) /\ (((((exists ff_h_pvs_component_valuesnegative. ff_h_pvs_component_valuesnegative + S (n) = S ((S (j)) * nc)) /\ exists ff_q_pvs_component_valuesnegative. nb = ff_q_pvs_component_valuesnegative * S ((S (j)) * nc) + (n))) /\ (exists ge_balance_positive_component_valuesvalue ge_balance_negative_component_valuesvalue. (((((z) = 2 * (ge_balance_positive_component_valuesvalue) /\ (ge_balance_negative_component_valuesvalue) = 0) \/ exists ge_signed_half_component_valuesvaluedecode. (((z) = 2 * ge_signed_half_component_valuesvaluedecode + 1 /\ (ge_balance_positive_component_valuesvalue) = 0) /\ (ge_balance_negative_component_valuesvalue) = S ge_signed_half_component_valuesvaluedecode))) /\ ((p) + ge_balance_negative_component_valuesvalue = (n) + ge_balance_positive_component_valuesvalue)))))))
  25. 0025specialize divisor_signed_table_at_to_components (F)
  26. 0026specialize divisor_signed_table_at_to_components (pb)
  27. 0027specialize divisor_signed_table_at_to_components (pc)
  28. 0028specialize divisor_signed_table_at_to_components (nb)
  29. 0029specialize divisor_signed_table_at_to_components (nc)
  30. 0030specialize divisor_signed_table_at_to_components (j)
  31. 0031specialize divisor_signed_table_at_to_components (z)
  32. 0032apply divisor_signed_table_at_to_components
  33. 0033exact hF
  34. 0034exact hsource
  35. 0035cases hparts
  36. 0036cases hparts_witness
  37. 0037cases hparts_witness_witness
  38. 0038cases hparts_witness_witness_right
  39. 0039specialize divisor_signed_table_at_from_components (G)
  40. 0040specialize divisor_signed_table_at_from_components (qb)
  41. 0041specialize divisor_signed_table_at_from_components (qc)
  42. 0042specialize divisor_signed_table_at_from_components (mb)
  43. 0043specialize divisor_signed_table_at_from_components (mc)
  44. 0044specialize divisor_signed_table_at_from_components (i)
  45. 0045specialize divisor_signed_table_at_from_components (x)
  46. 0046specialize divisor_signed_table_at_from_components (x1)
  47. 0047specialize divisor_signed_table_at_from_components (z)
  48. 0048apply divisor_signed_table_at_from_components
  49. 0049exact hG
  50. 0050specialize hcompose_left (i)
  51. 0051specialize hcompose_left (j)
  52. 0052specialize hcompose_left (x)
  53. 0053apply hcompose_left
  54. 0054exact hi
  55. 0055exact hmap
  56. 0056exact hparts_witness_witness_left
  57. 0057specialize hcompose_right (i)
  58. 0058specialize hcompose_right (j)
  59. 0059specialize hcompose_right (x1)
  60. 0060apply hcompose_right
  61. 0061exact hi
  62. 0062exact hmap
  63. 0063exact hparts_witness_witness_right_left
  64. 0064exact hparts_witness_witness_right_right