Exact expanded PA statement
forall a l n k j c z. k + j = n -> (((exists bcf_lt_gap_bpidcb_choose_out_of_range. bcf_lt_gap_bpidcb_choose_out_of_range + S (n) = k) /\ c = 0) \/ ((exists bcf_le_gap_bpidcb_choose_in_range. bcf_le_gap_bpidcb_choose_in_range + (k) = n) /\ (exists bcf_row_code_code_bpidcb_choose bcf_row_code_scale_bpidcb_choose bcf_row_scale_code_bpidcb_choose bcf_row_scale_scale_bpidcb_choose bcf_row_code_bpidcb_choose bcf_row_scale_bpidcb_choose. ((forall bcf_row_index_bpidcb_choose_table. (exists bcf_lt_gap_bpidcb_choose_table_row_bound. bcf_lt_gap_bpidcb_choose_table_row_bound + S (bcf_row_index_bpidcb_choose_table) = S (n)) -> exists bcf_row_code_bpidcb_choose_table bcf_row_scale_bpidcb_choose_table. ((((exists bcf_height_bpidcb_choose_table_decoded_row_code. bcf_height_bpidcb_choose_table_decoded_row_code + S (bcf_row_code_bpidcb_choose_table) = S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_row_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_row_code * S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose) + (bcf_row_code_bpidcb_choose_table))) /\ ((((exists bcf_height_bpidcb_choose_table_decoded_row_scale. bcf_height_bpidcb_choose_table_decoded_row_scale + S (bcf_row_scale_bpidcb_choose_table) = S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_row_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_row_scale * S ((S (bcf_row_index_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_row_scale_bpidcb_choose_table))) /\ ((bcf_row_index_bpidcb_choose_table = 0 /\ (forall bcf_index_bpidcb_choose_table_zero_row. (exists bcf_lt_gap_bpidcb_choose_table_zero_row_bound. bcf_lt_gap_bpidcb_choose_table_zero_row_bound + S (bcf_index_bpidcb_choose_table_zero_row) = S (n)) -> exists bcf_value_bpidcb_choose_table_zero_row. ((((exists bcf_height_bpidcb_choose_table_zero_row_entry. bcf_height_bpidcb_choose_table_zero_row_entry + S (bcf_value_bpidcb_choose_table_zero_row) = S ((S (bcf_index_bpidcb_choose_table_zero_row)) * bcf_row_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_zero_row_entry. bcf_row_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_zero_row_entry * S ((S (bcf_index_bpidcb_choose_table_zero_row)) * bcf_row_scale_bpidcb_choose_table) + (bcf_value_bpidcb_choose_table_zero_row))) /\ ((bcf_index_bpidcb_choose_table_zero_row = 0 /\ bcf_value_bpidcb_choose_table_zero_row = 1) \/ exists bcf_predecessor_bpidcb_choose_table_zero_row. bcf_index_bpidcb_choose_table_zero_row = S bcf_predecessor_bpidcb_choose_table_zero_row /\ bcf_value_bpidcb_choose_table_zero_row = 0)))) \/ exists bcf_predecessor_bpidcb_choose_table bcf_previous_code_bpidcb_choose_table bcf_previous_scale_bpidcb_choose_table. bcf_row_index_bpidcb_choose_table = S bcf_predecessor_bpidcb_choose_table /\ ((((exists bcf_height_bpidcb_choose_table_decoded_previous_code. bcf_height_bpidcb_choose_table_decoded_previous_code + S (bcf_previous_code_bpidcb_choose_table) = S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_previous_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_previous_code * S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_code_scale_bpidcb_choose) + (bcf_previous_code_bpidcb_choose_table))) /\ ((((exists bcf_height_bpidcb_choose_table_decoded_previous_scale. bcf_height_bpidcb_choose_table_decoded_previous_scale + S (bcf_previous_scale_bpidcb_choose_table) = S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_table_decoded_previous_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_table_decoded_previous_scale * S ((S (bcf_predecessor_bpidcb_choose_table)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_previous_scale_bpidcb_choose_table))) /\ (forall bcf_index_bpidcb_choose_table_row_step. (exists bcf_lt_gap_bpidcb_choose_table_row_step_bound. bcf_lt_gap_bpidcb_choose_table_row_step_bound + S (bcf_index_bpidcb_choose_table_row_step) = S (n)) -> exists bcf_value_bpidcb_choose_table_row_step. ((((exists bcf_height_bpidcb_choose_table_row_step_entry. bcf_height_bpidcb_choose_table_row_step_entry + S (bcf_value_bpidcb_choose_table_row_step) = S ((S (bcf_index_bpidcb_choose_table_row_step)) * bcf_row_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_entry. bcf_row_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_entry * S ((S (bcf_index_bpidcb_choose_table_row_step)) * bcf_row_scale_bpidcb_choose_table) + (bcf_value_bpidcb_choose_table_row_step))) /\ ((bcf_index_bpidcb_choose_table_row_step = 0 /\ bcf_value_bpidcb_choose_table_row_step = 1) \/ exists bcf_predecessor_bpidcb_choose_table_row_step bcf_left_bpidcb_choose_table_row_step bcf_right_bpidcb_choose_table_row_step. bcf_index_bpidcb_choose_table_row_step = S bcf_predecessor_bpidcb_choose_table_row_step /\ ((((exists bcf_height_bpidcb_choose_table_row_step_previous_left. bcf_height_bpidcb_choose_table_row_step_previous_left + S (bcf_left_bpidcb_choose_table_row_step) = S ((S (bcf_predecessor_bpidcb_choose_table_row_step)) * bcf_previous_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_previous_left. bcf_previous_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_previous_left * S ((S (bcf_predecessor_bpidcb_choose_table_row_step)) * bcf_previous_scale_bpidcb_choose_table) + (bcf_left_bpidcb_choose_table_row_step))) /\ ((((exists bcf_height_bpidcb_choose_table_row_step_previous_right. bcf_height_bpidcb_choose_table_row_step_previous_right + S (bcf_right_bpidcb_choose_table_row_step) = S ((S (S (bcf_predecessor_bpidcb_choose_table_row_step))) * bcf_previous_scale_bpidcb_choose_table)) /\ exists bcf_quotient_bpidcb_choose_table_row_step_previous_right. bcf_previous_code_bpidcb_choose_table = bcf_quotient_bpidcb_choose_table_row_step_previous_right * S ((S (S (bcf_predecessor_bpidcb_choose_table_row_step))) * bcf_previous_scale_bpidcb_choose_table) + (bcf_right_bpidcb_choose_table_row_step))) /\ bcf_value_bpidcb_choose_table_row_step = bcf_left_bpidcb_choose_table_row_step + bcf_right_bpidcb_choose_table_row_step))))))))))) /\ ((((exists bcf_height_bpidcb_choose_decoded_row_code. bcf_height_bpidcb_choose_decoded_row_code + S (bcf_row_code_bpidcb_choose) = S ((S (n)) * bcf_row_code_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_row_code. bcf_row_code_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bpidcb_choose) + (bcf_row_code_bpidcb_choose))) /\ ((((exists bcf_height_bpidcb_choose_decoded_row_scale. bcf_height_bpidcb_choose_decoded_row_scale + S (bcf_row_scale_bpidcb_choose) = S ((S (n)) * bcf_row_scale_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_row_scale. bcf_row_scale_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bpidcb_choose) + (bcf_row_scale_bpidcb_choose))) /\ (((exists bcf_height_bpidcb_choose_decoded_value. bcf_height_bpidcb_choose_decoded_value + S (c) = S ((S (k)) * bcf_row_scale_bpidcb_choose)) /\ exists bcf_quotient_bpidcb_choose_decoded_value. bcf_row_code_bpidcb_choose = bcf_quotient_bpidcb_choose_decoded_value * S ((S (k)) * bcf_row_scale_bpidcb_choose) + (c))))))))) -> (exists bpr_code_bpidcb_interval bpr_scale_bpidcb_interval. ((forall bpr_index_bpidcb_interval_mask. (exists bpr_gap_bpidcb_interval_mask_bound. bpr_gap_bpidcb_interval_mask_bound + S (bpr_index_bpidcb_interval_mask) = l) -> exists bpr_value_bpidcb_interval_mask. ((((exists bpr_height_bpidcb_interval_mask_decoded. bpr_height_bpidcb_interval_mask_decoded + S (bpr_value_bpidcb_interval_mask) = S ((S (bpr_index_bpidcb_interval_mask)) * bpr_scale_bpidcb_interval)) /\ exists bpr_quotient_bpidcb_interval_mask_decoded. bpr_code_bpidcb_interval = bpr_quotient_bpidcb_interval_mask_decoded * S ((S (bpr_index_bpidcb_interval_mask)) * bpr_scale_bpidcb_interval) + (bpr_value_bpidcb_interval_mask))) /\ (((((~(S (a + bpr_index_bpidcb_interval_mask) = 1) /\ forall bpr_left_bpidcb_interval_mask_choice_prime bpr_right_bpidcb_interval_mask_choice_prime. S (a + bpr_index_bpidcb_interval_mask) = bpr_left_bpidcb_interval_mask_choice_prime * bpr_right_bpidcb_interval_mask_choice_prime -> bpr_left_bpidcb_interval_mask_choice_prime = 1 \/ bpr_right_bpidcb_interval_mask_choice_prime = 1)) /\ bpr_value_bpidcb_interval_mask = S (a + bpr_index_bpidcb_interval_mask)) \/ (~((~(S (a + bpr_index_bpidcb_interval_mask) = 1) /\ forall bpr_left_bpidcb_interval_mask_choice_prime bpr_right_bpidcb_interval_mask_choice_prime. S (a + bpr_index_bpidcb_interval_mask) = bpr_left_bpidcb_interval_mask_choice_prime * bpr_right_bpidcb_interval_mask_choice_prime -> bpr_left_bpidcb_interval_mask_choice_prime = 1 \/ bpr_right_bpidcb_interval_mask_choice_prime = 1)) /\ bpr_value_bpidcb_interval_mask = 1))))) /\ (exists ff_u_bpidcb_interval_product ff_v_bpidcb_interval_product. ((((exists ff_h_bpidcb_interval_product_start. ff_h_bpidcb_interval_product_start + S (1) = S ((S (0)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_start. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_start * S ((S (0)) * ff_v_bpidcb_interval_product) + (1))) /\ ((((exists ff_h_bpidcb_interval_product_terminal. ff_h_bpidcb_interval_product_terminal + S (z) = S ((S (l)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_terminal. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_terminal * S ((S (l)) * ff_v_bpidcb_interval_product) + (z))) /\ forall ff_i_bpidcb_interval_product. (exists ff_lt_bpidcb_interval_product_bound. ff_lt_bpidcb_interval_product_bound + S ff_i_bpidcb_interval_product = l) -> exists ff_p_bpidcb_interval_product ff_r_bpidcb_interval_product ff_s_bpidcb_interval_product. ((((exists ff_h_bpidcb_interval_product_factor. ff_h_bpidcb_interval_product_factor + S (ff_p_bpidcb_interval_product) = S ((S (ff_i_bpidcb_interval_product)) * bpr_scale_bpidcb_interval)) /\ exists ff_q_bpidcb_interval_product_factor. bpr_code_bpidcb_interval = ff_q_bpidcb_interval_product_factor * S ((S (ff_i_bpidcb_interval_product)) * bpr_scale_bpidcb_interval) + (ff_p_bpidcb_interval_product))) /\ ((((exists ff_h_bpidcb_interval_product_partial. ff_h_bpidcb_interval_product_partial + S (ff_r_bpidcb_interval_product) = S ((S (ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_partial. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_partial * S ((S (ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product) + (ff_r_bpidcb_interval_product))) /\ ((((exists ff_h_bpidcb_interval_product_successor. ff_h_bpidcb_interval_product_successor + S (ff_s_bpidcb_interval_product) = S ((S (S ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product)) /\ exists ff_q_bpidcb_interval_product_successor. ff_u_bpidcb_interval_product = ff_q_bpidcb_interval_product_successor * S ((S (S ff_i_bpidcb_interval_product)) * ff_v_bpidcb_interval_product) + (ff_s_bpidcb_interval_product))) /\ ff_s_bpidcb_interval_product = ff_r_bpidcb_interval_product * ff_p_bpidcb_interval_product)))))))) -> (forall bpr_index_bpidcb_bounds. (exists bpr_gap_bpidcb_bounds_index. bpr_gap_bpidcb_bounds_index + S (bpr_index_bpidcb_bounds) = l) -> ((exists bpr_gap_bpidcb_bounds_left. bpr_gap_bpidcb_bounds_left + S (k) = S (a + bpr_index_bpidcb_bounds)) /\ ((exists bpr_gap_bpidcb_bounds_right. bpr_gap_bpidcb_bounds_right + S (j) = S (a + bpr_index_bpidcb_bounds)) /\ (exists bpr_le_gap_bpidcb_bounds_upper. bpr_le_gap_bpidcb_bounds_upper + (S (a + bpr_index_bpidcb_bounds)) = (n))))) -> (exists bpr_quotient_bpidcb_result. c = (z) * bpr_quotient_bpidcb_result)Structural proof guide
A selector interval between both denominator indices divides Choose.
Direct prerequisites: beta_at_unique, one_multiple, choose_prime_divides_between, primorial_interval_pairwise_coprime, beta_pairwise_coprime_product_divides_common_multiple. The authored body proceeds by case analysis (10), intermediate claims (7), equality transport (6).
Proof neighborhood
Direct dependencies
BT0042 beta_at_unique BT0027 one_multiple BT00VC choose_prime_divides_between BT00VE primorial_interval_pairwise_coprime BT00VD beta_pairwise_coprime_product_divides_common_multipleDirect dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 0001
intro a - 0002
intro l - 0003
intro n - 0004
intro k - 0005
intro j - 0006
intro c - 0007
intro z - 0008
intro hsum - 0009
intro hchoose - 0010
intro hinterval - 0011
intro hbounds - 0012
cases hinterval - 0013
cases hinterval_witness - 0014
cases hinterval_witness_witness - 0015
have hpairwise : forall bpr_left_index_bpidcb_pairwise bpr_right_index_bpidcb_pairwise bpr_left_value_bpidcb_pairwise bpr_right_value_bpidcb_pairwise. (exists bpr_gap_bpidcb_pairwise_left_bound. bpr_gap_bpidcb_pairwise_left_bound + S (bpr_left_index_bpidcb_pairwise) = l) -> (exists bpr_gap_bpidcb_pairwise_right_bound. bpr_gap_bpidcb_pairwise_right_bound + S (bpr_right_index_bpidcb_pairwise) = l) -> (((exists bpr_height_bpidcb_pairwise_left_at. bpr_height_bpidcb_pairwise_left_at + S (bpr_left_value_bpidcb_pairwise) = S ((S (bpr_left_index_bpidcb_pairwise)) * x1)) /\ exists bpr_quotient_bpidcb_pairwise_left_at. x = bpr_quotient_bpidcb_pairwise_left_at * S ((S (bpr_left_index_bpidcb_pairwise)) * x1) + (bpr_left_value_bpidcb_pairwise))) -> (((exists bpr_height_bpidcb_pairwise_right_at. bpr_height_bpidcb_pairwise_right_at + S (bpr_right_value_bpidcb_pairwise) = S ((S (bpr_right_index_bpidcb_pairwise)) * x1)) /\ exists bpr_quotient_bpidcb_pairwise_right_at. x = bpr_quotient_bpidcb_pairwise_right_at * S ((S (bpr_right_index_bpidcb_pairwise)) * x1) + (bpr_right_value_bpidcb_pairwise))) -> ~(bpr_left_index_bpidcb_pairwise = bpr_right_index_bpidcb_pairwise) -> (forall bpr_coprime_divisor_bpidcb_pairwise_coprime. (exists bpr_coprime_left_factor_bpidcb_pairwise_coprime. bpr_left_value_bpidcb_pairwise = bpr_coprime_divisor_bpidcb_pairwise_coprime * bpr_coprime_left_factor_bpidcb_pairwise_coprime) -> (exists bpr_coprime_right_factor_bpidcb_pairwise_coprime. bpr_right_value_bpidcb_pairwise = bpr_coprime_divisor_bpidcb_pairwise_coprime * bpr_coprime_right_factor_bpidcb_pairwise_coprime) -> bpr_coprime_divisor_bpidcb_pairwise_coprime = 1) - 0016
specialize primorial_interval_pairwise_coprime a - 0017
specialize primorial_interval_pairwise_coprime x - 0018
specialize primorial_interval_pairwise_coprime x1 - 0019
specialize primorial_interval_pairwise_coprime l - 0020
apply primorial_interval_pairwise_coprime - 0021
exact hinterval_witness_witness_left - 0022
have hpointwise : forall bpr_divisor_index_bpidcb_pointwise bpr_divisor_value_bpidcb_pointwise. (exists bpr_gap_bpidcb_pointwise_index_bound. bpr_gap_bpidcb_pointwise_index_bound + S (bpr_divisor_index_bpidcb_pointwise) = l) -> (((exists bpr_height_bpidcb_pointwise_decoded. bpr_height_bpidcb_pointwise_decoded + S (bpr_divisor_value_bpidcb_pointwise) = S ((S (bpr_divisor_index_bpidcb_pointwise)) * x1)) /\ exists bpr_quotient_bpidcb_pointwise_decoded. x = bpr_quotient_bpidcb_pointwise_decoded * S ((S (bpr_divisor_index_bpidcb_pointwise)) * x1) + (bpr_divisor_value_bpidcb_pointwise))) -> exists bpr_quotient_bpidcb_pointwise_result. c = bpr_divisor_value_bpidcb_pointwise * bpr_quotient_bpidcb_pointwise_result - 0023
intro i - 0024
intro p - 0025
intro hi - 0026
intro hp - 0027
have hentry : exists x2. (((exists bpr_height_bpidcb_local_entry. bpr_height_bpidcb_local_entry + S (x2) = S ((S (i)) * x1)) /\ exists bpr_quotient_bpidcb_local_entry. x = bpr_quotient_bpidcb_local_entry * S ((S (i)) * x1) + (x2))) /\ (((((~(S (a + i) = 1) /\ forall bpr_left_bpidcb_local_choice_prime bpr_right_bpidcb_local_choice_prime. S (a + i) = bpr_left_bpidcb_local_choice_prime * bpr_right_bpidcb_local_choice_prime -> bpr_left_bpidcb_local_choice_prime = 1 \/ bpr_right_bpidcb_local_choice_prime = 1)) /\ x2 = S (a + i)) \/ (~((~(S (a + i) = 1) /\ forall bpr_left_bpidcb_local_choice_prime bpr_right_bpidcb_local_choice_prime. S (a + i) = bpr_left_bpidcb_local_choice_prime * bpr_right_bpidcb_local_choice_prime -> bpr_left_bpidcb_local_choice_prime = 1 \/ bpr_right_bpidcb_local_choice_prime = 1)) /\ x2 = 1))) - 0028
apply hinterval_witness_witness_left - 0029
exact hi - 0030
cases hentry - 0031
cases hentry_witness - 0032
have hxp : x2 = p - 0033
specialize beta_at_unique x - 0034
specialize beta_at_unique x1 - 0035
specialize beta_at_unique i - 0036
specialize beta_at_unique x2 - 0037
specialize beta_at_unique p - 0038
apply beta_at_unique - 0039
exact hentry_witness_left - 0040
exact hp - 0041
cases hentry_witness_right - 0042
cases hentry_witness_right_left - 0043
have hcandidate : p = S (a + i) - 0044
trans x2 - 0045
symm - 0046
exact hxp - 0047
exact hentry_witness_right_left_right - 0048
have hlocal_bounds : (exists bpr_gap_bpidcb_local_left. bpr_gap_bpidcb_local_left + S (k) = S (a + i)) /\ ((exists bpr_gap_bpidcb_local_right. bpr_gap_bpidcb_local_right + S (j) = S (a + i)) /\ (exists bpr_le_gap_bpidcb_local_upper. bpr_le_gap_bpidcb_local_upper + (S (a + i)) = (n))) - 0049
specialize hbounds i - 0050
apply hbounds - 0051
exact hi - 0052
cases hlocal_bounds - 0053
cases hlocal_bounds_right - 0054
specialize choose_prime_divides_between n - 0055
specialize choose_prime_divides_between k - 0056
specialize choose_prime_divides_between j - 0057
specialize choose_prime_divides_between p - 0058
specialize choose_prime_divides_between c - 0059
apply choose_prime_divides_between - 0060
exact hsum - 0061
rewrite hcandidate - 0062
rewrite hcandidate - 0063
exact hentry_witness_right_left_left - 0064
rewrite hcandidate - 0065
exact hlocal_bounds_left - 0066
rewrite hcandidate - 0067
exact hlocal_bounds_right_left - 0068
rewrite hcandidate - 0069
exact hlocal_bounds_right_right - 0070
exact hchoose - 0071
cases hentry_witness_right_right - 0072
have hp_one : p = 1 - 0073
trans x2 - 0074
symm - 0075
exact hxp - 0076
exact hentry_witness_right_right_right - 0077
rewrite hp_one - 0078
specialize one_multiple c - 0079
exact one_multiple - 0080
specialize beta_pairwise_coprime_product_divides_common_multiple x - 0081
specialize beta_pairwise_coprime_product_divides_common_multiple x1 - 0082
specialize beta_pairwise_coprime_product_divides_common_multiple l - 0083
specialize beta_pairwise_coprime_product_divides_common_multiple z - 0084
specialize beta_pairwise_coprime_product_divides_common_multiple c - 0085
apply beta_pairwise_coprime_product_divides_common_multiple - 0086
exact hpairwise - 0087
exact hpointwise - 0088
exact hinterval_witness_witness_right