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
∀ B. ∀ c. ¬c = 0 → (∀ x. (∃ y. S x + S y = S B) → Dvd(S x,c)) → ∃ x. ¬x = 0 ∧ (∀ y. (∃ z. S y + S z = S S B) → Dvd(S y,x))Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
2 occurrences
In local proof propositions
1 occurrences
Exact expanded native-PA statement
forall B c. ~(c = 0) -> (forall t. (exists h. S t + S h = S B) -> exists k. c = S t * k) -> exists c2. (~(c2 = 0) /\ forall t. (exists h. S t + S h = S (S B)) -> exists k. c2 = S t * k)Proof neighborhood
Direct theorem prerequisites
PA0007 mul_eq_zero PA0005 succ_ne_zero PA0008 zero_or_succ PA000C multiple_mul_right PA000H mul_commDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed 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.
Named ingredients (5)
01Fix variables and assumptionsL1–4
02Construct an explicit witnessL5–5
Supply the displayed value, then prove that it has the required property.
- L5
exists c * S B
03Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
split
04Establish hSBL7–9
05Establish hprodL10–11
06Establish hzL12–16
07Separate the logical casesL17–17
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L17
cases hz
08Use earlier factsL18–22
09Fix variables and assumptionsL23–24
10Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
cases ht
11Use earlier factsL26–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
specialize zero_or_succ x
12Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
cases zero_or_succ
13Calculate and transport equalitiesL28–28
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L28
rewrite zero_or_succ_left at ht_witness
14Establish hteqL29–33
15Construct an explicit witnessL34–34
Supply the displayed value, then prove that it has the required property.
- L34
exists c
16Calculate and transport equalitiesL35–35
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L35
rewrite hteq
17Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
apply mul_comm
18Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases zero_or_succ_right
19Establish hprevL38–38
Establish this local claim before using it. It is not an additional assumption.
- L38
have hprev : exists h. S t + S h = S B
20Construct an explicit witnessL39–39
Supply the displayed value, then prove that it has the required property.
- L39
exists x1
21Calculate and transport equalitiesL40–41
22Use earlier factsL42–43
23Establish hdivcL44–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hall.
Original defined command ledger · 52 lines
- 0001
intro B - 0002
intro c - 0003
intro hc - 0004
intro hall - 0005
exists c * S B - 0006
split - 0007
have hSB : ~(S B = 0) - 0008
specialize succ_ne_zero B - 0009
exact succ_ne_zero - 0010
have hprod : ~(c * S B = 0) - 0011
intro hzero - 0012
have hz : c = 0 \/ S B = 0 - 0013
specialize mul_eq_zero c - 0014
specialize mul_eq_zero (S B) - 0015
apply mul_eq_zero - 0016
exact hzero - 0017
cases hz - 0018
apply hc - 0019
exact hz_left - 0020
apply hSB - 0021
exact hz_right - 0022
exact hprod - 0023
intro t - 0024
intro ht - 0025
cases ht - 0026
specialize zero_or_succ x - 0027
cases zero_or_succ - 0028
rewrite zero_or_succ_left at ht_witness - 0029
have hteq : S t = S B - 0030
rewrite PA4 at ht_witness - 0031
rewrite PA3 at ht_witness - 0032
apply PA2 - 0033
exact ht_witness - 0034
exists c - 0035
rewrite hteq - 0036
apply mul_comm - 0037
cases zero_or_succ_right - 0038
have hprev : exists h. S t + S h = S B - 0039
exists x1 - 0040
rewrite zero_or_succ_right_witness at ht_witness - 0041
rewrite PA4 at ht_witness - 0042
apply PA2 - 0043
exact ht_witness - 0044
have hdivc : Dvd(S t,c)Exact native replay line
have hdivc : exists k. c = S t * k - 0045
specialize hall t - 0046
apply hall - 0047
exact hprev - 0048
specialize multiple_mul_right (S t) - 0049
specialize multiple_mul_right c - 0050
specialize multiple_mul_right (S B) - 0051
apply multiple_mul_right - 0052
exact hdivc