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 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))Structural proof guide
A factor pair below (B+1)^2 has a member at most B.
Direct prerequisites: le_total, le_or_lt, mul_le_mul_right, mul_le_mul_left, le_trans, lt_not_le. The authored body proceeds by case analysis (3), intermediate claims (11), equality transport (2).
Proof neighborhood
Direct dependencies
BT000K le_total BT001G le_or_lt BT001M mul_le_mul_right BT001L mul_le_mul_left BT000F le_trans BT001I lt_not_leDirect dependents
Formal native tactic body
Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.
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
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
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
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.
12Establish hsquareL33–36
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.
14Use earlier factsL47–53
15Establish hsmallL54–55
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
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.
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.
22Establish hsquareL79–88
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
Original exact 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 : (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 : (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 : 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 : 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 : 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 : 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 : (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 : 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 : 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 : 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 : 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