BT00YF

division_three_scaled_upper_of_quotient_lt

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

A quotient below p places the dividend strictly below 3*p.

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 n q r p. (((n + n) = (3) * (q) + (r) /\ (exists bcf_lt_gap_bdtsuql_division_bound. bcf_lt_gap_bdtsuql_division_bound + S (r) = 3))) -> (exists bcf_lt_gap_bdtsuql_quotient. bcf_lt_gap_bdtsuql_quotient + S (q) = p) -> (exists bcf_lt_gap_bdtsuql_result. bcf_lt_gap_bdtsuql_result + S (n + n) = (p + p) + p)

Structural proof guide

A quotient below p places the dividend strictly below 3*p.

Direct prerequisites: division_block_upper, mul_le_mul_left, lt_of_lt_of_le, mul_succ_left, one_mul. The authored body proceeds by case analysis (1), intermediate claims (6), equality transport (4).

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

46 script commands · 8 reading checkpoints · 6 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 (5)
01Fix variables and assumptionsL1–6

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

  1. L1
    intro n
  2. L2
    intro q
  3. L3
    intro r
  4. L4
    intro p
  5. L5
    intro hdivision
  6. L6
    intro hquotient
02Separate the logical casesL7–7

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

  1. L7
    cases hdivision
03Establish hblockL8–13

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division block upper.

  1. L8
    have hblock : exists bcf_lt_gap_bdtsuql_block. bcf_lt_gap_bdtsuql_block + S (3 * q + r) = 3 * S q
  2. L9
    specialize division_block_upper 3
  3. L10
    specialize division_block_upper q
  4. L11
    specialize division_block_upper r
  5. L12
    apply division_block_upper
  6. L13
    exact hdivision_right
04Establish hblock_alignedL14–16

Establish this local claim before using it. It is not an additional assumption.

  1. L14
    have hblock_aligned : exists bcf_lt_gap_bdtsuql_block_aligned. bcf_lt_gap_bdtsuql_block_aligned + S (n + n) = 3 * S q
  2. L15
    rewrite hdivision_left
  3. L16
    exact hblock
05Establish hscaledL17–22

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

  1. L17
    have hscaled : exists bcf_le_gap_bdtsuql_scaled. bcf_le_gap_bdtsuql_scaled + (3 * S q) = 3 * p
  2. L18
    specialize mul_le_mul_left (S q)
  3. L19
    specialize mul_le_mul_left p
  4. L20
    specialize mul_le_mul_left 3
  5. L21
    apply mul_le_mul_left
  6. L22
    exact hquotient
06Establish hrawL23–29

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lt of lt of le.

  1. L23
    have hraw : exists bcf_lt_gap_bdtsuql_raw_result. bcf_lt_gap_bdtsuql_raw_result + S (n + n) = 3 * p
  2. L24
    specialize lt_of_lt_of_le (n + n)
  3. L25
    specialize lt_of_lt_of_le (3 * S q)
  4. L26
    specialize lt_of_lt_of_le (3 * p)
  5. L27
    apply lt_of_lt_of_le
  6. L28
    exact hblock_aligned
  7. L29
    exact hscaled
07Establish hdoubleL30–37

Establish this local claim before using it. It is not an additional assumption.

  1. L30
    have hdouble : 2 * p = p + p
  2. L31
    trans 1 * p + p
  3. L32
    specialize mul_succ_left 1
  4. L33
    specialize mul_succ_left p
  5. L34
    exact mul_succ_left
  6. L35
    specialize one_mul p
  7. L36
    rewrite one_mul
  8. L37
    refl
08Establish htripleL38–46

Establish this local claim before using it. It is not an additional assumption.

  1. L38
    have htriple : 3 * p = (p + p) + p
  2. L39
    trans 2 * p + p
  3. L40
    specialize mul_succ_left 2
  4. L41
    specialize mul_succ_left p
  5. L42
    exact mul_succ_left
  6. L43
    rewrite hdouble
  7. L44
    refl
  8. L45
    rewrite htriple at hraw
  9. L46
    exact hraw

Library-wide reading audit

Original exact command ledger · 46 lines
  1. 0001intro n
  2. 0002intro q
  3. 0003intro r
  4. 0004intro p
  5. 0005intro hdivision
  6. 0006intro hquotient
  7. 0007cases hdivision
  8. 0008have hblock : exists bcf_lt_gap_bdtsuql_block. bcf_lt_gap_bdtsuql_block + S (3 * q + r) = 3 * S q
  9. 0009specialize division_block_upper 3
  10. 0010specialize division_block_upper q
  11. 0011specialize division_block_upper r
  12. 0012apply division_block_upper
  13. 0013exact hdivision_right
  14. 0014have hblock_aligned : exists bcf_lt_gap_bdtsuql_block_aligned. bcf_lt_gap_bdtsuql_block_aligned + S (n + n) = 3 * S q
  15. 0015rewrite hdivision_left
  16. 0016exact hblock
  17. 0017have hscaled : exists bcf_le_gap_bdtsuql_scaled. bcf_le_gap_bdtsuql_scaled + (3 * S q) = 3 * p
  18. 0018specialize mul_le_mul_left (S q)
  19. 0019specialize mul_le_mul_left p
  20. 0020specialize mul_le_mul_left 3
  21. 0021apply mul_le_mul_left
  22. 0022exact hquotient
  23. 0023have hraw : exists bcf_lt_gap_bdtsuql_raw_result. bcf_lt_gap_bdtsuql_raw_result + S (n + n) = 3 * p
  24. 0024specialize lt_of_lt_of_le (n + n)
  25. 0025specialize lt_of_lt_of_le (3 * S q)
  26. 0026specialize lt_of_lt_of_le (3 * p)
  27. 0027apply lt_of_lt_of_le
  28. 0028exact hblock_aligned
  29. 0029exact hscaled
  30. 0030have hdouble : 2 * p = p + p
  31. 0031trans 1 * p + p
  32. 0032specialize mul_succ_left 1
  33. 0033specialize mul_succ_left p
  34. 0034exact mul_succ_left
  35. 0035specialize one_mul p
  36. 0036rewrite one_mul
  37. 0037refl
  38. 0038have htriple : 3 * p = (p + p) + p
  39. 0039trans 2 * p + p
  40. 0040specialize mul_succ_left 2
  41. 0041specialize mul_succ_left p
  42. 0042exact mul_succ_left
  43. 0043rewrite hdouble
  44. 0044refl
  45. 0045rewrite htriple at hraw
  46. 0046exact hraw