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