BT00Y4 · Bertrand theorem

central_binom_carry_bit_count

Alpha v34 checked-use theorem · independently kernel and Lean verified; not Stable

The valuation exponent is exactly the number of doubled-quotient carries.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.

Statement with defined notation

∀ p. ∀ n. ∀ C. ∀ v. Prime(p)CentralBinom(n,C)PowerValuation(p,C,v) → ∃ x. ∃ y. ∃ z. ∃ m. ∃ k. ∃ i. PowerQuotPrefix(p,n,x,y,n + n) ∧ (PowerQuotPrefix(p,n + n,z,m,n + n) ∧ ((∀ j. Lt(j,n + n) → ∃ u. ∃ w. ∃ x0. BetaAt(x,y,j,u) ∧ (BetaAt(z,m,j,w) ∧ (BetaAt(k,i,j,x0) ∧ (x0 = 0 ∧ w = u + u ∨ x0 = 1 ∧ w = S (u + u))))) ∧ BitCount(k,i,n + n,v)))

Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.

Definitions used by this theorem

In the theorem statement

10 occurrences

In local proof propositions

10 occurrences

Exact expanded native-PA statement
forall p n C v. ((~(p = 1) /\ forall frm_prime_left_b5cccbbc_prime frm_prime_right_b5cccbbc_prime. p = frm_prime_left_b5cccbbc_prime * frm_prime_right_b5cccbbc_prime -> frm_prime_left_b5cccbbc_prime = 1 \/ frm_prime_right_b5cccbbc_prime = 1)) -> (((exists bcf_lt_gap_b5cccbbc_central_out_of_range. bcf_lt_gap_b5cccbbc_central_out_of_range + S (n + n) = n) /\ C = 0) \/ ((exists bcf_le_gap_b5cccbbc_central_in_range. bcf_le_gap_b5cccbbc_central_in_range + (n) = n + n) /\ (exists bcf_row_code_code_b5cccbbc_central bcf_row_code_scale_b5cccbbc_central bcf_row_scale_code_b5cccbbc_central bcf_row_scale_scale_b5cccbbc_central bcf_row_code_b5cccbbc_central bcf_row_scale_b5cccbbc_central. ((forall bcf_row_index_b5cccbbc_central_table. (exists bcf_lt_gap_b5cccbbc_central_table_row_bound. bcf_lt_gap_b5cccbbc_central_table_row_bound + S (bcf_row_index_b5cccbbc_central_table) = S (n + n)) -> exists bcf_row_code_b5cccbbc_central_table bcf_row_scale_b5cccbbc_central_table. ((((exists bcf_height_b5cccbbc_central_table_decoded_row_code. bcf_height_b5cccbbc_central_table_decoded_row_code + S (bcf_row_code_b5cccbbc_central_table) = S ((S (bcf_row_index_b5cccbbc_central_table)) * bcf_row_code_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_table_decoded_row_code. bcf_row_code_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_table_decoded_row_code * S ((S (bcf_row_index_b5cccbbc_central_table)) * bcf_row_code_scale_b5cccbbc_central) + (bcf_row_code_b5cccbbc_central_table))) /\ ((((exists bcf_height_b5cccbbc_central_table_decoded_row_scale. bcf_height_b5cccbbc_central_table_decoded_row_scale + S (bcf_row_scale_b5cccbbc_central_table) = S ((S (bcf_row_index_b5cccbbc_central_table)) * bcf_row_scale_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_table_decoded_row_scale. bcf_row_scale_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_table_decoded_row_scale * S ((S (bcf_row_index_b5cccbbc_central_table)) * bcf_row_scale_scale_b5cccbbc_central) + (bcf_row_scale_b5cccbbc_central_table))) /\ ((bcf_row_index_b5cccbbc_central_table = 0 /\ (forall bcf_index_b5cccbbc_central_table_zero_row. (exists bcf_lt_gap_b5cccbbc_central_table_zero_row_bound. bcf_lt_gap_b5cccbbc_central_table_zero_row_bound + S (bcf_index_b5cccbbc_central_table_zero_row) = S (n + n)) -> exists bcf_value_b5cccbbc_central_table_zero_row. ((((exists bcf_height_b5cccbbc_central_table_zero_row_entry. bcf_height_b5cccbbc_central_table_zero_row_entry + S (bcf_value_b5cccbbc_central_table_zero_row) = S ((S (bcf_index_b5cccbbc_central_table_zero_row)) * bcf_row_scale_b5cccbbc_central_table)) /\ exists bcf_quotient_b5cccbbc_central_table_zero_row_entry. bcf_row_code_b5cccbbc_central_table = bcf_quotient_b5cccbbc_central_table_zero_row_entry * S ((S (bcf_index_b5cccbbc_central_table_zero_row)) * bcf_row_scale_b5cccbbc_central_table) + (bcf_value_b5cccbbc_central_table_zero_row))) /\ ((bcf_index_b5cccbbc_central_table_zero_row = 0 /\ bcf_value_b5cccbbc_central_table_zero_row = 1) \/ exists bcf_predecessor_b5cccbbc_central_table_zero_row. bcf_index_b5cccbbc_central_table_zero_row = S bcf_predecessor_b5cccbbc_central_table_zero_row /\ bcf_value_b5cccbbc_central_table_zero_row = 0)))) \/ exists bcf_predecessor_b5cccbbc_central_table bcf_previous_code_b5cccbbc_central_table bcf_previous_scale_b5cccbbc_central_table. bcf_row_index_b5cccbbc_central_table = S bcf_predecessor_b5cccbbc_central_table /\ ((((exists bcf_height_b5cccbbc_central_table_decoded_previous_code. bcf_height_b5cccbbc_central_table_decoded_previous_code + S (bcf_previous_code_b5cccbbc_central_table) = S ((S (bcf_predecessor_b5cccbbc_central_table)) * bcf_row_code_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_table_decoded_previous_code. bcf_row_code_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_table_decoded_previous_code * S ((S (bcf_predecessor_b5cccbbc_central_table)) * bcf_row_code_scale_b5cccbbc_central) + (bcf_previous_code_b5cccbbc_central_table))) /\ ((((exists bcf_height_b5cccbbc_central_table_decoded_previous_scale. bcf_height_b5cccbbc_central_table_decoded_previous_scale + S (bcf_previous_scale_b5cccbbc_central_table) = S ((S (bcf_predecessor_b5cccbbc_central_table)) * bcf_row_scale_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_table_decoded_previous_scale. bcf_row_scale_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_table_decoded_previous_scale * S ((S (bcf_predecessor_b5cccbbc_central_table)) * bcf_row_scale_scale_b5cccbbc_central) + (bcf_previous_scale_b5cccbbc_central_table))) /\ (forall bcf_index_b5cccbbc_central_table_row_step. (exists bcf_lt_gap_b5cccbbc_central_table_row_step_bound. bcf_lt_gap_b5cccbbc_central_table_row_step_bound + S (bcf_index_b5cccbbc_central_table_row_step) = S (n + n)) -> exists bcf_value_b5cccbbc_central_table_row_step. ((((exists bcf_height_b5cccbbc_central_table_row_step_entry. bcf_height_b5cccbbc_central_table_row_step_entry + S (bcf_value_b5cccbbc_central_table_row_step) = S ((S (bcf_index_b5cccbbc_central_table_row_step)) * bcf_row_scale_b5cccbbc_central_table)) /\ exists bcf_quotient_b5cccbbc_central_table_row_step_entry. bcf_row_code_b5cccbbc_central_table = bcf_quotient_b5cccbbc_central_table_row_step_entry * S ((S (bcf_index_b5cccbbc_central_table_row_step)) * bcf_row_scale_b5cccbbc_central_table) + (bcf_value_b5cccbbc_central_table_row_step))) /\ ((bcf_index_b5cccbbc_central_table_row_step = 0 /\ bcf_value_b5cccbbc_central_table_row_step = 1) \/ exists bcf_predecessor_b5cccbbc_central_table_row_step bcf_left_b5cccbbc_central_table_row_step bcf_right_b5cccbbc_central_table_row_step. bcf_index_b5cccbbc_central_table_row_step = S bcf_predecessor_b5cccbbc_central_table_row_step /\ ((((exists bcf_height_b5cccbbc_central_table_row_step_previous_left. bcf_height_b5cccbbc_central_table_row_step_previous_left + S (bcf_left_b5cccbbc_central_table_row_step) = S ((S (bcf_predecessor_b5cccbbc_central_table_row_step)) * bcf_previous_scale_b5cccbbc_central_table)) /\ exists bcf_quotient_b5cccbbc_central_table_row_step_previous_left. bcf_previous_code_b5cccbbc_central_table = bcf_quotient_b5cccbbc_central_table_row_step_previous_left * S ((S (bcf_predecessor_b5cccbbc_central_table_row_step)) * bcf_previous_scale_b5cccbbc_central_table) + (bcf_left_b5cccbbc_central_table_row_step))) /\ ((((exists bcf_height_b5cccbbc_central_table_row_step_previous_right. bcf_height_b5cccbbc_central_table_row_step_previous_right + S (bcf_right_b5cccbbc_central_table_row_step) = S ((S (S (bcf_predecessor_b5cccbbc_central_table_row_step))) * bcf_previous_scale_b5cccbbc_central_table)) /\ exists bcf_quotient_b5cccbbc_central_table_row_step_previous_right. bcf_previous_code_b5cccbbc_central_table = bcf_quotient_b5cccbbc_central_table_row_step_previous_right * S ((S (S (bcf_predecessor_b5cccbbc_central_table_row_step))) * bcf_previous_scale_b5cccbbc_central_table) + (bcf_right_b5cccbbc_central_table_row_step))) /\ bcf_value_b5cccbbc_central_table_row_step = bcf_left_b5cccbbc_central_table_row_step + bcf_right_b5cccbbc_central_table_row_step))))))))))) /\ ((((exists bcf_height_b5cccbbc_central_decoded_row_code. bcf_height_b5cccbbc_central_decoded_row_code + S (bcf_row_code_b5cccbbc_central) = S ((S (n + n)) * bcf_row_code_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_decoded_row_code. bcf_row_code_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_decoded_row_code * S ((S (n + n)) * bcf_row_code_scale_b5cccbbc_central) + (bcf_row_code_b5cccbbc_central))) /\ ((((exists bcf_height_b5cccbbc_central_decoded_row_scale. bcf_height_b5cccbbc_central_decoded_row_scale + S (bcf_row_scale_b5cccbbc_central) = S ((S (n + n)) * bcf_row_scale_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_decoded_row_scale. bcf_row_scale_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_decoded_row_scale * S ((S (n + n)) * bcf_row_scale_scale_b5cccbbc_central) + (bcf_row_scale_b5cccbbc_central))) /\ (((exists bcf_height_b5cccbbc_central_decoded_value. bcf_height_b5cccbbc_central_decoded_value + S (C) = S ((S (n)) * bcf_row_scale_b5cccbbc_central)) /\ exists bcf_quotient_b5cccbbc_central_decoded_value. bcf_row_code_b5cccbbc_central = bcf_quotient_b5cccbbc_central_decoded_value * S ((S (n)) * bcf_row_scale_b5cccbbc_central) + (C))))))))) -> (((exists bpv_gap_b5cccbbc_valuation_exponent_bound. bpv_gap_b5cccbbc_valuation_exponent_bound + v = C) /\ (exists bpv_result_b5cccbbc_valuation_selected. ((exists ff_b_b5cccbbc_valuation_selected_power ff_c_b5cccbbc_valuation_selected_power. ((forall ff_i_b5cccbbc_valuation_selected_power_repeat. (exists ff_lt_b5cccbbc_valuation_selected_power_repeat_bound. ff_lt_b5cccbbc_valuation_selected_power_repeat_bound + S ff_i_b5cccbbc_valuation_selected_power_repeat = v) -> (((exists ff_h_b5cccbbc_valuation_selected_power_repeat_decoded. ff_h_b5cccbbc_valuation_selected_power_repeat_decoded + S (p) = S ((S (ff_i_b5cccbbc_valuation_selected_power_repeat)) * ff_c_b5cccbbc_valuation_selected_power)) /\ exists ff_q_b5cccbbc_valuation_selected_power_repeat_decoded. ff_b_b5cccbbc_valuation_selected_power = ff_q_b5cccbbc_valuation_selected_power_repeat_decoded * S ((S (ff_i_b5cccbbc_valuation_selected_power_repeat)) * ff_c_b5cccbbc_valuation_selected_power) + (p)))) /\ (exists ff_u_b5cccbbc_valuation_selected_power_product ff_v_b5cccbbc_valuation_selected_power_product. ((((exists ff_h_b5cccbbc_valuation_selected_power_product_start. ff_h_b5cccbbc_valuation_selected_power_product_start + S (1) = S ((S (0)) * ff_v_b5cccbbc_valuation_selected_power_product)) /\ exists ff_q_b5cccbbc_valuation_selected_power_product_start. ff_u_b5cccbbc_valuation_selected_power_product = ff_q_b5cccbbc_valuation_selected_power_product_start * S ((S (0)) * ff_v_b5cccbbc_valuation_selected_power_product) + (1))) /\ ((((exists ff_h_b5cccbbc_valuation_selected_power_product_terminal. ff_h_b5cccbbc_valuation_selected_power_product_terminal + S (bpv_result_b5cccbbc_valuation_selected) = S ((S (v)) * ff_v_b5cccbbc_valuation_selected_power_product)) /\ exists ff_q_b5cccbbc_valuation_selected_power_product_terminal. ff_u_b5cccbbc_valuation_selected_power_product = ff_q_b5cccbbc_valuation_selected_power_product_terminal * S ((S (v)) * ff_v_b5cccbbc_valuation_selected_power_product) + (bpv_result_b5cccbbc_valuation_selected))) /\ forall ff_i_b5cccbbc_valuation_selected_power_product. (exists ff_lt_b5cccbbc_valuation_selected_power_product_bound. ff_lt_b5cccbbc_valuation_selected_power_product_bound + S ff_i_b5cccbbc_valuation_selected_power_product = v) -> exists ff_p_b5cccbbc_valuation_selected_power_product ff_r_b5cccbbc_valuation_selected_power_product ff_s_b5cccbbc_valuation_selected_power_product. ((((exists ff_h_b5cccbbc_valuation_selected_power_product_factor. ff_h_b5cccbbc_valuation_selected_power_product_factor + S (ff_p_b5cccbbc_valuation_selected_power_product) = S ((S (ff_i_b5cccbbc_valuation_selected_power_product)) * ff_c_b5cccbbc_valuation_selected_power)) /\ exists ff_q_b5cccbbc_valuation_selected_power_product_factor. ff_b_b5cccbbc_valuation_selected_power = ff_q_b5cccbbc_valuation_selected_power_product_factor * S ((S (ff_i_b5cccbbc_valuation_selected_power_product)) * ff_c_b5cccbbc_valuation_selected_power) + (ff_p_b5cccbbc_valuation_selected_power_product))) /\ ((((exists ff_h_b5cccbbc_valuation_selected_power_product_partial. ff_h_b5cccbbc_valuation_selected_power_product_partial + S (ff_r_b5cccbbc_valuation_selected_power_product) = S ((S (ff_i_b5cccbbc_valuation_selected_power_product)) * ff_v_b5cccbbc_valuation_selected_power_product)) /\ exists ff_q_b5cccbbc_valuation_selected_power_product_partial. ff_u_b5cccbbc_valuation_selected_power_product = ff_q_b5cccbbc_valuation_selected_power_product_partial * S ((S (ff_i_b5cccbbc_valuation_selected_power_product)) * ff_v_b5cccbbc_valuation_selected_power_product) + (ff_r_b5cccbbc_valuation_selected_power_product))) /\ ((((exists ff_h_b5cccbbc_valuation_selected_power_product_successor. ff_h_b5cccbbc_valuation_selected_power_product_successor + S (ff_s_b5cccbbc_valuation_selected_power_product) = S ((S (S ff_i_b5cccbbc_valuation_selected_power_product)) * ff_v_b5cccbbc_valuation_selected_power_product)) /\ exists ff_q_b5cccbbc_valuation_selected_power_product_successor. ff_u_b5cccbbc_valuation_selected_power_product = ff_q_b5cccbbc_valuation_selected_power_product_successor * S ((S (S ff_i_b5cccbbc_valuation_selected_power_product)) * ff_v_b5cccbbc_valuation_selected_power_product) + (ff_s_b5cccbbc_valuation_selected_power_product))) /\ ff_s_b5cccbbc_valuation_selected_power_product = ff_r_b5cccbbc_valuation_selected_power_product * ff_p_b5cccbbc_valuation_selected_power_product)))))))) /\ (exists bpv_factor_b5cccbbc_valuation_selected_divides. C = bpv_result_b5cccbbc_valuation_selected * bpv_factor_b5cccbbc_valuation_selected_divides)))) /\ forall bpv_candidate_b5cccbbc_valuation. (exists bpv_gap_b5cccbbc_valuation_candidate_bound. bpv_gap_b5cccbbc_valuation_candidate_bound + bpv_candidate_b5cccbbc_valuation = C) -> (exists bpv_result_b5cccbbc_valuation_candidate. ((exists ff_b_b5cccbbc_valuation_candidate_power ff_c_b5cccbbc_valuation_candidate_power. ((forall ff_i_b5cccbbc_valuation_candidate_power_repeat. (exists ff_lt_b5cccbbc_valuation_candidate_power_repeat_bound. ff_lt_b5cccbbc_valuation_candidate_power_repeat_bound + S ff_i_b5cccbbc_valuation_candidate_power_repeat = bpv_candidate_b5cccbbc_valuation) -> (((exists ff_h_b5cccbbc_valuation_candidate_power_repeat_decoded. ff_h_b5cccbbc_valuation_candidate_power_repeat_decoded + S (p) = S ((S (ff_i_b5cccbbc_valuation_candidate_power_repeat)) * ff_c_b5cccbbc_valuation_candidate_power)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_repeat_decoded. ff_b_b5cccbbc_valuation_candidate_power = ff_q_b5cccbbc_valuation_candidate_power_repeat_decoded * S ((S (ff_i_b5cccbbc_valuation_candidate_power_repeat)) * ff_c_b5cccbbc_valuation_candidate_power) + (p)))) /\ (exists ff_u_b5cccbbc_valuation_candidate_power_product ff_v_b5cccbbc_valuation_candidate_power_product. ((((exists ff_h_b5cccbbc_valuation_candidate_power_product_start. ff_h_b5cccbbc_valuation_candidate_power_product_start + S (1) = S ((S (0)) * ff_v_b5cccbbc_valuation_candidate_power_product)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_product_start. ff_u_b5cccbbc_valuation_candidate_power_product = ff_q_b5cccbbc_valuation_candidate_power_product_start * S ((S (0)) * ff_v_b5cccbbc_valuation_candidate_power_product) + (1))) /\ ((((exists ff_h_b5cccbbc_valuation_candidate_power_product_terminal. ff_h_b5cccbbc_valuation_candidate_power_product_terminal + S (bpv_result_b5cccbbc_valuation_candidate) = S ((S (bpv_candidate_b5cccbbc_valuation)) * ff_v_b5cccbbc_valuation_candidate_power_product)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_product_terminal. ff_u_b5cccbbc_valuation_candidate_power_product = ff_q_b5cccbbc_valuation_candidate_power_product_terminal * S ((S (bpv_candidate_b5cccbbc_valuation)) * ff_v_b5cccbbc_valuation_candidate_power_product) + (bpv_result_b5cccbbc_valuation_candidate))) /\ forall ff_i_b5cccbbc_valuation_candidate_power_product. (exists ff_lt_b5cccbbc_valuation_candidate_power_product_bound. ff_lt_b5cccbbc_valuation_candidate_power_product_bound + S ff_i_b5cccbbc_valuation_candidate_power_product = bpv_candidate_b5cccbbc_valuation) -> exists ff_p_b5cccbbc_valuation_candidate_power_product ff_r_b5cccbbc_valuation_candidate_power_product ff_s_b5cccbbc_valuation_candidate_power_product. ((((exists ff_h_b5cccbbc_valuation_candidate_power_product_factor. ff_h_b5cccbbc_valuation_candidate_power_product_factor + S (ff_p_b5cccbbc_valuation_candidate_power_product) = S ((S (ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_c_b5cccbbc_valuation_candidate_power)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_product_factor. ff_b_b5cccbbc_valuation_candidate_power = ff_q_b5cccbbc_valuation_candidate_power_product_factor * S ((S (ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_c_b5cccbbc_valuation_candidate_power) + (ff_p_b5cccbbc_valuation_candidate_power_product))) /\ ((((exists ff_h_b5cccbbc_valuation_candidate_power_product_partial. ff_h_b5cccbbc_valuation_candidate_power_product_partial + S (ff_r_b5cccbbc_valuation_candidate_power_product) = S ((S (ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_v_b5cccbbc_valuation_candidate_power_product)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_product_partial. ff_u_b5cccbbc_valuation_candidate_power_product = ff_q_b5cccbbc_valuation_candidate_power_product_partial * S ((S (ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_v_b5cccbbc_valuation_candidate_power_product) + (ff_r_b5cccbbc_valuation_candidate_power_product))) /\ ((((exists ff_h_b5cccbbc_valuation_candidate_power_product_successor. ff_h_b5cccbbc_valuation_candidate_power_product_successor + S (ff_s_b5cccbbc_valuation_candidate_power_product) = S ((S (S ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_v_b5cccbbc_valuation_candidate_power_product)) /\ exists ff_q_b5cccbbc_valuation_candidate_power_product_successor. ff_u_b5cccbbc_valuation_candidate_power_product = ff_q_b5cccbbc_valuation_candidate_power_product_successor * S ((S (S ff_i_b5cccbbc_valuation_candidate_power_product)) * ff_v_b5cccbbc_valuation_candidate_power_product) + (ff_s_b5cccbbc_valuation_candidate_power_product))) /\ ff_s_b5cccbbc_valuation_candidate_power_product = ff_r_b5cccbbc_valuation_candidate_power_product * ff_p_b5cccbbc_valuation_candidate_power_product)))))))) /\ (exists bpv_factor_b5cccbbc_valuation_candidate_divides. C = bpv_result_b5cccbbc_valuation_candidate * bpv_factor_b5cccbbc_valuation_candidate_divides))) -> (exists bpv_gap_b5cccbbc_valuation_maximal. bpv_gap_b5cccbbc_valuation_maximal + bpv_candidate_b5cccbbc_valuation = v)) -> exists b s d t f g. (forall bls_index_b5cccbbc_left. (exists bls_gap_b5cccbbc_left_bound. bls_gap_b5cccbbc_left_bound + S (bls_index_b5cccbbc_left) = (n + n)) -> exists bls_power_b5cccbbc_left bls_quotient_b5cccbbc_left bls_remainder_b5cccbbc_left. ((exists bpvi_b_bls_b5cccbbc_left_power bpvi_c_bls_b5cccbbc_left_power. ((forall bpvi_i_bls_b5cccbbc_left_power. (exists bpvi_repeat_gap_bls_b5cccbbc_left_power. bpvi_repeat_gap_bls_b5cccbbc_left_power + S bpvi_i_bls_b5cccbbc_left_power = S bls_index_b5cccbbc_left) -> (((exists bpvi_h_bls_b5cccbbc_left_power_repeat. bpvi_h_bls_b5cccbbc_left_power_repeat + S (p) = S ((S (bpvi_i_bls_b5cccbbc_left_power)) * bpvi_c_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_repeat. bpvi_b_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_repeat * S ((S (bpvi_i_bls_b5cccbbc_left_power)) * bpvi_c_bls_b5cccbbc_left_power) + (p)))) /\ (exists bpvi_u_bls_b5cccbbc_left_power bpvi_v_bls_b5cccbbc_left_power. ((((exists bpvi_h_bls_b5cccbbc_left_power_start. bpvi_h_bls_b5cccbbc_left_power_start + S (1) = S ((S (0)) * bpvi_v_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_start. bpvi_u_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_start * S ((S (0)) * bpvi_v_bls_b5cccbbc_left_power) + (1))) /\ ((((exists bpvi_h_bls_b5cccbbc_left_power_terminal. bpvi_h_bls_b5cccbbc_left_power_terminal + S (bls_power_b5cccbbc_left) = S ((S (S bls_index_b5cccbbc_left)) * bpvi_v_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_terminal. bpvi_u_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_terminal * S ((S (S bls_index_b5cccbbc_left)) * bpvi_v_bls_b5cccbbc_left_power) + (bls_power_b5cccbbc_left))) /\ forall bpvi_j_bls_b5cccbbc_left_power. (exists bpvi_product_gap_bls_b5cccbbc_left_power. bpvi_product_gap_bls_b5cccbbc_left_power + S bpvi_j_bls_b5cccbbc_left_power = S bls_index_b5cccbbc_left) -> exists bpvi_factor_bls_b5cccbbc_left_power bpvi_partial_bls_b5cccbbc_left_power bpvi_successor_bls_b5cccbbc_left_power. ((((exists bpvi_h_bls_b5cccbbc_left_power_factor. bpvi_h_bls_b5cccbbc_left_power_factor + S (bpvi_factor_bls_b5cccbbc_left_power) = S ((S (bpvi_j_bls_b5cccbbc_left_power)) * bpvi_c_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_factor. bpvi_b_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_factor * S ((S (bpvi_j_bls_b5cccbbc_left_power)) * bpvi_c_bls_b5cccbbc_left_power) + (bpvi_factor_bls_b5cccbbc_left_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_left_power_partial. bpvi_h_bls_b5cccbbc_left_power_partial + S (bpvi_partial_bls_b5cccbbc_left_power) = S ((S (bpvi_j_bls_b5cccbbc_left_power)) * bpvi_v_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_partial. bpvi_u_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_partial * S ((S (bpvi_j_bls_b5cccbbc_left_power)) * bpvi_v_bls_b5cccbbc_left_power) + (bpvi_partial_bls_b5cccbbc_left_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_left_power_successor. bpvi_h_bls_b5cccbbc_left_power_successor + S (bpvi_successor_bls_b5cccbbc_left_power) = S ((S (S bpvi_j_bls_b5cccbbc_left_power)) * bpvi_v_bls_b5cccbbc_left_power)) /\ exists bpvi_q_bls_b5cccbbc_left_power_successor. bpvi_u_bls_b5cccbbc_left_power = bpvi_q_bls_b5cccbbc_left_power_successor * S ((S (S bpvi_j_bls_b5cccbbc_left_power)) * bpvi_v_bls_b5cccbbc_left_power) + (bpvi_successor_bls_b5cccbbc_left_power))) /\ bpvi_successor_bls_b5cccbbc_left_power = bpvi_partial_bls_b5cccbbc_left_power * bpvi_factor_bls_b5cccbbc_left_power)))))))) /\ ((((exists ff_h_bls_b5cccbbc_left_quotient_entry. ff_h_bls_b5cccbbc_left_quotient_entry + S (bls_quotient_b5cccbbc_left) = S ((S (bls_index_b5cccbbc_left)) * s)) /\ exists ff_q_bls_b5cccbbc_left_quotient_entry. b = ff_q_bls_b5cccbbc_left_quotient_entry * S ((S (bls_index_b5cccbbc_left)) * s) + (bls_quotient_b5cccbbc_left))) /\ ((n = bls_power_b5cccbbc_left * bls_quotient_b5cccbbc_left + bls_remainder_b5cccbbc_left /\ exists bls_remainder_gap_b5cccbbc_left_division. bls_remainder_gap_b5cccbbc_left_division + S (bls_remainder_b5cccbbc_left) = bls_power_b5cccbbc_left))))) /\ ((forall bls_index_b5cccbbc_right. (exists bls_gap_b5cccbbc_right_bound. bls_gap_b5cccbbc_right_bound + S (bls_index_b5cccbbc_right) = (n + n)) -> exists bls_power_b5cccbbc_right bls_quotient_b5cccbbc_right bls_remainder_b5cccbbc_right. ((exists bpvi_b_bls_b5cccbbc_right_power bpvi_c_bls_b5cccbbc_right_power. ((forall bpvi_i_bls_b5cccbbc_right_power. (exists bpvi_repeat_gap_bls_b5cccbbc_right_power. bpvi_repeat_gap_bls_b5cccbbc_right_power + S bpvi_i_bls_b5cccbbc_right_power = S bls_index_b5cccbbc_right) -> (((exists bpvi_h_bls_b5cccbbc_right_power_repeat. bpvi_h_bls_b5cccbbc_right_power_repeat + S (p) = S ((S (bpvi_i_bls_b5cccbbc_right_power)) * bpvi_c_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_repeat. bpvi_b_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_repeat * S ((S (bpvi_i_bls_b5cccbbc_right_power)) * bpvi_c_bls_b5cccbbc_right_power) + (p)))) /\ (exists bpvi_u_bls_b5cccbbc_right_power bpvi_v_bls_b5cccbbc_right_power. ((((exists bpvi_h_bls_b5cccbbc_right_power_start. bpvi_h_bls_b5cccbbc_right_power_start + S (1) = S ((S (0)) * bpvi_v_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_start. bpvi_u_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_start * S ((S (0)) * bpvi_v_bls_b5cccbbc_right_power) + (1))) /\ ((((exists bpvi_h_bls_b5cccbbc_right_power_terminal. bpvi_h_bls_b5cccbbc_right_power_terminal + S (bls_power_b5cccbbc_right) = S ((S (S bls_index_b5cccbbc_right)) * bpvi_v_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_terminal. bpvi_u_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_terminal * S ((S (S bls_index_b5cccbbc_right)) * bpvi_v_bls_b5cccbbc_right_power) + (bls_power_b5cccbbc_right))) /\ forall bpvi_j_bls_b5cccbbc_right_power. (exists bpvi_product_gap_bls_b5cccbbc_right_power. bpvi_product_gap_bls_b5cccbbc_right_power + S bpvi_j_bls_b5cccbbc_right_power = S bls_index_b5cccbbc_right) -> exists bpvi_factor_bls_b5cccbbc_right_power bpvi_partial_bls_b5cccbbc_right_power bpvi_successor_bls_b5cccbbc_right_power. ((((exists bpvi_h_bls_b5cccbbc_right_power_factor. bpvi_h_bls_b5cccbbc_right_power_factor + S (bpvi_factor_bls_b5cccbbc_right_power) = S ((S (bpvi_j_bls_b5cccbbc_right_power)) * bpvi_c_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_factor. bpvi_b_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_factor * S ((S (bpvi_j_bls_b5cccbbc_right_power)) * bpvi_c_bls_b5cccbbc_right_power) + (bpvi_factor_bls_b5cccbbc_right_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_right_power_partial. bpvi_h_bls_b5cccbbc_right_power_partial + S (bpvi_partial_bls_b5cccbbc_right_power) = S ((S (bpvi_j_bls_b5cccbbc_right_power)) * bpvi_v_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_partial. bpvi_u_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_partial * S ((S (bpvi_j_bls_b5cccbbc_right_power)) * bpvi_v_bls_b5cccbbc_right_power) + (bpvi_partial_bls_b5cccbbc_right_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_right_power_successor. bpvi_h_bls_b5cccbbc_right_power_successor + S (bpvi_successor_bls_b5cccbbc_right_power) = S ((S (S bpvi_j_bls_b5cccbbc_right_power)) * bpvi_v_bls_b5cccbbc_right_power)) /\ exists bpvi_q_bls_b5cccbbc_right_power_successor. bpvi_u_bls_b5cccbbc_right_power = bpvi_q_bls_b5cccbbc_right_power_successor * S ((S (S bpvi_j_bls_b5cccbbc_right_power)) * bpvi_v_bls_b5cccbbc_right_power) + (bpvi_successor_bls_b5cccbbc_right_power))) /\ bpvi_successor_bls_b5cccbbc_right_power = bpvi_partial_bls_b5cccbbc_right_power * bpvi_factor_bls_b5cccbbc_right_power)))))))) /\ ((((exists ff_h_bls_b5cccbbc_right_quotient_entry. ff_h_bls_b5cccbbc_right_quotient_entry + S (bls_quotient_b5cccbbc_right) = S ((S (bls_index_b5cccbbc_right)) * t)) /\ exists ff_q_bls_b5cccbbc_right_quotient_entry. d = ff_q_bls_b5cccbbc_right_quotient_entry * S ((S (bls_index_b5cccbbc_right)) * t) + (bls_quotient_b5cccbbc_right))) /\ ((n + n = bls_power_b5cccbbc_right * bls_quotient_b5cccbbc_right + bls_remainder_b5cccbbc_right /\ exists bls_remainder_gap_b5cccbbc_right_division. bls_remainder_gap_b5cccbbc_right_division + S (bls_remainder_b5cccbbc_right) = bls_power_b5cccbbc_right))))) /\ ((forall b5cc_index_b5cccbbc_carries. (exists bcf_lt_gap_b5cccbbc_carries_bound. bcf_lt_gap_b5cccbbc_carries_bound + S (b5cc_index_b5cccbbc_carries) = n + n) -> exists b5cc_left_b5cccbbc_carries b5cc_right_b5cccbbc_carries b5cc_bit_b5cccbbc_carries. (((exists fs_h_b5cc_b5cccbbc_carries_left. fs_h_b5cc_b5cccbbc_carries_left + S (b5cc_left_b5cccbbc_carries) = S ((S (b5cc_index_b5cccbbc_carries)) * s)) /\ exists fs_q_b5cc_b5cccbbc_carries_left. b = fs_q_b5cc_b5cccbbc_carries_left * S ((S (b5cc_index_b5cccbbc_carries)) * s) + (b5cc_left_b5cccbbc_carries))) /\ ((((exists fs_h_b5cc_b5cccbbc_carries_right. fs_h_b5cc_b5cccbbc_carries_right + S (b5cc_right_b5cccbbc_carries) = S ((S (b5cc_index_b5cccbbc_carries)) * t)) /\ exists fs_q_b5cc_b5cccbbc_carries_right. d = fs_q_b5cc_b5cccbbc_carries_right * S ((S (b5cc_index_b5cccbbc_carries)) * t) + (b5cc_right_b5cccbbc_carries))) /\ ((((exists fs_h_b5cc_b5cccbbc_carries_bit. fs_h_b5cc_b5cccbbc_carries_bit + S (b5cc_bit_b5cccbbc_carries) = S ((S (b5cc_index_b5cccbbc_carries)) * g)) /\ exists fs_q_b5cc_b5cccbbc_carries_bit. f = fs_q_b5cc_b5cccbbc_carries_bit * S ((S (b5cc_index_b5cccbbc_carries)) * g) + (b5cc_bit_b5cccbbc_carries))) /\ (((b5cc_bit_b5cccbbc_carries = 0 /\ b5cc_right_b5cccbbc_carries = b5cc_left_b5cccbbc_carries + b5cc_left_b5cccbbc_carries) \/ (b5cc_bit_b5cccbbc_carries = 1 /\ b5cc_right_b5cccbbc_carries = S (b5cc_left_b5cccbbc_carries + b5cc_left_b5cccbbc_carries))))))) /\ (((exists ff_u_b5cccbbc_count_sum ff_v_b5cccbbc_count_sum. ((((exists ff_h_b5cccbbc_count_sum_start. ff_h_b5cccbbc_count_sum_start + S (0) = S ((S (0)) * ff_v_b5cccbbc_count_sum)) /\ exists ff_q_b5cccbbc_count_sum_start. ff_u_b5cccbbc_count_sum = ff_q_b5cccbbc_count_sum_start * S ((S (0)) * ff_v_b5cccbbc_count_sum) + (0))) /\ ((((exists ff_h_b5cccbbc_count_sum_terminal. ff_h_b5cccbbc_count_sum_terminal + S ((v)) = S ((S ((n + n))) * ff_v_b5cccbbc_count_sum)) /\ exists ff_q_b5cccbbc_count_sum_terminal. ff_u_b5cccbbc_count_sum = ff_q_b5cccbbc_count_sum_terminal * S ((S ((n + n))) * ff_v_b5cccbbc_count_sum) + ((v)))) /\ forall ff_i_b5cccbbc_count_sum. (exists ff_lt_b5cccbbc_count_sum_bound. ff_lt_b5cccbbc_count_sum_bound + S ff_i_b5cccbbc_count_sum = (n + n)) -> exists ff_a_b5cccbbc_count_sum ff_r_b5cccbbc_count_sum ff_s_b5cccbbc_count_sum. ((((exists ff_h_b5cccbbc_count_sum_summand. ff_h_b5cccbbc_count_sum_summand + S (ff_a_b5cccbbc_count_sum) = S ((S (ff_i_b5cccbbc_count_sum)) * g)) /\ exists ff_q_b5cccbbc_count_sum_summand. f = ff_q_b5cccbbc_count_sum_summand * S ((S (ff_i_b5cccbbc_count_sum)) * g) + (ff_a_b5cccbbc_count_sum))) /\ ((((exists ff_h_b5cccbbc_count_sum_partial. ff_h_b5cccbbc_count_sum_partial + S (ff_r_b5cccbbc_count_sum) = S ((S (ff_i_b5cccbbc_count_sum)) * ff_v_b5cccbbc_count_sum)) /\ exists ff_q_b5cccbbc_count_sum_partial. ff_u_b5cccbbc_count_sum = ff_q_b5cccbbc_count_sum_partial * S ((S (ff_i_b5cccbbc_count_sum)) * ff_v_b5cccbbc_count_sum) + (ff_r_b5cccbbc_count_sum))) /\ ((((exists ff_h_b5cccbbc_count_sum_successor. ff_h_b5cccbbc_count_sum_successor + S (ff_s_b5cccbbc_count_sum) = S ((S (S ff_i_b5cccbbc_count_sum)) * ff_v_b5cccbbc_count_sum)) /\ exists ff_q_b5cccbbc_count_sum_successor. ff_u_b5cccbbc_count_sum = ff_q_b5cccbbc_count_sum_successor * S ((S (S ff_i_b5cccbbc_count_sum)) * ff_v_b5cccbbc_count_sum) + (ff_s_b5cccbbc_count_sum))) /\ ff_s_b5cccbbc_count_sum = ff_r_b5cccbbc_count_sum + ff_a_b5cccbbc_count_sum)))))) /\ (forall ff_i_b5cccbbc_count_bits. (exists ff_lt_b5cccbbc_count_bits_bound. ff_lt_b5cccbbc_count_bits_bound + S ff_i_b5cccbbc_count_bits = (n + n)) -> exists ff_bit_b5cccbbc_count_bits. ((((exists ff_h_b5cccbbc_count_bits_decoded. ff_h_b5cccbbc_count_bits_decoded + S (ff_bit_b5cccbbc_count_bits) = S ((S (ff_i_b5cccbbc_count_bits)) * g)) /\ exists ff_q_b5cccbbc_count_bits_decoded. f = ff_q_b5cccbbc_count_bits_decoded * S ((S (ff_i_b5cccbbc_count_bits)) * g) + (ff_bit_b5cccbbc_count_bits))) /\ (ff_bit_b5cccbbc_count_bits = 0 \/ ff_bit_b5cccbbc_count_bits = 1)))))))

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.

Read the argument

Proof checkpoints

116 script commands · 26 reading checkpoints · 9 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (8)
01Fix variables and assumptionsL1–7

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro n
  3. L3
    intro C
  4. L4
    intro v
  5. L5
    intro hp
  6. L6
    intro hcentral
  7. L7
    intro hvaluation
02Establish hcolumnL8–12

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime legendre sum exists.

  1. L8
    have hcolumn : ∃ B. LegendreSum(p,n,B)Definitions: LegendreSum(p,n,B)Original native command in the exact edition
  2. L9
    specialize prime_legendre_sum_exists p
  3. L10
    specialize prime_legendre_sum_exists n
  4. L11
    apply prime_legendre_sum_exists
  5. L12
    exact hp
03Separate the logical casesL13–13

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L13
    cases hcolumn
04Establish htotalL14–18

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime legendre sum exists.

  1. L14
    have htotal : ∃ A. LegendreSum(p,n + n,A)Definitions: LegendreSum(p,n + n,A)Original native command in the exact edition
  2. L15
    specialize prime_legendre_sum_exists p
  3. L16
    specialize prime_legendre_sum_exists (n + n)
  4. L17
    apply prime_legendre_sum_exists
  5. L18
    exact hp
05Separate the logical casesL19–19

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L19
    cases htotal
06Establish hbalanceL20–29

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply central binom legendre valuation balance.

  1. L20
    have hbalance : x1 = (x + x) + v
  2. L21
    specialize central_binom_legendre_valuation_balance p
  3. L22
    specialize central_binom_legendre_valuation_balance n
  4. L23
    specialize central_binom_legendre_valuation_balance C
  5. L24
    specialize central_binom_legendre_valuation_balance v
  6. L25
    specialize central_binom_legendre_valuation_balance x1
  7. L26
    specialize central_binom_legendre_valuation_balance x
  8. L27
    apply central_binom_legendre_valuation_balance
  9. L28
    exact hp
  10. L29
    exact hcentral
07Use earlier factsL30–32

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L30
    exact hvaluation
  2. L31
    exact htotal_witness
  3. L32
    exact hcolumn_witness
08Establish hextendedL33–40

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply legendre sum extended prefix exists.

  1. L33
    have hextended : ∃ b. ∃ s. PowerQuotPrefix(p,n,b,s,n + n) ∧ Sum(b,s,n + n,x)Definitions: PowerQuotPrefix(p,n,b,s,n + n)Sum(b,s,n + n,x)Original native command in the exact edition
  2. L34
    specialize legendre_sum_extended_prefix_exists p
  3. L35
    specialize legendre_sum_extended_prefix_exists n
  4. L36
    specialize legendre_sum_extended_prefix_exists x
  5. L37
    specialize legendre_sum_extended_prefix_exists n
  6. L38
    apply legendre_sum_extended_prefix_exists
  7. L39
    exact hp
  8. L40
    exact hcolumn_witness
09Separate the logical casesL41–46

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L41
    cases hextended
  2. L42
    cases hextended_witness
  3. L43
    cases hextended_witness_witness
  4. L44
    cases htotal_witness
  5. L45
    cases htotal_witness_witness
  6. L46
    cases htotal_witness_witness_witness
10Establish hcarry_codesL47–56

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply double quotient carry prefix exists.

  1. L47
    have hcarry_codes : ∃ f. ∃ g. ∀ b5cc_index_b5cccbbc_codes. Lt(b5cc_index_b5cccbbc_codes,n + n) → ∃ x. ∃ y. ∃ z. BetaAt(x2,x3,b5cc_index_b5cccbbc_codes,x) ∧ (BetaAt(x4,x5,b5cc_index_b5cccbbc_codes,y) ∧ (BetaAt(f,g,b5cc_index_b5cccbbc_codes,z) ∧ (z = 0 ∧ y = x + x ∨ z = 1 ∧ y = S (x + x))))Definitions: Lt(b5cc_index_b5cccbbc_codes,n + n)BetaAt(x2,x3,b5cc_index_b5cccbbc_codes,x)BetaAt(x4,x5,b5cc_index_b5cccbbc_codes,y)BetaAt(f,g,b5cc_index_b5cccbbc_codes,z)Original native command in the exact edition
  2. L48
    specialize double_quotient_carry_prefix_exists p
  3. L49
    specialize double_quotient_carry_prefix_exists n
  4. L50
    specialize double_quotient_carry_prefix_exists x2
  5. L51
    specialize double_quotient_carry_prefix_exists x3
  6. L52
    specialize double_quotient_carry_prefix_exists x4
  7. L53
    specialize double_quotient_carry_prefix_exists x5
  8. L54
    specialize double_quotient_carry_prefix_exists (n + n)
  9. L55
    apply double_quotient_carry_prefix_exists
  10. L56
    exact hextended_witness_witness_left
11Use earlier factsL57–57

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L57
    exact htotal_witness_witness_witness_left
12Separate the logical casesL58–59

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L58
    cases hcarry_codes
  2. L59
    cases hcarry_codes_witness
13Establish hall_bitsL60–69

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply double quotient carry prefix all bits.

  1. L60
    have hall_bits : AllBits(x6,x7,n + n)Definitions: AllBits(x6,x7,n + n)Original native command in the exact edition
  2. L61
    specialize double_quotient_carry_prefix_all_bits x2
  3. L62
    specialize double_quotient_carry_prefix_all_bits x3
  4. L63
    specialize double_quotient_carry_prefix_all_bits x4
  5. L64
    specialize double_quotient_carry_prefix_all_bits x5
  6. L65
    specialize double_quotient_carry_prefix_all_bits x6
  7. L66
    specialize double_quotient_carry_prefix_all_bits x7
  8. L67
    specialize double_quotient_carry_prefix_all_bits (n + n)
  9. L68
    apply double_quotient_carry_prefix_all_bits
  10. L69
    exact hcarry_codes_witness_witness
14Establish hcountL70–75

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count exists.

  1. L70
    have hcount : ∃ E. BitCount(x6,x7,n + n,E)Definitions: BitCount(x6,x7,n + n,E)Original native command in the exact edition
  2. L71
    specialize bit_count_exists x6
  3. L72
    specialize bit_count_exists x7
  4. L73
    specialize bit_count_exists (n + n)
  5. L74
    apply bit_count_exists
  6. L75
    exact hall_bits
15Separate the logical casesL76–76

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L76
    cases hcount
16Establish hcarry_balanceL77–86

Establish this local claim before using it. It is not an additional assumption.

  1. L77
    have hcarry_balance : x1 = (x + x) + x8
  2. L78
    specialize beta_sum_double_carry_exact x2
  3. L79
    specialize beta_sum_double_carry_exact x3
  4. L80
    specialize beta_sum_double_carry_exact x4
  5. L81
    specialize beta_sum_double_carry_exact x5
  6. L82
    specialize beta_sum_double_carry_exact x6
  7. L83
    specialize beta_sum_double_carry_exact x7
  8. L84
    specialize beta_sum_double_carry_exact (n + n)
  9. L85
    specialize beta_sum_double_carry_exact x
  10. L86
    specialize beta_sum_double_carry_exact x1
17Use earlier factsL87–92

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L87
    specialize beta_sum_double_carry_exact x8
  2. L88
    apply beta_sum_double_carry_exact
  3. L89
    exact hextended_witness_witness_right
  4. L90
    exact htotal_witness_witness_witness_right
  5. L91
    exact hcarry_codes_witness_witness
  6. L92
    exact hcount_witness
18Establish hcount_eqL93–102

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add left cancel.

  1. L93
    have hcount_eq : x8 = v
  2. L94
    specialize add_left_cancel (x + x)
  3. L95
    specialize add_left_cancel x8
  4. L96
    specialize add_left_cancel v
  5. L97
    apply add_left_cancel
  6. L98
    trans x1
  7. L99
    symm
  8. L100
    exact hcarry_balance
  9. L101
    exact hbalance
  10. L102
    rewrite hcount_eq at hcount_witness
19Calculate and transport equalitiesL103–103

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L103
    rewrite hcount_eq at hcount_witness
20Construct an explicit witnessL104–109

Supply the displayed value, then prove that it has the required property.

  1. L104
    exists x2
  2. L105
    exists x3
  3. L106
    exists x4
  4. L107
    exists x5
  5. L108
    exists x6
  6. L109
    exists x7
21Separate the logical casesL110–110

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L110
    split
22Use earlier factsL111–111

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L111
    exact hextended_witness_witness_left
23Separate the logical casesL112–112

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L112
    split
24Use earlier factsL113–113

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L113
    exact htotal_witness_witness_witness_left
25Separate the logical casesL114–114

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L114
    split
26Use earlier factsL115–116

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L115
    exact hcarry_codes_witness_witness
  2. L116
    exact hcount_witness

Library-wide reading audit

Original defined command ledger · 116 lines
  1. 0001intro p
  2. 0002intro n
  3. 0003intro C
  4. 0004intro v
  5. 0005intro hp
  6. 0006intro hcentral
  7. 0007intro hvaluation
  8. 0008have hcolumn : ∃ B. LegendreSum(p,n,B)
    Exact native replay linehave hcolumn : exists B. exists bls_code_b5cccbbc_column bls_scale_b5cccbbc_column. ((forall bls_index_b5cccbbc_column_prefix. (exists bls_gap_b5cccbbc_column_prefix_bound. bls_gap_b5cccbbc_column_prefix_bound + S (bls_index_b5cccbbc_column_prefix) = (n)) -> exists bls_power_b5cccbbc_column_prefix bls_quotient_b5cccbbc_column_prefix bls_remainder_b5cccbbc_column_prefix. ((exists bpvi_b_bls_b5cccbbc_column_prefix_power bpvi_c_bls_b5cccbbc_column_prefix_power. ((forall bpvi_i_bls_b5cccbbc_column_prefix_power. (exists bpvi_repeat_gap_bls_b5cccbbc_column_prefix_power. bpvi_repeat_gap_bls_b5cccbbc_column_prefix_power + S bpvi_i_bls_b5cccbbc_column_prefix_power = S bls_index_b5cccbbc_column_prefix) -> (((exists bpvi_h_bls_b5cccbbc_column_prefix_power_repeat. bpvi_h_bls_b5cccbbc_column_prefix_power_repeat + S (p) = S ((S (bpvi_i_bls_b5cccbbc_column_prefix_power)) * bpvi_c_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_repeat. bpvi_b_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_repeat * S ((S (bpvi_i_bls_b5cccbbc_column_prefix_power)) * bpvi_c_bls_b5cccbbc_column_prefix_power) + (p)))) /\ (exists bpvi_u_bls_b5cccbbc_column_prefix_power bpvi_v_bls_b5cccbbc_column_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_column_prefix_power_start. bpvi_h_bls_b5cccbbc_column_prefix_power_start + S (1) = S ((S (0)) * bpvi_v_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_start. bpvi_u_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_start * S ((S (0)) * bpvi_v_bls_b5cccbbc_column_prefix_power) + (1))) /\ ((((exists bpvi_h_bls_b5cccbbc_column_prefix_power_terminal. bpvi_h_bls_b5cccbbc_column_prefix_power_terminal + S (bls_power_b5cccbbc_column_prefix) = S ((S (S bls_index_b5cccbbc_column_prefix)) * bpvi_v_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_terminal. bpvi_u_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_terminal * S ((S (S bls_index_b5cccbbc_column_prefix)) * bpvi_v_bls_b5cccbbc_column_prefix_power) + (bls_power_b5cccbbc_column_prefix))) /\ forall bpvi_j_bls_b5cccbbc_column_prefix_power. (exists bpvi_product_gap_bls_b5cccbbc_column_prefix_power. bpvi_product_gap_bls_b5cccbbc_column_prefix_power + S bpvi_j_bls_b5cccbbc_column_prefix_power = S bls_index_b5cccbbc_column_prefix) -> exists bpvi_factor_bls_b5cccbbc_column_prefix_power bpvi_partial_bls_b5cccbbc_column_prefix_power bpvi_successor_bls_b5cccbbc_column_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_column_prefix_power_factor. bpvi_h_bls_b5cccbbc_column_prefix_power_factor + S (bpvi_factor_bls_b5cccbbc_column_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_c_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_factor. bpvi_b_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_factor * S ((S (bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_c_bls_b5cccbbc_column_prefix_power) + (bpvi_factor_bls_b5cccbbc_column_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_column_prefix_power_partial. bpvi_h_bls_b5cccbbc_column_prefix_power_partial + S (bpvi_partial_bls_b5cccbbc_column_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_v_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_partial. bpvi_u_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_partial * S ((S (bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_v_bls_b5cccbbc_column_prefix_power) + (bpvi_partial_bls_b5cccbbc_column_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_column_prefix_power_successor. bpvi_h_bls_b5cccbbc_column_prefix_power_successor + S (bpvi_successor_bls_b5cccbbc_column_prefix_power) = S ((S (S bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_v_bls_b5cccbbc_column_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_column_prefix_power_successor. bpvi_u_bls_b5cccbbc_column_prefix_power = bpvi_q_bls_b5cccbbc_column_prefix_power_successor * S ((S (S bpvi_j_bls_b5cccbbc_column_prefix_power)) * bpvi_v_bls_b5cccbbc_column_prefix_power) + (bpvi_successor_bls_b5cccbbc_column_prefix_power))) /\ bpvi_successor_bls_b5cccbbc_column_prefix_power = bpvi_partial_bls_b5cccbbc_column_prefix_power * bpvi_factor_bls_b5cccbbc_column_prefix_power)))))))) /\ ((((exists ff_h_bls_b5cccbbc_column_prefix_quotient_entry. ff_h_bls_b5cccbbc_column_prefix_quotient_entry + S (bls_quotient_b5cccbbc_column_prefix) = S ((S (bls_index_b5cccbbc_column_prefix)) * bls_scale_b5cccbbc_column)) /\ exists ff_q_bls_b5cccbbc_column_prefix_quotient_entry. bls_code_b5cccbbc_column = ff_q_bls_b5cccbbc_column_prefix_quotient_entry * S ((S (bls_index_b5cccbbc_column_prefix)) * bls_scale_b5cccbbc_column) + (bls_quotient_b5cccbbc_column_prefix))) /\ ((n = bls_power_b5cccbbc_column_prefix * bls_quotient_b5cccbbc_column_prefix + bls_remainder_b5cccbbc_column_prefix /\ exists bls_remainder_gap_b5cccbbc_column_prefix_division. bls_remainder_gap_b5cccbbc_column_prefix_division + S (bls_remainder_b5cccbbc_column_prefix) = bls_power_b5cccbbc_column_prefix))))) /\ (exists ff_u_bls_b5cccbbc_column_sum ff_v_bls_b5cccbbc_column_sum. ((((exists ff_h_bls_b5cccbbc_column_sum_start. ff_h_bls_b5cccbbc_column_sum_start + S (0) = S ((S (0)) * ff_v_bls_b5cccbbc_column_sum)) /\ exists ff_q_bls_b5cccbbc_column_sum_start. ff_u_bls_b5cccbbc_column_sum = ff_q_bls_b5cccbbc_column_sum_start * S ((S (0)) * ff_v_bls_b5cccbbc_column_sum) + (0))) /\ ((((exists ff_h_bls_b5cccbbc_column_sum_terminal. ff_h_bls_b5cccbbc_column_sum_terminal + S (B) = S ((S (n)) * ff_v_bls_b5cccbbc_column_sum)) /\ exists ff_q_bls_b5cccbbc_column_sum_terminal. ff_u_bls_b5cccbbc_column_sum = ff_q_bls_b5cccbbc_column_sum_terminal * S ((S (n)) * ff_v_bls_b5cccbbc_column_sum) + (B))) /\ forall ff_i_bls_b5cccbbc_column_sum. (exists ff_lt_bls_b5cccbbc_column_sum_bound. ff_lt_bls_b5cccbbc_column_sum_bound + S ff_i_bls_b5cccbbc_column_sum = n) -> exists ff_a_bls_b5cccbbc_column_sum ff_r_bls_b5cccbbc_column_sum ff_s_bls_b5cccbbc_column_sum. ((((exists ff_h_bls_b5cccbbc_column_sum_summand. ff_h_bls_b5cccbbc_column_sum_summand + S (ff_a_bls_b5cccbbc_column_sum) = S ((S (ff_i_bls_b5cccbbc_column_sum)) * bls_scale_b5cccbbc_column)) /\ exists ff_q_bls_b5cccbbc_column_sum_summand. bls_code_b5cccbbc_column = ff_q_bls_b5cccbbc_column_sum_summand * S ((S (ff_i_bls_b5cccbbc_column_sum)) * bls_scale_b5cccbbc_column) + (ff_a_bls_b5cccbbc_column_sum))) /\ ((((exists ff_h_bls_b5cccbbc_column_sum_partial. ff_h_bls_b5cccbbc_column_sum_partial + S (ff_r_bls_b5cccbbc_column_sum) = S ((S (ff_i_bls_b5cccbbc_column_sum)) * ff_v_bls_b5cccbbc_column_sum)) /\ exists ff_q_bls_b5cccbbc_column_sum_partial. ff_u_bls_b5cccbbc_column_sum = ff_q_bls_b5cccbbc_column_sum_partial * S ((S (ff_i_bls_b5cccbbc_column_sum)) * ff_v_bls_b5cccbbc_column_sum) + (ff_r_bls_b5cccbbc_column_sum))) /\ ((((exists ff_h_bls_b5cccbbc_column_sum_successor. ff_h_bls_b5cccbbc_column_sum_successor + S (ff_s_bls_b5cccbbc_column_sum) = S ((S (S ff_i_bls_b5cccbbc_column_sum)) * ff_v_bls_b5cccbbc_column_sum)) /\ exists ff_q_bls_b5cccbbc_column_sum_successor. ff_u_bls_b5cccbbc_column_sum = ff_q_bls_b5cccbbc_column_sum_successor * S ((S (S ff_i_bls_b5cccbbc_column_sum)) * ff_v_bls_b5cccbbc_column_sum) + (ff_s_bls_b5cccbbc_column_sum))) /\ ff_s_bls_b5cccbbc_column_sum = ff_r_bls_b5cccbbc_column_sum + ff_a_bls_b5cccbbc_column_sum)))))))
  9. 0009specialize prime_legendre_sum_exists p
  10. 0010specialize prime_legendre_sum_exists n
  11. 0011apply prime_legendre_sum_exists
  12. 0012exact hp
  13. 0013cases hcolumn
  14. 0014have htotal : ∃ A. LegendreSum(p,n + n,A)
    Exact native replay linehave htotal : exists A. exists bls_code_b5cccbbc_total bls_scale_b5cccbbc_total. ((forall bls_index_b5cccbbc_total_prefix. (exists bls_gap_b5cccbbc_total_prefix_bound. bls_gap_b5cccbbc_total_prefix_bound + S (bls_index_b5cccbbc_total_prefix) = ((n + n))) -> exists bls_power_b5cccbbc_total_prefix bls_quotient_b5cccbbc_total_prefix bls_remainder_b5cccbbc_total_prefix. ((exists bpvi_b_bls_b5cccbbc_total_prefix_power bpvi_c_bls_b5cccbbc_total_prefix_power. ((forall bpvi_i_bls_b5cccbbc_total_prefix_power. (exists bpvi_repeat_gap_bls_b5cccbbc_total_prefix_power. bpvi_repeat_gap_bls_b5cccbbc_total_prefix_power + S bpvi_i_bls_b5cccbbc_total_prefix_power = S bls_index_b5cccbbc_total_prefix) -> (((exists bpvi_h_bls_b5cccbbc_total_prefix_power_repeat. bpvi_h_bls_b5cccbbc_total_prefix_power_repeat + S (p) = S ((S (bpvi_i_bls_b5cccbbc_total_prefix_power)) * bpvi_c_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_repeat. bpvi_b_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_repeat * S ((S (bpvi_i_bls_b5cccbbc_total_prefix_power)) * bpvi_c_bls_b5cccbbc_total_prefix_power) + (p)))) /\ (exists bpvi_u_bls_b5cccbbc_total_prefix_power bpvi_v_bls_b5cccbbc_total_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_total_prefix_power_start. bpvi_h_bls_b5cccbbc_total_prefix_power_start + S (1) = S ((S (0)) * bpvi_v_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_start. bpvi_u_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_start * S ((S (0)) * bpvi_v_bls_b5cccbbc_total_prefix_power) + (1))) /\ ((((exists bpvi_h_bls_b5cccbbc_total_prefix_power_terminal. bpvi_h_bls_b5cccbbc_total_prefix_power_terminal + S (bls_power_b5cccbbc_total_prefix) = S ((S (S bls_index_b5cccbbc_total_prefix)) * bpvi_v_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_terminal. bpvi_u_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_terminal * S ((S (S bls_index_b5cccbbc_total_prefix)) * bpvi_v_bls_b5cccbbc_total_prefix_power) + (bls_power_b5cccbbc_total_prefix))) /\ forall bpvi_j_bls_b5cccbbc_total_prefix_power. (exists bpvi_product_gap_bls_b5cccbbc_total_prefix_power. bpvi_product_gap_bls_b5cccbbc_total_prefix_power + S bpvi_j_bls_b5cccbbc_total_prefix_power = S bls_index_b5cccbbc_total_prefix) -> exists bpvi_factor_bls_b5cccbbc_total_prefix_power bpvi_partial_bls_b5cccbbc_total_prefix_power bpvi_successor_bls_b5cccbbc_total_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_total_prefix_power_factor. bpvi_h_bls_b5cccbbc_total_prefix_power_factor + S (bpvi_factor_bls_b5cccbbc_total_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_c_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_factor. bpvi_b_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_factor * S ((S (bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_c_bls_b5cccbbc_total_prefix_power) + (bpvi_factor_bls_b5cccbbc_total_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_total_prefix_power_partial. bpvi_h_bls_b5cccbbc_total_prefix_power_partial + S (bpvi_partial_bls_b5cccbbc_total_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_v_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_partial. bpvi_u_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_partial * S ((S (bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_v_bls_b5cccbbc_total_prefix_power) + (bpvi_partial_bls_b5cccbbc_total_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_total_prefix_power_successor. bpvi_h_bls_b5cccbbc_total_prefix_power_successor + S (bpvi_successor_bls_b5cccbbc_total_prefix_power) = S ((S (S bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_v_bls_b5cccbbc_total_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_total_prefix_power_successor. bpvi_u_bls_b5cccbbc_total_prefix_power = bpvi_q_bls_b5cccbbc_total_prefix_power_successor * S ((S (S bpvi_j_bls_b5cccbbc_total_prefix_power)) * bpvi_v_bls_b5cccbbc_total_prefix_power) + (bpvi_successor_bls_b5cccbbc_total_prefix_power))) /\ bpvi_successor_bls_b5cccbbc_total_prefix_power = bpvi_partial_bls_b5cccbbc_total_prefix_power * bpvi_factor_bls_b5cccbbc_total_prefix_power)))))))) /\ ((((exists ff_h_bls_b5cccbbc_total_prefix_quotient_entry. ff_h_bls_b5cccbbc_total_prefix_quotient_entry + S (bls_quotient_b5cccbbc_total_prefix) = S ((S (bls_index_b5cccbbc_total_prefix)) * bls_scale_b5cccbbc_total)) /\ exists ff_q_bls_b5cccbbc_total_prefix_quotient_entry. bls_code_b5cccbbc_total = ff_q_bls_b5cccbbc_total_prefix_quotient_entry * S ((S (bls_index_b5cccbbc_total_prefix)) * bls_scale_b5cccbbc_total) + (bls_quotient_b5cccbbc_total_prefix))) /\ (((n + n) = bls_power_b5cccbbc_total_prefix * bls_quotient_b5cccbbc_total_prefix + bls_remainder_b5cccbbc_total_prefix /\ exists bls_remainder_gap_b5cccbbc_total_prefix_division. bls_remainder_gap_b5cccbbc_total_prefix_division + S (bls_remainder_b5cccbbc_total_prefix) = bls_power_b5cccbbc_total_prefix))))) /\ (exists ff_u_bls_b5cccbbc_total_sum ff_v_bls_b5cccbbc_total_sum. ((((exists ff_h_bls_b5cccbbc_total_sum_start. ff_h_bls_b5cccbbc_total_sum_start + S (0) = S ((S (0)) * ff_v_bls_b5cccbbc_total_sum)) /\ exists ff_q_bls_b5cccbbc_total_sum_start. ff_u_bls_b5cccbbc_total_sum = ff_q_bls_b5cccbbc_total_sum_start * S ((S (0)) * ff_v_bls_b5cccbbc_total_sum) + (0))) /\ ((((exists ff_h_bls_b5cccbbc_total_sum_terminal. ff_h_bls_b5cccbbc_total_sum_terminal + S (A) = S ((S ((n + n))) * ff_v_bls_b5cccbbc_total_sum)) /\ exists ff_q_bls_b5cccbbc_total_sum_terminal. ff_u_bls_b5cccbbc_total_sum = ff_q_bls_b5cccbbc_total_sum_terminal * S ((S ((n + n))) * ff_v_bls_b5cccbbc_total_sum) + (A))) /\ forall ff_i_bls_b5cccbbc_total_sum. (exists ff_lt_bls_b5cccbbc_total_sum_bound. ff_lt_bls_b5cccbbc_total_sum_bound + S ff_i_bls_b5cccbbc_total_sum = (n + n)) -> exists ff_a_bls_b5cccbbc_total_sum ff_r_bls_b5cccbbc_total_sum ff_s_bls_b5cccbbc_total_sum. ((((exists ff_h_bls_b5cccbbc_total_sum_summand. ff_h_bls_b5cccbbc_total_sum_summand + S (ff_a_bls_b5cccbbc_total_sum) = S ((S (ff_i_bls_b5cccbbc_total_sum)) * bls_scale_b5cccbbc_total)) /\ exists ff_q_bls_b5cccbbc_total_sum_summand. bls_code_b5cccbbc_total = ff_q_bls_b5cccbbc_total_sum_summand * S ((S (ff_i_bls_b5cccbbc_total_sum)) * bls_scale_b5cccbbc_total) + (ff_a_bls_b5cccbbc_total_sum))) /\ ((((exists ff_h_bls_b5cccbbc_total_sum_partial. ff_h_bls_b5cccbbc_total_sum_partial + S (ff_r_bls_b5cccbbc_total_sum) = S ((S (ff_i_bls_b5cccbbc_total_sum)) * ff_v_bls_b5cccbbc_total_sum)) /\ exists ff_q_bls_b5cccbbc_total_sum_partial. ff_u_bls_b5cccbbc_total_sum = ff_q_bls_b5cccbbc_total_sum_partial * S ((S (ff_i_bls_b5cccbbc_total_sum)) * ff_v_bls_b5cccbbc_total_sum) + (ff_r_bls_b5cccbbc_total_sum))) /\ ((((exists ff_h_bls_b5cccbbc_total_sum_successor. ff_h_bls_b5cccbbc_total_sum_successor + S (ff_s_bls_b5cccbbc_total_sum) = S ((S (S ff_i_bls_b5cccbbc_total_sum)) * ff_v_bls_b5cccbbc_total_sum)) /\ exists ff_q_bls_b5cccbbc_total_sum_successor. ff_u_bls_b5cccbbc_total_sum = ff_q_bls_b5cccbbc_total_sum_successor * S ((S (S ff_i_bls_b5cccbbc_total_sum)) * ff_v_bls_b5cccbbc_total_sum) + (ff_s_bls_b5cccbbc_total_sum))) /\ ff_s_bls_b5cccbbc_total_sum = ff_r_bls_b5cccbbc_total_sum + ff_a_bls_b5cccbbc_total_sum)))))))
  15. 0015specialize prime_legendre_sum_exists p
  16. 0016specialize prime_legendre_sum_exists (n + n)
  17. 0017apply prime_legendre_sum_exists
  18. 0018exact hp
  19. 0019cases htotal
  20. 0020have hbalance : x1 = (x + x) + v
  21. 0021specialize central_binom_legendre_valuation_balance p
  22. 0022specialize central_binom_legendre_valuation_balance n
  23. 0023specialize central_binom_legendre_valuation_balance C
  24. 0024specialize central_binom_legendre_valuation_balance v
  25. 0025specialize central_binom_legendre_valuation_balance x1
  26. 0026specialize central_binom_legendre_valuation_balance x
  27. 0027apply central_binom_legendre_valuation_balance
  28. 0028exact hp
  29. 0029exact hcentral
  30. 0030exact hvaluation
  31. 0031exact htotal_witness
  32. 0032exact hcolumn_witness
  33. 0033have hextended : ∃ b. ∃ s. PowerQuotPrefix(p,n,b,s,n + n)Sum(b,s,n + n,x)
    Exact native replay linehave hextended : exists b s. (forall bls_index_b5cccbbc_extended_prefix. (exists bls_gap_b5cccbbc_extended_prefix_bound. bls_gap_b5cccbbc_extended_prefix_bound + S (bls_index_b5cccbbc_extended_prefix) = (n + n)) -> exists bls_power_b5cccbbc_extended_prefix bls_quotient_b5cccbbc_extended_prefix bls_remainder_b5cccbbc_extended_prefix. ((exists bpvi_b_bls_b5cccbbc_extended_prefix_power bpvi_c_bls_b5cccbbc_extended_prefix_power. ((forall bpvi_i_bls_b5cccbbc_extended_prefix_power. (exists bpvi_repeat_gap_bls_b5cccbbc_extended_prefix_power. bpvi_repeat_gap_bls_b5cccbbc_extended_prefix_power + S bpvi_i_bls_b5cccbbc_extended_prefix_power = S bls_index_b5cccbbc_extended_prefix) -> (((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_repeat. bpvi_h_bls_b5cccbbc_extended_prefix_power_repeat + S (p) = S ((S (bpvi_i_bls_b5cccbbc_extended_prefix_power)) * bpvi_c_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_repeat. bpvi_b_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_repeat * S ((S (bpvi_i_bls_b5cccbbc_extended_prefix_power)) * bpvi_c_bls_b5cccbbc_extended_prefix_power) + (p)))) /\ (exists bpvi_u_bls_b5cccbbc_extended_prefix_power bpvi_v_bls_b5cccbbc_extended_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_start. bpvi_h_bls_b5cccbbc_extended_prefix_power_start + S (1) = S ((S (0)) * bpvi_v_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_start. bpvi_u_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_start * S ((S (0)) * bpvi_v_bls_b5cccbbc_extended_prefix_power) + (1))) /\ ((((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_terminal. bpvi_h_bls_b5cccbbc_extended_prefix_power_terminal + S (bls_power_b5cccbbc_extended_prefix) = S ((S (S bls_index_b5cccbbc_extended_prefix)) * bpvi_v_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_terminal. bpvi_u_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_terminal * S ((S (S bls_index_b5cccbbc_extended_prefix)) * bpvi_v_bls_b5cccbbc_extended_prefix_power) + (bls_power_b5cccbbc_extended_prefix))) /\ forall bpvi_j_bls_b5cccbbc_extended_prefix_power. (exists bpvi_product_gap_bls_b5cccbbc_extended_prefix_power. bpvi_product_gap_bls_b5cccbbc_extended_prefix_power + S bpvi_j_bls_b5cccbbc_extended_prefix_power = S bls_index_b5cccbbc_extended_prefix) -> exists bpvi_factor_bls_b5cccbbc_extended_prefix_power bpvi_partial_bls_b5cccbbc_extended_prefix_power bpvi_successor_bls_b5cccbbc_extended_prefix_power. ((((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_factor. bpvi_h_bls_b5cccbbc_extended_prefix_power_factor + S (bpvi_factor_bls_b5cccbbc_extended_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_c_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_factor. bpvi_b_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_factor * S ((S (bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_c_bls_b5cccbbc_extended_prefix_power) + (bpvi_factor_bls_b5cccbbc_extended_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_partial. bpvi_h_bls_b5cccbbc_extended_prefix_power_partial + S (bpvi_partial_bls_b5cccbbc_extended_prefix_power) = S ((S (bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_v_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_partial. bpvi_u_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_partial * S ((S (bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_v_bls_b5cccbbc_extended_prefix_power) + (bpvi_partial_bls_b5cccbbc_extended_prefix_power))) /\ ((((exists bpvi_h_bls_b5cccbbc_extended_prefix_power_successor. bpvi_h_bls_b5cccbbc_extended_prefix_power_successor + S (bpvi_successor_bls_b5cccbbc_extended_prefix_power) = S ((S (S bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_v_bls_b5cccbbc_extended_prefix_power)) /\ exists bpvi_q_bls_b5cccbbc_extended_prefix_power_successor. bpvi_u_bls_b5cccbbc_extended_prefix_power = bpvi_q_bls_b5cccbbc_extended_prefix_power_successor * S ((S (S bpvi_j_bls_b5cccbbc_extended_prefix_power)) * bpvi_v_bls_b5cccbbc_extended_prefix_power) + (bpvi_successor_bls_b5cccbbc_extended_prefix_power))) /\ bpvi_successor_bls_b5cccbbc_extended_prefix_power = bpvi_partial_bls_b5cccbbc_extended_prefix_power * bpvi_factor_bls_b5cccbbc_extended_prefix_power)))))))) /\ ((((exists ff_h_bls_b5cccbbc_extended_prefix_quotient_entry. ff_h_bls_b5cccbbc_extended_prefix_quotient_entry + S (bls_quotient_b5cccbbc_extended_prefix) = S ((S (bls_index_b5cccbbc_extended_prefix)) * s)) /\ exists ff_q_bls_b5cccbbc_extended_prefix_quotient_entry. b = ff_q_bls_b5cccbbc_extended_prefix_quotient_entry * S ((S (bls_index_b5cccbbc_extended_prefix)) * s) + (bls_quotient_b5cccbbc_extended_prefix))) /\ ((n = bls_power_b5cccbbc_extended_prefix * bls_quotient_b5cccbbc_extended_prefix + bls_remainder_b5cccbbc_extended_prefix /\ exists bls_remainder_gap_b5cccbbc_extended_prefix_division. bls_remainder_gap_b5cccbbc_extended_prefix_division + S (bls_remainder_b5cccbbc_extended_prefix) = bls_power_b5cccbbc_extended_prefix))))) /\ (exists fs_u_b5cccbbc_extended_sum fs_v_b5cccbbc_extended_sum. ((((exists fs_h_b5cccbbc_extended_sum_body_start. fs_h_b5cccbbc_extended_sum_body_start + S (0) = S ((S (0)) * fs_v_b5cccbbc_extended_sum)) /\ exists fs_q_b5cccbbc_extended_sum_body_start. fs_u_b5cccbbc_extended_sum = fs_q_b5cccbbc_extended_sum_body_start * S ((S (0)) * fs_v_b5cccbbc_extended_sum) + (0))) /\ ((((exists fs_h_b5cccbbc_extended_sum_body_terminal. fs_h_b5cccbbc_extended_sum_body_terminal + S (x) = S ((S (n + n)) * fs_v_b5cccbbc_extended_sum)) /\ exists fs_q_b5cccbbc_extended_sum_body_terminal. fs_u_b5cccbbc_extended_sum = fs_q_b5cccbbc_extended_sum_body_terminal * S ((S (n + n)) * fs_v_b5cccbbc_extended_sum) + (x))) /\ forall fs_i_b5cccbbc_extended_sum_body_steps. (exists fs_lt_b5cccbbc_extended_sum_body_steps_bound. fs_lt_b5cccbbc_extended_sum_body_steps_bound + S fs_i_b5cccbbc_extended_sum_body_steps = n + n) -> exists fs_a_b5cccbbc_extended_sum_body_steps fs_r_b5cccbbc_extended_sum_body_steps fs_s_b5cccbbc_extended_sum_body_steps. ((((exists fs_h_b5cccbbc_extended_sum_body_steps_summand. fs_h_b5cccbbc_extended_sum_body_steps_summand + S (fs_a_b5cccbbc_extended_sum_body_steps) = S ((S (fs_i_b5cccbbc_extended_sum_body_steps)) * s)) /\ exists fs_q_b5cccbbc_extended_sum_body_steps_summand. b = fs_q_b5cccbbc_extended_sum_body_steps_summand * S ((S (fs_i_b5cccbbc_extended_sum_body_steps)) * s) + (fs_a_b5cccbbc_extended_sum_body_steps))) /\ ((((exists fs_h_b5cccbbc_extended_sum_body_steps_partial. fs_h_b5cccbbc_extended_sum_body_steps_partial + S (fs_r_b5cccbbc_extended_sum_body_steps) = S ((S (fs_i_b5cccbbc_extended_sum_body_steps)) * fs_v_b5cccbbc_extended_sum)) /\ exists fs_q_b5cccbbc_extended_sum_body_steps_partial. fs_u_b5cccbbc_extended_sum = fs_q_b5cccbbc_extended_sum_body_steps_partial * S ((S (fs_i_b5cccbbc_extended_sum_body_steps)) * fs_v_b5cccbbc_extended_sum) + (fs_r_b5cccbbc_extended_sum_body_steps))) /\ ((((exists fs_h_b5cccbbc_extended_sum_body_steps_successor. fs_h_b5cccbbc_extended_sum_body_steps_successor + S (fs_s_b5cccbbc_extended_sum_body_steps) = S ((S (S fs_i_b5cccbbc_extended_sum_body_steps)) * fs_v_b5cccbbc_extended_sum)) /\ exists fs_q_b5cccbbc_extended_sum_body_steps_successor. fs_u_b5cccbbc_extended_sum = fs_q_b5cccbbc_extended_sum_body_steps_successor * S ((S (S fs_i_b5cccbbc_extended_sum_body_steps)) * fs_v_b5cccbbc_extended_sum) + (fs_s_b5cccbbc_extended_sum_body_steps))) /\ fs_s_b5cccbbc_extended_sum_body_steps = fs_r_b5cccbbc_extended_sum_body_steps + fs_a_b5cccbbc_extended_sum_body_steps))))))
  34. 0034specialize legendre_sum_extended_prefix_exists p
  35. 0035specialize legendre_sum_extended_prefix_exists n
  36. 0036specialize legendre_sum_extended_prefix_exists x
  37. 0037specialize legendre_sum_extended_prefix_exists n
  38. 0038apply legendre_sum_extended_prefix_exists
  39. 0039exact hp
  40. 0040exact hcolumn_witness
  41. 0041cases hextended
  42. 0042cases hextended_witness
  43. 0043cases hextended_witness_witness
  44. 0044cases htotal_witness
  45. 0045cases htotal_witness_witness
  46. 0046cases htotal_witness_witness_witness
  47. 0047have hcarry_codes : ∃ f. ∃ g. ∀ b5cc_index_b5cccbbc_codes. Lt(b5cc_index_b5cccbbc_codes,n + n) → ∃ x. ∃ y. ∃ z. BetaAt(x2,x3,b5cc_index_b5cccbbc_codes,x) ∧ (BetaAt(x4,x5,b5cc_index_b5cccbbc_codes,y) ∧ (BetaAt(f,g,b5cc_index_b5cccbbc_codes,z) ∧ (z = 0 ∧ y = x + x ∨ z = 1 ∧ y = S (x + x))))
    Exact native replay linehave hcarry_codes : exists f g. forall b5cc_index_b5cccbbc_codes. (exists bcf_lt_gap_b5cccbbc_codes_bound. bcf_lt_gap_b5cccbbc_codes_bound + S (b5cc_index_b5cccbbc_codes) = n + n) -> exists b5cc_left_b5cccbbc_codes b5cc_right_b5cccbbc_codes b5cc_bit_b5cccbbc_codes. (((exists fs_h_b5cc_b5cccbbc_codes_left. fs_h_b5cc_b5cccbbc_codes_left + S (b5cc_left_b5cccbbc_codes) = S ((S (b5cc_index_b5cccbbc_codes)) * x3)) /\ exists fs_q_b5cc_b5cccbbc_codes_left. x2 = fs_q_b5cc_b5cccbbc_codes_left * S ((S (b5cc_index_b5cccbbc_codes)) * x3) + (b5cc_left_b5cccbbc_codes))) /\ ((((exists fs_h_b5cc_b5cccbbc_codes_right. fs_h_b5cc_b5cccbbc_codes_right + S (b5cc_right_b5cccbbc_codes) = S ((S (b5cc_index_b5cccbbc_codes)) * x5)) /\ exists fs_q_b5cc_b5cccbbc_codes_right. x4 = fs_q_b5cc_b5cccbbc_codes_right * S ((S (b5cc_index_b5cccbbc_codes)) * x5) + (b5cc_right_b5cccbbc_codes))) /\ ((((exists fs_h_b5cc_b5cccbbc_codes_bit. fs_h_b5cc_b5cccbbc_codes_bit + S (b5cc_bit_b5cccbbc_codes) = S ((S (b5cc_index_b5cccbbc_codes)) * g)) /\ exists fs_q_b5cc_b5cccbbc_codes_bit. f = fs_q_b5cc_b5cccbbc_codes_bit * S ((S (b5cc_index_b5cccbbc_codes)) * g) + (b5cc_bit_b5cccbbc_codes))) /\ (((b5cc_bit_b5cccbbc_codes = 0 /\ b5cc_right_b5cccbbc_codes = b5cc_left_b5cccbbc_codes + b5cc_left_b5cccbbc_codes) \/ (b5cc_bit_b5cccbbc_codes = 1 /\ b5cc_right_b5cccbbc_codes = S (b5cc_left_b5cccbbc_codes + b5cc_left_b5cccbbc_codes))))))
  48. 0048specialize double_quotient_carry_prefix_exists p
  49. 0049specialize double_quotient_carry_prefix_exists n
  50. 0050specialize double_quotient_carry_prefix_exists x2
  51. 0051specialize double_quotient_carry_prefix_exists x3
  52. 0052specialize double_quotient_carry_prefix_exists x4
  53. 0053specialize double_quotient_carry_prefix_exists x5
  54. 0054specialize double_quotient_carry_prefix_exists (n + n)
  55. 0055apply double_quotient_carry_prefix_exists
  56. 0056exact hextended_witness_witness_left
  57. 0057exact htotal_witness_witness_witness_left
  58. 0058cases hcarry_codes
  59. 0059cases hcarry_codes_witness
  60. 0060have hall_bits : AllBits(x6,x7,n + n)
    Exact native replay linehave hall_bits : forall ff_i_b5cccbbc_bits. (exists ff_lt_b5cccbbc_bits_bound. ff_lt_b5cccbbc_bits_bound + S ff_i_b5cccbbc_bits = (n + n)) -> exists ff_bit_b5cccbbc_bits. ((((exists ff_h_b5cccbbc_bits_decoded. ff_h_b5cccbbc_bits_decoded + S (ff_bit_b5cccbbc_bits) = S ((S (ff_i_b5cccbbc_bits)) * x7)) /\ exists ff_q_b5cccbbc_bits_decoded. x6 = ff_q_b5cccbbc_bits_decoded * S ((S (ff_i_b5cccbbc_bits)) * x7) + (ff_bit_b5cccbbc_bits))) /\ (ff_bit_b5cccbbc_bits = 0 \/ ff_bit_b5cccbbc_bits = 1))
  61. 0061specialize double_quotient_carry_prefix_all_bits x2
  62. 0062specialize double_quotient_carry_prefix_all_bits x3
  63. 0063specialize double_quotient_carry_prefix_all_bits x4
  64. 0064specialize double_quotient_carry_prefix_all_bits x5
  65. 0065specialize double_quotient_carry_prefix_all_bits x6
  66. 0066specialize double_quotient_carry_prefix_all_bits x7
  67. 0067specialize double_quotient_carry_prefix_all_bits (n + n)
  68. 0068apply double_quotient_carry_prefix_all_bits
  69. 0069exact hcarry_codes_witness_witness
  70. 0070have hcount : ∃ E. BitCount(x6,x7,n + n,E)
    Exact native replay linehave hcount : exists E. ((exists ff_u_b5cccbbc_count_exists_sum ff_v_b5cccbbc_count_exists_sum. ((((exists ff_h_b5cccbbc_count_exists_sum_start. ff_h_b5cccbbc_count_exists_sum_start + S (0) = S ((S (0)) * ff_v_b5cccbbc_count_exists_sum)) /\ exists ff_q_b5cccbbc_count_exists_sum_start. ff_u_b5cccbbc_count_exists_sum = ff_q_b5cccbbc_count_exists_sum_start * S ((S (0)) * ff_v_b5cccbbc_count_exists_sum) + (0))) /\ ((((exists ff_h_b5cccbbc_count_exists_sum_terminal. ff_h_b5cccbbc_count_exists_sum_terminal + S ((E)) = S ((S ((n + n))) * ff_v_b5cccbbc_count_exists_sum)) /\ exists ff_q_b5cccbbc_count_exists_sum_terminal. ff_u_b5cccbbc_count_exists_sum = ff_q_b5cccbbc_count_exists_sum_terminal * S ((S ((n + n))) * ff_v_b5cccbbc_count_exists_sum) + ((E)))) /\ forall ff_i_b5cccbbc_count_exists_sum. (exists ff_lt_b5cccbbc_count_exists_sum_bound. ff_lt_b5cccbbc_count_exists_sum_bound + S ff_i_b5cccbbc_count_exists_sum = (n + n)) -> exists ff_a_b5cccbbc_count_exists_sum ff_r_b5cccbbc_count_exists_sum ff_s_b5cccbbc_count_exists_sum. ((((exists ff_h_b5cccbbc_count_exists_sum_summand. ff_h_b5cccbbc_count_exists_sum_summand + S (ff_a_b5cccbbc_count_exists_sum) = S ((S (ff_i_b5cccbbc_count_exists_sum)) * x7)) /\ exists ff_q_b5cccbbc_count_exists_sum_summand. x6 = ff_q_b5cccbbc_count_exists_sum_summand * S ((S (ff_i_b5cccbbc_count_exists_sum)) * x7) + (ff_a_b5cccbbc_count_exists_sum))) /\ ((((exists ff_h_b5cccbbc_count_exists_sum_partial. ff_h_b5cccbbc_count_exists_sum_partial + S (ff_r_b5cccbbc_count_exists_sum) = S ((S (ff_i_b5cccbbc_count_exists_sum)) * ff_v_b5cccbbc_count_exists_sum)) /\ exists ff_q_b5cccbbc_count_exists_sum_partial. ff_u_b5cccbbc_count_exists_sum = ff_q_b5cccbbc_count_exists_sum_partial * S ((S (ff_i_b5cccbbc_count_exists_sum)) * ff_v_b5cccbbc_count_exists_sum) + (ff_r_b5cccbbc_count_exists_sum))) /\ ((((exists ff_h_b5cccbbc_count_exists_sum_successor. ff_h_b5cccbbc_count_exists_sum_successor + S (ff_s_b5cccbbc_count_exists_sum) = S ((S (S ff_i_b5cccbbc_count_exists_sum)) * ff_v_b5cccbbc_count_exists_sum)) /\ exists ff_q_b5cccbbc_count_exists_sum_successor. ff_u_b5cccbbc_count_exists_sum = ff_q_b5cccbbc_count_exists_sum_successor * S ((S (S ff_i_b5cccbbc_count_exists_sum)) * ff_v_b5cccbbc_count_exists_sum) + (ff_s_b5cccbbc_count_exists_sum))) /\ ff_s_b5cccbbc_count_exists_sum = ff_r_b5cccbbc_count_exists_sum + ff_a_b5cccbbc_count_exists_sum)))))) /\ (forall ff_i_b5cccbbc_count_exists_bits. (exists ff_lt_b5cccbbc_count_exists_bits_bound. ff_lt_b5cccbbc_count_exists_bits_bound + S ff_i_b5cccbbc_count_exists_bits = (n + n)) -> exists ff_bit_b5cccbbc_count_exists_bits. ((((exists ff_h_b5cccbbc_count_exists_bits_decoded. ff_h_b5cccbbc_count_exists_bits_decoded + S (ff_bit_b5cccbbc_count_exists_bits) = S ((S (ff_i_b5cccbbc_count_exists_bits)) * x7)) /\ exists ff_q_b5cccbbc_count_exists_bits_decoded. x6 = ff_q_b5cccbbc_count_exists_bits_decoded * S ((S (ff_i_b5cccbbc_count_exists_bits)) * x7) + (ff_bit_b5cccbbc_count_exists_bits))) /\ (ff_bit_b5cccbbc_count_exists_bits = 0 \/ ff_bit_b5cccbbc_count_exists_bits = 1))))
  71. 0071specialize bit_count_exists x6
  72. 0072specialize bit_count_exists x7
  73. 0073specialize bit_count_exists (n + n)
  74. 0074apply bit_count_exists
  75. 0075exact hall_bits
  76. 0076cases hcount
  77. 0077have hcarry_balance : x1 = (x + x) + x8
  78. 0078specialize beta_sum_double_carry_exact x2
  79. 0079specialize beta_sum_double_carry_exact x3
  80. 0080specialize beta_sum_double_carry_exact x4
  81. 0081specialize beta_sum_double_carry_exact x5
  82. 0082specialize beta_sum_double_carry_exact x6
  83. 0083specialize beta_sum_double_carry_exact x7
  84. 0084specialize beta_sum_double_carry_exact (n + n)
  85. 0085specialize beta_sum_double_carry_exact x
  86. 0086specialize beta_sum_double_carry_exact x1
  87. 0087specialize beta_sum_double_carry_exact x8
  88. 0088apply beta_sum_double_carry_exact
  89. 0089exact hextended_witness_witness_right
  90. 0090exact htotal_witness_witness_witness_right
  91. 0091exact hcarry_codes_witness_witness
  92. 0092exact hcount_witness
  93. 0093have hcount_eq : x8 = v
  94. 0094specialize add_left_cancel (x + x)
  95. 0095specialize add_left_cancel x8
  96. 0096specialize add_left_cancel v
  97. 0097apply add_left_cancel
  98. 0098trans x1
  99. 0099symm
  100. 0100exact hcarry_balance
  101. 0101exact hbalance
  102. 0102rewrite hcount_eq at hcount_witness
  103. 0103rewrite hcount_eq at hcount_witness
  104. 0104exists x2
  105. 0105exists x3
  106. 0106exists x4
  107. 0107exists x5
  108. 0108exists x6
  109. 0109exists x7
  110. 0110split
  111. 0111exact hextended_witness_witness_left
  112. 0112split
  113. 0113exact htotal_witness_witness_witness_left
  114. 0114split
  115. 0115exact hcarry_codes_witness_witness
  116. 0116exact hcount_witness