SS000C

divisor_signed_sum_functional

The signed sum has a literally unique canonical result code, not a supposedly unique non-normalized signed pair.

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

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

These are actual signed-table and finite-sum foundations. Equality compares represented signed values, not arbitrary encodings. MatrixMinorFourCode is reused solely as generic nested pairing, without a matrix hypothesis. Full finite signed G007 is established separately in the Möbius-inversion family.

Exact theorem in conservative defined notation

∀ F. ∀ l. ∀ a. ∀ b. SignedPrefixSum(F,l,a)SignedPrefixSum(F,l,b) → a = b

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall F l a b. (exists dst_positive_code_sum_unique_first dst_positive_scale_sum_unique_first dst_negative_code_sum_unique_first dst_negative_scale_sum_unique_first dst_positive_sum_sum_unique_first dst_negative_sum_sum_unique_first. (((F) = (((((dst_positive_code_sum_unique_first) + (dst_positive_scale_sum_unique_first)) * S ((dst_positive_code_sum_unique_first) + (dst_positive_scale_sum_unique_first)) + ((dst_positive_scale_sum_unique_first) + (dst_positive_scale_sum_unique_first))) + (((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) * S ((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) + ((dst_negative_scale_sum_unique_first) + (dst_negative_scale_sum_unique_first)))) * S ((((dst_positive_code_sum_unique_first) + (dst_positive_scale_sum_unique_first)) * S ((dst_positive_code_sum_unique_first) + (dst_positive_scale_sum_unique_first)) + ((dst_positive_scale_sum_unique_first) + (dst_positive_scale_sum_unique_first))) + (((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) * S ((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) + ((dst_negative_scale_sum_unique_first) + (dst_negative_scale_sum_unique_first)))) + ((((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) * S ((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) + ((dst_negative_scale_sum_unique_first) + (dst_negative_scale_sum_unique_first))) + (((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) * S ((dst_negative_code_sum_unique_first) + (dst_negative_scale_sum_unique_first)) + ((dst_negative_scale_sum_unique_first) + (dst_negative_scale_sum_unique_first)))))) /\ (((exists fs_u_dst_sum_unique_firstpositive fs_v_dst_sum_unique_firstpositive. ((((exists fs_h_dst_sum_unique_firstpositive_body_start. fs_h_dst_sum_unique_firstpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_sum_unique_firstpositive)) /\ exists fs_q_dst_sum_unique_firstpositive_body_start. fs_u_dst_sum_unique_firstpositive = fs_q_dst_sum_unique_firstpositive_body_start * S ((S (0)) * fs_v_dst_sum_unique_firstpositive) + (0))) /\ ((((exists fs_h_dst_sum_unique_firstpositive_body_terminal. fs_h_dst_sum_unique_firstpositive_body_terminal + S (dst_positive_sum_sum_unique_first) = S ((S (l)) * fs_v_dst_sum_unique_firstpositive)) /\ exists fs_q_dst_sum_unique_firstpositive_body_terminal. fs_u_dst_sum_unique_firstpositive = fs_q_dst_sum_unique_firstpositive_body_terminal * S ((S (l)) * fs_v_dst_sum_unique_firstpositive) + (dst_positive_sum_sum_unique_first))) /\ forall fs_i_dst_sum_unique_firstpositive_body_steps. (exists fs_lt_dst_sum_unique_firstpositive_body_steps_bound. fs_lt_dst_sum_unique_firstpositive_body_steps_bound + S fs_i_dst_sum_unique_firstpositive_body_steps = l) -> exists fs_a_dst_sum_unique_firstpositive_body_steps fs_r_dst_sum_unique_firstpositive_body_steps fs_s_dst_sum_unique_firstpositive_body_steps. ((((exists fs_h_dst_sum_unique_firstpositive_body_steps_summand. fs_h_dst_sum_unique_firstpositive_body_steps_summand + S (fs_a_dst_sum_unique_firstpositive_body_steps) = S ((S (fs_i_dst_sum_unique_firstpositive_body_steps)) * dst_positive_scale_sum_unique_first)) /\ exists fs_q_dst_sum_unique_firstpositive_body_steps_summand. dst_positive_code_sum_unique_first = fs_q_dst_sum_unique_firstpositive_body_steps_summand * S ((S (fs_i_dst_sum_unique_firstpositive_body_steps)) * dst_positive_scale_sum_unique_first) + (fs_a_dst_sum_unique_firstpositive_body_steps))) /\ ((((exists fs_h_dst_sum_unique_firstpositive_body_steps_partial. fs_h_dst_sum_unique_firstpositive_body_steps_partial + S (fs_r_dst_sum_unique_firstpositive_body_steps) = S ((S (fs_i_dst_sum_unique_firstpositive_body_steps)) * fs_v_dst_sum_unique_firstpositive)) /\ exists fs_q_dst_sum_unique_firstpositive_body_steps_partial. fs_u_dst_sum_unique_firstpositive = fs_q_dst_sum_unique_firstpositive_body_steps_partial * S ((S (fs_i_dst_sum_unique_firstpositive_body_steps)) * fs_v_dst_sum_unique_firstpositive) + (fs_r_dst_sum_unique_firstpositive_body_steps))) /\ ((((exists fs_h_dst_sum_unique_firstpositive_body_steps_successor. fs_h_dst_sum_unique_firstpositive_body_steps_successor + S (fs_s_dst_sum_unique_firstpositive_body_steps) = S ((S (S fs_i_dst_sum_unique_firstpositive_body_steps)) * fs_v_dst_sum_unique_firstpositive)) /\ exists fs_q_dst_sum_unique_firstpositive_body_steps_successor. fs_u_dst_sum_unique_firstpositive = fs_q_dst_sum_unique_firstpositive_body_steps_successor * S ((S (S fs_i_dst_sum_unique_firstpositive_body_steps)) * fs_v_dst_sum_unique_firstpositive) + (fs_s_dst_sum_unique_firstpositive_body_steps))) /\ fs_s_dst_sum_unique_firstpositive_body_steps = fs_r_dst_sum_unique_firstpositive_body_steps + fs_a_dst_sum_unique_firstpositive_body_steps)))))) /\ (((exists fs_u_dst_sum_unique_firstnegative fs_v_dst_sum_unique_firstnegative. ((((exists fs_h_dst_sum_unique_firstnegative_body_start. fs_h_dst_sum_unique_firstnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_sum_unique_firstnegative)) /\ exists fs_q_dst_sum_unique_firstnegative_body_start. fs_u_dst_sum_unique_firstnegative = fs_q_dst_sum_unique_firstnegative_body_start * S ((S (0)) * fs_v_dst_sum_unique_firstnegative) + (0))) /\ ((((exists fs_h_dst_sum_unique_firstnegative_body_terminal. fs_h_dst_sum_unique_firstnegative_body_terminal + S (dst_negative_sum_sum_unique_first) = S ((S (l)) * fs_v_dst_sum_unique_firstnegative)) /\ exists fs_q_dst_sum_unique_firstnegative_body_terminal. fs_u_dst_sum_unique_firstnegative = fs_q_dst_sum_unique_firstnegative_body_terminal * S ((S (l)) * fs_v_dst_sum_unique_firstnegative) + (dst_negative_sum_sum_unique_first))) /\ forall fs_i_dst_sum_unique_firstnegative_body_steps. (exists fs_lt_dst_sum_unique_firstnegative_body_steps_bound. fs_lt_dst_sum_unique_firstnegative_body_steps_bound + S fs_i_dst_sum_unique_firstnegative_body_steps = l) -> exists fs_a_dst_sum_unique_firstnegative_body_steps fs_r_dst_sum_unique_firstnegative_body_steps fs_s_dst_sum_unique_firstnegative_body_steps. ((((exists fs_h_dst_sum_unique_firstnegative_body_steps_summand. fs_h_dst_sum_unique_firstnegative_body_steps_summand + S (fs_a_dst_sum_unique_firstnegative_body_steps) = S ((S (fs_i_dst_sum_unique_firstnegative_body_steps)) * dst_negative_scale_sum_unique_first)) /\ exists fs_q_dst_sum_unique_firstnegative_body_steps_summand. dst_negative_code_sum_unique_first = fs_q_dst_sum_unique_firstnegative_body_steps_summand * S ((S (fs_i_dst_sum_unique_firstnegative_body_steps)) * dst_negative_scale_sum_unique_first) + (fs_a_dst_sum_unique_firstnegative_body_steps))) /\ ((((exists fs_h_dst_sum_unique_firstnegative_body_steps_partial. fs_h_dst_sum_unique_firstnegative_body_steps_partial + S (fs_r_dst_sum_unique_firstnegative_body_steps) = S ((S (fs_i_dst_sum_unique_firstnegative_body_steps)) * fs_v_dst_sum_unique_firstnegative)) /\ exists fs_q_dst_sum_unique_firstnegative_body_steps_partial. fs_u_dst_sum_unique_firstnegative = fs_q_dst_sum_unique_firstnegative_body_steps_partial * S ((S (fs_i_dst_sum_unique_firstnegative_body_steps)) * fs_v_dst_sum_unique_firstnegative) + (fs_r_dst_sum_unique_firstnegative_body_steps))) /\ ((((exists fs_h_dst_sum_unique_firstnegative_body_steps_successor. fs_h_dst_sum_unique_firstnegative_body_steps_successor + S (fs_s_dst_sum_unique_firstnegative_body_steps) = S ((S (S fs_i_dst_sum_unique_firstnegative_body_steps)) * fs_v_dst_sum_unique_firstnegative)) /\ exists fs_q_dst_sum_unique_firstnegative_body_steps_successor. fs_u_dst_sum_unique_firstnegative = fs_q_dst_sum_unique_firstnegative_body_steps_successor * S ((S (S fs_i_dst_sum_unique_firstnegative_body_steps)) * fs_v_dst_sum_unique_firstnegative) + (fs_s_dst_sum_unique_firstnegative_body_steps))) /\ fs_s_dst_sum_unique_firstnegative_body_steps = fs_r_dst_sum_unique_firstnegative_body_steps + fs_a_dst_sum_unique_firstnegative_body_steps)))))) /\ (exists ge_balance_positive_sum_unique_firstresult ge_balance_negative_sum_unique_firstresult. (((((a) = 2 * (ge_balance_positive_sum_unique_firstresult) /\ (ge_balance_negative_sum_unique_firstresult) = 0) \/ exists ge_signed_half_sum_unique_firstresultdecode. (((a) = 2 * ge_signed_half_sum_unique_firstresultdecode + 1 /\ (ge_balance_positive_sum_unique_firstresult) = 0) /\ (ge_balance_negative_sum_unique_firstresult) = S ge_signed_half_sum_unique_firstresultdecode))) /\ ((dst_positive_sum_sum_unique_first) + ge_balance_negative_sum_unique_firstresult = (dst_negative_sum_sum_unique_first) + ge_balance_positive_sum_unique_firstresult))))))))) -> (exists dst_positive_code_sum_unique_second dst_positive_scale_sum_unique_second dst_negative_code_sum_unique_second dst_negative_scale_sum_unique_second dst_positive_sum_sum_unique_second dst_negative_sum_sum_unique_second. (((F) = (((((dst_positive_code_sum_unique_second) + (dst_positive_scale_sum_unique_second)) * S ((dst_positive_code_sum_unique_second) + (dst_positive_scale_sum_unique_second)) + ((dst_positive_scale_sum_unique_second) + (dst_positive_scale_sum_unique_second))) + (((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) * S ((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) + ((dst_negative_scale_sum_unique_second) + (dst_negative_scale_sum_unique_second)))) * S ((((dst_positive_code_sum_unique_second) + (dst_positive_scale_sum_unique_second)) * S ((dst_positive_code_sum_unique_second) + (dst_positive_scale_sum_unique_second)) + ((dst_positive_scale_sum_unique_second) + (dst_positive_scale_sum_unique_second))) + (((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) * S ((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) + ((dst_negative_scale_sum_unique_second) + (dst_negative_scale_sum_unique_second)))) + ((((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) * S ((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) + ((dst_negative_scale_sum_unique_second) + (dst_negative_scale_sum_unique_second))) + (((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) * S ((dst_negative_code_sum_unique_second) + (dst_negative_scale_sum_unique_second)) + ((dst_negative_scale_sum_unique_second) + (dst_negative_scale_sum_unique_second)))))) /\ (((exists fs_u_dst_sum_unique_secondpositive fs_v_dst_sum_unique_secondpositive. ((((exists fs_h_dst_sum_unique_secondpositive_body_start. fs_h_dst_sum_unique_secondpositive_body_start + S (0) = S ((S (0)) * fs_v_dst_sum_unique_secondpositive)) /\ exists fs_q_dst_sum_unique_secondpositive_body_start. fs_u_dst_sum_unique_secondpositive = fs_q_dst_sum_unique_secondpositive_body_start * S ((S (0)) * fs_v_dst_sum_unique_secondpositive) + (0))) /\ ((((exists fs_h_dst_sum_unique_secondpositive_body_terminal. fs_h_dst_sum_unique_secondpositive_body_terminal + S (dst_positive_sum_sum_unique_second) = S ((S (l)) * fs_v_dst_sum_unique_secondpositive)) /\ exists fs_q_dst_sum_unique_secondpositive_body_terminal. fs_u_dst_sum_unique_secondpositive = fs_q_dst_sum_unique_secondpositive_body_terminal * S ((S (l)) * fs_v_dst_sum_unique_secondpositive) + (dst_positive_sum_sum_unique_second))) /\ forall fs_i_dst_sum_unique_secondpositive_body_steps. (exists fs_lt_dst_sum_unique_secondpositive_body_steps_bound. fs_lt_dst_sum_unique_secondpositive_body_steps_bound + S fs_i_dst_sum_unique_secondpositive_body_steps = l) -> exists fs_a_dst_sum_unique_secondpositive_body_steps fs_r_dst_sum_unique_secondpositive_body_steps fs_s_dst_sum_unique_secondpositive_body_steps. ((((exists fs_h_dst_sum_unique_secondpositive_body_steps_summand. fs_h_dst_sum_unique_secondpositive_body_steps_summand + S (fs_a_dst_sum_unique_secondpositive_body_steps) = S ((S (fs_i_dst_sum_unique_secondpositive_body_steps)) * dst_positive_scale_sum_unique_second)) /\ exists fs_q_dst_sum_unique_secondpositive_body_steps_summand. dst_positive_code_sum_unique_second = fs_q_dst_sum_unique_secondpositive_body_steps_summand * S ((S (fs_i_dst_sum_unique_secondpositive_body_steps)) * dst_positive_scale_sum_unique_second) + (fs_a_dst_sum_unique_secondpositive_body_steps))) /\ ((((exists fs_h_dst_sum_unique_secondpositive_body_steps_partial. fs_h_dst_sum_unique_secondpositive_body_steps_partial + S (fs_r_dst_sum_unique_secondpositive_body_steps) = S ((S (fs_i_dst_sum_unique_secondpositive_body_steps)) * fs_v_dst_sum_unique_secondpositive)) /\ exists fs_q_dst_sum_unique_secondpositive_body_steps_partial. fs_u_dst_sum_unique_secondpositive = fs_q_dst_sum_unique_secondpositive_body_steps_partial * S ((S (fs_i_dst_sum_unique_secondpositive_body_steps)) * fs_v_dst_sum_unique_secondpositive) + (fs_r_dst_sum_unique_secondpositive_body_steps))) /\ ((((exists fs_h_dst_sum_unique_secondpositive_body_steps_successor. fs_h_dst_sum_unique_secondpositive_body_steps_successor + S (fs_s_dst_sum_unique_secondpositive_body_steps) = S ((S (S fs_i_dst_sum_unique_secondpositive_body_steps)) * fs_v_dst_sum_unique_secondpositive)) /\ exists fs_q_dst_sum_unique_secondpositive_body_steps_successor. fs_u_dst_sum_unique_secondpositive = fs_q_dst_sum_unique_secondpositive_body_steps_successor * S ((S (S fs_i_dst_sum_unique_secondpositive_body_steps)) * fs_v_dst_sum_unique_secondpositive) + (fs_s_dst_sum_unique_secondpositive_body_steps))) /\ fs_s_dst_sum_unique_secondpositive_body_steps = fs_r_dst_sum_unique_secondpositive_body_steps + fs_a_dst_sum_unique_secondpositive_body_steps)))))) /\ (((exists fs_u_dst_sum_unique_secondnegative fs_v_dst_sum_unique_secondnegative. ((((exists fs_h_dst_sum_unique_secondnegative_body_start. fs_h_dst_sum_unique_secondnegative_body_start + S (0) = S ((S (0)) * fs_v_dst_sum_unique_secondnegative)) /\ exists fs_q_dst_sum_unique_secondnegative_body_start. fs_u_dst_sum_unique_secondnegative = fs_q_dst_sum_unique_secondnegative_body_start * S ((S (0)) * fs_v_dst_sum_unique_secondnegative) + (0))) /\ ((((exists fs_h_dst_sum_unique_secondnegative_body_terminal. fs_h_dst_sum_unique_secondnegative_body_terminal + S (dst_negative_sum_sum_unique_second) = S ((S (l)) * fs_v_dst_sum_unique_secondnegative)) /\ exists fs_q_dst_sum_unique_secondnegative_body_terminal. fs_u_dst_sum_unique_secondnegative = fs_q_dst_sum_unique_secondnegative_body_terminal * S ((S (l)) * fs_v_dst_sum_unique_secondnegative) + (dst_negative_sum_sum_unique_second))) /\ forall fs_i_dst_sum_unique_secondnegative_body_steps. (exists fs_lt_dst_sum_unique_secondnegative_body_steps_bound. fs_lt_dst_sum_unique_secondnegative_body_steps_bound + S fs_i_dst_sum_unique_secondnegative_body_steps = l) -> exists fs_a_dst_sum_unique_secondnegative_body_steps fs_r_dst_sum_unique_secondnegative_body_steps fs_s_dst_sum_unique_secondnegative_body_steps. ((((exists fs_h_dst_sum_unique_secondnegative_body_steps_summand. fs_h_dst_sum_unique_secondnegative_body_steps_summand + S (fs_a_dst_sum_unique_secondnegative_body_steps) = S ((S (fs_i_dst_sum_unique_secondnegative_body_steps)) * dst_negative_scale_sum_unique_second)) /\ exists fs_q_dst_sum_unique_secondnegative_body_steps_summand. dst_negative_code_sum_unique_second = fs_q_dst_sum_unique_secondnegative_body_steps_summand * S ((S (fs_i_dst_sum_unique_secondnegative_body_steps)) * dst_negative_scale_sum_unique_second) + (fs_a_dst_sum_unique_secondnegative_body_steps))) /\ ((((exists fs_h_dst_sum_unique_secondnegative_body_steps_partial. fs_h_dst_sum_unique_secondnegative_body_steps_partial + S (fs_r_dst_sum_unique_secondnegative_body_steps) = S ((S (fs_i_dst_sum_unique_secondnegative_body_steps)) * fs_v_dst_sum_unique_secondnegative)) /\ exists fs_q_dst_sum_unique_secondnegative_body_steps_partial. fs_u_dst_sum_unique_secondnegative = fs_q_dst_sum_unique_secondnegative_body_steps_partial * S ((S (fs_i_dst_sum_unique_secondnegative_body_steps)) * fs_v_dst_sum_unique_secondnegative) + (fs_r_dst_sum_unique_secondnegative_body_steps))) /\ ((((exists fs_h_dst_sum_unique_secondnegative_body_steps_successor. fs_h_dst_sum_unique_secondnegative_body_steps_successor + S (fs_s_dst_sum_unique_secondnegative_body_steps) = S ((S (S fs_i_dst_sum_unique_secondnegative_body_steps)) * fs_v_dst_sum_unique_secondnegative)) /\ exists fs_q_dst_sum_unique_secondnegative_body_steps_successor. fs_u_dst_sum_unique_secondnegative = fs_q_dst_sum_unique_secondnegative_body_steps_successor * S ((S (S fs_i_dst_sum_unique_secondnegative_body_steps)) * fs_v_dst_sum_unique_secondnegative) + (fs_s_dst_sum_unique_secondnegative_body_steps))) /\ fs_s_dst_sum_unique_secondnegative_body_steps = fs_r_dst_sum_unique_secondnegative_body_steps + fs_a_dst_sum_unique_secondnegative_body_steps)))))) /\ (exists ge_balance_positive_sum_unique_secondresult ge_balance_negative_sum_unique_secondresult. (((((b) = 2 * (ge_balance_positive_sum_unique_secondresult) /\ (ge_balance_negative_sum_unique_secondresult) = 0) \/ exists ge_signed_half_sum_unique_secondresultdecode. (((b) = 2 * ge_signed_half_sum_unique_secondresultdecode + 1 /\ (ge_balance_positive_sum_unique_secondresult) = 0) /\ (ge_balance_negative_sum_unique_secondresult) = S ge_signed_half_sum_unique_secondresultdecode))) /\ ((dst_positive_sum_sum_unique_second) + ge_balance_negative_sum_unique_secondresult = (dst_negative_sum_sum_unique_second) + ge_balance_positive_sum_unique_secondresult))))))))) -> a = b

Complete tactic proof in conservative notation

All 57 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

57 script commands · 9 reading checkpoints · 3 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (1)
01Fix variables and assumptionsL1–6

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 ha
  6. L6
    intro hb
02Separate the logical casesL7–15

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

  1. L7
    cases ha
  2. L8
    cases ha_witness
  3. L9
    cases ha_witness_witness
  4. L10
    cases ha_witness_witness_witness
  5. L11
    cases ha_witness_witness_witness_witness
  6. L12
    cases ha_witness_witness_witness_witness_witness
  7. L13
    cases ha_witness_witness_witness_witness_witness_witness
  8. L14
    cases ha_witness_witness_witness_witness_witness_witness_right
  9. L15
    cases ha_witness_witness_witness_witness_witness_witness_right_right
03Establish hotherL16–25

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

  1. L16
    have hother : ∃ p. ∃ n. Sum(x,x1,l,p) ∧ (Sum(x2,x3,l,n) ∧ SignedBalance(b,p,n))Definitions: Sum(x,x1,l,p)Sum(x2,x3,l,n)SignedBalance(b,p,n)Original native command in the exact edition
  2. L17
    specialize divisor_signed_sum_to_components (F)
  3. L18
    specialize divisor_signed_sum_to_components (x)
  4. L19
    specialize divisor_signed_sum_to_components (x1)
  5. L20
    specialize divisor_signed_sum_to_components (x2)
  6. L21
    specialize divisor_signed_sum_to_components (x3)
  7. L22
    specialize divisor_signed_sum_to_components (l)
  8. L23
    specialize divisor_signed_sum_to_components (b)
  9. L24
    apply divisor_signed_sum_to_components
  10. L25
    exact ha_witness_witness_witness_witness_witness_witness_left
04Use earlier factsL26–26

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

  1. L26
    exact hb
05Separate the logical casesL27–30

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

  1. L27
    cases hother
  2. L28
    cases hother_witness
  3. L29
    cases hother_witness_witness
  4. L30
    cases hother_witness_witness_right
06Establish hpL31–39

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum functional.

  1. L31
    have hp : x6 = x4
  2. L32
    specialize beta_sum_functional (x)
  3. L33
    specialize beta_sum_functional (x1)
  4. L34
    specialize beta_sum_functional (l)
  5. L35
    specialize beta_sum_functional (x6)
  6. L36
    specialize beta_sum_functional (x4)
  7. L37
    apply beta_sum_functional
  8. L38
    exact hother_witness_witness_left
  9. L39
    exact ha_witness_witness_witness_witness_witness_witness_right_left
07Establish hnL40–49

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum functional.

  1. L40
    have hn : x7 = x5
  2. L41
    specialize beta_sum_functional (x2)
  3. L42
    specialize beta_sum_functional (x3)
  4. L43
    specialize beta_sum_functional (l)
  5. L44
    specialize beta_sum_functional (x7)
  6. L45
    specialize beta_sum_functional (x5)
  7. L46
    apply beta_sum_functional
  8. L47
    exact hother_witness_witness_right_left
  9. L48
    exact ha_witness_witness_witness_witness_witness_witness_right_right_left
  10. L49
    rewrite hp at hother_witness_witness_right_right
08Calculate and transport equalitiesL50–50

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L50
    rewrite hn at hother_witness_witness_right_right
09Use earlier factsL51–57

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

  1. L51
    specialize signed_balance_functional (x4)
  2. L52
    specialize signed_balance_functional (x5)
  3. L53
    specialize signed_balance_functional (a)
  4. L54
    specialize signed_balance_functional (b)
  5. L55
    apply signed_balance_functional
  6. L56
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right
  7. L57
    exact hother_witness_witness_right_right

Library-wide reading audit

Original defined command ledger · 57 lines
  1. 0001intro F
  2. 0002intro l
  3. 0003intro a
  4. 0004intro b
  5. 0005intro ha
  6. 0006intro hb
  7. 0007cases ha
  8. 0008cases ha_witness
  9. 0009cases ha_witness_witness
  10. 0010cases ha_witness_witness_witness
  11. 0011cases ha_witness_witness_witness_witness
  12. 0012cases ha_witness_witness_witness_witness_witness
  13. 0013cases ha_witness_witness_witness_witness_witness_witness
  14. 0014cases ha_witness_witness_witness_witness_witness_witness_right
  15. 0015cases ha_witness_witness_witness_witness_witness_witness_right_right
  16. 0016have hother : ∃ p. ∃ n. Sum(x,x1,l,p) ∧ (Sum(x2,x3,l,n)SignedBalance(b,p,n))
  17. 0017specialize divisor_signed_sum_to_components (F)
  18. 0018specialize divisor_signed_sum_to_components (x)
  19. 0019specialize divisor_signed_sum_to_components (x1)
  20. 0020specialize divisor_signed_sum_to_components (x2)
  21. 0021specialize divisor_signed_sum_to_components (x3)
  22. 0022specialize divisor_signed_sum_to_components (l)
  23. 0023specialize divisor_signed_sum_to_components (b)
  24. 0024apply divisor_signed_sum_to_components
  25. 0025exact ha_witness_witness_witness_witness_witness_witness_left
  26. 0026exact hb
  27. 0027cases hother
  28. 0028cases hother_witness
  29. 0029cases hother_witness_witness
  30. 0030cases hother_witness_witness_right
  31. 0031have hp : x6 = x4
  32. 0032specialize beta_sum_functional (x)
  33. 0033specialize beta_sum_functional (x1)
  34. 0034specialize beta_sum_functional (l)
  35. 0035specialize beta_sum_functional (x6)
  36. 0036specialize beta_sum_functional (x4)
  37. 0037apply beta_sum_functional
  38. 0038exact hother_witness_witness_left
  39. 0039exact ha_witness_witness_witness_witness_witness_witness_right_left
  40. 0040have hn : x7 = x5
  41. 0041specialize beta_sum_functional (x2)
  42. 0042specialize beta_sum_functional (x3)
  43. 0043specialize beta_sum_functional (l)
  44. 0044specialize beta_sum_functional (x7)
  45. 0045specialize beta_sum_functional (x5)
  46. 0046apply beta_sum_functional
  47. 0047exact hother_witness_witness_right_left
  48. 0048exact ha_witness_witness_witness_witness_witness_witness_right_right_left
  49. 0049rewrite hp at hother_witness_witness_right_right
  50. 0050rewrite hn at hother_witness_witness_right_right
  51. 0051specialize signed_balance_functional (x4)
  52. 0052specialize signed_balance_functional (x5)
  53. 0053specialize signed_balance_functional (a)
  54. 0054specialize signed_balance_functional (b)
  55. 0055apply signed_balance_functional
  56. 0056exact ha_witness_witness_witness_witness_witness_witness_right_right_right
  57. 0057exact hother_witness_witness_right_right