Exact expanded PA statement
forall p h a x q r. p = 2 * h + 1 -> a * x = q * p + r -> (exists gsh_lt_gap_product_remainder. gsh_lt_gap_product_remainder + S r = p) -> ~(r = 0) -> (exists m. (exists gsh_lt_gap_product_positive. gsh_lt_gap_product_positive + S 0 = m) /\ ((exists gsh_le_gap_product_bounded. gsh_le_gap_product_bounded + m = h) /\ ((exists gsh_mod_left_product_lower gsh_mod_right_product_lower. (a * x) + p * gsh_mod_left_product_lower = (m) + p * gsh_mod_right_product_lower) \/ (exists gsh_mod_left_product_upper gsh_mod_right_product_upper. (a * x) + p * gsh_mod_left_product_upper = ((2 * h) * m) + p * gsh_mod_right_product_upper))))Structural proof guide
Generated structural guide
A nonzero canonical product remainder has a positive half-range magnitude, with its sign recorded by a lower/reflected congruence disjunction.
Use the direct prerequisites add_assoc, add_comm, mul_succ_left, mul_one, le_or_lt, one_le_of_ne_zero, remainder_decomposition_to_mod_eq, odd_upper_remainder_reflection, mod_eq_trans as previously established PA formulas.
The proof proceeds by case analysis (4), intermediate claims (5), equality transport (4), certified simplification (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0009 add_assoc PA000F add_comm PA000G mul_succ_left PA0002 mul_one PA003B le_or_lt PA002L one_le_of_ne_zero PA003C remainder_decomposition_to_mod_eq PA006Y odd_upper_remainder_reflection PA0024 mod_eq_transDirect 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 h - 0003
intro a - 0004
intro x - 0005
intro q - 0006
intro r - 0007
intro hp - 0008
intro hdecomp - 0009
intro hrp - 0010
intro hr0 - 0011
have hcanonical : exists gsh_mod_left_canonical_remainder gsh_mod_right_canonical_remainder. (a * x) + p * gsh_mod_left_canonical_remainder = (r) + p * gsh_mod_right_canonical_remainder - 0012
specialize remainder_decomposition_to_mod_eq p - 0013
specialize remainder_decomposition_to_mod_eq (a * x) - 0014
specialize remainder_decomposition_to_mod_eq q - 0015
specialize remainder_decomposition_to_mod_eq r - 0016
apply remainder_decomposition_to_mod_eq - 0017
exact hdecomp - 0018
have hsplit : (exists d. d + r = h) \/ (exists d. d + S h = r) - 0019
specialize le_or_lt r - 0020
specialize le_or_lt h - 0021
exact le_or_lt - 0022
cases hsplit - 0023
exists r - 0024
split - 0025
specialize one_le_of_ne_zero r - 0026
apply one_le_of_ne_zero - 0027
exact hr0 - 0028
split - 0029
exact hsplit_left - 0030
left - 0031
exact hcanonical - 0032
have hreflection : exists m. (exists gsh_lt_gap_reflection_positive. gsh_lt_gap_reflection_positive + S 0 = m) /\ ((exists gsh_le_gap_reflection_bounded. gsh_le_gap_reflection_bounded + m = h) /\ r + m = p) - 0033
specialize odd_upper_remainder_reflection p - 0034
specialize odd_upper_remainder_reflection h - 0035
specialize odd_upper_remainder_reflection r - 0036
apply odd_upper_remainder_reflection - 0037
exact hp - 0038
exact hrp - 0039
exact hsplit_right - 0040
cases hreflection - 0041
cases hreflection_witness - 0042
cases hreflection_witness_right - 0043
have hreflected_remainder : exists gsh_mod_left_reflected_remainder gsh_mod_right_reflected_remainder. (r) + p * gsh_mod_left_reflected_remainder = ((2 * h) * x1) + p * gsh_mod_right_reflected_remainder - 0044
exists x1 - 0045
exists 1 - 0046
trans (r + x1) + (2 * h) * x1 - 0047
rewrite hp - 0048
trans r + (x1 + (2 * h) * x1) - 0049
simp - 0050
specialize mul_succ_left (2 * h) - 0051
specialize mul_succ_left x1 - 0052
rewrite mul_succ_left - 0053
congr - 0054
refl - 0055
apply add_comm - 0056
symm - 0057
apply add_assoc - 0058
rewrite hreflection_witness_right_right - 0059
specialize mul_one p - 0060
rewrite mul_one - 0061
apply add_comm - 0062
have hreflected_product : exists gsh_mod_left_reflected_product gsh_mod_right_reflected_product. (a * x) + p * gsh_mod_left_reflected_product = ((2 * h) * x1) + p * gsh_mod_right_reflected_product - 0063
specialize mod_eq_trans p - 0064
specialize mod_eq_trans (a * x) - 0065
specialize mod_eq_trans r - 0066
specialize mod_eq_trans ((2 * h) * x1) - 0067
apply mod_eq_trans - 0068
exact hcanonical - 0069
exact hreflected_remainder - 0070
exists x1 - 0071
split - 0072
exact hreflection_witness_left - 0073
split - 0074
exact hreflection_witness_right_left - 0075
right - 0076
exact hreflected_product