BT00RD

mul_le_cancel_left_nonzero

Alpha v34 checked-use theorem · independently kernel and Lean verified; not Stable

Witness order cancels a common nonzero left multiplier.

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 PA statement

forall c a b. ~(c = 0) -> (exists k. k + c * a = c * b) -> exists k. k + a = b

Structural proof guide

Witness order cancels a common nonzero left multiplier.

Direct prerequisites: add_comm, factor_difference, mul_left_cancel_nonzero, mul_add. The authored body proceeds by case analysis (2), intermediate claims (2), equality transport (1).

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.

Read the argument

Proof checkpoints

29 script commands · 11 reading checkpoints · 2 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 (4)
01Fix variables and assumptionsL1–5

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

  1. L1
    intro c
  2. L2
    intro a
  3. L3
    intro b
  4. L4
    intro hc
  5. L5
    intro hle
02Separate the logical casesL6–6

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

  1. L6
    cases hle
03Establish heqL7–11

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add comm.

  1. L7
    have heq : c * b = c * a + x
  2. L8
    trans x + c * a
  3. L9
    symm
  4. L10
    exact hle_witness
  5. L11
    apply add_comm
04Establish hfactorL12–18

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor difference.

  1. L12
    have hfactor : exists w. x = c * w
  2. L13
    specialize factor_difference c
  3. L14
    specialize factor_difference b
  4. L15
    specialize factor_difference a
  5. L16
    specialize factor_difference x
  6. L17
    apply factor_difference
  7. L18
    exact heq
05Separate the logical casesL19–19

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

  1. L19
    cases hfactor
06Construct an explicit witnessL20–20

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

  1. L20
    exists x1
07Use earlier factsL21–25

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

  1. L21
    specialize mul_left_cancel_nonzero c
  2. L22
    specialize mul_left_cancel_nonzero (x1 + a)
  3. L23
    specialize mul_left_cancel_nonzero b
  4. L24
    apply mul_left_cancel_nonzero
  5. L25
    exact hc
08Calculate and transport equalitiesL26–26

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

  1. L26
    trans c * x1 + c * a
09Use earlier factsL27–27

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

  1. L27
    apply mul_add
10Calculate and transport equalitiesL28–28

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

  1. L28
    rewrite <- hfactor_witness
11Use earlier factsL29–29

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

  1. L29
    exact hle_witness

Library-wide reading audit

Original exact command ledger · 29 lines
  1. 0001intro c
  2. 0002intro a
  3. 0003intro b
  4. 0004intro hc
  5. 0005intro hle
  6. 0006cases hle
  7. 0007have heq : c * b = c * a + x
  8. 0008trans x + c * a
  9. 0009symm
  10. 0010exact hle_witness
  11. 0011apply add_comm
  12. 0012have hfactor : exists w. x = c * w
  13. 0013specialize factor_difference c
  14. 0014specialize factor_difference b
  15. 0015specialize factor_difference a
  16. 0016specialize factor_difference x
  17. 0017apply factor_difference
  18. 0018exact heq
  19. 0019cases hfactor
  20. 0020exists x1
  21. 0021specialize mul_left_cancel_nonzero c
  22. 0022specialize mul_left_cancel_nonzero (x1 + a)
  23. 0023specialize mul_left_cancel_nonzero b
  24. 0024apply mul_left_cancel_nonzero
  25. 0025exact hc
  26. 0026trans c * x1 + c * a
  27. 0027apply mul_add
  28. 0028rewrite <- hfactor_witness
  29. 0029exact hle_witness