Exact expanded PA statement
forall p n q r j. n = p * q + r -> ~(r = 0) -> (exists edt_lt_gap_division_threshold_remainder_bound. edt_lt_gap_division_threshold_remainder_bound + S (r) = p) -> ((((exists edt_lt_gap_division_threshold_result_below. edt_lt_gap_division_threshold_result_below + S (p * S j) = n) -> (exists edt_le_gap_division_threshold_result_bounded. edt_le_gap_division_threshold_result_bounded + (S j) = q)) /\ ((exists edt_le_gap_division_threshold_result_bounded. edt_le_gap_division_threshold_result_bounded + (S j) = q) -> (exists edt_lt_gap_division_threshold_result_below. edt_lt_gap_division_threshold_result_below + S (p * S j) = n))))Structural proof guide
Generated structural guide
A positive multiple lies below a nonintegral division value exactly through the quotient threshold.
Use the direct prerequisites division_block_upper, lt_trans, le_or_lt, mul_le_mul_left, lt_not_le, nonzero_is_succ, add_comm, lt_of_le_of_lt as previously established PA formulas.
The proof proceeds by case analysis (2), intermediate claims (8), equality transport (3), certified simplification (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA006N division_block_upper PA006O lt_trans PA003B le_or_lt PA006M mul_le_mul_left PA003A lt_not_le PA001V nonzero_is_succ PA000F add_comm PA0033 lt_of_le_of_ltDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro p - 0002
intro n - 0003
intro q - 0004
intro r - 0005
intro j - 0006
intro hdivision - 0007
intro hr0 - 0008
intro hrp - 0009
split - 0010
intro hbelow - 0011
have hupper : exists edt_lt_gap_division_threshold_block_upper. edt_lt_gap_division_threshold_block_upper + S (n) = p * S q - 0012
rewrite hdivision - 0013
specialize division_block_upper p - 0014
specialize division_block_upper q - 0015
specialize division_block_upper r - 0016
apply division_block_upper - 0017
exact hrp - 0018
have hstrict : exists edt_lt_gap_division_threshold_strict_products. edt_lt_gap_division_threshold_strict_products + S (p * S j) = p * S q - 0019
specialize lt_trans (p * S j) - 0020
specialize lt_trans n - 0021
specialize lt_trans (p * S q) - 0022
apply lt_trans - 0023
exact hbelow - 0024
exact hupper - 0025
specialize le_or_lt (S j) - 0026
specialize le_or_lt q - 0027
cases le_or_lt - 0028
exact le_or_lt_left - 0029
have hqreverse : exists edt_lt_gap_division_threshold_quotient_reverse. edt_lt_gap_division_threshold_quotient_reverse + S (q) = S j - 0030
exact le_or_lt_right - 0031
have hqle : exists edt_le_gap_division_threshold_quotient_reverse_le. edt_le_gap_division_threshold_quotient_reverse_le + (S q) = S j - 0032
exact hqreverse - 0033
have hproduct_le : exists edt_le_gap_division_threshold_products_reverse_le. edt_le_gap_division_threshold_products_reverse_le + (p * S q) = p * S j - 0034
specialize mul_le_mul_left (S q) - 0035
specialize mul_le_mul_left (S j) - 0036
specialize mul_le_mul_left p - 0037
apply mul_le_mul_left - 0038
exact hqle - 0039
exfalso - 0040
specialize lt_not_le (p * S j) - 0041
specialize lt_not_le (p * S q) - 0042
apply lt_not_le - 0043
exact hstrict - 0044
exact hproduct_le - 0045
intro hbounded - 0046
have hproduct_le : exists edt_le_gap_division_threshold_products_forward_le. edt_le_gap_division_threshold_products_forward_le + (p * S j) = p * q - 0047
specialize mul_le_mul_left (S j) - 0048
specialize mul_le_mul_left q - 0049
specialize mul_le_mul_left p - 0050
apply mul_le_mul_left - 0051
exact hbounded - 0052
have hr_succ : exists t. r = S t - 0053
specialize nonzero_is_succ r - 0054
apply nonzero_is_succ - 0055
exact hr0 - 0056
cases hr_succ - 0057
have hpositive : exists edt_lt_gap_division_threshold_positive_remainder_gap. edt_lt_gap_division_threshold_positive_remainder_gap + S (p * q) = n - 0058
rewrite hdivision - 0059
exists x - 0060
rewrite hr_succ_witness - 0061
simp [add_comm] - 0062
specialize lt_of_le_of_lt (p * S j) - 0063
specialize lt_of_le_of_lt (p * q) - 0064
specialize lt_of_le_of_lt n - 0065
apply lt_of_le_of_lt - 0066
exact hproduct_le - 0067
exact hpositive