Exact expanded PA statement
forall p q h k i. p = 2 * h + 1 -> q = 2 * k + 1 -> ((~(p = 1) /\ forall frp_prime_left_row_indicator_prime_p frp_prime_right_row_indicator_prime_p. p = frp_prime_left_row_indicator_prime_p * frp_prime_right_row_indicator_prime_p -> frp_prime_left_row_indicator_prime_p = 1 \/ frp_prime_right_row_indicator_prime_p = 1)) -> ((~(q = 1) /\ forall frp_prime_left_row_indicator_prime_q frp_prime_right_row_indicator_prime_q. q = frp_prime_left_row_indicator_prime_q * frp_prime_right_row_indicator_prime_q -> frp_prime_left_row_indicator_prime_q = 1 \/ frp_prime_right_row_indicator_prime_q = 1)) -> ~(p = q) -> (exists eri_gap_row_indicator_i_bound. eri_gap_row_indicator_i_bound + S (i) = h) -> (exists rb rc n. ((forall eri_column_row_indicator_counted_prefix. (exists eri_gap_row_indicator_counted_prefix_bound. eri_gap_row_indicator_counted_prefix_bound + S (eri_column_row_indicator_counted_prefix) = k) -> exists eri_bit_row_indicator_counted_prefix. ((((exists ff_h_eri_row_indicator_counted_prefix_decoded. ff_h_eri_row_indicator_counted_prefix_decoded + S (eri_bit_row_indicator_counted_prefix) = S ((S (eri_column_row_indicator_counted_prefix)) * rc)) /\ exists ff_q_eri_row_indicator_counted_prefix_decoded. rb = ff_q_eri_row_indicator_counted_prefix_decoded * S ((S (eri_column_row_indicator_counted_prefix)) * rc) + (eri_bit_row_indicator_counted_prefix))) /\ (((eri_bit_row_indicator_counted_prefix = 0 /\ ((exists eri_gap_row_indicator_counted_prefix_choice_left. eri_gap_row_indicator_counted_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_counted_prefix) /\ ~(exists eri_gap_row_indicator_counted_prefix_choice_right. eri_gap_row_indicator_counted_prefix_choice_right + S (p * S eri_column_row_indicator_counted_prefix) = q * S i))) \/ (eri_bit_row_indicator_counted_prefix = 1 /\ ((exists eri_gap_row_indicator_counted_prefix_choice_right. eri_gap_row_indicator_counted_prefix_choice_right + S (p * S eri_column_row_indicator_counted_prefix) = q * S i) /\ ~(exists eri_gap_row_indicator_counted_prefix_choice_left. eri_gap_row_indicator_counted_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_counted_prefix))))))) /\ (((exists ff_u_row_indicator_count_relation_sum ff_v_row_indicator_count_relation_sum. ((((exists ff_h_row_indicator_count_relation_sum_start. ff_h_row_indicator_count_relation_sum_start + S (0) = S ((S (0)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_start. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_start * S ((S (0)) * ff_v_row_indicator_count_relation_sum) + (0))) /\ ((((exists ff_h_row_indicator_count_relation_sum_terminal. ff_h_row_indicator_count_relation_sum_terminal + S (n) = S ((S (k)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_terminal. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_terminal * S ((S (k)) * ff_v_row_indicator_count_relation_sum) + (n))) /\ forall ff_i_row_indicator_count_relation_sum. (exists ff_lt_row_indicator_count_relation_sum_bound. ff_lt_row_indicator_count_relation_sum_bound + S ff_i_row_indicator_count_relation_sum = k) -> exists ff_a_row_indicator_count_relation_sum ff_r_row_indicator_count_relation_sum ff_s_row_indicator_count_relation_sum. ((((exists ff_h_row_indicator_count_relation_sum_summand. ff_h_row_indicator_count_relation_sum_summand + S (ff_a_row_indicator_count_relation_sum) = S ((S (ff_i_row_indicator_count_relation_sum)) * rc)) /\ exists ff_q_row_indicator_count_relation_sum_summand. rb = ff_q_row_indicator_count_relation_sum_summand * S ((S (ff_i_row_indicator_count_relation_sum)) * rc) + (ff_a_row_indicator_count_relation_sum))) /\ ((((exists ff_h_row_indicator_count_relation_sum_partial. ff_h_row_indicator_count_relation_sum_partial + S (ff_r_row_indicator_count_relation_sum) = S ((S (ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_partial. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_partial * S ((S (ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum) + (ff_r_row_indicator_count_relation_sum))) /\ ((((exists ff_h_row_indicator_count_relation_sum_successor. ff_h_row_indicator_count_relation_sum_successor + S (ff_s_row_indicator_count_relation_sum) = S ((S (S ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_successor. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_successor * S ((S (S ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum) + (ff_s_row_indicator_count_relation_sum))) /\ ff_s_row_indicator_count_relation_sum = ff_r_row_indicator_count_relation_sum + ff_a_row_indicator_count_relation_sum)))))) /\ (forall ff_i_row_indicator_count_relation_bits. (exists ff_lt_row_indicator_count_relation_bits_bound. ff_lt_row_indicator_count_relation_bits_bound + S ff_i_row_indicator_count_relation_bits = k) -> exists ff_bit_row_indicator_count_relation_bits. ((((exists ff_h_row_indicator_count_relation_bits_decoded. ff_h_row_indicator_count_relation_bits_decoded + S (ff_bit_row_indicator_count_relation_bits) = S ((S (ff_i_row_indicator_count_relation_bits)) * rc)) /\ exists ff_q_row_indicator_count_relation_bits_decoded. rb = ff_q_row_indicator_count_relation_bits_decoded * S ((S (ff_i_row_indicator_count_relation_bits)) * rc) + (ff_bit_row_indicator_count_relation_bits))) /\ (ff_bit_row_indicator_count_relation_bits = 0 \/ ff_bit_row_indicator_count_relation_bits = 1)))))))Structural proof guide
Generated structural guide
Every fixed half-rectangle row has an exact beta-coded indicator and BitCount witness.
Use the direct prerequisites distinct_odd_prime_half_row_indicator_choices, eisenstein_row_indicator_prefix_exists, eisenstein_row_indicator_prefix_all_bits, bit_count_exists as previously established PA formulas.
The proof proceeds by case analysis (3), intermediate claims (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00DB distinct_odd_prime_half_row_indicator_choices PA00DD eisenstein_row_indicator_prefix_exists PA00DE eisenstein_row_indicator_prefix_all_bits PA003I bit_count_existsDirect 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 q - 0003
intro h - 0004
intro k - 0005
intro i - 0006
intro hpodd - 0007
intro hqodd - 0008
intro hp - 0009
intro hq - 0010
intro hpq - 0011
intro hi - 0012
have hchoices : forall eri_column_row_indicator_concrete_choices. (exists eri_gap_row_indicator_concrete_choices_bound. eri_gap_row_indicator_concrete_choices_bound + S (eri_column_row_indicator_concrete_choices) = k) -> exists eri_bit_row_indicator_concrete_choices. (((eri_bit_row_indicator_concrete_choices = 0 /\ ((exists eri_gap_row_indicator_concrete_choices_choice_left. eri_gap_row_indicator_concrete_choices_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_choices) /\ ~(exists eri_gap_row_indicator_concrete_choices_choice_right. eri_gap_row_indicator_concrete_choices_choice_right + S (p * S eri_column_row_indicator_concrete_choices) = q * S i))) \/ (eri_bit_row_indicator_concrete_choices = 1 /\ ((exists eri_gap_row_indicator_concrete_choices_choice_right. eri_gap_row_indicator_concrete_choices_choice_right + S (p * S eri_column_row_indicator_concrete_choices) = q * S i) /\ ~(exists eri_gap_row_indicator_concrete_choices_choice_left. eri_gap_row_indicator_concrete_choices_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_choices))))) - 0013
specialize distinct_odd_prime_half_row_indicator_choices p - 0014
specialize distinct_odd_prime_half_row_indicator_choices q - 0015
specialize distinct_odd_prime_half_row_indicator_choices h - 0016
specialize distinct_odd_prime_half_row_indicator_choices k - 0017
specialize distinct_odd_prime_half_row_indicator_choices i - 0018
apply distinct_odd_prime_half_row_indicator_choices - 0019
exact hpodd - 0020
exact hqodd - 0021
exact hp - 0022
exact hq - 0023
exact hpq - 0024
exact hi - 0025
have hprefix_exists : exists rb rc. (forall eri_column_row_indicator_concrete_prefix. (exists eri_gap_row_indicator_concrete_prefix_bound. eri_gap_row_indicator_concrete_prefix_bound + S (eri_column_row_indicator_concrete_prefix) = k) -> exists eri_bit_row_indicator_concrete_prefix. ((((exists ff_h_eri_row_indicator_concrete_prefix_decoded. ff_h_eri_row_indicator_concrete_prefix_decoded + S (eri_bit_row_indicator_concrete_prefix) = S ((S (eri_column_row_indicator_concrete_prefix)) * rc)) /\ exists ff_q_eri_row_indicator_concrete_prefix_decoded. rb = ff_q_eri_row_indicator_concrete_prefix_decoded * S ((S (eri_column_row_indicator_concrete_prefix)) * rc) + (eri_bit_row_indicator_concrete_prefix))) /\ (((eri_bit_row_indicator_concrete_prefix = 0 /\ ((exists eri_gap_row_indicator_concrete_prefix_choice_left. eri_gap_row_indicator_concrete_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_prefix) /\ ~(exists eri_gap_row_indicator_concrete_prefix_choice_right. eri_gap_row_indicator_concrete_prefix_choice_right + S (p * S eri_column_row_indicator_concrete_prefix) = q * S i))) \/ (eri_bit_row_indicator_concrete_prefix = 1 /\ ((exists eri_gap_row_indicator_concrete_prefix_choice_right. eri_gap_row_indicator_concrete_prefix_choice_right + S (p * S eri_column_row_indicator_concrete_prefix) = q * S i) /\ ~(exists eri_gap_row_indicator_concrete_prefix_choice_left. eri_gap_row_indicator_concrete_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_prefix))))))) - 0026
specialize eisenstein_row_indicator_prefix_exists p - 0027
specialize eisenstein_row_indicator_prefix_exists q - 0028
specialize eisenstein_row_indicator_prefix_exists i - 0029
specialize eisenstein_row_indicator_prefix_exists k - 0030
apply eisenstein_row_indicator_prefix_exists - 0031
exact hchoices - 0032
cases hprefix_exists - 0033
cases hprefix_exists_witness - 0034
have hbits : forall ff_i_row_indicator_counted_witness_bits. (exists ff_lt_row_indicator_counted_witness_bits_bound. ff_lt_row_indicator_counted_witness_bits_bound + S ff_i_row_indicator_counted_witness_bits = k) -> exists ff_bit_row_indicator_counted_witness_bits. ((((exists ff_h_row_indicator_counted_witness_bits_decoded. ff_h_row_indicator_counted_witness_bits_decoded + S (ff_bit_row_indicator_counted_witness_bits) = S ((S (ff_i_row_indicator_counted_witness_bits)) * x1)) /\ exists ff_q_row_indicator_counted_witness_bits_decoded. x = ff_q_row_indicator_counted_witness_bits_decoded * S ((S (ff_i_row_indicator_counted_witness_bits)) * x1) + (ff_bit_row_indicator_counted_witness_bits))) /\ (ff_bit_row_indicator_counted_witness_bits = 0 \/ ff_bit_row_indicator_counted_witness_bits = 1)) - 0035
specialize eisenstein_row_indicator_prefix_all_bits p - 0036
specialize eisenstein_row_indicator_prefix_all_bits q - 0037
specialize eisenstein_row_indicator_prefix_all_bits i - 0038
specialize eisenstein_row_indicator_prefix_all_bits x - 0039
specialize eisenstein_row_indicator_prefix_all_bits x1 - 0040
specialize eisenstein_row_indicator_prefix_all_bits k - 0041
apply eisenstein_row_indicator_prefix_all_bits - 0042
exact hprefix_exists_witness_witness - 0043
have hcount : exists n. (((exists ff_u_row_indicator_counted_witness_count_sum ff_v_row_indicator_counted_witness_count_sum. ((((exists ff_h_row_indicator_counted_witness_count_sum_start. ff_h_row_indicator_counted_witness_count_sum_start + S (0) = S ((S (0)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_start. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_start * S ((S (0)) * ff_v_row_indicator_counted_witness_count_sum) + (0))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_terminal. ff_h_row_indicator_counted_witness_count_sum_terminal + S (n) = S ((S (k)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_terminal. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_terminal * S ((S (k)) * ff_v_row_indicator_counted_witness_count_sum) + (n))) /\ forall ff_i_row_indicator_counted_witness_count_sum. (exists ff_lt_row_indicator_counted_witness_count_sum_bound. ff_lt_row_indicator_counted_witness_count_sum_bound + S ff_i_row_indicator_counted_witness_count_sum = k) -> exists ff_a_row_indicator_counted_witness_count_sum ff_r_row_indicator_counted_witness_count_sum ff_s_row_indicator_counted_witness_count_sum. ((((exists ff_h_row_indicator_counted_witness_count_sum_summand. ff_h_row_indicator_counted_witness_count_sum_summand + S (ff_a_row_indicator_counted_witness_count_sum) = S ((S (ff_i_row_indicator_counted_witness_count_sum)) * x1)) /\ exists ff_q_row_indicator_counted_witness_count_sum_summand. x = ff_q_row_indicator_counted_witness_count_sum_summand * S ((S (ff_i_row_indicator_counted_witness_count_sum)) * x1) + (ff_a_row_indicator_counted_witness_count_sum))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_partial. ff_h_row_indicator_counted_witness_count_sum_partial + S (ff_r_row_indicator_counted_witness_count_sum) = S ((S (ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_partial. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_partial * S ((S (ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum) + (ff_r_row_indicator_counted_witness_count_sum))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_successor. ff_h_row_indicator_counted_witness_count_sum_successor + S (ff_s_row_indicator_counted_witness_count_sum) = S ((S (S ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_successor. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_successor * S ((S (S ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum) + (ff_s_row_indicator_counted_witness_count_sum))) /\ ff_s_row_indicator_counted_witness_count_sum = ff_r_row_indicator_counted_witness_count_sum + ff_a_row_indicator_counted_witness_count_sum)))))) /\ (forall ff_i_row_indicator_counted_witness_count_bits. (exists ff_lt_row_indicator_counted_witness_count_bits_bound. ff_lt_row_indicator_counted_witness_count_bits_bound + S ff_i_row_indicator_counted_witness_count_bits = k) -> exists ff_bit_row_indicator_counted_witness_count_bits. ((((exists ff_h_row_indicator_counted_witness_count_bits_decoded. ff_h_row_indicator_counted_witness_count_bits_decoded + S (ff_bit_row_indicator_counted_witness_count_bits) = S ((S (ff_i_row_indicator_counted_witness_count_bits)) * x1)) /\ exists ff_q_row_indicator_counted_witness_count_bits_decoded. x = ff_q_row_indicator_counted_witness_count_bits_decoded * S ((S (ff_i_row_indicator_counted_witness_count_bits)) * x1) + (ff_bit_row_indicator_counted_witness_count_bits))) /\ (ff_bit_row_indicator_counted_witness_count_bits = 0 \/ ff_bit_row_indicator_counted_witness_count_bits = 1))))) - 0044
specialize bit_count_exists x - 0045
specialize bit_count_exists x1 - 0046
specialize bit_count_exists k - 0047
apply bit_count_exists - 0048
exact hbits - 0049
cases hcount - 0050
exists x - 0051
exists x1 - 0052
exists x2 - 0053
split - 0054
exact hprefix_exists_witness_witness - 0055
exact hcount_witness