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.
Statement with defined notation
∀ p. ∀ z. Lt(0,z) → Dvd(p,z) → Lt(z,p + p) → z = pEvery purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order 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 = pProof neighborhood
Direct theorem prerequisites
Direct theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.
Read the argument
Proof checkpoints
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
02Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
cases hmultiple
03Establish hdecomposeL7–9
04Separate the logical casesL10–12
05Establish hzeroL13–17
06Establish hbadL18–24
07Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- 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.
- 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.
- L27
specialize hdecompose x1
10Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hdecompose
11Calculate and transport equalitiesL29–31
12Separate the logical casesL32–33
13Calculate and transport equalitiesL34–34
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L34
rewrite hdecompose_right_witness at hmultiple_witness
14Establish hlargeL35–35
Establish this local claim before using it. It is not an additional assumption.
15Construct an explicit witnessL36–36
Supply the displayed value, then prove that it has the required property.
- L36
exists p * x2
16Calculate and transport equalitiesL37–38
Original defined command ledger · 43 lines
- 0001
intro p - 0002
intro z - 0003
intro hpositive - 0004
intro hmultiple - 0005
intro hbound - 0006
cases hmultiple - 0007
have hdecompose : forall k. k = 0 \/ exists t. k = S t - 0008
exact zero_or_succ - 0009
specialize zero_or_succ x - 0010
cases zero_or_succ - 0011
exfalso - 0012
cases hpositive - 0013
have hzero : z = 0 - 0014
rewrite hmultiple_witness - 0015
rewrite zero_or_succ_left - 0016
simp - 0017
rewrite hzero at hpositive_witness - 0018
have hbad : S x1 = 0 - 0019
trans x1 + 1 - 0020
symm - 0021
simp - 0022
exact hpositive_witness - 0023
apply PA1 - 0024
exact hbad - 0025
cases zero_or_succ_right - 0026
rewrite zero_or_succ_right_witness at hmultiple_witness - 0027
specialize hdecompose x1 - 0028
cases hdecompose - 0029
rewrite hdecompose_left at hmultiple_witness - 0030
rewrite hmultiple_witness - 0031
simp [zero_add] - 0032
exfalso - 0033
cases hdecompose_right - 0034
rewrite hdecompose_right_witness at hmultiple_witness - 0035
have hlarge : Le(p + p,z)Exact native replay line
have hlarge : exists h. h + (p + p) = z - 0036
exists p * x2 - 0037
rewrite hmultiple_witness - 0038
simp [add_assoc, add_comm] - 0039
specialize lt_not_le z - 0040
specialize lt_not_le (p + p) - 0041
apply lt_not_le - 0042
exact hbound - 0043
exact hlarge