Exact expanded PA statement
forall n k j p c. k + j = n -> ((~(p = 1) /\ forall bpr_left_bcpdb_prime bpr_right_bcpdb_prime. p = bpr_left_bcpdb_prime * bpr_right_bcpdb_prime -> bpr_left_bcpdb_prime = 1 \/ bpr_right_bcpdb_prime = 1)) -> (exists bpr_gap_bcpdb_left_bound. bpr_gap_bcpdb_left_bound + S (k) = p) -> (exists bpr_gap_bcpdb_right_bound. bpr_gap_bcpdb_right_bound + S (j) = p) -> (exists bpr_le_gap_bcpdb_upper_bound. bpr_le_gap_bcpdb_upper_bound + (p) = (n)) -> (((exists bcf_lt_gap_bcpdb_source_out_of_range. bcf_lt_gap_bcpdb_source_out_of_range + S (n) = k) /\ c = 0) \/ ((exists bcf_le_gap_bcpdb_source_in_range. bcf_le_gap_bcpdb_source_in_range + (k) = n) /\ (exists bcf_row_code_code_bcpdb_source bcf_row_code_scale_bcpdb_source bcf_row_scale_code_bcpdb_source bcf_row_scale_scale_bcpdb_source bcf_row_code_bcpdb_source bcf_row_scale_bcpdb_source. ((forall bcf_row_index_bcpdb_source_table. (exists bcf_lt_gap_bcpdb_source_table_row_bound. bcf_lt_gap_bcpdb_source_table_row_bound + S (bcf_row_index_bcpdb_source_table) = S (n)) -> exists bcf_row_code_bcpdb_source_table bcf_row_scale_bcpdb_source_table. ((((exists bcf_height_bcpdb_source_table_decoded_row_code. bcf_height_bcpdb_source_table_decoded_row_code + S (bcf_row_code_bcpdb_source_table) = S ((S (bcf_row_index_bcpdb_source_table)) * bcf_row_code_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_table_decoded_row_code. bcf_row_code_code_bcpdb_source = bcf_quotient_bcpdb_source_table_decoded_row_code * S ((S (bcf_row_index_bcpdb_source_table)) * bcf_row_code_scale_bcpdb_source) + (bcf_row_code_bcpdb_source_table))) /\ ((((exists bcf_height_bcpdb_source_table_decoded_row_scale. bcf_height_bcpdb_source_table_decoded_row_scale + S (bcf_row_scale_bcpdb_source_table) = S ((S (bcf_row_index_bcpdb_source_table)) * bcf_row_scale_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_table_decoded_row_scale. bcf_row_scale_code_bcpdb_source = bcf_quotient_bcpdb_source_table_decoded_row_scale * S ((S (bcf_row_index_bcpdb_source_table)) * bcf_row_scale_scale_bcpdb_source) + (bcf_row_scale_bcpdb_source_table))) /\ ((bcf_row_index_bcpdb_source_table = 0 /\ (forall bcf_index_bcpdb_source_table_zero_row. (exists bcf_lt_gap_bcpdb_source_table_zero_row_bound. bcf_lt_gap_bcpdb_source_table_zero_row_bound + S (bcf_index_bcpdb_source_table_zero_row) = S (n)) -> exists bcf_value_bcpdb_source_table_zero_row. ((((exists bcf_height_bcpdb_source_table_zero_row_entry. bcf_height_bcpdb_source_table_zero_row_entry + S (bcf_value_bcpdb_source_table_zero_row) = S ((S (bcf_index_bcpdb_source_table_zero_row)) * bcf_row_scale_bcpdb_source_table)) /\ exists bcf_quotient_bcpdb_source_table_zero_row_entry. bcf_row_code_bcpdb_source_table = bcf_quotient_bcpdb_source_table_zero_row_entry * S ((S (bcf_index_bcpdb_source_table_zero_row)) * bcf_row_scale_bcpdb_source_table) + (bcf_value_bcpdb_source_table_zero_row))) /\ ((bcf_index_bcpdb_source_table_zero_row = 0 /\ bcf_value_bcpdb_source_table_zero_row = 1) \/ exists bcf_predecessor_bcpdb_source_table_zero_row. bcf_index_bcpdb_source_table_zero_row = S bcf_predecessor_bcpdb_source_table_zero_row /\ bcf_value_bcpdb_source_table_zero_row = 0)))) \/ exists bcf_predecessor_bcpdb_source_table bcf_previous_code_bcpdb_source_table bcf_previous_scale_bcpdb_source_table. bcf_row_index_bcpdb_source_table = S bcf_predecessor_bcpdb_source_table /\ ((((exists bcf_height_bcpdb_source_table_decoded_previous_code. bcf_height_bcpdb_source_table_decoded_previous_code + S (bcf_previous_code_bcpdb_source_table) = S ((S (bcf_predecessor_bcpdb_source_table)) * bcf_row_code_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_table_decoded_previous_code. bcf_row_code_code_bcpdb_source = bcf_quotient_bcpdb_source_table_decoded_previous_code * S ((S (bcf_predecessor_bcpdb_source_table)) * bcf_row_code_scale_bcpdb_source) + (bcf_previous_code_bcpdb_source_table))) /\ ((((exists bcf_height_bcpdb_source_table_decoded_previous_scale. bcf_height_bcpdb_source_table_decoded_previous_scale + S (bcf_previous_scale_bcpdb_source_table) = S ((S (bcf_predecessor_bcpdb_source_table)) * bcf_row_scale_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_table_decoded_previous_scale. bcf_row_scale_code_bcpdb_source = bcf_quotient_bcpdb_source_table_decoded_previous_scale * S ((S (bcf_predecessor_bcpdb_source_table)) * bcf_row_scale_scale_bcpdb_source) + (bcf_previous_scale_bcpdb_source_table))) /\ (forall bcf_index_bcpdb_source_table_row_step. (exists bcf_lt_gap_bcpdb_source_table_row_step_bound. bcf_lt_gap_bcpdb_source_table_row_step_bound + S (bcf_index_bcpdb_source_table_row_step) = S (n)) -> exists bcf_value_bcpdb_source_table_row_step. ((((exists bcf_height_bcpdb_source_table_row_step_entry. bcf_height_bcpdb_source_table_row_step_entry + S (bcf_value_bcpdb_source_table_row_step) = S ((S (bcf_index_bcpdb_source_table_row_step)) * bcf_row_scale_bcpdb_source_table)) /\ exists bcf_quotient_bcpdb_source_table_row_step_entry. bcf_row_code_bcpdb_source_table = bcf_quotient_bcpdb_source_table_row_step_entry * S ((S (bcf_index_bcpdb_source_table_row_step)) * bcf_row_scale_bcpdb_source_table) + (bcf_value_bcpdb_source_table_row_step))) /\ ((bcf_index_bcpdb_source_table_row_step = 0 /\ bcf_value_bcpdb_source_table_row_step = 1) \/ exists bcf_predecessor_bcpdb_source_table_row_step bcf_left_bcpdb_source_table_row_step bcf_right_bcpdb_source_table_row_step. bcf_index_bcpdb_source_table_row_step = S bcf_predecessor_bcpdb_source_table_row_step /\ ((((exists bcf_height_bcpdb_source_table_row_step_previous_left. bcf_height_bcpdb_source_table_row_step_previous_left + S (bcf_left_bcpdb_source_table_row_step) = S ((S (bcf_predecessor_bcpdb_source_table_row_step)) * bcf_previous_scale_bcpdb_source_table)) /\ exists bcf_quotient_bcpdb_source_table_row_step_previous_left. bcf_previous_code_bcpdb_source_table = bcf_quotient_bcpdb_source_table_row_step_previous_left * S ((S (bcf_predecessor_bcpdb_source_table_row_step)) * bcf_previous_scale_bcpdb_source_table) + (bcf_left_bcpdb_source_table_row_step))) /\ ((((exists bcf_height_bcpdb_source_table_row_step_previous_right. bcf_height_bcpdb_source_table_row_step_previous_right + S (bcf_right_bcpdb_source_table_row_step) = S ((S (S (bcf_predecessor_bcpdb_source_table_row_step))) * bcf_previous_scale_bcpdb_source_table)) /\ exists bcf_quotient_bcpdb_source_table_row_step_previous_right. bcf_previous_code_bcpdb_source_table = bcf_quotient_bcpdb_source_table_row_step_previous_right * S ((S (S (bcf_predecessor_bcpdb_source_table_row_step))) * bcf_previous_scale_bcpdb_source_table) + (bcf_right_bcpdb_source_table_row_step))) /\ bcf_value_bcpdb_source_table_row_step = bcf_left_bcpdb_source_table_row_step + bcf_right_bcpdb_source_table_row_step))))))))))) /\ ((((exists bcf_height_bcpdb_source_decoded_row_code. bcf_height_bcpdb_source_decoded_row_code + S (bcf_row_code_bcpdb_source) = S ((S (n)) * bcf_row_code_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_decoded_row_code. bcf_row_code_code_bcpdb_source = bcf_quotient_bcpdb_source_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bcpdb_source) + (bcf_row_code_bcpdb_source))) /\ ((((exists bcf_height_bcpdb_source_decoded_row_scale. bcf_height_bcpdb_source_decoded_row_scale + S (bcf_row_scale_bcpdb_source) = S ((S (n)) * bcf_row_scale_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_decoded_row_scale. bcf_row_scale_code_bcpdb_source = bcf_quotient_bcpdb_source_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bcpdb_source) + (bcf_row_scale_bcpdb_source))) /\ (((exists bcf_height_bcpdb_source_decoded_value. bcf_height_bcpdb_source_decoded_value + S (c) = S ((S (k)) * bcf_row_scale_bcpdb_source)) /\ exists bcf_quotient_bcpdb_source_decoded_value. bcf_row_code_bcpdb_source = bcf_quotient_bcpdb_source_decoded_value * S ((S (k)) * bcf_row_scale_bcpdb_source) + (c))))))))) -> (exists bpr_quotient_bcpdb_result. c = (p) * bpr_quotient_bcpdb_result)Structural proof guide
A prime between both denominator indices and the row divides Choose.
Direct prerequisites: factorial_exists, choose_factorial_bridge, factorial_prime_divides_of_le, euclid_prime_dvd_product, factorial_prime_le_of_divides, lt_not_le. The authored body proceeds by case analysis (5), intermediate claims (9), equality transport (1).
Proof neighborhood
Direct dependencies
BT008Y factorial_exists BT00TX choose_factorial_bridge BT00VA factorial_prime_divides_of_le BT003N euclid_prime_dvd_product BT00VB factorial_prime_le_of_divides BT001I lt_not_leDirect 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 n - 0002
intro k - 0003
intro j - 0004
intro p - 0005
intro c - 0006
intro hsum - 0007
intro hp - 0008
intro hk - 0009
intro hj - 0010
intro hpn - 0011
intro hchoose - 0012
have hF : exists F. (exists ff_b_bcpdb_total_factorial ff_c_bcpdb_total_factorial. ((forall ff_i_bcpdb_total_factorial_range. (exists ff_lt_bcpdb_total_factorial_range_bound. ff_lt_bcpdb_total_factorial_range_bound + S ff_i_bcpdb_total_factorial_range = n) -> (((exists ff_h_bcpdb_total_factorial_range_decoded. ff_h_bcpdb_total_factorial_range_decoded + S (1 + ff_i_bcpdb_total_factorial_range) = S ((S (ff_i_bcpdb_total_factorial_range)) * ff_c_bcpdb_total_factorial)) /\ exists ff_q_bcpdb_total_factorial_range_decoded. ff_b_bcpdb_total_factorial = ff_q_bcpdb_total_factorial_range_decoded * S ((S (ff_i_bcpdb_total_factorial_range)) * ff_c_bcpdb_total_factorial) + (1 + ff_i_bcpdb_total_factorial_range)))) /\ (exists ff_u_bcpdb_total_factorial_product ff_v_bcpdb_total_factorial_product. ((((exists ff_h_bcpdb_total_factorial_product_start. ff_h_bcpdb_total_factorial_product_start + S (1) = S ((S (0)) * ff_v_bcpdb_total_factorial_product)) /\ exists ff_q_bcpdb_total_factorial_product_start. ff_u_bcpdb_total_factorial_product = ff_q_bcpdb_total_factorial_product_start * S ((S (0)) * ff_v_bcpdb_total_factorial_product) + (1))) /\ ((((exists ff_h_bcpdb_total_factorial_product_terminal. ff_h_bcpdb_total_factorial_product_terminal + S (F) = S ((S (n)) * ff_v_bcpdb_total_factorial_product)) /\ exists ff_q_bcpdb_total_factorial_product_terminal. ff_u_bcpdb_total_factorial_product = ff_q_bcpdb_total_factorial_product_terminal * S ((S (n)) * ff_v_bcpdb_total_factorial_product) + (F))) /\ forall ff_i_bcpdb_total_factorial_product. (exists ff_lt_bcpdb_total_factorial_product_bound. ff_lt_bcpdb_total_factorial_product_bound + S ff_i_bcpdb_total_factorial_product = n) -> exists ff_p_bcpdb_total_factorial_product ff_r_bcpdb_total_factorial_product ff_s_bcpdb_total_factorial_product. ((((exists ff_h_bcpdb_total_factorial_product_factor. ff_h_bcpdb_total_factorial_product_factor + S (ff_p_bcpdb_total_factorial_product) = S ((S (ff_i_bcpdb_total_factorial_product)) * ff_c_bcpdb_total_factorial)) /\ exists ff_q_bcpdb_total_factorial_product_factor. ff_b_bcpdb_total_factorial = ff_q_bcpdb_total_factorial_product_factor * S ((S (ff_i_bcpdb_total_factorial_product)) * ff_c_bcpdb_total_factorial) + (ff_p_bcpdb_total_factorial_product))) /\ ((((exists ff_h_bcpdb_total_factorial_product_partial. ff_h_bcpdb_total_factorial_product_partial + S (ff_r_bcpdb_total_factorial_product) = S ((S (ff_i_bcpdb_total_factorial_product)) * ff_v_bcpdb_total_factorial_product)) /\ exists ff_q_bcpdb_total_factorial_product_partial. ff_u_bcpdb_total_factorial_product = ff_q_bcpdb_total_factorial_product_partial * S ((S (ff_i_bcpdb_total_factorial_product)) * ff_v_bcpdb_total_factorial_product) + (ff_r_bcpdb_total_factorial_product))) /\ ((((exists ff_h_bcpdb_total_factorial_product_successor. ff_h_bcpdb_total_factorial_product_successor + S (ff_s_bcpdb_total_factorial_product) = S ((S (S ff_i_bcpdb_total_factorial_product)) * ff_v_bcpdb_total_factorial_product)) /\ exists ff_q_bcpdb_total_factorial_product_successor. ff_u_bcpdb_total_factorial_product = ff_q_bcpdb_total_factorial_product_successor * S ((S (S ff_i_bcpdb_total_factorial_product)) * ff_v_bcpdb_total_factorial_product) + (ff_s_bcpdb_total_factorial_product))) /\ ff_s_bcpdb_total_factorial_product = ff_r_bcpdb_total_factorial_product * ff_p_bcpdb_total_factorial_product)))))))) - 0013
apply factorial_exists - 0014
cases hF - 0015
have hK : exists K. (exists ff_b_bcpdb_left_factorial ff_c_bcpdb_left_factorial. ((forall ff_i_bcpdb_left_factorial_range. (exists ff_lt_bcpdb_left_factorial_range_bound. ff_lt_bcpdb_left_factorial_range_bound + S ff_i_bcpdb_left_factorial_range = k) -> (((exists ff_h_bcpdb_left_factorial_range_decoded. ff_h_bcpdb_left_factorial_range_decoded + S (1 + ff_i_bcpdb_left_factorial_range) = S ((S (ff_i_bcpdb_left_factorial_range)) * ff_c_bcpdb_left_factorial)) /\ exists ff_q_bcpdb_left_factorial_range_decoded. ff_b_bcpdb_left_factorial = ff_q_bcpdb_left_factorial_range_decoded * S ((S (ff_i_bcpdb_left_factorial_range)) * ff_c_bcpdb_left_factorial) + (1 + ff_i_bcpdb_left_factorial_range)))) /\ (exists ff_u_bcpdb_left_factorial_product ff_v_bcpdb_left_factorial_product. ((((exists ff_h_bcpdb_left_factorial_product_start. ff_h_bcpdb_left_factorial_product_start + S (1) = S ((S (0)) * ff_v_bcpdb_left_factorial_product)) /\ exists ff_q_bcpdb_left_factorial_product_start. ff_u_bcpdb_left_factorial_product = ff_q_bcpdb_left_factorial_product_start * S ((S (0)) * ff_v_bcpdb_left_factorial_product) + (1))) /\ ((((exists ff_h_bcpdb_left_factorial_product_terminal. ff_h_bcpdb_left_factorial_product_terminal + S (K) = S ((S (k)) * ff_v_bcpdb_left_factorial_product)) /\ exists ff_q_bcpdb_left_factorial_product_terminal. ff_u_bcpdb_left_factorial_product = ff_q_bcpdb_left_factorial_product_terminal * S ((S (k)) * ff_v_bcpdb_left_factorial_product) + (K))) /\ forall ff_i_bcpdb_left_factorial_product. (exists ff_lt_bcpdb_left_factorial_product_bound. ff_lt_bcpdb_left_factorial_product_bound + S ff_i_bcpdb_left_factorial_product = k) -> exists ff_p_bcpdb_left_factorial_product ff_r_bcpdb_left_factorial_product ff_s_bcpdb_left_factorial_product. ((((exists ff_h_bcpdb_left_factorial_product_factor. ff_h_bcpdb_left_factorial_product_factor + S (ff_p_bcpdb_left_factorial_product) = S ((S (ff_i_bcpdb_left_factorial_product)) * ff_c_bcpdb_left_factorial)) /\ exists ff_q_bcpdb_left_factorial_product_factor. ff_b_bcpdb_left_factorial = ff_q_bcpdb_left_factorial_product_factor * S ((S (ff_i_bcpdb_left_factorial_product)) * ff_c_bcpdb_left_factorial) + (ff_p_bcpdb_left_factorial_product))) /\ ((((exists ff_h_bcpdb_left_factorial_product_partial. ff_h_bcpdb_left_factorial_product_partial + S (ff_r_bcpdb_left_factorial_product) = S ((S (ff_i_bcpdb_left_factorial_product)) * ff_v_bcpdb_left_factorial_product)) /\ exists ff_q_bcpdb_left_factorial_product_partial. ff_u_bcpdb_left_factorial_product = ff_q_bcpdb_left_factorial_product_partial * S ((S (ff_i_bcpdb_left_factorial_product)) * ff_v_bcpdb_left_factorial_product) + (ff_r_bcpdb_left_factorial_product))) /\ ((((exists ff_h_bcpdb_left_factorial_product_successor. ff_h_bcpdb_left_factorial_product_successor + S (ff_s_bcpdb_left_factorial_product) = S ((S (S ff_i_bcpdb_left_factorial_product)) * ff_v_bcpdb_left_factorial_product)) /\ exists ff_q_bcpdb_left_factorial_product_successor. ff_u_bcpdb_left_factorial_product = ff_q_bcpdb_left_factorial_product_successor * S ((S (S ff_i_bcpdb_left_factorial_product)) * ff_v_bcpdb_left_factorial_product) + (ff_s_bcpdb_left_factorial_product))) /\ ff_s_bcpdb_left_factorial_product = ff_r_bcpdb_left_factorial_product * ff_p_bcpdb_left_factorial_product)))))))) - 0016
apply factorial_exists - 0017
cases hK - 0018
have hJ : exists J. (exists ff_b_bcpdb_right_factorial ff_c_bcpdb_right_factorial. ((forall ff_i_bcpdb_right_factorial_range. (exists ff_lt_bcpdb_right_factorial_range_bound. ff_lt_bcpdb_right_factorial_range_bound + S ff_i_bcpdb_right_factorial_range = j) -> (((exists ff_h_bcpdb_right_factorial_range_decoded. ff_h_bcpdb_right_factorial_range_decoded + S (1 + ff_i_bcpdb_right_factorial_range) = S ((S (ff_i_bcpdb_right_factorial_range)) * ff_c_bcpdb_right_factorial)) /\ exists ff_q_bcpdb_right_factorial_range_decoded. ff_b_bcpdb_right_factorial = ff_q_bcpdb_right_factorial_range_decoded * S ((S (ff_i_bcpdb_right_factorial_range)) * ff_c_bcpdb_right_factorial) + (1 + ff_i_bcpdb_right_factorial_range)))) /\ (exists ff_u_bcpdb_right_factorial_product ff_v_bcpdb_right_factorial_product. ((((exists ff_h_bcpdb_right_factorial_product_start. ff_h_bcpdb_right_factorial_product_start + S (1) = S ((S (0)) * ff_v_bcpdb_right_factorial_product)) /\ exists ff_q_bcpdb_right_factorial_product_start. ff_u_bcpdb_right_factorial_product = ff_q_bcpdb_right_factorial_product_start * S ((S (0)) * ff_v_bcpdb_right_factorial_product) + (1))) /\ ((((exists ff_h_bcpdb_right_factorial_product_terminal. ff_h_bcpdb_right_factorial_product_terminal + S (J) = S ((S (j)) * ff_v_bcpdb_right_factorial_product)) /\ exists ff_q_bcpdb_right_factorial_product_terminal. ff_u_bcpdb_right_factorial_product = ff_q_bcpdb_right_factorial_product_terminal * S ((S (j)) * ff_v_bcpdb_right_factorial_product) + (J))) /\ forall ff_i_bcpdb_right_factorial_product. (exists ff_lt_bcpdb_right_factorial_product_bound. ff_lt_bcpdb_right_factorial_product_bound + S ff_i_bcpdb_right_factorial_product = j) -> exists ff_p_bcpdb_right_factorial_product ff_r_bcpdb_right_factorial_product ff_s_bcpdb_right_factorial_product. ((((exists ff_h_bcpdb_right_factorial_product_factor. ff_h_bcpdb_right_factorial_product_factor + S (ff_p_bcpdb_right_factorial_product) = S ((S (ff_i_bcpdb_right_factorial_product)) * ff_c_bcpdb_right_factorial)) /\ exists ff_q_bcpdb_right_factorial_product_factor. ff_b_bcpdb_right_factorial = ff_q_bcpdb_right_factorial_product_factor * S ((S (ff_i_bcpdb_right_factorial_product)) * ff_c_bcpdb_right_factorial) + (ff_p_bcpdb_right_factorial_product))) /\ ((((exists ff_h_bcpdb_right_factorial_product_partial. ff_h_bcpdb_right_factorial_product_partial + S (ff_r_bcpdb_right_factorial_product) = S ((S (ff_i_bcpdb_right_factorial_product)) * ff_v_bcpdb_right_factorial_product)) /\ exists ff_q_bcpdb_right_factorial_product_partial. ff_u_bcpdb_right_factorial_product = ff_q_bcpdb_right_factorial_product_partial * S ((S (ff_i_bcpdb_right_factorial_product)) * ff_v_bcpdb_right_factorial_product) + (ff_r_bcpdb_right_factorial_product))) /\ ((((exists ff_h_bcpdb_right_factorial_product_successor. ff_h_bcpdb_right_factorial_product_successor + S (ff_s_bcpdb_right_factorial_product) = S ((S (S ff_i_bcpdb_right_factorial_product)) * ff_v_bcpdb_right_factorial_product)) /\ exists ff_q_bcpdb_right_factorial_product_successor. ff_u_bcpdb_right_factorial_product = ff_q_bcpdb_right_factorial_product_successor * S ((S (S ff_i_bcpdb_right_factorial_product)) * ff_v_bcpdb_right_factorial_product) + (ff_s_bcpdb_right_factorial_product))) /\ ff_s_bcpdb_right_factorial_product = ff_r_bcpdb_right_factorial_product * ff_p_bcpdb_right_factorial_product)))))))) - 0019
apply factorial_exists - 0020
cases hJ - 0021
have hbridge : x = (x1 * x2) * c - 0022
specialize choose_factorial_bridge n - 0023
specialize choose_factorial_bridge k - 0024
specialize choose_factorial_bridge j - 0025
specialize choose_factorial_bridge c - 0026
specialize choose_factorial_bridge x - 0027
specialize choose_factorial_bridge x1 - 0028
specialize choose_factorial_bridge x2 - 0029
apply choose_factorial_bridge - 0030
exact hsum - 0031
exact hchoose - 0032
exact hF_witness - 0033
exact hK_witness - 0034
exact hJ_witness - 0035
have htotal : exists bpr_quotient_bcpdb_total_divides. x = (p) * bpr_quotient_bcpdb_total_divides - 0036
specialize factorial_prime_divides_of_le p - 0037
specialize factorial_prime_divides_of_le n - 0038
specialize factorial_prime_divides_of_le x - 0039
apply factorial_prime_divides_of_le - 0040
exact hp - 0041
exact hpn - 0042
exact hF_witness - 0043
rewrite hbridge at htotal - 0044
have houter : (exists bpr_quotient_bcpdb_outer_left. x1 * x2 = (p) * bpr_quotient_bcpdb_outer_left) \/ (exists bpr_quotient_bcpdb_outer_right. c = (p) * bpr_quotient_bcpdb_outer_right) - 0045
specialize euclid_prime_dvd_product p - 0046
specialize euclid_prime_dvd_product (x1 * x2) - 0047
specialize euclid_prime_dvd_product c - 0048
apply euclid_prime_dvd_product - 0049
exact hp - 0050
exact htotal - 0051
cases houter - 0052
have hinner : (exists bpr_quotient_bcpdb_inner_left. x1 = (p) * bpr_quotient_bcpdb_inner_left) \/ (exists bpr_quotient_bcpdb_inner_right. x2 = (p) * bpr_quotient_bcpdb_inner_right) - 0053
specialize euclid_prime_dvd_product p - 0054
specialize euclid_prime_dvd_product x1 - 0055
specialize euclid_prime_dvd_product x2 - 0056
apply euclid_prime_dvd_product - 0057
exact hp - 0058
exact houter_left - 0059
cases hinner - 0060
have hpk : exists g. g + p = k - 0061
specialize factorial_prime_le_of_divides p - 0062
specialize factorial_prime_le_of_divides k - 0063
specialize factorial_prime_le_of_divides x1 - 0064
apply factorial_prime_le_of_divides - 0065
exact hp - 0066
exact hK_witness - 0067
exact hinner_left - 0068
exfalso - 0069
specialize lt_not_le k - 0070
specialize lt_not_le p - 0071
apply lt_not_le - 0072
exact hk - 0073
exact hpk - 0074
have hpj : exists g. g + p = j - 0075
specialize factorial_prime_le_of_divides p - 0076
specialize factorial_prime_le_of_divides j - 0077
specialize factorial_prime_le_of_divides x2 - 0078
apply factorial_prime_le_of_divides - 0079
exact hp - 0080
exact hJ_witness - 0081
exact hinner_right - 0082
exfalso - 0083
specialize lt_not_le j - 0084
specialize lt_not_le p - 0085
apply lt_not_le - 0086
exact hj - 0087
exact hpj - 0088
exact houter_right