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 n q r. 2 * n = 3 * q + r -> exists c. ((((q) + (c) = (n)) /\ exists bqb_budget_gap_strong_result. bqb_budget_gap_strong_result + 2 * (n) = 6 * (c)))Structural proof guide
The equation 2*n=3*q+r constructively yields q+c=n and 2*n<=6*c.
Direct prerequisites: mul_le_mul_right, le_add_right, le_trans, succ_ne_zero, mul_le_cancel_left_nonzero, add_comm, mul_add, three_mul_eq_two_mul_add_self, add_assoc, add_left_cancel, add_le_add_right, mul_le_mul_left, mul_assoc. The authored body proceeds by case analysis (1), intermediate claims (18), equality transport (6), closed numeral normalization (2).
Proof neighborhood
Direct dependencies
BT001M mul_le_mul_right BT0013 le_add_right BT000F le_trans BT000C succ_ne_zero BT00RD mul_le_cancel_left_nonzero BT0002 add_comm BT0007 mul_add BT00RE three_mul_eq_two_mul_add_self BT0003 add_assoc BT000V add_left_cancel BT0014 add_le_add_right BT001L mul_le_mul_left BT0008 mul_assocDirect 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 (13)
01Fix variables and assumptionsL1–4
02Establish hcoeffL5–5
Establish this local claim before using it. It is not an additional assumption.
- L5
have hcoeff : exists k. k + 2 = 3
03Construct an explicit witnessL6–6
Supply the displayed value, then prove that it has the required property.
- L6
exists 1
04Calculate and transport equalitiesL7–7
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L7
norm_num
05Establish h23L8–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le mul right.
06Establish h3rL14–15
07Establish hpreL16–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
08Establish h2nL23–25
09Establish htwo0L26–30
10Establish hqnL31–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul le cancel left nonzero.
11Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
cases hqn
12Establish hcompL39–42
13Establish hbalanceL43–48
14Establish hthreeqL49–50
15Establish hbalance2L51–55
16Establish hreduceL56–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add left cancel.
17Establish hq2cL62–62
Establish this local claim before using it. It is not an additional assumption.
- L62
have hq2c : exists k. k + q = 2 * x
18Construct an explicit witnessL63–63
Supply the displayed value, then prove that it has the required property.
- L63
exists r
19Calculate and transport equalitiesL64–64
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L64
trans q + r
20Use earlier factsL65–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
apply add_comm
21Calculate and transport equalitiesL66–66
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L66
symm
22Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact hreduce
23Establish hplusL68–73
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add le add right.
24Establish hthreexL74–75
25Establish hn3cL76–79
26Establish hscaledL80–82
27Establish hfactorL83–89
28Construct an explicit witnessL90–90
Supply the displayed value, then prove that it has the required property.
- L90
exists x
29Separate the logical casesL91–91
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L91
split
30Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hcomp
31Calculate and transport equalitiesL93–93
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L93
rewrite hfactor at hscaled
32Use earlier factsL94–94
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
exact hscaled
Original exact command ledger · 94 lines
- 0001
intro n - 0002
intro q - 0003
intro r - 0004
intro hdiv - 0005
have hcoeff : exists k. k + 2 = 3 - 0006
exists 1 - 0007
norm_num - 0008
have h23 : exists k. k + 2 * q = 3 * q - 0009
specialize mul_le_mul_right 2 - 0010
specialize mul_le_mul_right 3 - 0011
specialize mul_le_mul_right q - 0012
apply mul_le_mul_right - 0013
exact hcoeff - 0014
have h3r : exists k. k + 3 * q = 3 * q + r - 0015
apply le_add_right - 0016
have hpre : exists k. k + 2 * q = 3 * q + r - 0017
specialize le_trans (2 * q) - 0018
specialize le_trans (3 * q) - 0019
specialize le_trans (3 * q + r) - 0020
apply le_trans - 0021
exact h23 - 0022
exact h3r - 0023
have h2n : exists k. k + 2 * q = 2 * n - 0024
rewrite hdiv - 0025
exact hpre - 0026
have htwo0 : ~(2 = 0) - 0027
intro hzero - 0028
specialize succ_ne_zero 1 - 0029
apply succ_ne_zero - 0030
exact hzero - 0031
have hqn : exists k. k + q = n - 0032
specialize mul_le_cancel_left_nonzero 2 - 0033
specialize mul_le_cancel_left_nonzero q - 0034
specialize mul_le_cancel_left_nonzero n - 0035
apply mul_le_cancel_left_nonzero - 0036
exact htwo0 - 0037
exact h2n - 0038
cases hqn - 0039
have hcomp : q + x = n - 0040
trans x + q - 0041
apply add_comm - 0042
exact hqn_witness - 0043
have hbalance : 2 * q + 2 * x = 3 * q + r - 0044
trans 2 * (q + x) - 0045
symm - 0046
apply mul_add - 0047
rewrite hcomp - 0048
exact hdiv - 0049
have hthreeq : 3 * q = 2 * q + q - 0050
apply three_mul_eq_two_mul_add_self - 0051
have hbalance2 : 2 * q + 2 * x = 2 * q + (q + r) - 0052
trans 3 * q + r - 0053
exact hbalance - 0054
rewrite hthreeq - 0055
apply add_assoc - 0056
have hreduce : 2 * x = q + r - 0057
specialize add_left_cancel (2 * q) - 0058
specialize add_left_cancel (2 * x) - 0059
specialize add_left_cancel (q + r) - 0060
apply add_left_cancel - 0061
exact hbalance2 - 0062
have hq2c : exists k. k + q = 2 * x - 0063
exists r - 0064
trans q + r - 0065
apply add_comm - 0066
symm - 0067
exact hreduce - 0068
have hplus : exists k. k + (q + x) = 2 * x + x - 0069
specialize add_le_add_right q - 0070
specialize add_le_add_right (2 * x) - 0071
specialize add_le_add_right x - 0072
apply add_le_add_right - 0073
exact hq2c - 0074
have hthreex : 3 * x = 2 * x + x - 0075
apply three_mul_eq_two_mul_add_self - 0076
have hn3c : exists k. k + n = 3 * x - 0077
rewrite <- hcomp - 0078
rewrite hthreex - 0079
exact hplus - 0080
have hscaled : exists k. k + 2 * n = 2 * (3 * x) - 0081
apply mul_le_mul_left - 0082
exact hn3c - 0083
have hfactor : 2 * (3 * x) = 6 * x - 0084
trans (2 * 3) * x - 0085
symm - 0086
apply mul_assoc - 0087
congr - 0088
norm_num - 0089
refl - 0090
exists x - 0091
split - 0092
exact hcomp - 0093
rewrite hfactor at hscaled - 0094
exact hscaled