MD0008

beta_dot_product_commutative

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

Finite natural dot products are constructively symmetric.

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 original first-admission records.

Exact expanded first-order arithmetic statement

forall mb mc sb sc l n. (exists ff_code_dot_value ff_scale_dot_value. ((forall fpmp_index_dot_value_pointwise fpmp_left_dot_value_pointwise fpmp_right_dot_value_pointwise fpmp_target_dot_value_pointwise. (exists fpmp_gap_dot_value_pointwise. fpmp_gap_dot_value_pointwise + S fpmp_index_dot_value_pointwise = l) -> (((exists ff_h_fpmp_dot_value_pointwise_left. ff_h_fpmp_dot_value_pointwise_left + S (fpmp_left_dot_value_pointwise) = S ((S (fpmp_index_dot_value_pointwise)) * mc)) /\ exists ff_q_fpmp_dot_value_pointwise_left. mb = ff_q_fpmp_dot_value_pointwise_left * S ((S (fpmp_index_dot_value_pointwise)) * mc) + (fpmp_left_dot_value_pointwise))) -> (((exists ff_h_fpmp_dot_value_pointwise_right. ff_h_fpmp_dot_value_pointwise_right + S (fpmp_right_dot_value_pointwise) = S ((S (fpmp_index_dot_value_pointwise)) * sc)) /\ exists ff_q_fpmp_dot_value_pointwise_right. sb = ff_q_fpmp_dot_value_pointwise_right * S ((S (fpmp_index_dot_value_pointwise)) * sc) + (fpmp_right_dot_value_pointwise))) -> (((exists ff_h_fpmp_dot_value_pointwise_target. ff_h_fpmp_dot_value_pointwise_target + S (fpmp_target_dot_value_pointwise) = S ((S (fpmp_index_dot_value_pointwise)) * ff_scale_dot_value)) /\ exists ff_q_fpmp_dot_value_pointwise_target. ff_code_dot_value = ff_q_fpmp_dot_value_pointwise_target * S ((S (fpmp_index_dot_value_pointwise)) * ff_scale_dot_value) + (fpmp_target_dot_value_pointwise))) -> fpmp_target_dot_value_pointwise = fpmp_left_dot_value_pointwise * fpmp_right_dot_value_pointwise) /\ (exists ff_u_dot_value_sum ff_v_dot_value_sum. ((((exists ff_h_dot_value_sum_start. ff_h_dot_value_sum_start + S (0) = S ((S (0)) * ff_v_dot_value_sum)) /\ exists ff_q_dot_value_sum_start. ff_u_dot_value_sum = ff_q_dot_value_sum_start * S ((S (0)) * ff_v_dot_value_sum) + (0))) /\ ((((exists ff_h_dot_value_sum_terminal. ff_h_dot_value_sum_terminal + S (n) = S ((S (l)) * ff_v_dot_value_sum)) /\ exists ff_q_dot_value_sum_terminal. ff_u_dot_value_sum = ff_q_dot_value_sum_terminal * S ((S (l)) * ff_v_dot_value_sum) + (n))) /\ forall ff_i_dot_value_sum. (exists ff_lt_dot_value_sum_bound. ff_lt_dot_value_sum_bound + S ff_i_dot_value_sum = l) -> exists ff_a_dot_value_sum ff_r_dot_value_sum ff_s_dot_value_sum. ((((exists ff_h_dot_value_sum_summand. ff_h_dot_value_sum_summand + S (ff_a_dot_value_sum) = S ((S (ff_i_dot_value_sum)) * ff_scale_dot_value)) /\ exists ff_q_dot_value_sum_summand. ff_code_dot_value = ff_q_dot_value_sum_summand * S ((S (ff_i_dot_value_sum)) * ff_scale_dot_value) + (ff_a_dot_value_sum))) /\ ((((exists ff_h_dot_value_sum_partial. ff_h_dot_value_sum_partial + S (ff_r_dot_value_sum) = S ((S (ff_i_dot_value_sum)) * ff_v_dot_value_sum)) /\ exists ff_q_dot_value_sum_partial. ff_u_dot_value_sum = ff_q_dot_value_sum_partial * S ((S (ff_i_dot_value_sum)) * ff_v_dot_value_sum) + (ff_r_dot_value_sum))) /\ ((((exists ff_h_dot_value_sum_successor. ff_h_dot_value_sum_successor + S (ff_s_dot_value_sum) = S ((S (S ff_i_dot_value_sum)) * ff_v_dot_value_sum)) /\ exists ff_q_dot_value_sum_successor. ff_u_dot_value_sum = ff_q_dot_value_sum_successor * S ((S (S ff_i_dot_value_sum)) * ff_v_dot_value_sum) + (ff_s_dot_value_sum))) /\ ff_s_dot_value_sum = ff_r_dot_value_sum + ff_a_dot_value_sum)))))))) -> (exists ff_code_dot_reverse ff_scale_dot_reverse. ((forall fpmp_index_dot_reverse_pointwise fpmp_left_dot_reverse_pointwise fpmp_right_dot_reverse_pointwise fpmp_target_dot_reverse_pointwise. (exists fpmp_gap_dot_reverse_pointwise. fpmp_gap_dot_reverse_pointwise + S fpmp_index_dot_reverse_pointwise = l) -> (((exists ff_h_fpmp_dot_reverse_pointwise_left. ff_h_fpmp_dot_reverse_pointwise_left + S (fpmp_left_dot_reverse_pointwise) = S ((S (fpmp_index_dot_reverse_pointwise)) * sc)) /\ exists ff_q_fpmp_dot_reverse_pointwise_left. sb = ff_q_fpmp_dot_reverse_pointwise_left * S ((S (fpmp_index_dot_reverse_pointwise)) * sc) + (fpmp_left_dot_reverse_pointwise))) -> (((exists ff_h_fpmp_dot_reverse_pointwise_right. ff_h_fpmp_dot_reverse_pointwise_right + S (fpmp_right_dot_reverse_pointwise) = S ((S (fpmp_index_dot_reverse_pointwise)) * mc)) /\ exists ff_q_fpmp_dot_reverse_pointwise_right. mb = ff_q_fpmp_dot_reverse_pointwise_right * S ((S (fpmp_index_dot_reverse_pointwise)) * mc) + (fpmp_right_dot_reverse_pointwise))) -> (((exists ff_h_fpmp_dot_reverse_pointwise_target. ff_h_fpmp_dot_reverse_pointwise_target + S (fpmp_target_dot_reverse_pointwise) = S ((S (fpmp_index_dot_reverse_pointwise)) * ff_scale_dot_reverse)) /\ exists ff_q_fpmp_dot_reverse_pointwise_target. ff_code_dot_reverse = ff_q_fpmp_dot_reverse_pointwise_target * S ((S (fpmp_index_dot_reverse_pointwise)) * ff_scale_dot_reverse) + (fpmp_target_dot_reverse_pointwise))) -> fpmp_target_dot_reverse_pointwise = fpmp_left_dot_reverse_pointwise * fpmp_right_dot_reverse_pointwise) /\ (exists ff_u_dot_reverse_sum ff_v_dot_reverse_sum. ((((exists ff_h_dot_reverse_sum_start. ff_h_dot_reverse_sum_start + S (0) = S ((S (0)) * ff_v_dot_reverse_sum)) /\ exists ff_q_dot_reverse_sum_start. ff_u_dot_reverse_sum = ff_q_dot_reverse_sum_start * S ((S (0)) * ff_v_dot_reverse_sum) + (0))) /\ ((((exists ff_h_dot_reverse_sum_terminal. ff_h_dot_reverse_sum_terminal + S (n) = S ((S (l)) * ff_v_dot_reverse_sum)) /\ exists ff_q_dot_reverse_sum_terminal. ff_u_dot_reverse_sum = ff_q_dot_reverse_sum_terminal * S ((S (l)) * ff_v_dot_reverse_sum) + (n))) /\ forall ff_i_dot_reverse_sum. (exists ff_lt_dot_reverse_sum_bound. ff_lt_dot_reverse_sum_bound + S ff_i_dot_reverse_sum = l) -> exists ff_a_dot_reverse_sum ff_r_dot_reverse_sum ff_s_dot_reverse_sum. ((((exists ff_h_dot_reverse_sum_summand. ff_h_dot_reverse_sum_summand + S (ff_a_dot_reverse_sum) = S ((S (ff_i_dot_reverse_sum)) * ff_scale_dot_reverse)) /\ exists ff_q_dot_reverse_sum_summand. ff_code_dot_reverse = ff_q_dot_reverse_sum_summand * S ((S (ff_i_dot_reverse_sum)) * ff_scale_dot_reverse) + (ff_a_dot_reverse_sum))) /\ ((((exists ff_h_dot_reverse_sum_partial. ff_h_dot_reverse_sum_partial + S (ff_r_dot_reverse_sum) = S ((S (ff_i_dot_reverse_sum)) * ff_v_dot_reverse_sum)) /\ exists ff_q_dot_reverse_sum_partial. ff_u_dot_reverse_sum = ff_q_dot_reverse_sum_partial * S ((S (ff_i_dot_reverse_sum)) * ff_v_dot_reverse_sum) + (ff_r_dot_reverse_sum))) /\ ((((exists ff_h_dot_reverse_sum_successor. ff_h_dot_reverse_sum_successor + S (ff_s_dot_reverse_sum) = S ((S (S ff_i_dot_reverse_sum)) * ff_v_dot_reverse_sum)) /\ exists ff_q_dot_reverse_sum_successor. ff_u_dot_reverse_sum = ff_q_dot_reverse_sum_successor * S ((S (S ff_i_dot_reverse_sum)) * ff_v_dot_reverse_sum) + (ff_s_dot_reverse_sum))) /\ ff_s_dot_reverse_sum = ff_r_dot_reverse_sum + ff_a_dot_reverse_sum))))))))

Constructive proof overview

Generated structural guide

Finite natural dot products are constructively symmetric.

The unchanged tactic script uses 1 declared prerequisite and contains 37 exact native proof lines.

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

Proof neighborhood

Direct dependencies

mul_comm Stable theorem; checked-use authorized

Direct dependents

none

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

37 script commands · 8 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.

01Fix variables and assumptionsL1–7

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

  1. L1
    intro mb
  2. L2
    intro mc
  3. L3
    intro sb
  4. L4
    intro sc
  5. L5
    intro l
  6. L6
    intro n
  7. L7
    intro hdot
02Separate the logical casesL8–10

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

  1. L8
    cases hdot
  2. L9
    cases hdot_witness
  3. L10
    cases hdot_witness_witness
03Construct an explicit witnessL11–12

Supply the displayed value, then prove that it has the required property.

  1. L11
    exists x
  2. L12
    exists x1
04Separate the logical casesL13–13

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

  1. L13
    split
05Fix variables and assumptionsL14–21

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

  1. L14
    intro i
  2. L15
    intro a
  3. L16
    intro b
  4. L17
    intro z
  5. L18
    intro hi
  6. L19
    intro ha
  7. L20
    intro hb
  8. L21
    intro hz
06Establish hproductL22–31

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hdot witness witness left.

  1. L22
    have hproduct : z = b * a
  2. L23
    specialize hdot_witness_witness_left i
  3. L24
    specialize hdot_witness_witness_left b
  4. L25
    specialize hdot_witness_witness_left a
  5. L26
    specialize hdot_witness_witness_left z
  6. L27
    apply hdot_witness_witness_left
  7. L28
    exact hi
  8. L29
    exact hb
  9. L30
    exact ha
  10. L31
    exact hz
07Calculate and transport equalitiesL32–32

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

  1. L32
    trans b * a
08Use earlier factsL33–37

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

  1. L33
    exact hproduct
  2. L34
    specialize mul_comm b
  3. L35
    specialize mul_comm a
  4. L36
    exact mul_comm
  5. L37
    exact hdot_witness_witness_right

Library-wide reading audit

Original exact command ledger · 37 lines
  1. 0001intro mb
  2. 0002intro mc
  3. 0003intro sb
  4. 0004intro sc
  5. 0005intro l
  6. 0006intro n
  7. 0007intro hdot
  8. 0008cases hdot
  9. 0009cases hdot_witness
  10. 0010cases hdot_witness_witness
  11. 0011exists x
  12. 0012exists x1
  13. 0013split
  14. 0014intro i
  15. 0015intro a
  16. 0016intro b
  17. 0017intro z
  18. 0018intro hi
  19. 0019intro ha
  20. 0020intro hb
  21. 0021intro hz
  22. 0022have hproduct : z = b * a
  23. 0023specialize hdot_witness_witness_left i
  24. 0024specialize hdot_witness_witness_left b
  25. 0025specialize hdot_witness_witness_left a
  26. 0026specialize hdot_witness_witness_left z
  27. 0027apply hdot_witness_witness_left
  28. 0028exact hi
  29. 0029exact hb
  30. 0030exact ha
  31. 0031exact hz
  32. 0032trans b * a
  33. 0033exact hproduct
  34. 0034specialize mul_comm b
  35. 0035specialize mul_comm a
  36. 0036exact mul_comm
  37. 0037exact hdot_witness_witness_right

Separate complete second-wave branches: Full T13 proof · Alpha v27.