Exact expanded PA statement
forall b c k n. (forall eis_one_index_initial_segment_all_one_source. (exists eis_lt_gap_initial_segment_all_one_source_bound. eis_lt_gap_initial_segment_all_one_source_bound + S (eis_one_index_initial_segment_all_one_source) = k) -> (((exists ff_h_eis_initial_segment_all_one_source_decoded. ff_h_eis_initial_segment_all_one_source_decoded + S (1) = S ((S (eis_one_index_initial_segment_all_one_source)) * c)) /\ exists ff_q_eis_initial_segment_all_one_source_decoded. b = ff_q_eis_initial_segment_all_one_source_decoded * S ((S (eis_one_index_initial_segment_all_one_source)) * c) + (1)))) -> (((exists ff_u_initial_segment_all_one_count_sum ff_v_initial_segment_all_one_count_sum. ((((exists ff_h_initial_segment_all_one_count_sum_start. ff_h_initial_segment_all_one_count_sum_start + S (0) = S ((S (0)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_start. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_start * S ((S (0)) * ff_v_initial_segment_all_one_count_sum) + (0))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_terminal. ff_h_initial_segment_all_one_count_sum_terminal + S (n) = S ((S (k)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_terminal. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_terminal * S ((S (k)) * ff_v_initial_segment_all_one_count_sum) + (n))) /\ forall ff_i_initial_segment_all_one_count_sum. (exists ff_lt_initial_segment_all_one_count_sum_bound. ff_lt_initial_segment_all_one_count_sum_bound + S ff_i_initial_segment_all_one_count_sum = k) -> exists ff_a_initial_segment_all_one_count_sum ff_r_initial_segment_all_one_count_sum ff_s_initial_segment_all_one_count_sum. ((((exists ff_h_initial_segment_all_one_count_sum_summand. ff_h_initial_segment_all_one_count_sum_summand + S (ff_a_initial_segment_all_one_count_sum) = S ((S (ff_i_initial_segment_all_one_count_sum)) * c)) /\ exists ff_q_initial_segment_all_one_count_sum_summand. b = ff_q_initial_segment_all_one_count_sum_summand * S ((S (ff_i_initial_segment_all_one_count_sum)) * c) + (ff_a_initial_segment_all_one_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_partial. ff_h_initial_segment_all_one_count_sum_partial + S (ff_r_initial_segment_all_one_count_sum) = S ((S (ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_partial. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_partial * S ((S (ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum) + (ff_r_initial_segment_all_one_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_count_sum_successor. ff_h_initial_segment_all_one_count_sum_successor + S (ff_s_initial_segment_all_one_count_sum) = S ((S (S ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum)) /\ exists ff_q_initial_segment_all_one_count_sum_successor. ff_u_initial_segment_all_one_count_sum = ff_q_initial_segment_all_one_count_sum_successor * S ((S (S ff_i_initial_segment_all_one_count_sum)) * ff_v_initial_segment_all_one_count_sum) + (ff_s_initial_segment_all_one_count_sum))) /\ ff_s_initial_segment_all_one_count_sum = ff_r_initial_segment_all_one_count_sum + ff_a_initial_segment_all_one_count_sum)))))) /\ (forall ff_i_initial_segment_all_one_count_bits. (exists ff_lt_initial_segment_all_one_count_bits_bound. ff_lt_initial_segment_all_one_count_bits_bound + S ff_i_initial_segment_all_one_count_bits = k) -> exists ff_bit_initial_segment_all_one_count_bits. ((((exists ff_h_initial_segment_all_one_count_bits_decoded. ff_h_initial_segment_all_one_count_bits_decoded + S (ff_bit_initial_segment_all_one_count_bits) = S ((S (ff_i_initial_segment_all_one_count_bits)) * c)) /\ exists ff_q_initial_segment_all_one_count_bits_decoded. b = ff_q_initial_segment_all_one_count_bits_decoded * S ((S (ff_i_initial_segment_all_one_count_bits)) * c) + (ff_bit_initial_segment_all_one_count_bits))) /\ (ff_bit_initial_segment_all_one_count_bits = 0 \/ ff_bit_initial_segment_all_one_count_bits = 1))))) -> n = kStructural proof guide
A length-k beta prefix consisting only of ones has BitCount k.
Direct prerequisites: bit_count_zero, bit_count_succ_decompose, all_bits_prefix_succ, beta_at_unique, le_succ, le_refl. The authored body proceeds by structural induction (1), case analysis (5), intermediate claims (5), equality transport (3).
Proof neighborhood
Direct dependencies
BT008N bit_count_zero BT008O bit_count_succ_decompose BT008J all_bits_prefix_succ BT0042 beta_at_unique BT0018 le_succ BT000E le_reflDirect dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 0001
intro b - 0002
intro c - 0003
induction k - 0004
intro n - 0005
intro hone - 0006
intro hcount - 0007
specialize bit_count_zero b - 0008
specialize bit_count_zero c - 0009
specialize bit_count_zero 0 - 0010
specialize bit_count_zero n - 0011
apply bit_count_zero - 0012
refl - 0013
exact hcount - 0014
intro n - 0015
intro hone - 0016
intro hcount - 0017
have hdecomp : exists a r. (((exists ff_h_initial_segment_all_one_last. ff_h_initial_segment_all_one_last + S (a) = S ((S (k)) * c)) /\ exists ff_q_initial_segment_all_one_last. b = ff_q_initial_segment_all_one_last * S ((S (k)) * c) + (a))) /\ ((((exists ff_u_initial_segment_all_one_prefix_count_sum ff_v_initial_segment_all_one_prefix_count_sum. ((((exists ff_h_initial_segment_all_one_prefix_count_sum_start. ff_h_initial_segment_all_one_prefix_count_sum_start + S (0) = S ((S (0)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_start. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_start * S ((S (0)) * ff_v_initial_segment_all_one_prefix_count_sum) + (0))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_terminal. ff_h_initial_segment_all_one_prefix_count_sum_terminal + S (r) = S ((S (k)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_terminal. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_terminal * S ((S (k)) * ff_v_initial_segment_all_one_prefix_count_sum) + (r))) /\ forall ff_i_initial_segment_all_one_prefix_count_sum. (exists ff_lt_initial_segment_all_one_prefix_count_sum_bound. ff_lt_initial_segment_all_one_prefix_count_sum_bound + S ff_i_initial_segment_all_one_prefix_count_sum = k) -> exists ff_a_initial_segment_all_one_prefix_count_sum ff_r_initial_segment_all_one_prefix_count_sum ff_s_initial_segment_all_one_prefix_count_sum. ((((exists ff_h_initial_segment_all_one_prefix_count_sum_summand. ff_h_initial_segment_all_one_prefix_count_sum_summand + S (ff_a_initial_segment_all_one_prefix_count_sum) = S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * c)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_summand. b = ff_q_initial_segment_all_one_prefix_count_sum_summand * S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * c) + (ff_a_initial_segment_all_one_prefix_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_partial. ff_h_initial_segment_all_one_prefix_count_sum_partial + S (ff_r_initial_segment_all_one_prefix_count_sum) = S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_partial. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_partial * S ((S (ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum) + (ff_r_initial_segment_all_one_prefix_count_sum))) /\ ((((exists ff_h_initial_segment_all_one_prefix_count_sum_successor. ff_h_initial_segment_all_one_prefix_count_sum_successor + S (ff_s_initial_segment_all_one_prefix_count_sum) = S ((S (S ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum)) /\ exists ff_q_initial_segment_all_one_prefix_count_sum_successor. ff_u_initial_segment_all_one_prefix_count_sum = ff_q_initial_segment_all_one_prefix_count_sum_successor * S ((S (S ff_i_initial_segment_all_one_prefix_count_sum)) * ff_v_initial_segment_all_one_prefix_count_sum) + (ff_s_initial_segment_all_one_prefix_count_sum))) /\ ff_s_initial_segment_all_one_prefix_count_sum = ff_r_initial_segment_all_one_prefix_count_sum + ff_a_initial_segment_all_one_prefix_count_sum)))))) /\ (forall ff_i_initial_segment_all_one_prefix_count_bits. (exists ff_lt_initial_segment_all_one_prefix_count_bits_bound. ff_lt_initial_segment_all_one_prefix_count_bits_bound + S ff_i_initial_segment_all_one_prefix_count_bits = k) -> exists ff_bit_initial_segment_all_one_prefix_count_bits. ((((exists ff_h_initial_segment_all_one_prefix_count_bits_decoded. ff_h_initial_segment_all_one_prefix_count_bits_decoded + S (ff_bit_initial_segment_all_one_prefix_count_bits) = S ((S (ff_i_initial_segment_all_one_prefix_count_bits)) * c)) /\ exists ff_q_initial_segment_all_one_prefix_count_bits_decoded. b = ff_q_initial_segment_all_one_prefix_count_bits_decoded * S ((S (ff_i_initial_segment_all_one_prefix_count_bits)) * c) + (ff_bit_initial_segment_all_one_prefix_count_bits))) /\ (ff_bit_initial_segment_all_one_prefix_count_bits = 0 \/ ff_bit_initial_segment_all_one_prefix_count_bits = 1))))) /\ ((a = 0 \/ a = 1) /\ n = r + a)) - 0018
specialize bit_count_succ_decompose b - 0019
specialize bit_count_succ_decompose c - 0020
specialize bit_count_succ_decompose k - 0021
specialize bit_count_succ_decompose (S k) - 0022
specialize bit_count_succ_decompose n - 0023
apply bit_count_succ_decompose - 0024
refl - 0025
exact hcount - 0026
cases hdecomp - 0027
cases hdecomp_witness - 0028
cases hdecomp_witness_witness - 0029
cases hdecomp_witness_witness_right - 0030
cases hdecomp_witness_witness_right_right - 0031
have hone_previous : forall eis_one_index_initial_segment_all_one_previous. (exists eis_lt_gap_initial_segment_all_one_previous_bound. eis_lt_gap_initial_segment_all_one_previous_bound + S (eis_one_index_initial_segment_all_one_previous) = k) -> (((exists ff_h_eis_initial_segment_all_one_previous_decoded. ff_h_eis_initial_segment_all_one_previous_decoded + S (1) = S ((S (eis_one_index_initial_segment_all_one_previous)) * c)) /\ exists ff_q_eis_initial_segment_all_one_previous_decoded. b = ff_q_eis_initial_segment_all_one_previous_decoded * S ((S (eis_one_index_initial_segment_all_one_previous)) * c) + (1))) - 0032
intro j - 0033
intro hj - 0034
specialize hone j - 0035
apply hone - 0036
specialize le_succ (S j) - 0037
specialize le_succ k - 0038
apply le_succ - 0039
exact hj - 0040
have hr : x1 = k - 0041
specialize IH x1 - 0042
apply IH - 0043
exact hone_previous - 0044
exact hdecomp_witness_witness_right_left - 0045
have hlast_one : ((exists ff_h_initial_segment_all_one_terminal. ff_h_initial_segment_all_one_terminal + S (1) = S ((S (k)) * c)) /\ exists ff_q_initial_segment_all_one_terminal. b = ff_q_initial_segment_all_one_terminal * S ((S (k)) * c) + (1)) - 0046
specialize hone k - 0047
apply hone - 0048
specialize le_refl (S k) - 0049
exact le_refl - 0050
have ha : x = 1 - 0051
specialize beta_at_unique b - 0052
specialize beta_at_unique c - 0053
specialize beta_at_unique k - 0054
specialize beta_at_unique x - 0055
specialize beta_at_unique 1 - 0056
apply beta_at_unique - 0057
exact hdecomp_witness_witness_left - 0058
exact hlast_one - 0059
rewrite hdecomp_witness_witness_right_right_right - 0060
rewrite hr - 0061
rewrite ha - 0062
simp