TS000A

positive_multiple_below_twice_equals_base

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

A positive multiple strictly below twice its divisor must equal that divisor.

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 p z. (exists fts_gap_positive_multiple. fts_gap_positive_multiple + S (0) = z) -> (exists fts_factor_bounded_multiple. z = p * fts_factor_bounded_multiple) -> (exists fts_gap_below_twice. fts_gap_below_twice + S (z) = p + p) -> z = p

Constructive proof overview

Generated structural guide

A positive multiple strictly below twice its divisor must equal that divisor.

The unchanged tactic script uses 5 declared prerequisites and contains 43 exact native proof lines.

dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged

Proof neighborhood

Direct dependencies

zero_or_succ Stable theorem; checked-use authorized lt_not_le Stable theorem; checked-use authorized add_assoc Stable theorem; checked-use authorized add_comm Stable theorem; checked-use authorized zero_add Stable 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

43 script commands · 17 reading checkpoints · 4 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–5

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

  1. L1
    intro p
  2. L2
    intro z
  3. L3
    intro hpositive
  4. L4
    intro hmultiple
  5. L5
    intro hbound
02Separate the logical casesL6–6

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

  1. L6
    cases hmultiple
03Establish hdecomposeL7–9

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

  1. L7
    have hdecompose : forall k. k = 0 \/ exists t. k = S t
  2. L8
    exact zero_or_succ
  3. L9
    specialize zero_or_succ x
04Separate the logical casesL10–12

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

  1. L10
    cases zero_or_succ
  2. L11
    exfalso
  3. L12
    cases hpositive
05Establish hzeroL13–17

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

  1. L13
    have hzero : z = 0
  2. L14
    rewrite hmultiple_witness
  3. L15
    rewrite zero_or_succ_left
  4. L16
    simp
  5. L17
    rewrite hzero at hpositive_witness
06Establish hbadL18–24

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

  1. L18
    have hbad : S x1 = 0
  2. L19
    trans x1 + 1
  3. L20
    symm
  4. L21
    simp
  5. L22
    exact hpositive_witness
  6. L23
    apply PA1
  7. L24
    exact hbad
07Separate the logical casesL25–25

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

  1. L25
    cases zero_or_succ_right
08Calculate and transport equalitiesL26–26

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

  1. L26
    rewrite zero_or_succ_right_witness at hmultiple_witness
09Use earlier factsL27–27

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

  1. L27
    specialize hdecompose x1
10Separate the logical casesL28–28

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

  1. L28
    cases hdecompose
11Calculate and transport equalitiesL29–31

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

  1. L29
    rewrite hdecompose_left at hmultiple_witness
  2. L30
    rewrite hmultiple_witness
  3. L31
    simp [zero_add]
12Separate the logical casesL32–33

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

  1. L32
    exfalso
  2. L33
    cases hdecompose_right
13Calculate and transport equalitiesL34–34

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

  1. L34
    rewrite hdecompose_right_witness at hmultiple_witness
14Establish hlargeL35–35

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

  1. L35
    have hlarge : exists h. h + (p + p) = z
15Construct an explicit witnessL36–36

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

  1. L36
    exists p * x2
16Calculate and transport equalitiesL37–38

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

  1. L37
    rewrite hmultiple_witness
  2. L38
    simp [add_assoc, add_comm]
17Use earlier factsL39–43

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

  1. L39
    specialize lt_not_le z
  2. L40
    specialize lt_not_le (p + p)
  3. L41
    apply lt_not_le
  4. L42
    exact hbound
  5. L43
    exact hlarge

Library-wide reading audit

Original exact command ledger · 43 lines
  1. 0001intro p
  2. 0002intro z
  3. 0003intro hpositive
  4. 0004intro hmultiple
  5. 0005intro hbound
  6. 0006cases hmultiple
  7. 0007have hdecompose : forall k. k = 0 \/ exists t. k = S t
  8. 0008exact zero_or_succ
  9. 0009specialize zero_or_succ x
  10. 0010cases zero_or_succ
  11. 0011exfalso
  12. 0012cases hpositive
  13. 0013have hzero : z = 0
  14. 0014rewrite hmultiple_witness
  15. 0015rewrite zero_or_succ_left
  16. 0016simp
  17. 0017rewrite hzero at hpositive_witness
  18. 0018have hbad : S x1 = 0
  19. 0019trans x1 + 1
  20. 0020symm
  21. 0021simp
  22. 0022exact hpositive_witness
  23. 0023apply PA1
  24. 0024exact hbad
  25. 0025cases zero_or_succ_right
  26. 0026rewrite zero_or_succ_right_witness at hmultiple_witness
  27. 0027specialize hdecompose x1
  28. 0028cases hdecompose
  29. 0029rewrite hdecompose_left at hmultiple_witness
  30. 0030rewrite hmultiple_witness
  31. 0031simp [zero_add]
  32. 0032exfalso
  33. 0033cases hdecompose_right
  34. 0034rewrite hdecompose_right_witness at hmultiple_witness
  35. 0035have hlarge : exists h. h + (p + p) = z
  36. 0036exists p * x2
  37. 0037rewrite hmultiple_witness
  38. 0038simp [add_assoc, add_comm]
  39. 0039specialize lt_not_le z
  40. 0040specialize lt_not_le (p + p)
  41. 0041apply lt_not_le
  42. 0042exact hbound
  43. 0043exact hlarge