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 this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 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