Exact expanded PA statement
forall p n F. p = S n -> ((~(p = 1) /\ forall wip_prime_left_wer_shape_prime wip_prime_right_wer_shape_prime. p = wip_prime_left_wer_shape_prime * wip_prime_right_wer_shape_prime -> wip_prime_left_wer_shape_prime = 1 \/ wip_prime_right_wer_shape_prime = 1)) -> (exists ff_b_wer_final_factorial ff_c_wer_final_factorial. ((forall ff_i_wer_final_factorial_range. (exists ff_lt_wer_final_factorial_range_bound. ff_lt_wer_final_factorial_range_bound + S ff_i_wer_final_factorial_range = n) -> (((exists ff_h_wer_final_factorial_range_decoded. ff_h_wer_final_factorial_range_decoded + S (1 + ff_i_wer_final_factorial_range) = S ((S (ff_i_wer_final_factorial_range)) * ff_c_wer_final_factorial)) /\ exists ff_q_wer_final_factorial_range_decoded. ff_b_wer_final_factorial = ff_q_wer_final_factorial_range_decoded * S ((S (ff_i_wer_final_factorial_range)) * ff_c_wer_final_factorial) + (1 + ff_i_wer_final_factorial_range)))) /\ (exists ff_u_wer_final_factorial_product ff_v_wer_final_factorial_product. ((((exists ff_h_wer_final_factorial_product_start. ff_h_wer_final_factorial_product_start + S (1) = S ((S (0)) * ff_v_wer_final_factorial_product)) /\ exists ff_q_wer_final_factorial_product_start. ff_u_wer_final_factorial_product = ff_q_wer_final_factorial_product_start * S ((S (0)) * ff_v_wer_final_factorial_product) + (1))) /\ ((((exists ff_h_wer_final_factorial_product_terminal. ff_h_wer_final_factorial_product_terminal + S (F) = S ((S (n)) * ff_v_wer_final_factorial_product)) /\ exists ff_q_wer_final_factorial_product_terminal. ff_u_wer_final_factorial_product = ff_q_wer_final_factorial_product_terminal * S ((S (n)) * ff_v_wer_final_factorial_product) + (F))) /\ forall ff_i_wer_final_factorial_product. (exists ff_lt_wer_final_factorial_product_bound. ff_lt_wer_final_factorial_product_bound + S ff_i_wer_final_factorial_product = n) -> exists ff_p_wer_final_factorial_product ff_r_wer_final_factorial_product ff_s_wer_final_factorial_product. ((((exists ff_h_wer_final_factorial_product_factor. ff_h_wer_final_factorial_product_factor + S (ff_p_wer_final_factorial_product) = S ((S (ff_i_wer_final_factorial_product)) * ff_c_wer_final_factorial)) /\ exists ff_q_wer_final_factorial_product_factor. ff_b_wer_final_factorial = ff_q_wer_final_factorial_product_factor * S ((S (ff_i_wer_final_factorial_product)) * ff_c_wer_final_factorial) + (ff_p_wer_final_factorial_product))) /\ ((((exists ff_h_wer_final_factorial_product_partial. ff_h_wer_final_factorial_product_partial + S (ff_r_wer_final_factorial_product) = S ((S (ff_i_wer_final_factorial_product)) * ff_v_wer_final_factorial_product)) /\ exists ff_q_wer_final_factorial_product_partial. ff_u_wer_final_factorial_product = ff_q_wer_final_factorial_product_partial * S ((S (ff_i_wer_final_factorial_product)) * ff_v_wer_final_factorial_product) + (ff_r_wer_final_factorial_product))) /\ ((((exists ff_h_wer_final_factorial_product_successor. ff_h_wer_final_factorial_product_successor + S (ff_s_wer_final_factorial_product) = S ((S (S ff_i_wer_final_factorial_product)) * ff_v_wer_final_factorial_product)) /\ exists ff_q_wer_final_factorial_product_successor. ff_u_wer_final_factorial_product = ff_q_wer_final_factorial_product_successor * S ((S (S ff_i_wer_final_factorial_product)) * ff_v_wer_final_factorial_product) + (ff_s_wer_final_factorial_product))) /\ ff_s_wer_final_factorial_product = ff_r_wer_final_factorial_product * ff_p_wer_final_factorial_product)))))))) -> (exists wpp_mod_left_wer_final_mod wpp_mod_right_wer_final_mod. (F) + p * wpp_mod_left_wer_final_mod = (n) + p * wpp_mod_right_wer_final_mod)Structural proof guide
Generated structural guide
Wilson's factorial congruence for every prime, with p=2 handled before terminal pairing.
Use the direct prerequisites prime_two_or_terminal_odd_shape, succ_injective, factorial_one_value, mod_eq_refl, prime_terminal_range_two_product_mod_one_exists, beta_range_two_product_restore_last, mod_one_product_restore_predecessor as previously established PA formulas.
The proof proceeds by case analysis (7), intermediate claims (7), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00A2 prime_two_or_terminal_odd_shape PA003V succ_injective PA00A3 factorial_one_value PA0023 mod_eq_refl PA00BF prime_terminal_range_two_product_mod_one_exists PA00BH beta_range_two_product_restore_last PA00BI mod_one_product_restore_predecessorDirect 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 F - 0004
intro hpn - 0005
intro hp - 0006
intro hfactorial - 0007
have hshape : p = 2 \/ exists m. p = S (S (S (m + m))) - 0008
specialize prime_two_or_terminal_odd_shape p - 0009
apply prime_two_or_terminal_odd_shape - 0010
exact hp - 0011
cases hshape - 0012
have hn : n = 1 - 0013
specialize succ_injective n - 0014
specialize succ_injective 1 - 0015
apply succ_injective - 0016
trans p - 0017
symm - 0018
exact hpn - 0019
trans 2 - 0020
exact hshape_left - 0021
refl - 0022
have hfone : F = 1 - 0023
specialize factorial_one_value n - 0024
specialize factorial_one_value F - 0025
apply factorial_one_value - 0026
exact hn - 0027
exact hfactorial - 0028
have hfn : F = n - 0029
trans 1 - 0030
exact hfone - 0031
symm - 0032
exact hn - 0033
rewrite hfn - 0034
specialize mod_eq_refl p - 0035
specialize mod_eq_refl n - 0036
exact mod_eq_refl - 0037
cases hshape_right - 0038
have hnterminal : n = S (S (x + x)) - 0039
specialize succ_injective n - 0040
specialize succ_injective (S (S (x + x))) - 0041
apply succ_injective - 0042
trans p - 0043
symm - 0044
exact hpn - 0045
exact hshape_right_witness - 0046
have hterminal_product : exists z d P. ((forall wtp_range_index_wer_final_terminal_range. (exists wtp_range_gap_wer_final_terminal_range. wtp_range_gap_wer_final_terminal_range + S wtp_range_index_wer_final_terminal_range = x + x) -> (((exists ff_h_wer_final_terminal_range_decoded. ff_h_wer_final_terminal_range_decoded + S (2 + wtp_range_index_wer_final_terminal_range) = S ((S (wtp_range_index_wer_final_terminal_range)) * d)) /\ exists ff_q_wer_final_terminal_range_decoded. z = ff_q_wer_final_terminal_range_decoded * S ((S (wtp_range_index_wer_final_terminal_range)) * d) + (2 + wtp_range_index_wer_final_terminal_range)))) /\ (((exists ff_u_wer_final_terminal_product ff_v_wer_final_terminal_product. ((((exists ff_h_wer_final_terminal_product_start. ff_h_wer_final_terminal_product_start + S (1) = S ((S (0)) * ff_v_wer_final_terminal_product)) /\ exists ff_q_wer_final_terminal_product_start. ff_u_wer_final_terminal_product = ff_q_wer_final_terminal_product_start * S ((S (0)) * ff_v_wer_final_terminal_product) + (1))) /\ ((((exists ff_h_wer_final_terminal_product_terminal. ff_h_wer_final_terminal_product_terminal + S (P) = S ((S (x + x)) * ff_v_wer_final_terminal_product)) /\ exists ff_q_wer_final_terminal_product_terminal. ff_u_wer_final_terminal_product = ff_q_wer_final_terminal_product_terminal * S ((S (x + x)) * ff_v_wer_final_terminal_product) + (P))) /\ forall ff_i_wer_final_terminal_product. (exists ff_lt_wer_final_terminal_product_bound. ff_lt_wer_final_terminal_product_bound + S ff_i_wer_final_terminal_product = x + x) -> exists ff_p_wer_final_terminal_product ff_r_wer_final_terminal_product ff_s_wer_final_terminal_product. ((((exists ff_h_wer_final_terminal_product_factor. ff_h_wer_final_terminal_product_factor + S (ff_p_wer_final_terminal_product) = S ((S (ff_i_wer_final_terminal_product)) * d)) /\ exists ff_q_wer_final_terminal_product_factor. z = ff_q_wer_final_terminal_product_factor * S ((S (ff_i_wer_final_terminal_product)) * d) + (ff_p_wer_final_terminal_product))) /\ ((((exists ff_h_wer_final_terminal_product_partial. ff_h_wer_final_terminal_product_partial + S (ff_r_wer_final_terminal_product) = S ((S (ff_i_wer_final_terminal_product)) * ff_v_wer_final_terminal_product)) /\ exists ff_q_wer_final_terminal_product_partial. ff_u_wer_final_terminal_product = ff_q_wer_final_terminal_product_partial * S ((S (ff_i_wer_final_terminal_product)) * ff_v_wer_final_terminal_product) + (ff_r_wer_final_terminal_product))) /\ ((((exists ff_h_wer_final_terminal_product_successor. ff_h_wer_final_terminal_product_successor + S (ff_s_wer_final_terminal_product) = S ((S (S ff_i_wer_final_terminal_product)) * ff_v_wer_final_terminal_product)) /\ exists ff_q_wer_final_terminal_product_successor. ff_u_wer_final_terminal_product = ff_q_wer_final_terminal_product_successor * S ((S (S ff_i_wer_final_terminal_product)) * ff_v_wer_final_terminal_product) + (ff_s_wer_final_terminal_product))) /\ ff_s_wer_final_terminal_product = ff_r_wer_final_terminal_product * ff_p_wer_final_terminal_product)))))) /\ (exists wpp_mod_left_wer_final_terminal_mod wpp_mod_right_wer_final_terminal_mod. (P) + p * wpp_mod_left_wer_final_terminal_mod = (1) + p * wpp_mod_right_wer_final_terminal_mod)))) - 0047
specialize prime_terminal_range_two_product_mod_one_exists p - 0048
specialize prime_terminal_range_two_product_mod_one_exists n - 0049
specialize prime_terminal_range_two_product_mod_one_exists x - 0050
apply prime_terminal_range_two_product_mod_one_exists - 0051
exact hpn - 0052
exact hp - 0053
exact hnterminal - 0054
cases hterminal_product - 0055
cases hterminal_product_witness - 0056
cases hterminal_product_witness_witness - 0057
cases hterminal_product_witness_witness_witness - 0058
cases hterminal_product_witness_witness_witness_right - 0059
have hrestored : F = x3 * n - 0060
specialize beta_range_two_product_restore_last x1 - 0061
specialize beta_range_two_product_restore_last x2 - 0062
specialize beta_range_two_product_restore_last (x + x) - 0063
specialize beta_range_two_product_restore_last x3 - 0064
specialize beta_range_two_product_restore_last n - 0065
specialize beta_range_two_product_restore_last F - 0066
apply beta_range_two_product_restore_last - 0067
exact hnterminal - 0068
exact hterminal_product_witness_witness_witness_left - 0069
exact hterminal_product_witness_witness_witness_right_left - 0070
exact hfactorial - 0071
specialize mod_one_product_restore_predecessor p - 0072
specialize mod_one_product_restore_predecessor x3 - 0073
specialize mod_one_product_restore_predecessor n - 0074
specialize mod_one_product_restore_predecessor F - 0075
apply mod_one_product_restore_predecessor - 0076
exact hrestored - 0077
exact hterminal_product_witness_witness_witness_right_right