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) → Lt(2,n) → Le(p,n) → Lt(n + n,p + p + p) → CentralBinom(n,C) → PowerValuation(p,C,v) → v = 0Every 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
6 occurrences
In local proof propositions
6 occurrences
Exact expanded native-PA statement
forall p n C v. ((~(p = 1) /\ forall frm_prime_left_bcpvztt_prime frm_prime_right_bcpvztt_prime. p = frm_prime_left_bcpvztt_prime * frm_prime_right_bcpvztt_prime -> frm_prime_left_bcpvztt_prime = 1 \/ frm_prime_right_bcpvztt_prime = 1)) -> (exists bcf_lt_gap_bcpvztt_positive. bcf_lt_gap_bcpvztt_positive + S (2) = n) -> (exists bcf_le_gap_bcpvztt_lower. bcf_le_gap_bcpvztt_lower + (p) = n) -> (exists bcf_lt_gap_bcpvztt_scaled. bcf_lt_gap_bcpvztt_scaled + S (n + n) = (p + p) + p) -> (((exists bcf_lt_gap_bcpvztt_central_out_of_range. bcf_lt_gap_bcpvztt_central_out_of_range + S (n + n) = n) /\ C = 0) \/ ((exists bcf_le_gap_bcpvztt_central_in_range. bcf_le_gap_bcpvztt_central_in_range + (n) = n + n) /\ (exists bcf_row_code_code_bcpvztt_central bcf_row_code_scale_bcpvztt_central bcf_row_scale_code_bcpvztt_central bcf_row_scale_scale_bcpvztt_central bcf_row_code_bcpvztt_central bcf_row_scale_bcpvztt_central. ((forall bcf_row_index_bcpvztt_central_table. (exists bcf_lt_gap_bcpvztt_central_table_row_bound. bcf_lt_gap_bcpvztt_central_table_row_bound + S (bcf_row_index_bcpvztt_central_table) = S (n + n)) -> exists bcf_row_code_bcpvztt_central_table bcf_row_scale_bcpvztt_central_table. ((((exists bcf_height_bcpvztt_central_table_decoded_row_code. bcf_height_bcpvztt_central_table_decoded_row_code + S (bcf_row_code_bcpvztt_central_table) = S ((S (bcf_row_index_bcpvztt_central_table)) * bcf_row_code_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_table_decoded_row_code. bcf_row_code_code_bcpvztt_central = bcf_quotient_bcpvztt_central_table_decoded_row_code * S ((S (bcf_row_index_bcpvztt_central_table)) * bcf_row_code_scale_bcpvztt_central) + (bcf_row_code_bcpvztt_central_table))) /\ ((((exists bcf_height_bcpvztt_central_table_decoded_row_scale. bcf_height_bcpvztt_central_table_decoded_row_scale + S (bcf_row_scale_bcpvztt_central_table) = S ((S (bcf_row_index_bcpvztt_central_table)) * bcf_row_scale_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_table_decoded_row_scale. bcf_row_scale_code_bcpvztt_central = bcf_quotient_bcpvztt_central_table_decoded_row_scale * S ((S (bcf_row_index_bcpvztt_central_table)) * bcf_row_scale_scale_bcpvztt_central) + (bcf_row_scale_bcpvztt_central_table))) /\ ((bcf_row_index_bcpvztt_central_table = 0 /\ (forall bcf_index_bcpvztt_central_table_zero_row. (exists bcf_lt_gap_bcpvztt_central_table_zero_row_bound. bcf_lt_gap_bcpvztt_central_table_zero_row_bound + S (bcf_index_bcpvztt_central_table_zero_row) = S (n + n)) -> exists bcf_value_bcpvztt_central_table_zero_row. ((((exists bcf_height_bcpvztt_central_table_zero_row_entry. bcf_height_bcpvztt_central_table_zero_row_entry + S (bcf_value_bcpvztt_central_table_zero_row) = S ((S (bcf_index_bcpvztt_central_table_zero_row)) * bcf_row_scale_bcpvztt_central_table)) /\ exists bcf_quotient_bcpvztt_central_table_zero_row_entry. bcf_row_code_bcpvztt_central_table = bcf_quotient_bcpvztt_central_table_zero_row_entry * S ((S (bcf_index_bcpvztt_central_table_zero_row)) * bcf_row_scale_bcpvztt_central_table) + (bcf_value_bcpvztt_central_table_zero_row))) /\ ((bcf_index_bcpvztt_central_table_zero_row = 0 /\ bcf_value_bcpvztt_central_table_zero_row = 1) \/ exists bcf_predecessor_bcpvztt_central_table_zero_row. bcf_index_bcpvztt_central_table_zero_row = S bcf_predecessor_bcpvztt_central_table_zero_row /\ bcf_value_bcpvztt_central_table_zero_row = 0)))) \/ exists bcf_predecessor_bcpvztt_central_table bcf_previous_code_bcpvztt_central_table bcf_previous_scale_bcpvztt_central_table. bcf_row_index_bcpvztt_central_table = S bcf_predecessor_bcpvztt_central_table /\ ((((exists bcf_height_bcpvztt_central_table_decoded_previous_code. bcf_height_bcpvztt_central_table_decoded_previous_code + S (bcf_previous_code_bcpvztt_central_table) = S ((S (bcf_predecessor_bcpvztt_central_table)) * bcf_row_code_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_table_decoded_previous_code. bcf_row_code_code_bcpvztt_central = bcf_quotient_bcpvztt_central_table_decoded_previous_code * S ((S (bcf_predecessor_bcpvztt_central_table)) * bcf_row_code_scale_bcpvztt_central) + (bcf_previous_code_bcpvztt_central_table))) /\ ((((exists bcf_height_bcpvztt_central_table_decoded_previous_scale. bcf_height_bcpvztt_central_table_decoded_previous_scale + S (bcf_previous_scale_bcpvztt_central_table) = S ((S (bcf_predecessor_bcpvztt_central_table)) * bcf_row_scale_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_table_decoded_previous_scale. bcf_row_scale_code_bcpvztt_central = bcf_quotient_bcpvztt_central_table_decoded_previous_scale * S ((S (bcf_predecessor_bcpvztt_central_table)) * bcf_row_scale_scale_bcpvztt_central) + (bcf_previous_scale_bcpvztt_central_table))) /\ (forall bcf_index_bcpvztt_central_table_row_step. (exists bcf_lt_gap_bcpvztt_central_table_row_step_bound. bcf_lt_gap_bcpvztt_central_table_row_step_bound + S (bcf_index_bcpvztt_central_table_row_step) = S (n + n)) -> exists bcf_value_bcpvztt_central_table_row_step. ((((exists bcf_height_bcpvztt_central_table_row_step_entry. bcf_height_bcpvztt_central_table_row_step_entry + S (bcf_value_bcpvztt_central_table_row_step) = S ((S (bcf_index_bcpvztt_central_table_row_step)) * bcf_row_scale_bcpvztt_central_table)) /\ exists bcf_quotient_bcpvztt_central_table_row_step_entry. bcf_row_code_bcpvztt_central_table = bcf_quotient_bcpvztt_central_table_row_step_entry * S ((S (bcf_index_bcpvztt_central_table_row_step)) * bcf_row_scale_bcpvztt_central_table) + (bcf_value_bcpvztt_central_table_row_step))) /\ ((bcf_index_bcpvztt_central_table_row_step = 0 /\ bcf_value_bcpvztt_central_table_row_step = 1) \/ exists bcf_predecessor_bcpvztt_central_table_row_step bcf_left_bcpvztt_central_table_row_step bcf_right_bcpvztt_central_table_row_step. bcf_index_bcpvztt_central_table_row_step = S bcf_predecessor_bcpvztt_central_table_row_step /\ ((((exists bcf_height_bcpvztt_central_table_row_step_previous_left. bcf_height_bcpvztt_central_table_row_step_previous_left + S (bcf_left_bcpvztt_central_table_row_step) = S ((S (bcf_predecessor_bcpvztt_central_table_row_step)) * bcf_previous_scale_bcpvztt_central_table)) /\ exists bcf_quotient_bcpvztt_central_table_row_step_previous_left. bcf_previous_code_bcpvztt_central_table = bcf_quotient_bcpvztt_central_table_row_step_previous_left * S ((S (bcf_predecessor_bcpvztt_central_table_row_step)) * bcf_previous_scale_bcpvztt_central_table) + (bcf_left_bcpvztt_central_table_row_step))) /\ ((((exists bcf_height_bcpvztt_central_table_row_step_previous_right. bcf_height_bcpvztt_central_table_row_step_previous_right + S (bcf_right_bcpvztt_central_table_row_step) = S ((S (S (bcf_predecessor_bcpvztt_central_table_row_step))) * bcf_previous_scale_bcpvztt_central_table)) /\ exists bcf_quotient_bcpvztt_central_table_row_step_previous_right. bcf_previous_code_bcpvztt_central_table = bcf_quotient_bcpvztt_central_table_row_step_previous_right * S ((S (S (bcf_predecessor_bcpvztt_central_table_row_step))) * bcf_previous_scale_bcpvztt_central_table) + (bcf_right_bcpvztt_central_table_row_step))) /\ bcf_value_bcpvztt_central_table_row_step = bcf_left_bcpvztt_central_table_row_step + bcf_right_bcpvztt_central_table_row_step))))))))))) /\ ((((exists bcf_height_bcpvztt_central_decoded_row_code. bcf_height_bcpvztt_central_decoded_row_code + S (bcf_row_code_bcpvztt_central) = S ((S (n + n)) * bcf_row_code_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_decoded_row_code. bcf_row_code_code_bcpvztt_central = bcf_quotient_bcpvztt_central_decoded_row_code * S ((S (n + n)) * bcf_row_code_scale_bcpvztt_central) + (bcf_row_code_bcpvztt_central))) /\ ((((exists bcf_height_bcpvztt_central_decoded_row_scale. bcf_height_bcpvztt_central_decoded_row_scale + S (bcf_row_scale_bcpvztt_central) = S ((S (n + n)) * bcf_row_scale_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_decoded_row_scale. bcf_row_scale_code_bcpvztt_central = bcf_quotient_bcpvztt_central_decoded_row_scale * S ((S (n + n)) * bcf_row_scale_scale_bcpvztt_central) + (bcf_row_scale_bcpvztt_central))) /\ (((exists bcf_height_bcpvztt_central_decoded_value. bcf_height_bcpvztt_central_decoded_value + S (C) = S ((S (n)) * bcf_row_scale_bcpvztt_central)) /\ exists bcf_quotient_bcpvztt_central_decoded_value. bcf_row_code_bcpvztt_central = bcf_quotient_bcpvztt_central_decoded_value * S ((S (n)) * bcf_row_scale_bcpvztt_central) + (C))))))))) -> (((exists bpv_gap_bcpvztt_valuation_exponent_bound. bpv_gap_bcpvztt_valuation_exponent_bound + v = C) /\ (exists bpv_result_bcpvztt_valuation_selected. ((exists ff_b_bcpvztt_valuation_selected_power ff_c_bcpvztt_valuation_selected_power. ((forall ff_i_bcpvztt_valuation_selected_power_repeat. (exists ff_lt_bcpvztt_valuation_selected_power_repeat_bound. ff_lt_bcpvztt_valuation_selected_power_repeat_bound + S ff_i_bcpvztt_valuation_selected_power_repeat = v) -> (((exists ff_h_bcpvztt_valuation_selected_power_repeat_decoded. ff_h_bcpvztt_valuation_selected_power_repeat_decoded + S (p) = S ((S (ff_i_bcpvztt_valuation_selected_power_repeat)) * ff_c_bcpvztt_valuation_selected_power)) /\ exists ff_q_bcpvztt_valuation_selected_power_repeat_decoded. ff_b_bcpvztt_valuation_selected_power = ff_q_bcpvztt_valuation_selected_power_repeat_decoded * S ((S (ff_i_bcpvztt_valuation_selected_power_repeat)) * ff_c_bcpvztt_valuation_selected_power) + (p)))) /\ (exists ff_u_bcpvztt_valuation_selected_power_product ff_v_bcpvztt_valuation_selected_power_product. ((((exists ff_h_bcpvztt_valuation_selected_power_product_start. ff_h_bcpvztt_valuation_selected_power_product_start + S (1) = S ((S (0)) * ff_v_bcpvztt_valuation_selected_power_product)) /\ exists ff_q_bcpvztt_valuation_selected_power_product_start. ff_u_bcpvztt_valuation_selected_power_product = ff_q_bcpvztt_valuation_selected_power_product_start * S ((S (0)) * ff_v_bcpvztt_valuation_selected_power_product) + (1))) /\ ((((exists ff_h_bcpvztt_valuation_selected_power_product_terminal. ff_h_bcpvztt_valuation_selected_power_product_terminal + S (bpv_result_bcpvztt_valuation_selected) = S ((S (v)) * ff_v_bcpvztt_valuation_selected_power_product)) /\ exists ff_q_bcpvztt_valuation_selected_power_product_terminal. ff_u_bcpvztt_valuation_selected_power_product = ff_q_bcpvztt_valuation_selected_power_product_terminal * S ((S (v)) * ff_v_bcpvztt_valuation_selected_power_product) + (bpv_result_bcpvztt_valuation_selected))) /\ forall ff_i_bcpvztt_valuation_selected_power_product. (exists ff_lt_bcpvztt_valuation_selected_power_product_bound. ff_lt_bcpvztt_valuation_selected_power_product_bound + S ff_i_bcpvztt_valuation_selected_power_product = v) -> exists ff_p_bcpvztt_valuation_selected_power_product ff_r_bcpvztt_valuation_selected_power_product ff_s_bcpvztt_valuation_selected_power_product. ((((exists ff_h_bcpvztt_valuation_selected_power_product_factor. ff_h_bcpvztt_valuation_selected_power_product_factor + S (ff_p_bcpvztt_valuation_selected_power_product) = S ((S (ff_i_bcpvztt_valuation_selected_power_product)) * ff_c_bcpvztt_valuation_selected_power)) /\ exists ff_q_bcpvztt_valuation_selected_power_product_factor. ff_b_bcpvztt_valuation_selected_power = ff_q_bcpvztt_valuation_selected_power_product_factor * S ((S (ff_i_bcpvztt_valuation_selected_power_product)) * ff_c_bcpvztt_valuation_selected_power) + (ff_p_bcpvztt_valuation_selected_power_product))) /\ ((((exists ff_h_bcpvztt_valuation_selected_power_product_partial. ff_h_bcpvztt_valuation_selected_power_product_partial + S (ff_r_bcpvztt_valuation_selected_power_product) = S ((S (ff_i_bcpvztt_valuation_selected_power_product)) * ff_v_bcpvztt_valuation_selected_power_product)) /\ exists ff_q_bcpvztt_valuation_selected_power_product_partial. ff_u_bcpvztt_valuation_selected_power_product = ff_q_bcpvztt_valuation_selected_power_product_partial * S ((S (ff_i_bcpvztt_valuation_selected_power_product)) * ff_v_bcpvztt_valuation_selected_power_product) + (ff_r_bcpvztt_valuation_selected_power_product))) /\ ((((exists ff_h_bcpvztt_valuation_selected_power_product_successor. ff_h_bcpvztt_valuation_selected_power_product_successor + S (ff_s_bcpvztt_valuation_selected_power_product) = S ((S (S ff_i_bcpvztt_valuation_selected_power_product)) * ff_v_bcpvztt_valuation_selected_power_product)) /\ exists ff_q_bcpvztt_valuation_selected_power_product_successor. ff_u_bcpvztt_valuation_selected_power_product = ff_q_bcpvztt_valuation_selected_power_product_successor * S ((S (S ff_i_bcpvztt_valuation_selected_power_product)) * ff_v_bcpvztt_valuation_selected_power_product) + (ff_s_bcpvztt_valuation_selected_power_product))) /\ ff_s_bcpvztt_valuation_selected_power_product = ff_r_bcpvztt_valuation_selected_power_product * ff_p_bcpvztt_valuation_selected_power_product)))))))) /\ (exists bpv_factor_bcpvztt_valuation_selected_divides. C = bpv_result_bcpvztt_valuation_selected * bpv_factor_bcpvztt_valuation_selected_divides)))) /\ forall bpv_candidate_bcpvztt_valuation. (exists bpv_gap_bcpvztt_valuation_candidate_bound. bpv_gap_bcpvztt_valuation_candidate_bound + bpv_candidate_bcpvztt_valuation = C) -> (exists bpv_result_bcpvztt_valuation_candidate. ((exists ff_b_bcpvztt_valuation_candidate_power ff_c_bcpvztt_valuation_candidate_power. ((forall ff_i_bcpvztt_valuation_candidate_power_repeat. (exists ff_lt_bcpvztt_valuation_candidate_power_repeat_bound. ff_lt_bcpvztt_valuation_candidate_power_repeat_bound + S ff_i_bcpvztt_valuation_candidate_power_repeat = bpv_candidate_bcpvztt_valuation) -> (((exists ff_h_bcpvztt_valuation_candidate_power_repeat_decoded. ff_h_bcpvztt_valuation_candidate_power_repeat_decoded + S (p) = S ((S (ff_i_bcpvztt_valuation_candidate_power_repeat)) * ff_c_bcpvztt_valuation_candidate_power)) /\ exists ff_q_bcpvztt_valuation_candidate_power_repeat_decoded. ff_b_bcpvztt_valuation_candidate_power = ff_q_bcpvztt_valuation_candidate_power_repeat_decoded * S ((S (ff_i_bcpvztt_valuation_candidate_power_repeat)) * ff_c_bcpvztt_valuation_candidate_power) + (p)))) /\ (exists ff_u_bcpvztt_valuation_candidate_power_product ff_v_bcpvztt_valuation_candidate_power_product. ((((exists ff_h_bcpvztt_valuation_candidate_power_product_start. ff_h_bcpvztt_valuation_candidate_power_product_start + S (1) = S ((S (0)) * ff_v_bcpvztt_valuation_candidate_power_product)) /\ exists ff_q_bcpvztt_valuation_candidate_power_product_start. ff_u_bcpvztt_valuation_candidate_power_product = ff_q_bcpvztt_valuation_candidate_power_product_start * S ((S (0)) * ff_v_bcpvztt_valuation_candidate_power_product) + (1))) /\ ((((exists ff_h_bcpvztt_valuation_candidate_power_product_terminal. ff_h_bcpvztt_valuation_candidate_power_product_terminal + S (bpv_result_bcpvztt_valuation_candidate) = S ((S (bpv_candidate_bcpvztt_valuation)) * ff_v_bcpvztt_valuation_candidate_power_product)) /\ exists ff_q_bcpvztt_valuation_candidate_power_product_terminal. ff_u_bcpvztt_valuation_candidate_power_product = ff_q_bcpvztt_valuation_candidate_power_product_terminal * S ((S (bpv_candidate_bcpvztt_valuation)) * ff_v_bcpvztt_valuation_candidate_power_product) + (bpv_result_bcpvztt_valuation_candidate))) /\ forall ff_i_bcpvztt_valuation_candidate_power_product. (exists ff_lt_bcpvztt_valuation_candidate_power_product_bound. ff_lt_bcpvztt_valuation_candidate_power_product_bound + S ff_i_bcpvztt_valuation_candidate_power_product = bpv_candidate_bcpvztt_valuation) -> exists ff_p_bcpvztt_valuation_candidate_power_product ff_r_bcpvztt_valuation_candidate_power_product ff_s_bcpvztt_valuation_candidate_power_product. ((((exists ff_h_bcpvztt_valuation_candidate_power_product_factor. ff_h_bcpvztt_valuation_candidate_power_product_factor + S (ff_p_bcpvztt_valuation_candidate_power_product) = S ((S (ff_i_bcpvztt_valuation_candidate_power_product)) * ff_c_bcpvztt_valuation_candidate_power)) /\ exists ff_q_bcpvztt_valuation_candidate_power_product_factor. ff_b_bcpvztt_valuation_candidate_power = ff_q_bcpvztt_valuation_candidate_power_product_factor * S ((S (ff_i_bcpvztt_valuation_candidate_power_product)) * ff_c_bcpvztt_valuation_candidate_power) + (ff_p_bcpvztt_valuation_candidate_power_product))) /\ ((((exists ff_h_bcpvztt_valuation_candidate_power_product_partial. ff_h_bcpvztt_valuation_candidate_power_product_partial + S (ff_r_bcpvztt_valuation_candidate_power_product) = S ((S (ff_i_bcpvztt_valuation_candidate_power_product)) * ff_v_bcpvztt_valuation_candidate_power_product)) /\ exists ff_q_bcpvztt_valuation_candidate_power_product_partial. ff_u_bcpvztt_valuation_candidate_power_product = ff_q_bcpvztt_valuation_candidate_power_product_partial * S ((S (ff_i_bcpvztt_valuation_candidate_power_product)) * ff_v_bcpvztt_valuation_candidate_power_product) + (ff_r_bcpvztt_valuation_candidate_power_product))) /\ ((((exists ff_h_bcpvztt_valuation_candidate_power_product_successor. ff_h_bcpvztt_valuation_candidate_power_product_successor + S (ff_s_bcpvztt_valuation_candidate_power_product) = S ((S (S ff_i_bcpvztt_valuation_candidate_power_product)) * ff_v_bcpvztt_valuation_candidate_power_product)) /\ exists ff_q_bcpvztt_valuation_candidate_power_product_successor. ff_u_bcpvztt_valuation_candidate_power_product = ff_q_bcpvztt_valuation_candidate_power_product_successor * S ((S (S ff_i_bcpvztt_valuation_candidate_power_product)) * ff_v_bcpvztt_valuation_candidate_power_product) + (ff_s_bcpvztt_valuation_candidate_power_product))) /\ ff_s_bcpvztt_valuation_candidate_power_product = ff_r_bcpvztt_valuation_candidate_power_product * ff_p_bcpvztt_valuation_candidate_power_product)))))))) /\ (exists bpv_factor_bcpvztt_valuation_candidate_divides. C = bpv_result_bcpvztt_valuation_candidate * bpv_factor_bcpvztt_valuation_candidate_divides))) -> (exists bpv_gap_bcpvztt_valuation_maximal. bpv_gap_bcpvztt_valuation_maximal + bpv_candidate_bcpvztt_valuation = v)) -> v = 0Proof neighborhood
Direct theorem prerequisites
BT0080 pow_exists BT00YA prime_square_tail_of_two_three_range BT00YB division_first_two_of_two_three_range BT003G prime_nonzero BT0010 one_le_of_ne_zero BT00YD central_binom_prime_valuation_zero_of_exact_double_quotientsDirect 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
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.
Named ingredients (6)
01Fix variables and assumptionsL1–10
02Establish hsquareL11–14
Establish this local claim before using it. It is not an additional assumption.
03Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
cases hsquare
04Establish hstrictL16–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime square tail of two three range.
05Establish hquotientsL25–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division first two of two three range.
- L25
have hquotients : ∃ r. ∃ R. DivRem(n,p,1,r) ∧ DivRem(n + n,p,2,R)Definitions: DivRem(n,p,1,r)DivRem(n + n,p,2,R)Original native command in the exact edition - L26
specialize division_first_two_of_two_three_range p - L27
specialize division_first_two_of_two_three_range n - L28
apply division_first_two_of_two_three_range - L29
exact hlower - L30
exact hscaled
06Separate the logical casesL31–33
07Establish hp_nonzeroL34–39
08Establish hbaseL40–43
09Establish hdouble_alignedL44–44
Establish this local claim before using it. It is not an additional assumption.
- L44
have hdouble_aligned : DivRem(n + n,p,1 + 1,x2)Definitions: DivRem(n + n,p,1 + 1,x2)Original native command in the exact edition
10Establish htwoL45–54
Establish this local claim before using it. It is not an additional assumption.
- L45
have htwo : 2 = 1 + 1 - L46
norm_num - L47
rewrite <- htwo - L48
exact hquotients_witness_witness_right - L49
specialize central_binom_prime_valuation_zero_of_exact_double_quotients p - L50
specialize central_binom_prime_valuation_zero_of_exact_double_quotients n - L51
specialize central_binom_prime_valuation_zero_of_exact_double_quotients C - L52
specialize central_binom_prime_valuation_zero_of_exact_double_quotients v - L53
specialize central_binom_prime_valuation_zero_of_exact_double_quotients 1 - L54
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x1
11Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x2 - L56
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x - L57
apply central_binom_prime_valuation_zero_of_exact_double_quotients - L58
exact hp - L59
exact hcentral - L60
exact hvaluation - L61
exact hbase - L62
exact hsquare_witness - L63
exact hstrict - L64
exact hquotients_witness_witness_left
12Use earlier factsL65–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
exact hdouble_aligned
Original defined command ledger · 65 lines
- 0001
intro p - 0002
intro n - 0003
intro C - 0004
intro v - 0005
intro hp - 0006
intro hpositive - 0007
intro hlower - 0008
intro hscaled - 0009
intro hcentral - 0010
intro hvaluation - 0011
have hsquare : ∃ s. Pow(p,2,s)Exact native replay line
have hsquare : exists s. exists bpvi_b_bcpvztt_square bpvi_c_bcpvztt_square. ((forall bpvi_i_bcpvztt_square. (exists bpvi_repeat_gap_bcpvztt_square. bpvi_repeat_gap_bcpvztt_square + S bpvi_i_bcpvztt_square = 2) -> (((exists bpvi_h_bcpvztt_square_repeat. bpvi_h_bcpvztt_square_repeat + S (p) = S ((S (bpvi_i_bcpvztt_square)) * bpvi_c_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_repeat. bpvi_b_bcpvztt_square = bpvi_q_bcpvztt_square_repeat * S ((S (bpvi_i_bcpvztt_square)) * bpvi_c_bcpvztt_square) + (p)))) /\ (exists bpvi_u_bcpvztt_square bpvi_v_bcpvztt_square. ((((exists bpvi_h_bcpvztt_square_start. bpvi_h_bcpvztt_square_start + S (1) = S ((S (0)) * bpvi_v_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_start. bpvi_u_bcpvztt_square = bpvi_q_bcpvztt_square_start * S ((S (0)) * bpvi_v_bcpvztt_square) + (1))) /\ ((((exists bpvi_h_bcpvztt_square_terminal. bpvi_h_bcpvztt_square_terminal + S (s) = S ((S (2)) * bpvi_v_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_terminal. bpvi_u_bcpvztt_square = bpvi_q_bcpvztt_square_terminal * S ((S (2)) * bpvi_v_bcpvztt_square) + (s))) /\ forall bpvi_j_bcpvztt_square. (exists bpvi_product_gap_bcpvztt_square. bpvi_product_gap_bcpvztt_square + S bpvi_j_bcpvztt_square = 2) -> exists bpvi_factor_bcpvztt_square bpvi_partial_bcpvztt_square bpvi_successor_bcpvztt_square. ((((exists bpvi_h_bcpvztt_square_factor. bpvi_h_bcpvztt_square_factor + S (bpvi_factor_bcpvztt_square) = S ((S (bpvi_j_bcpvztt_square)) * bpvi_c_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_factor. bpvi_b_bcpvztt_square = bpvi_q_bcpvztt_square_factor * S ((S (bpvi_j_bcpvztt_square)) * bpvi_c_bcpvztt_square) + (bpvi_factor_bcpvztt_square))) /\ ((((exists bpvi_h_bcpvztt_square_partial. bpvi_h_bcpvztt_square_partial + S (bpvi_partial_bcpvztt_square) = S ((S (bpvi_j_bcpvztt_square)) * bpvi_v_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_partial. bpvi_u_bcpvztt_square = bpvi_q_bcpvztt_square_partial * S ((S (bpvi_j_bcpvztt_square)) * bpvi_v_bcpvztt_square) + (bpvi_partial_bcpvztt_square))) /\ ((((exists bpvi_h_bcpvztt_square_successor. bpvi_h_bcpvztt_square_successor + S (bpvi_successor_bcpvztt_square) = S ((S (S bpvi_j_bcpvztt_square)) * bpvi_v_bcpvztt_square)) /\ exists bpvi_q_bcpvztt_square_successor. bpvi_u_bcpvztt_square = bpvi_q_bcpvztt_square_successor * S ((S (S bpvi_j_bcpvztt_square)) * bpvi_v_bcpvztt_square) + (bpvi_successor_bcpvztt_square))) /\ bpvi_successor_bcpvztt_square = bpvi_partial_bcpvztt_square * bpvi_factor_bcpvztt_square))))))) - 0012
specialize pow_exists p - 0013
specialize pow_exists 2 - 0014
exact pow_exists - 0015
cases hsquare - 0016
have hstrict : Lt(n + n,x)Exact native replay line
have hstrict : exists bcf_lt_gap_bcpvztt_square_strict. bcf_lt_gap_bcpvztt_square_strict + S (n + n) = x - 0017
specialize prime_square_tail_of_two_three_range p - 0018
specialize prime_square_tail_of_two_three_range n - 0019
specialize prime_square_tail_of_two_three_range x - 0020
apply prime_square_tail_of_two_three_range - 0021
exact hp - 0022
exact hpositive - 0023
exact hscaled - 0024
exact hsquare_witness - 0025
have hquotients : ∃ r. ∃ R. DivRem(n,p,1,r) ∧ DivRem(n + n,p,2,R)Exact native replay line
have hquotients : exists r R. (((n) = (p) * (1) + (r) /\ (exists bcf_lt_gap_bdftt_left_bound. bcf_lt_gap_bdftt_left_bound + S (r) = p))) /\ (((n + n) = (p) * (2) + (R) /\ (exists bcf_lt_gap_bdftt_right_bound. bcf_lt_gap_bdftt_right_bound + S (R) = p))) - 0026
specialize division_first_two_of_two_three_range p - 0027
specialize division_first_two_of_two_three_range n - 0028
apply division_first_two_of_two_three_range - 0029
exact hlower - 0030
exact hscaled - 0031
cases hquotients - 0032
cases hquotients_witness - 0033
cases hquotients_witness_witness - 0034
have hp_nonzero : ~(p = 0) - 0035
intro hpzero - 0036
specialize prime_nonzero p - 0037
apply prime_nonzero - 0038
exact hp - 0039
exact hpzero - 0040
have hbase : Lt(0,p)Exact native replay line
have hbase : exists bcf_le_gap_bcpvzeq_base. bcf_le_gap_bcpvzeq_base + (1) = p - 0041
specialize one_le_of_ne_zero p - 0042
apply one_le_of_ne_zero - 0043
exact hp_nonzero - 0044
have hdouble_aligned : DivRem(n + n,p,1 + 1,x2)Exact native replay line
have hdouble_aligned : ((n + n) = (p) * (1 + 1) + (x2) /\ (exists bcf_lt_gap_bcpvztt_double_aligned_bound. bcf_lt_gap_bcpvztt_double_aligned_bound + S (x2) = p)) - 0045
have htwo : 2 = 1 + 1 - 0046
norm_num - 0047
rewrite <- htwo - 0048
exact hquotients_witness_witness_right - 0049
specialize central_binom_prime_valuation_zero_of_exact_double_quotients p - 0050
specialize central_binom_prime_valuation_zero_of_exact_double_quotients n - 0051
specialize central_binom_prime_valuation_zero_of_exact_double_quotients C - 0052
specialize central_binom_prime_valuation_zero_of_exact_double_quotients v - 0053
specialize central_binom_prime_valuation_zero_of_exact_double_quotients 1 - 0054
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x1 - 0055
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x2 - 0056
specialize central_binom_prime_valuation_zero_of_exact_double_quotients x - 0057
apply central_binom_prime_valuation_zero_of_exact_double_quotients - 0058
exact hp - 0059
exact hcentral - 0060
exact hvaluation - 0061
exact hbase - 0062
exact hsquare_witness - 0063
exact hstrict - 0064
exact hquotients_witness_witness_left - 0065
exact hdouble_aligned