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. ∀ n. ¬n = 0 → (∀ x. ∀ y. Le(x,B) → n = x · y → x = 1 ∨ y = 1) ∨ (∃ x. ∃ y. Le(x,B) ∧ ¬x = 1 ∧ ¬y = 1 ∧ n = x · y)Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
2 occurrences
In local proof propositions
4 occurrences
Exact expanded native-PA statement
forall B n. ~(n = 0) -> ((forall c d. (exists k. k + c = B) -> n = c * d -> c = 1 \/ d = 1) \/ exists c d. ((((exists k. k + c = B) /\ ~(c = 1)) /\ ~(d = 1)) /\ n = c * d))Proof neighborhood
Direct theorem prerequisites
BT0004 mul_zero_left BT000C succ_ne_zero BT000Y le_zero BT000E le_refl BT0018 le_succ BT0022 mul_left_cancel_nonzero BT003A eq_decidable BT003B multiple_decidable_nonzero BT003D factor_property_succDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.
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 (9)
01Fix variables and assumptionsL1–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro B
02Induction on BL2–4
03Separate the logical casesL5–5
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L5
left
04Fix variables and assumptionsL6–9
05Establish hc0L10–12
06Separate the logical casesL13–13
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L13
exfalso
07Use earlier factsL14–14
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L14
apply hn
08Calculate and transport equalitiesL15–15
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L15
trans c * d
09Use earlier factsL16–16
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L16
exact hfac
10Calculate and transport equalitiesL17–17
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L17
rewrite hc0
11Use earlier factsL18–18
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L18
apply mul_zero_left
12Fix variables and assumptionsL19–20
13Use earlier factsL21–21
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L21
specialize IH n
14Establish hprevL22–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L22
have hprev : (∀ x. ∀ y. Le(x,B) → n = x · y → x = 1 ∨ y = 1) ∨ (∃ x. ∃ y. Le(x,B) ∧ ¬x = 1 ∧ ¬y = 1 ∧ n = x · y)Definitions: Le(x,B)Original native command in the exact edition - L23
apply IH - L24
exact hn
15Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
cases hprev
16Establish hs0L26–30
17Establish hdivL31–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple decidable nonzero.
- L31
have hdiv : Dvd(S B,n) ∨ ¬Dvd(S B,n)Definitions: Dvd(S B,n)Original native command in the exact edition - L32
apply multiple_decidable_nonzero - L33
exact hs0
18Separate the logical casesL34–35
19Use earlier factsL36–37
20Establish hc1L38–39
21Separate the logical casesL40–41
22Use earlier factsL42–43
23Fix variables and assumptionsL44–45
24Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
left
25Use earlier factsL47–49
26Establish hq1L50–51
27Separate the logical casesL52–53
28Use earlier factsL54–55
29Fix variables and assumptionsL56–57
30Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
right
31Calculate and transport equalitiesL59–59
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L59
trans x
32Use earlier factsL60–61
33Calculate and transport equalitiesL62–63
34Use earlier factsL64–66
35Separate the logical casesL67–67
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L67
right
36Construct an explicit witnessL68–69
37Separate the logical casesL70–72
38Use earlier factsL73–76
39Separate the logical casesL77–77
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L77
left
40Use earlier factsL78–79
41Fix variables and assumptionsL80–81
42Separate the logical casesL82–82
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L82
exfalso
43Use earlier factsL83–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L83
apply hdiv_right
44Construct an explicit witnessL84–84
Supply the displayed value, then prove that it has the required property.
- L84
exists d
45Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
exact hboundary
46Separate the logical casesL86–91
47Construct an explicit witnessL92–93
48Separate the logical casesL94–96
49Use earlier factsL97–101
Original defined command ledger · 101 lines
- 0001
intro B - 0002
induction B - 0003
intro n - 0004
intro hn - 0005
left - 0006
intro c - 0007
intro d - 0008
intro hc - 0009
intro hfac - 0010
have hc0 : c = 0 - 0011
apply le_zero - 0012
exact hc - 0013
exfalso - 0014
apply hn - 0015
trans c * d - 0016
exact hfac - 0017
rewrite hc0 - 0018
apply mul_zero_left - 0019
intro n - 0020
intro hn - 0021
specialize IH n - 0022
have hprev : (∀ x. ∀ y. Le(x,B) → n = x · y → x = 1 ∨ y = 1) ∨ (∃ x. ∃ y. Le(x,B) ∧ ¬x = 1 ∧ ¬y = 1 ∧ n = x · y)Exact native replay line
have hprev : (forall c d. (exists k. k + c = B) -> n = c * d -> c = 1 \/ d = 1) \/ exists c d. ((((exists k. k + c = B) /\ ~(c = 1)) /\ ~(d = 1)) /\ n = c * d) - 0023
apply IH - 0024
exact hn - 0025
cases hprev - 0026
have hs0 : ~(S B = 0) - 0027
specialize succ_ne_zero B - 0028
exact succ_ne_zero - 0029
specialize multiple_decidable_nonzero (S B) - 0030
specialize multiple_decidable_nonzero n - 0031
have hdiv : Dvd(S B,n) ∨ ¬Dvd(S B,n)Exact native replay line
have hdiv : (exists q. n = S B * q) \/ ~(exists q. n = S B * q) - 0032
apply multiple_decidable_nonzero - 0033
exact hs0 - 0034
cases hdiv - 0035
cases hdiv_left - 0036
specialize eq_decidable (S B) - 0037
specialize eq_decidable 1 - 0038
have hc1 : S B = 1 \/ ~(S B = 1) - 0039
apply eq_decidable - 0040
cases hc1 - 0041
left - 0042
apply factor_property_succ - 0043
exact hprev_left - 0044
intro d - 0045
intro hboundary - 0046
left - 0047
exact hc1_left - 0048
specialize eq_decidable_before x - 0049
specialize eq_decidable_before 1 - 0050
have hq1 : x = 1 \/ ~(x = 1) - 0051
apply eq_decidable_before - 0052
cases hq1 - 0053
left - 0054
apply factor_property_succ - 0055
exact hprev_left - 0056
intro d - 0057
intro hboundary - 0058
right - 0059
trans x - 0060
apply mul_left_cancel_nonzero - 0061
exact hs0 - 0062
trans n - 0063
symm - 0064
exact hboundary - 0065
exact hdiv_left_witness - 0066
exact hq1_left - 0067
right - 0068
exists S B - 0069
exists x - 0070
split - 0071
split - 0072
split - 0073
apply le_refl - 0074
exact hc1_right - 0075
exact hq1_right - 0076
exact hdiv_left_witness - 0077
left - 0078
apply factor_property_succ - 0079
exact hprev_left - 0080
intro d - 0081
intro hboundary - 0082
exfalso - 0083
apply hdiv_right - 0084
exists d - 0085
exact hboundary - 0086
right - 0087
cases hprev_right - 0088
cases hprev_right_witness - 0089
cases hprev_right_witness_witness - 0090
cases hprev_right_witness_witness_left - 0091
cases hprev_right_witness_witness_left_left - 0092
exists x - 0093
exists x1 - 0094
split - 0095
split - 0096
split - 0097
apply le_succ - 0098
exact hprev_right_witness_witness_left_left_left - 0099
exact hprev_right_witness_witness_left_left_right - 0100
exact hprev_right_witness_witness_left_right - 0101
exact hprev_right_witness_witness_right