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. ∀ a. ∀ b. n = a · b → Lt(n,S B · S B) → Le(a,B) ∨ Le(b,B)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
3 occurrences
In local proof propositions
14 occurrences
Exact expanded native-PA statement
forall B n a b. n = a * b -> (exists bpr_gap_bb8fps_bound. bpr_gap_bb8fps_bound + S (n) = S B * S B) -> (exists bpr_le_gap_bb8fps_left. bpr_le_gap_bb8fps_left + (a) = (B)) \/ (exists bpr_le_gap_bb8fps_right. bpr_le_gap_bb8fps_right + (b) = (B))Proof neighborhood
Direct theorem prerequisites
BT000K le_total BT001G le_or_lt BT001M mul_le_mul_right BT001L mul_le_mul_left BT000F le_trans BT001I lt_not_leDirect 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 (6)
01Fix variables and assumptionsL1–6
02Use earlier factsL7–8
03Establish horderL9–10
Establish this local claim before using it. It is not an additional assumption.
- L9
have horder : Le(a,b) ∨ Le(b,a)Definitions: Le(a,b)Le(b,a)Original native command in the exact edition - L10
exact le_total
04Separate the logical casesL11–11
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L11
cases horder
05Use earlier factsL12–13
06Establish hsmallL14–15
Establish this local claim before using it. It is not an additional assumption.
- L14
have hsmall : Le(a,B) ∨ Lt(B,a)Definitions: Le(a,B)Lt(B,a)Original native command in the exact edition - L15
exact le_or_lt
07Separate the logical casesL16–17
08Use earlier factsL18–18
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L18
exact hsmall_left
09Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
exfalso
10Establish hsbL20–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
11Establish hfirstL27–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul right.
- L27
have hfirst : Le(S B · S B,a · S B)Definitions: Le(S B · S B,a · S B)Original native command in the exact edition - L28
specialize mul_le_mul_right (S B) - L29
specialize mul_le_mul_right a - L30
specialize mul_le_mul_right (S B) - L31
apply mul_le_mul_right - L32
exact hsmall_right
12Establish hsquareL33–36
Establish this local claim before using it. It is not an additional assumption.
- L33
have hsquare : Le(S B · S B,a · b)Definitions: Le(S B · S B,a · b)Original native command in the exact edition - L34
specialize mul_le_mul_left (S B) - L35
specialize mul_le_mul_left b - L36
specialize mul_le_mul_left a
13Establish hsecondL37–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul left.
- L37
have hsecond : Le(a · S B,a · b)Definitions: Le(a · S B,a · b)Original native command in the exact edition - L38
apply mul_le_mul_left - L39
exact hsb - L40
specialize le_trans (S B * S B) - L41
specialize le_trans (a * S B) - L42
specialize le_trans (a * b) - L43
apply le_trans - L44
exact hfirst - L45
exact hsecond - L46
rewrite <- hfactor at hsquare
14Use earlier factsL47–53
15Establish hsmallL54–55
Establish this local claim before using it. It is not an additional assumption.
- L54
have hsmall : Le(b,B) ∨ Lt(B,b)Definitions: Le(b,B)Lt(B,b)Original native command in the exact edition - L55
exact le_or_lt
16Separate the logical casesL56–57
17Use earlier factsL58–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
exact hsmall_left
18Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
exfalso
19Establish hsaL60–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
20Establish hfirstL67–72
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul right.
- L67
have hfirst : Le(S B · S B,a · S B)Definitions: Le(S B · S B,a · S B)Original native command in the exact edition - L68
specialize mul_le_mul_right (S B) - L69
specialize mul_le_mul_right a - L70
specialize mul_le_mul_right (S B) - L71
apply mul_le_mul_right - L72
exact hsa
21Establish hsecondL73–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul left.
- L73
have hsecond : Le(a · S B,a · b)Definitions: Le(a · S B,a · b)Original native command in the exact edition - L74
specialize mul_le_mul_left (S B) - L75
specialize mul_le_mul_left b - L76
specialize mul_le_mul_left a - L77
apply mul_le_mul_left - L78
exact hsmall_right
22Establish hsquareL79–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
- L79
have hsquare : Le(S B · S B,a · b)Definitions: Le(S B · S B,a · b)Original native command in the exact edition - L80
specialize le_trans (S B * S B) - L81
specialize le_trans (a * S B) - L82
specialize le_trans (a * b) - L83
apply le_trans - L84
exact hfirst - L85
exact hsecond - L86
rewrite <- hfactor at hsquare - L87
specialize lt_not_le n - L88
specialize lt_not_le (S B * S B)
Original defined command ledger · 91 lines
- 0001
intro B - 0002
intro n - 0003
intro a - 0004
intro b - 0005
intro hfactor - 0006
intro hbound - 0007
specialize le_total a - 0008
specialize le_total b - 0009
have horder : Le(a,b) ∨ Le(b,a)Exact native replay line
have horder : (exists k. k + a = b) \/ (exists k. k + b = a) - 0010
exact le_total - 0011
cases horder - 0012
specialize le_or_lt a - 0013
specialize le_or_lt B - 0014
have hsmall : Le(a,B) ∨ Lt(B,a)Exact native replay line
have hsmall : (exists k. k + a = B) \/ (exists k. k + S B = a) - 0015
exact le_or_lt - 0016
cases hsmall - 0017
left - 0018
exact hsmall_left - 0019
exfalso - 0020
have hsb : Lt(B,b)Exact native replay line
have hsb : exists k. k + S B = b - 0021
specialize le_trans (S B) - 0022
specialize le_trans a - 0023
specialize le_trans b - 0024
apply le_trans - 0025
exact hsmall_right - 0026
exact horder_left - 0027
have hfirst : Le(S B · S B,a · S B)Exact native replay line
have hfirst : exists k. k + S B * S B = a * S B - 0028
specialize mul_le_mul_right (S B) - 0029
specialize mul_le_mul_right a - 0030
specialize mul_le_mul_right (S B) - 0031
apply mul_le_mul_right - 0032
exact hsmall_right - 0033
have hsquare : Le(S B · S B,a · b)Exact native replay line
have hsquare : exists k. k + S B * S B = a * b - 0034
specialize mul_le_mul_left (S B) - 0035
specialize mul_le_mul_left b - 0036
specialize mul_le_mul_left a - 0037
have hsecond : Le(a · S B,a · b)Exact native replay line
have hsecond : exists k. k + a * S B = a * b - 0038
apply mul_le_mul_left - 0039
exact hsb - 0040
specialize le_trans (S B * S B) - 0041
specialize le_trans (a * S B) - 0042
specialize le_trans (a * b) - 0043
apply le_trans - 0044
exact hfirst - 0045
exact hsecond - 0046
rewrite <- hfactor at hsquare - 0047
specialize lt_not_le n - 0048
specialize lt_not_le (S B * S B) - 0049
apply lt_not_le - 0050
exact hbound - 0051
exact hsquare - 0052
specialize le_or_lt b - 0053
specialize le_or_lt B - 0054
have hsmall : Le(b,B) ∨ Lt(B,b)Exact native replay line
have hsmall : (exists k. k + b = B) \/ (exists k. k + S B = b) - 0055
exact le_or_lt - 0056
cases hsmall - 0057
right - 0058
exact hsmall_left - 0059
exfalso - 0060
have hsa : Lt(B,a)Exact native replay line
have hsa : exists k. k + S B = a - 0061
specialize le_trans (S B) - 0062
specialize le_trans b - 0063
specialize le_trans a - 0064
apply le_trans - 0065
exact hsmall_right - 0066
exact horder_right - 0067
have hfirst : Le(S B · S B,a · S B)Exact native replay line
have hfirst : exists k. k + S B * S B = a * S B - 0068
specialize mul_le_mul_right (S B) - 0069
specialize mul_le_mul_right a - 0070
specialize mul_le_mul_right (S B) - 0071
apply mul_le_mul_right - 0072
exact hsa - 0073
have hsecond : Le(a · S B,a · b)Exact native replay line
have hsecond : exists k. k + a * S B = a * b - 0074
specialize mul_le_mul_left (S B) - 0075
specialize mul_le_mul_left b - 0076
specialize mul_le_mul_left a - 0077
apply mul_le_mul_left - 0078
exact hsmall_right - 0079
have hsquare : Le(S B · S B,a · b)Exact native replay line
have hsquare : exists k. k + S B * S B = a * b - 0080
specialize le_trans (S B * S B) - 0081
specialize le_trans (a * S B) - 0082
specialize le_trans (a * b) - 0083
apply le_trans - 0084
exact hfirst - 0085
exact hsecond - 0086
rewrite <- hfactor at hsquare - 0087
specialize lt_not_le n - 0088
specialize lt_not_le (S B * S B) - 0089
apply lt_not_le - 0090
exact hbound - 0091
exact hsquare