Exact expanded PA statement
forall p a x q r. (exists sdp_odd_prime_like_modulus. p = 2 * sdp_odd_prime_like_modulus + 1) -> (exists sdp_odd_scale. a = 2 * sdp_odd_scale + 1) -> a * x = p * q + r -> (exists sdp_u_product_division_result sdp_v_product_division_result. (x) + 2 * sdp_u_product_division_result = (q + r) + 2 * sdp_v_product_division_result)Structural proof guide
Generated structural guide
Odd scale and modulus transport an exact division equation to x == q+r modulo two.
Use the direct prerequisites parity_cases, odd_multiplier_parity_iff, odd_division_parity_iff, matching_parity_mod_two as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0057 parity_cases PA00C9 odd_multiplier_parity_iff PA00CG odd_division_parity_iff PA00CJ matching_parity_mod_twoDirect 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 a - 0003
intro x - 0004
intro q - 0005
intro r - 0006
intro hp - 0007
intro ha - 0008
intro hdivision - 0009
have hproduct : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even)) /\ ((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1)) /\ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - 0010
specialize odd_multiplier_parity_iff a - 0011
specialize odd_multiplier_parity_iff x - 0012
apply odd_multiplier_parity_iff - 0013
exact ha - 0014
have hquotient : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) /\ ((exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1)) /\ ((exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - 0015
specialize odd_division_parity_iff p - 0016
specialize odd_division_parity_iff q - 0017
specialize odd_division_parity_iff r - 0018
specialize odd_division_parity_iff (a * x) - 0019
apply odd_division_parity_iff - 0020
exact hp - 0021
exact hdivision - 0022
cases hproduct - 0023
cases hproduct_left - 0024
cases hproduct_right - 0025
cases hquotient - 0026
cases hquotient_left - 0027
cases hquotient_right - 0028
have hxcases : exists k. x = 2 * k \/ x = 2 * k + 1 - 0029
specialize parity_cases x - 0030
exact parity_cases - 0031
cases hxcases - 0032
cases hxcases_witness - 0033
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1))) - 0034
left - 0035
split - 0036
exists x1 - 0037
exact hxcases_witness_left - 0038
apply hquotient_left_left - 0039
apply hproduct_left_right - 0040
exists x1 - 0041
exact hxcases_witness_left - 0042
specialize matching_parity_mod_two x - 0043
specialize matching_parity_mod_two (q + r) - 0044
apply matching_parity_mod_two - 0045
exact hmatching - 0046
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1))) - 0047
right - 0048
split - 0049
exists x1 - 0050
exact hxcases_witness_right - 0051
apply hquotient_right_left - 0052
apply hproduct_right_right - 0053
exists x1 - 0054
exact hxcases_witness_right - 0055
specialize matching_parity_mod_two x - 0056
specialize matching_parity_mod_two (q + r) - 0057
apply matching_parity_mod_two - 0058
exact hmatching