SS0016

divisor_signed_sum_successor_intro

Public research checkpoint, not admitted to Alpha or Stable. Alpha v30 remains 3222 checked-use theorems; Stable remains 432. The on-demand Alpha Lean service does not yet expose these checkpoint theorems; their independently checked literal bundles and unchanged sources are available below.

Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable

A genuine signed prefix sum, its actual next entry and canonical signed addition construct the successor sum.

Exact expanded first-order arithmetic statement

forall F l a b c. (exists dst_positive_code_step_sum dst_positive_scale_step_sum dst_negative_code_step_sum dst_negative_scale_step_sum dst_positive_sum_step_sum dst_negative_sum_step_sum. (((F) = (((((dst_positive_code_step_sum) + (dst_positive_scale_step_sum)) * S ((dst_positive_code_step_sum) + (dst_positive_scale_step_sum)) + ((dst_positive_scale_step_sum) + (dst_positive_scale_step_sum))) + (((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) * S ((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) + ((dst_negative_scale_step_sum) + (dst_negative_scale_step_sum)))) * S ((((dst_positive_code_step_sum) + (dst_positive_scale_step_sum)) * S ((dst_positive_code_step_sum) + (dst_positive_scale_step_sum)) + ((dst_positive_scale_step_sum) + (dst_positive_scale_step_sum))) + (((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) * S ((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) + ((dst_negative_scale_step_sum) + (dst_negative_scale_step_sum)))) + ((((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) * S ((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) + ((dst_negative_scale_step_sum) + (dst_negative_scale_step_sum))) + (((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) * S ((dst_negative_code_step_sum) + (dst_negative_scale_step_sum)) + ((dst_negative_scale_step_sum) + (dst_negative_scale_step_sum)))))) /\ (((exists fs_u_dst_step_sumpositive fs_v_dst_step_sumpositive. ((((exists fs_h_dst_step_sumpositive_body_start. fs_h_dst_step_sumpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_step_sumpositive)) /\ exists fs_q_dst_step_sumpositive_body_start. fs_u_dst_step_sumpositive = fs_q_dst_step_sumpositive_body_start * S ((S (0)) * fs_v_dst_step_sumpositive) + (0))) /\ ((((exists fs_h_dst_step_sumpositive_body_terminal. fs_h_dst_step_sumpositive_body_terminal + S (dst_positive_sum_step_sum) = S ((S (l)) * fs_v_dst_step_sumpositive)) /\ exists fs_q_dst_step_sumpositive_body_terminal. fs_u_dst_step_sumpositive = fs_q_dst_step_sumpositive_body_terminal * S ((S (l)) * fs_v_dst_step_sumpositive) + (dst_positive_sum_step_sum))) /\ forall fs_i_dst_step_sumpositive_body_steps. (exists fs_lt_dst_step_sumpositive_body_steps_bound. fs_lt_dst_step_sumpositive_body_steps_bound + S fs_i_dst_step_sumpositive_body_steps = l) -> exists fs_a_dst_step_sumpositive_body_steps fs_r_dst_step_sumpositive_body_steps fs_s_dst_step_sumpositive_body_steps. ((((exists fs_h_dst_step_sumpositive_body_steps_summand. fs_h_dst_step_sumpositive_body_steps_summand + S (fs_a_dst_step_sumpositive_body_steps) = S ((S (fs_i_dst_step_sumpositive_body_steps)) * dst_positive_scale_step_sum)) /\ exists fs_q_dst_step_sumpositive_body_steps_summand. dst_positive_code_step_sum = fs_q_dst_step_sumpositive_body_steps_summand * S ((S (fs_i_dst_step_sumpositive_body_steps)) * dst_positive_scale_step_sum) + (fs_a_dst_step_sumpositive_body_steps))) /\ ((((exists fs_h_dst_step_sumpositive_body_steps_partial. fs_h_dst_step_sumpositive_body_steps_partial + S (fs_r_dst_step_sumpositive_body_steps) = S ((S (fs_i_dst_step_sumpositive_body_steps)) * fs_v_dst_step_sumpositive)) /\ exists fs_q_dst_step_sumpositive_body_steps_partial. fs_u_dst_step_sumpositive = fs_q_dst_step_sumpositive_body_steps_partial * S ((S (fs_i_dst_step_sumpositive_body_steps)) * fs_v_dst_step_sumpositive) + (fs_r_dst_step_sumpositive_body_steps))) /\ ((((exists fs_h_dst_step_sumpositive_body_steps_successor. fs_h_dst_step_sumpositive_body_steps_successor + S (fs_s_dst_step_sumpositive_body_steps) = S ((S (S fs_i_dst_step_sumpositive_body_steps)) * fs_v_dst_step_sumpositive)) /\ exists fs_q_dst_step_sumpositive_body_steps_successor. fs_u_dst_step_sumpositive = fs_q_dst_step_sumpositive_body_steps_successor * S ((S (S fs_i_dst_step_sumpositive_body_steps)) * fs_v_dst_step_sumpositive) + (fs_s_dst_step_sumpositive_body_steps))) /\ fs_s_dst_step_sumpositive_body_steps = fs_r_dst_step_sumpositive_body_steps + fs_a_dst_step_sumpositive_body_steps)))))) /\ (((exists fs_u_dst_step_sumnegative fs_v_dst_step_sumnegative. ((((exists fs_h_dst_step_sumnegative_body_start. fs_h_dst_step_sumnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_step_sumnegative)) /\ exists fs_q_dst_step_sumnegative_body_start. fs_u_dst_step_sumnegative = fs_q_dst_step_sumnegative_body_start * S ((S (0)) * fs_v_dst_step_sumnegative) + (0))) /\ ((((exists fs_h_dst_step_sumnegative_body_terminal. fs_h_dst_step_sumnegative_body_terminal + S (dst_negative_sum_step_sum) = S ((S (l)) * fs_v_dst_step_sumnegative)) /\ exists fs_q_dst_step_sumnegative_body_terminal. fs_u_dst_step_sumnegative = fs_q_dst_step_sumnegative_body_terminal * S ((S (l)) * fs_v_dst_step_sumnegative) + (dst_negative_sum_step_sum))) /\ forall fs_i_dst_step_sumnegative_body_steps. (exists fs_lt_dst_step_sumnegative_body_steps_bound. fs_lt_dst_step_sumnegative_body_steps_bound + S fs_i_dst_step_sumnegative_body_steps = l) -> exists fs_a_dst_step_sumnegative_body_steps fs_r_dst_step_sumnegative_body_steps fs_s_dst_step_sumnegative_body_steps. ((((exists fs_h_dst_step_sumnegative_body_steps_summand. fs_h_dst_step_sumnegative_body_steps_summand + S (fs_a_dst_step_sumnegative_body_steps) = S ((S (fs_i_dst_step_sumnegative_body_steps)) * dst_negative_scale_step_sum)) /\ exists fs_q_dst_step_sumnegative_body_steps_summand. dst_negative_code_step_sum = fs_q_dst_step_sumnegative_body_steps_summand * S ((S (fs_i_dst_step_sumnegative_body_steps)) * dst_negative_scale_step_sum) + (fs_a_dst_step_sumnegative_body_steps))) /\ ((((exists fs_h_dst_step_sumnegative_body_steps_partial. fs_h_dst_step_sumnegative_body_steps_partial + S (fs_r_dst_step_sumnegative_body_steps) = S ((S (fs_i_dst_step_sumnegative_body_steps)) * fs_v_dst_step_sumnegative)) /\ exists fs_q_dst_step_sumnegative_body_steps_partial. fs_u_dst_step_sumnegative = fs_q_dst_step_sumnegative_body_steps_partial * S ((S (fs_i_dst_step_sumnegative_body_steps)) * fs_v_dst_step_sumnegative) + (fs_r_dst_step_sumnegative_body_steps))) /\ ((((exists fs_h_dst_step_sumnegative_body_steps_successor. fs_h_dst_step_sumnegative_body_steps_successor + S (fs_s_dst_step_sumnegative_body_steps) = S ((S (S fs_i_dst_step_sumnegative_body_steps)) * fs_v_dst_step_sumnegative)) /\ exists fs_q_dst_step_sumnegative_body_steps_successor. fs_u_dst_step_sumnegative = fs_q_dst_step_sumnegative_body_steps_successor * S ((S (S fs_i_dst_step_sumnegative_body_steps)) * fs_v_dst_step_sumnegative) + (fs_s_dst_step_sumnegative_body_steps))) /\ fs_s_dst_step_sumnegative_body_steps = fs_r_dst_step_sumnegative_body_steps + fs_a_dst_step_sumnegative_body_steps)))))) /\ (exists ge_balance_positive_step_sumresult ge_balance_negative_step_sumresult. (((((a) = 2 * (ge_balance_positive_step_sumresult) /\ (ge_balance_negative_step_sumresult) = 0) \/ exists ge_signed_half_step_sumresultdecode. (((a) = 2 * ge_signed_half_step_sumresultdecode + 1 /\ (ge_balance_positive_step_sumresult) = 0) /\ (ge_balance_negative_step_sumresult) = S ge_signed_half_step_sumresultdecode))) /\ ((dst_positive_sum_step_sum) + ge_balance_negative_step_sumresult = (dst_negative_sum_step_sum) + ge_balance_positive_step_sumresult))))))))) -> (exists dst_positive_code_step_entry dst_positive_scale_step_entry dst_negative_code_step_entry dst_negative_scale_step_entry dst_positive_step_entry dst_negative_step_entry. (((F) = (((((dst_positive_code_step_entry) + (dst_positive_scale_step_entry)) * S ((dst_positive_code_step_entry) + (dst_positive_scale_step_entry)) + ((dst_positive_scale_step_entry) + (dst_positive_scale_step_entry))) + (((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) * S ((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) + ((dst_negative_scale_step_entry) + (dst_negative_scale_step_entry)))) * S ((((dst_positive_code_step_entry) + (dst_positive_scale_step_entry)) * S ((dst_positive_code_step_entry) + (dst_positive_scale_step_entry)) + ((dst_positive_scale_step_entry) + (dst_positive_scale_step_entry))) + (((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) * S ((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) + ((dst_negative_scale_step_entry) + (dst_negative_scale_step_entry)))) + ((((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) * S ((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) + ((dst_negative_scale_step_entry) + (dst_negative_scale_step_entry))) + (((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) * S ((dst_negative_code_step_entry) + (dst_negative_scale_step_entry)) + ((dst_negative_scale_step_entry) + (dst_negative_scale_step_entry)))))) /\ (((((exists ff_h_pvs_step_entrypositive. ff_h_pvs_step_entrypositive + S (dst_positive_step_entry) = S ((S (l)) * dst_positive_scale_step_entry)) /\ exists ff_q_pvs_step_entrypositive. dst_positive_code_step_entry = ff_q_pvs_step_entrypositive * S ((S (l)) * dst_positive_scale_step_entry) + (dst_positive_step_entry))) /\ (((((exists ff_h_pvs_step_entrynegative. ff_h_pvs_step_entrynegative + S (dst_negative_step_entry) = S ((S (l)) * dst_negative_scale_step_entry)) /\ exists ff_q_pvs_step_entrynegative. dst_negative_code_step_entry = ff_q_pvs_step_entrynegative * S ((S (l)) * dst_negative_scale_step_entry) + (dst_negative_step_entry))) /\ (exists ge_balance_positive_step_entryvalue ge_balance_negative_step_entryvalue. (((((b) = 2 * (ge_balance_positive_step_entryvalue) /\ (ge_balance_negative_step_entryvalue) = 0) \/ exists ge_signed_half_step_entryvaluedecode. (((b) = 2 * ge_signed_half_step_entryvaluedecode + 1 /\ (ge_balance_positive_step_entryvalue) = 0) /\ (ge_balance_negative_step_entryvalue) = S ge_signed_half_step_entryvaluedecode))) /\ ((dst_positive_step_entry) + ge_balance_negative_step_entryvalue = (dst_negative_step_entry) + ge_balance_positive_step_entryvalue))))))))) -> (exists dsa_ap_step_add dsa_an_step_add dsa_bp_step_add dsa_bn_step_add dsa_cp_step_add dsa_cn_step_add. (((((a) = 2 * (dsa_ap_step_add) /\ (dsa_an_step_add) = 0) \/ exists ge_signed_half_step_addleft. (((a) = 2 * ge_signed_half_step_addleft + 1 /\ (dsa_ap_step_add) = 0) /\ (dsa_an_step_add) = S ge_signed_half_step_addleft))) /\ ((((((b) = 2 * (dsa_bp_step_add) /\ (dsa_bn_step_add) = 0) \/ exists ge_signed_half_step_addright. (((b) = 2 * ge_signed_half_step_addright + 1 /\ (dsa_bp_step_add) = 0) /\ (dsa_bn_step_add) = S ge_signed_half_step_addright))) /\ ((((((c) = 2 * (dsa_cp_step_add) /\ (dsa_cn_step_add) = 0) \/ exists ge_signed_half_step_addoutput. (((c) = 2 * ge_signed_half_step_addoutput + 1 /\ (dsa_cp_step_add) = 0) /\ (dsa_cn_step_add) = S ge_signed_half_step_addoutput))) /\ ((dsa_ap_step_add + dsa_bp_step_add) + dsa_cn_step_add = (dsa_an_step_add + dsa_bn_step_add) + dsa_cp_step_add))))))) -> (exists dst_positive_code_step_result dst_positive_scale_step_result dst_negative_code_step_result dst_negative_scale_step_result dst_positive_sum_step_result dst_negative_sum_step_result. (((F) = (((((dst_positive_code_step_result) + (dst_positive_scale_step_result)) * S ((dst_positive_code_step_result) + (dst_positive_scale_step_result)) + ((dst_positive_scale_step_result) + (dst_positive_scale_step_result))) + (((dst_negative_code_step_result) + (dst_negative_scale_step_result)) * S ((dst_negative_code_step_result) + (dst_negative_scale_step_result)) + ((dst_negative_scale_step_result) + (dst_negative_scale_step_result)))) * S ((((dst_positive_code_step_result) + (dst_positive_scale_step_result)) * S ((dst_positive_code_step_result) + (dst_positive_scale_step_result)) + ((dst_positive_scale_step_result) + (dst_positive_scale_step_result))) + (((dst_negative_code_step_result) + (dst_negative_scale_step_result)) * S ((dst_negative_code_step_result) + (dst_negative_scale_step_result)) + ((dst_negative_scale_step_result) + (dst_negative_scale_step_result)))) + ((((dst_negative_code_step_result) + (dst_negative_scale_step_result)) * S ((dst_negative_code_step_result) + (dst_negative_scale_step_result)) + ((dst_negative_scale_step_result) + (dst_negative_scale_step_result))) + (((dst_negative_code_step_result) + (dst_negative_scale_step_result)) * S ((dst_negative_code_step_result) + (dst_negative_scale_step_result)) + ((dst_negative_scale_step_result) + (dst_negative_scale_step_result)))))) /\ (((exists fs_u_dst_step_resultpositive fs_v_dst_step_resultpositive. ((((exists fs_h_dst_step_resultpositive_body_start. fs_h_dst_step_resultpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_step_resultpositive)) /\ exists fs_q_dst_step_resultpositive_body_start. fs_u_dst_step_resultpositive = fs_q_dst_step_resultpositive_body_start * S ((S (0)) * fs_v_dst_step_resultpositive) + (0))) /\ ((((exists fs_h_dst_step_resultpositive_body_terminal. fs_h_dst_step_resultpositive_body_terminal + S (dst_positive_sum_step_result) = S ((S (S l)) * fs_v_dst_step_resultpositive)) /\ exists fs_q_dst_step_resultpositive_body_terminal. fs_u_dst_step_resultpositive = fs_q_dst_step_resultpositive_body_terminal * S ((S (S l)) * fs_v_dst_step_resultpositive) + (dst_positive_sum_step_result))) /\ forall fs_i_dst_step_resultpositive_body_steps. (exists fs_lt_dst_step_resultpositive_body_steps_bound. fs_lt_dst_step_resultpositive_body_steps_bound + S fs_i_dst_step_resultpositive_body_steps = S l) -> exists fs_a_dst_step_resultpositive_body_steps fs_r_dst_step_resultpositive_body_steps fs_s_dst_step_resultpositive_body_steps. ((((exists fs_h_dst_step_resultpositive_body_steps_summand. fs_h_dst_step_resultpositive_body_steps_summand + S (fs_a_dst_step_resultpositive_body_steps) = S ((S (fs_i_dst_step_resultpositive_body_steps)) * dst_positive_scale_step_result)) /\ exists fs_q_dst_step_resultpositive_body_steps_summand. dst_positive_code_step_result = fs_q_dst_step_resultpositive_body_steps_summand * S ((S (fs_i_dst_step_resultpositive_body_steps)) * dst_positive_scale_step_result) + (fs_a_dst_step_resultpositive_body_steps))) /\ ((((exists fs_h_dst_step_resultpositive_body_steps_partial. fs_h_dst_step_resultpositive_body_steps_partial + S (fs_r_dst_step_resultpositive_body_steps) = S ((S (fs_i_dst_step_resultpositive_body_steps)) * fs_v_dst_step_resultpositive)) /\ exists fs_q_dst_step_resultpositive_body_steps_partial. fs_u_dst_step_resultpositive = fs_q_dst_step_resultpositive_body_steps_partial * S ((S (fs_i_dst_step_resultpositive_body_steps)) * fs_v_dst_step_resultpositive) + (fs_r_dst_step_resultpositive_body_steps))) /\ ((((exists fs_h_dst_step_resultpositive_body_steps_successor. fs_h_dst_step_resultpositive_body_steps_successor + S (fs_s_dst_step_resultpositive_body_steps) = S ((S (S fs_i_dst_step_resultpositive_body_steps)) * fs_v_dst_step_resultpositive)) /\ exists fs_q_dst_step_resultpositive_body_steps_successor. fs_u_dst_step_resultpositive = fs_q_dst_step_resultpositive_body_steps_successor * S ((S (S fs_i_dst_step_resultpositive_body_steps)) * fs_v_dst_step_resultpositive) + (fs_s_dst_step_resultpositive_body_steps))) /\ fs_s_dst_step_resultpositive_body_steps = fs_r_dst_step_resultpositive_body_steps + fs_a_dst_step_resultpositive_body_steps)))))) /\ (((exists fs_u_dst_step_resultnegative fs_v_dst_step_resultnegative. ((((exists fs_h_dst_step_resultnegative_body_start. fs_h_dst_step_resultnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_step_resultnegative)) /\ exists fs_q_dst_step_resultnegative_body_start. fs_u_dst_step_resultnegative = fs_q_dst_step_resultnegative_body_start * S ((S (0)) * fs_v_dst_step_resultnegative) + (0))) /\ ((((exists fs_h_dst_step_resultnegative_body_terminal. fs_h_dst_step_resultnegative_body_terminal + S (dst_negative_sum_step_result) = S ((S (S l)) * fs_v_dst_step_resultnegative)) /\ exists fs_q_dst_step_resultnegative_body_terminal. fs_u_dst_step_resultnegative = fs_q_dst_step_resultnegative_body_terminal * S ((S (S l)) * fs_v_dst_step_resultnegative) + (dst_negative_sum_step_result))) /\ forall fs_i_dst_step_resultnegative_body_steps. (exists fs_lt_dst_step_resultnegative_body_steps_bound. fs_lt_dst_step_resultnegative_body_steps_bound + S fs_i_dst_step_resultnegative_body_steps = S l) -> exists fs_a_dst_step_resultnegative_body_steps fs_r_dst_step_resultnegative_body_steps fs_s_dst_step_resultnegative_body_steps. ((((exists fs_h_dst_step_resultnegative_body_steps_summand. fs_h_dst_step_resultnegative_body_steps_summand + S (fs_a_dst_step_resultnegative_body_steps) = S ((S (fs_i_dst_step_resultnegative_body_steps)) * dst_negative_scale_step_result)) /\ exists fs_q_dst_step_resultnegative_body_steps_summand. dst_negative_code_step_result = fs_q_dst_step_resultnegative_body_steps_summand * S ((S (fs_i_dst_step_resultnegative_body_steps)) * dst_negative_scale_step_result) + (fs_a_dst_step_resultnegative_body_steps))) /\ ((((exists fs_h_dst_step_resultnegative_body_steps_partial. fs_h_dst_step_resultnegative_body_steps_partial + S (fs_r_dst_step_resultnegative_body_steps) = S ((S (fs_i_dst_step_resultnegative_body_steps)) * fs_v_dst_step_resultnegative)) /\ exists fs_q_dst_step_resultnegative_body_steps_partial. fs_u_dst_step_resultnegative = fs_q_dst_step_resultnegative_body_steps_partial * S ((S (fs_i_dst_step_resultnegative_body_steps)) * fs_v_dst_step_resultnegative) + (fs_r_dst_step_resultnegative_body_steps))) /\ ((((exists fs_h_dst_step_resultnegative_body_steps_successor. fs_h_dst_step_resultnegative_body_steps_successor + S (fs_s_dst_step_resultnegative_body_steps) = S ((S (S fs_i_dst_step_resultnegative_body_steps)) * fs_v_dst_step_resultnegative)) /\ exists fs_q_dst_step_resultnegative_body_steps_successor. fs_u_dst_step_resultnegative = fs_q_dst_step_resultnegative_body_steps_successor * S ((S (S fs_i_dst_step_resultnegative_body_steps)) * fs_v_dst_step_resultnegative) + (fs_s_dst_step_resultnegative_body_steps))) /\ fs_s_dst_step_resultnegative_body_steps = fs_r_dst_step_resultnegative_body_steps + fs_a_dst_step_resultnegative_body_steps)))))) /\ (exists ge_balance_positive_step_resultresult ge_balance_negative_step_resultresult. (((((c) = 2 * (ge_balance_positive_step_resultresult) /\ (ge_balance_negative_step_resultresult) = 0) \/ exists ge_signed_half_step_resultresultdecode. (((c) = 2 * ge_signed_half_step_resultresultdecode + 1 /\ (ge_balance_positive_step_resultresult) = 0) /\ (ge_balance_negative_step_resultresult) = S ge_signed_half_step_resultresultdecode))) /\ ((dst_positive_sum_step_result) + ge_balance_negative_step_resultresult = (dst_negative_sum_step_result) + ge_balance_positive_step_resultresult)))))))))

Constructive proof overview

Generated structural guide

A genuine signed prefix sum, its actual next entry and canonical signed addition construct the successor sum.

The unchanged tactic script uses 4 declared prerequisites and contains 70 exact native proof lines.

Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable

Proof neighborhood

Direct dependencies

Direct dependents

none

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or Stable membership.

Read the argument

Proof checkpoints

70 script commands · 9 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 (3)

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–8

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

  1. L1
    intro F
  2. L2
    intro l
  3. L3
    intro a
  4. L4
    intro b
  5. L5
    intro c
  6. L6
    intro hs
  7. L7
    intro he
  8. L8
    intro hadd
02Separate the logical casesL9–17

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

  1. L9
    cases hs
  2. L10
    cases hs_witness
  3. L11
    cases hs_witness_witness
  4. L12
    cases hs_witness_witness_witness
  5. L13
    cases hs_witness_witness_witness_witness
  6. L14
    cases hs_witness_witness_witness_witness_witness
  7. L15
    cases hs_witness_witness_witness_witness_witness_witness
  8. L16
    cases hs_witness_witness_witness_witness_witness_witness_right
  9. L17
    cases hs_witness_witness_witness_witness_witness_witness_right_right
03Establish hentryL18–27

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. L18
    have hentry : ∃ p. ∃ n. BetaAt(x,x1,l,p) ∧ (BetaAt(x2,x3,l,n) ∧ SignedBalance(b,p,n))Definitions: SignedBalanceBetaAt
  2. L19
    specialize divisor_signed_table_at_to_components (F)
  3. L20
    specialize divisor_signed_table_at_to_components (x)
  4. L21
    specialize divisor_signed_table_at_to_components (x1)
  5. L22
    specialize divisor_signed_table_at_to_components (x2)
  6. L23
    specialize divisor_signed_table_at_to_components (x3)
  7. L24
    specialize divisor_signed_table_at_to_components (l)
  8. L25
    specialize divisor_signed_table_at_to_components (b)
  9. L26
    apply divisor_signed_table_at_to_components
  10. L27
    exact hs_witness_witness_witness_witness_witness_witness_left
04Use earlier factsL28–28

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

  1. L28
    exact he
05Separate the logical casesL29–32

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

  1. L29
    cases hentry
  2. L30
    cases hentry_witness
  3. L31
    cases hentry_witness_witness
  4. L32
    cases hentry_witness_witness_right
06Use earlier factsL33–42

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

  1. L33
    specialize divisor_signed_sum_from_components (F)
  2. L34
    specialize divisor_signed_sum_from_components (x)
  3. L35
    specialize divisor_signed_sum_from_components (x1)
  4. L36
    specialize divisor_signed_sum_from_components (x2)
  5. L37
    specialize divisor_signed_sum_from_components (x3)
  6. L38
    specialize divisor_signed_sum_from_components (S l)
  7. L39
    specialize divisor_signed_sum_from_components (x4 + x6)
  8. L40
    specialize divisor_signed_sum_from_components (x5 + x7)
  9. L41
    specialize divisor_signed_sum_from_components (c)
  10. L42
    apply divisor_signed_sum_from_components
07Use earlier factsL43–52

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

  1. L43
    exact hs_witness_witness_witness_witness_witness_witness_left
  2. L44
    specialize divisor_natural_sum_successor_intro (x)
  3. L45
    specialize divisor_natural_sum_successor_intro (x1)
  4. L46
    specialize divisor_natural_sum_successor_intro (l)
  5. L47
    specialize divisor_natural_sum_successor_intro (x4)
  6. L48
    specialize divisor_natural_sum_successor_intro (x6)
  7. L49
    apply divisor_natural_sum_successor_intro
  8. L50
    exact hs_witness_witness_witness_witness_witness_witness_right_left
  9. L51
    exact hentry_witness_witness_left
  10. L52
    specialize divisor_natural_sum_successor_intro (x2)
08Use earlier factsL53–62

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

  1. L53
    specialize divisor_natural_sum_successor_intro (x3)
  2. L54
    specialize divisor_natural_sum_successor_intro (l)
  3. L55
    specialize divisor_natural_sum_successor_intro (x5)
  4. L56
    specialize divisor_natural_sum_successor_intro (x7)
  5. L57
    apply divisor_natural_sum_successor_intro
  6. L58
    exact hs_witness_witness_witness_witness_witness_witness_right_right_left
  7. L59
    exact hentry_witness_witness_right_left
  8. L60
    specialize gaussian_signed_add_to_balance (a)
  9. L61
    specialize gaussian_signed_add_to_balance (b)
  10. L62
    specialize gaussian_signed_add_to_balance (c)
09Use earlier factsL63–70

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

  1. L63
    specialize gaussian_signed_add_to_balance (x4)
  2. L64
    specialize gaussian_signed_add_to_balance (x5)
  3. L65
    specialize gaussian_signed_add_to_balance (x6)
  4. L66
    specialize gaussian_signed_add_to_balance (x7)
  5. L67
    apply gaussian_signed_add_to_balance
  6. L68
    exact hs_witness_witness_witness_witness_witness_witness_right_right_right
  7. L69
    exact hentry_witness_witness_right_right
  8. L70
    exact hadd

Library-wide reading audit

Original exact command ledger · 70 lines
  1. 0001intro F
  2. 0002intro l
  3. 0003intro a
  4. 0004intro b
  5. 0005intro c
  6. 0006intro hs
  7. 0007intro he
  8. 0008intro hadd
  9. 0009cases hs
  10. 0010cases hs_witness
  11. 0011cases hs_witness_witness
  12. 0012cases hs_witness_witness_witness
  13. 0013cases hs_witness_witness_witness_witness
  14. 0014cases hs_witness_witness_witness_witness_witness
  15. 0015cases hs_witness_witness_witness_witness_witness_witness
  16. 0016cases hs_witness_witness_witness_witness_witness_witness_right
  17. 0017cases hs_witness_witness_witness_witness_witness_witness_right_right
  18. 0018have hentry : exists p n. (((((exists ff_h_pvs_step_componentspositive. ff_h_pvs_step_componentspositive + S (p) = S ((S (l)) * x1)) /\ exists ff_q_pvs_step_componentspositive. x = ff_q_pvs_step_componentspositive * S ((S (l)) * x1) + (p))) /\ (((((exists ff_h_pvs_step_componentsnegative. ff_h_pvs_step_componentsnegative + S (n) = S ((S (l)) * x3)) /\ exists ff_q_pvs_step_componentsnegative. x2 = ff_q_pvs_step_componentsnegative * S ((S (l)) * x3) + (n))) /\ (exists ge_balance_positive_step_componentsvalue ge_balance_negative_step_componentsvalue. (((((b) = 2 * (ge_balance_positive_step_componentsvalue) /\ (ge_balance_negative_step_componentsvalue) = 0) \/ exists ge_signed_half_step_componentsvaluedecode. (((b) = 2 * ge_signed_half_step_componentsvaluedecode + 1 /\ (ge_balance_positive_step_componentsvalue) = 0) /\ (ge_balance_negative_step_componentsvalue) = S ge_signed_half_step_componentsvaluedecode))) /\ ((p) + ge_balance_negative_step_componentsvalue = (n) + ge_balance_positive_step_componentsvalue)))))))
  19. 0019specialize divisor_signed_table_at_to_components (F)
  20. 0020specialize divisor_signed_table_at_to_components (x)
  21. 0021specialize divisor_signed_table_at_to_components (x1)
  22. 0022specialize divisor_signed_table_at_to_components (x2)
  23. 0023specialize divisor_signed_table_at_to_components (x3)
  24. 0024specialize divisor_signed_table_at_to_components (l)
  25. 0025specialize divisor_signed_table_at_to_components (b)
  26. 0026apply divisor_signed_table_at_to_components
  27. 0027exact hs_witness_witness_witness_witness_witness_witness_left
  28. 0028exact he
  29. 0029cases hentry
  30. 0030cases hentry_witness
  31. 0031cases hentry_witness_witness
  32. 0032cases hentry_witness_witness_right
  33. 0033specialize divisor_signed_sum_from_components (F)
  34. 0034specialize divisor_signed_sum_from_components (x)
  35. 0035specialize divisor_signed_sum_from_components (x1)
  36. 0036specialize divisor_signed_sum_from_components (x2)
  37. 0037specialize divisor_signed_sum_from_components (x3)
  38. 0038specialize divisor_signed_sum_from_components (S l)
  39. 0039specialize divisor_signed_sum_from_components (x4 + x6)
  40. 0040specialize divisor_signed_sum_from_components (x5 + x7)
  41. 0041specialize divisor_signed_sum_from_components (c)
  42. 0042apply divisor_signed_sum_from_components
  43. 0043exact hs_witness_witness_witness_witness_witness_witness_left
  44. 0044specialize divisor_natural_sum_successor_intro (x)
  45. 0045specialize divisor_natural_sum_successor_intro (x1)
  46. 0046specialize divisor_natural_sum_successor_intro (l)
  47. 0047specialize divisor_natural_sum_successor_intro (x4)
  48. 0048specialize divisor_natural_sum_successor_intro (x6)
  49. 0049apply divisor_natural_sum_successor_intro
  50. 0050exact hs_witness_witness_witness_witness_witness_witness_right_left
  51. 0051exact hentry_witness_witness_left
  52. 0052specialize divisor_natural_sum_successor_intro (x2)
  53. 0053specialize divisor_natural_sum_successor_intro (x3)
  54. 0054specialize divisor_natural_sum_successor_intro (l)
  55. 0055specialize divisor_natural_sum_successor_intro (x5)
  56. 0056specialize divisor_natural_sum_successor_intro (x7)
  57. 0057apply divisor_natural_sum_successor_intro
  58. 0058exact hs_witness_witness_witness_witness_witness_witness_right_right_left
  59. 0059exact hentry_witness_witness_right_left
  60. 0060specialize gaussian_signed_add_to_balance (a)
  61. 0061specialize gaussian_signed_add_to_balance (b)
  62. 0062specialize gaussian_signed_add_to_balance (c)
  63. 0063specialize gaussian_signed_add_to_balance (x4)
  64. 0064specialize gaussian_signed_add_to_balance (x5)
  65. 0065specialize gaussian_signed_add_to_balance (x6)
  66. 0066specialize gaussian_signed_add_to_balance (x7)
  67. 0067apply gaussian_signed_add_to_balance
  68. 0068exact hs_witness_witness_witness_witness_witness_witness_right_right_right
  69. 0069exact hentry_witness_witness_right_right
  70. 0070exact hadd