JT0035

jordan_rectangle_quotient_bound

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

An actual bounded row-major index has a row index below u; no division oracle is assumed.

Exact expanded first-order arithmetic statement

forall u v p i j. (exists jt_gap_quotbound. jt_gap_quotbound+S (p)=(u*v)) -> p=v*i+j -> (exists jt_gap_quotremainder. jt_gap_quotremainder+S (j)=(v)) -> (exists jt_gap_quotresult. jt_gap_quotresult+S (i)=(u))

Constructive proof overview

Generated structural guide

An actual bounded row-major index has a row index below u; no division oracle is assumed.

The unchanged tactic script uses 6 declared prerequisites and contains 39 exact native proof lines.

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

Proof neighborhood

Direct dependencies

le_or_lt Alpha theorem; checked-use authorized lt_not_le Alpha theorem; checked-use authorized le_trans Alpha theorem; checked-use authorized mul_le_mul_left Alpha theorem; checked-use authorized mul_comm Alpha theorem; checked-use authorized le_add_right Alpha theorem; checked-use authorized

Direct dependents

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

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

01Fix variables and assumptionsL1–8

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

  1. L1
    intro u
  2. L2
    intro v
  3. L3
    intro p
  4. L4
    intro i
  5. L5
    intro j
  6. L6
    intro hp
  7. L7
    intro heq
  8. L8
    intro hj
02Establish hcL9–12

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

  1. L9
    have hc : (exists jt_gap_quotle. jt_gap_quotle+(u)=(i)) \/ (exists jt_gap_quotlt. jt_gap_quotlt+S (i)=(u))
  2. L10
    specialize le_or_lt (u)
  3. L11
    specialize le_or_lt (i)
  4. L12
    apply le_or_lt
03Separate the logical casesL13–14

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

  1. L13
    cases hc
  2. L14
    exfalso
04Use earlier factsL15–22

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

  1. L15
    specialize lt_not_le (p)
  2. L16
    specialize lt_not_le (u*v)
  3. L17
    apply lt_not_le
  4. L18
    exact hp
  5. L19
    specialize le_trans (u*v)
  6. L20
    specialize le_trans (v*i)
  7. L21
    specialize le_trans (p)
  8. L22
    apply le_trans
05Establish hmL23–28

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

  1. L23
    have hm : exists jt_gap_quotmult. jt_gap_quotmult+(v*u)=(v*i)
  2. L24
    specialize mul_le_mul_left (u)
  3. L25
    specialize mul_le_mul_left (i)
  4. L26
    specialize mul_le_mul_left (v)
  5. L27
    apply mul_le_mul_left
  6. L28
    exact hc_left
06Establish hcommL29–38

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

  1. L29
    have hcomm : v*u=u*v
  2. L30
    specialize mul_comm (v)
  3. L31
    specialize mul_comm (u)
  4. L32
    apply mul_comm
  5. L33
    rewrite hcomm at hm
  6. L34
    exact hm
  7. L35
    rewrite heq
  8. L36
    specialize le_add_right (v*i)
  9. L37
    specialize le_add_right (j)
  10. L38
    apply le_add_right
07Use earlier factsL39–39

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

  1. L39
    exact hc_right

Library-wide reading audit

Original exact command ledger · 39 lines
  1. 0001intro u
  2. 0002intro v
  3. 0003intro p
  4. 0004intro i
  5. 0005intro j
  6. 0006intro hp
  7. 0007intro heq
  8. 0008intro hj
  9. 0009have hc : (exists jt_gap_quotle. jt_gap_quotle+(u)=(i)) \/ (exists jt_gap_quotlt. jt_gap_quotlt+S (i)=(u))
  10. 0010specialize le_or_lt (u)
  11. 0011specialize le_or_lt (i)
  12. 0012apply le_or_lt
  13. 0013cases hc
  14. 0014exfalso
  15. 0015specialize lt_not_le (p)
  16. 0016specialize lt_not_le (u*v)
  17. 0017apply lt_not_le
  18. 0018exact hp
  19. 0019specialize le_trans (u*v)
  20. 0020specialize le_trans (v*i)
  21. 0021specialize le_trans (p)
  22. 0022apply le_trans
  23. 0023have hm : exists jt_gap_quotmult. jt_gap_quotmult+(v*u)=(v*i)
  24. 0024specialize mul_le_mul_left (u)
  25. 0025specialize mul_le_mul_left (i)
  26. 0026specialize mul_le_mul_left (v)
  27. 0027apply mul_le_mul_left
  28. 0028exact hc_left
  29. 0029have hcomm : v*u=u*v
  30. 0030specialize mul_comm (v)
  31. 0031specialize mul_comm (u)
  32. 0032apply mul_comm
  33. 0033rewrite hcomm at hm
  34. 0034exact hm
  35. 0035rewrite heq
  36. 0036specialize le_add_right (v*i)
  37. 0037specialize le_add_right (j)
  38. 0038apply le_add_right
  39. 0039exact hc_right