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
∀ h. ∀ k. ∀ sb. ∀ sc. ∀ ib. ∀ ic. ∀ e. h = 2 · k ∨ h = 2 · k + 1 → (∀ x. Lt(x,h) → ∃ y. BetaAt(ib,ic,x,y) ∧ (y = 1 ∧ Lt(x,k) ∨ y = 0 ∧ Lt(k,S x))) → BitCount(sb,sc,h,e) → (∀ x. ∀ y. ∀ z. Lt(x,h) → BetaAt(sb,sc,x,y) → BetaAt(ib,ic,x,z) → y = 0 ∧ z = 1 ∨ y = 1 ∧ z = 0) → h = 2 · e ∨ (∃ x. h = 2 · x + 1 ∧ e = S x)Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall h k sb sc ib ic e. (((h = 2 * k) \/ (h = 2 * k + 1))) -> (forall eis_index_qst_initial_prefix. (exists eis_lt_gap_qst_initial_prefix_bound. eis_lt_gap_qst_initial_prefix_bound + S (eis_index_qst_initial_prefix) = h) -> exists eis_bit_qst_initial_prefix. ((((exists ff_h_eis_qst_initial_prefix_decoded. ff_h_eis_qst_initial_prefix_decoded + S (eis_bit_qst_initial_prefix) = S ((S (eis_index_qst_initial_prefix)) * ic)) /\ exists ff_q_eis_qst_initial_prefix_decoded. ib = ff_q_eis_qst_initial_prefix_decoded * S ((S (eis_index_qst_initial_prefix)) * ic) + (eis_bit_qst_initial_prefix))) /\ (((eis_bit_qst_initial_prefix = 1 /\ (exists eis_le_gap_qst_initial_prefix_choice_inside. eis_le_gap_qst_initial_prefix_choice_inside + (S eis_index_qst_initial_prefix) = k)) \/ (eis_bit_qst_initial_prefix = 0 /\ (exists eis_lt_gap_qst_initial_prefix_choice_outside. eis_lt_gap_qst_initial_prefix_choice_outside + S (k) = S eis_index_qst_initial_prefix)))))) -> (((exists ff_u_qst_sign_count_sum ff_v_qst_sign_count_sum. ((((exists ff_h_qst_sign_count_sum_start. ff_h_qst_sign_count_sum_start + S (0) = S ((S (0)) * ff_v_qst_sign_count_sum)) /\ exists ff_q_qst_sign_count_sum_start. ff_u_qst_sign_count_sum = ff_q_qst_sign_count_sum_start * S ((S (0)) * ff_v_qst_sign_count_sum) + (0))) /\ ((((exists ff_h_qst_sign_count_sum_terminal. ff_h_qst_sign_count_sum_terminal + S (e) = S ((S (h)) * ff_v_qst_sign_count_sum)) /\ exists ff_q_qst_sign_count_sum_terminal. ff_u_qst_sign_count_sum = ff_q_qst_sign_count_sum_terminal * S ((S (h)) * ff_v_qst_sign_count_sum) + (e))) /\ forall ff_i_qst_sign_count_sum. (exists ff_lt_qst_sign_count_sum_bound. ff_lt_qst_sign_count_sum_bound + S ff_i_qst_sign_count_sum = h) -> exists ff_a_qst_sign_count_sum ff_r_qst_sign_count_sum ff_s_qst_sign_count_sum. ((((exists ff_h_qst_sign_count_sum_summand. ff_h_qst_sign_count_sum_summand + S (ff_a_qst_sign_count_sum) = S ((S (ff_i_qst_sign_count_sum)) * sc)) /\ exists ff_q_qst_sign_count_sum_summand. sb = ff_q_qst_sign_count_sum_summand * S ((S (ff_i_qst_sign_count_sum)) * sc) + (ff_a_qst_sign_count_sum))) /\ ((((exists ff_h_qst_sign_count_sum_partial. ff_h_qst_sign_count_sum_partial + S (ff_r_qst_sign_count_sum) = S ((S (ff_i_qst_sign_count_sum)) * ff_v_qst_sign_count_sum)) /\ exists ff_q_qst_sign_count_sum_partial. ff_u_qst_sign_count_sum = ff_q_qst_sign_count_sum_partial * S ((S (ff_i_qst_sign_count_sum)) * ff_v_qst_sign_count_sum) + (ff_r_qst_sign_count_sum))) /\ ((((exists ff_h_qst_sign_count_sum_successor. ff_h_qst_sign_count_sum_successor + S (ff_s_qst_sign_count_sum) = S ((S (S ff_i_qst_sign_count_sum)) * ff_v_qst_sign_count_sum)) /\ exists ff_q_qst_sign_count_sum_successor. ff_u_qst_sign_count_sum = ff_q_qst_sign_count_sum_successor * S ((S (S ff_i_qst_sign_count_sum)) * ff_v_qst_sign_count_sum) + (ff_s_qst_sign_count_sum))) /\ ff_s_qst_sign_count_sum = ff_r_qst_sign_count_sum + ff_a_qst_sign_count_sum)))))) /\ (forall ff_i_qst_sign_count_bits. (exists ff_lt_qst_sign_count_bits_bound. ff_lt_qst_sign_count_bits_bound + S ff_i_qst_sign_count_bits = h) -> exists ff_bit_qst_sign_count_bits. ((((exists ff_h_qst_sign_count_bits_decoded. ff_h_qst_sign_count_bits_decoded + S (ff_bit_qst_sign_count_bits) = S ((S (ff_i_qst_sign_count_bits)) * sc)) /\ exists ff_q_qst_sign_count_bits_decoded. sb = ff_q_qst_sign_count_bits_decoded * S ((S (ff_i_qst_sign_count_bits)) * sc) + (ff_bit_qst_sign_count_bits))) /\ (ff_bit_qst_sign_count_bits = 0 \/ ff_bit_qst_sign_count_bits = 1))))) -> (forall i s t. (exists qst_complement_gap_count. qst_complement_gap_count + S i = h) -> (((exists ff_h_qst_count_sign. ff_h_qst_count_sign + S (s) = S ((S (i)) * sc)) /\ exists ff_q_qst_count_sign. sb = ff_q_qst_count_sign * S ((S (i)) * sc) + (s))) -> (((exists ff_h_qst_count_indicator. ff_h_qst_count_indicator + S (t) = S ((S (i)) * ic)) /\ exists ff_q_qst_count_indicator. ib = ff_q_qst_count_indicator * S ((S (i)) * ic) + (t))) -> ((s = 0 /\ t = 1) \/ (s = 1 /\ t = 0))) -> (((h = 2 * e) \/ (exists qst_count_half_shape. h = 2 * qst_count_half_shape + 1 /\ e = S qst_count_half_shape)))Proof neighborhood
Direct theorem prerequisites
SL000L doubling_half_decomposition_lower_bound eisenstein_initial_segment_bit_count_exact · Alpha closed complementary_bit_counts_add_length · Alpha closed mul_comm · Stable closed zero_add · Stable closed add_succ_left · Stable closed add_right_cancel · Stable closedDirect theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.
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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hcomplement
03Establish hboundL12–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply doubling half decomposition lower bound.
04Establish hinitialcountL17–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein initial segment bit count exact.
- L17
have hinitialcount : BitCount(ib,ic,h,k)Definitions: BitCount(ib,ic,h,k)Original native command in the exact edition - L18
specialize eisenstein_initial_segment_bit_count_exact k - L19
specialize eisenstein_initial_segment_bit_count_exact ib - L20
specialize eisenstein_initial_segment_bit_count_exact ic - L21
specialize eisenstein_initial_segment_bit_count_exact h - L22
apply eisenstein_initial_segment_bit_count_exact - L23
exact hinitial - L24
exact hbound
05Establish hsumL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply complementary bit counts add length.
- L25
have hsum : e + k = h - L26
specialize complementary_bit_counts_add_length sb - L27
specialize complementary_bit_counts_add_length sc - L28
specialize complementary_bit_counts_add_length ib - L29
specialize complementary_bit_counts_add_length ic - L30
specialize complementary_bit_counts_add_length h - L31
specialize complementary_bit_counts_add_length e - L32
specialize complementary_bit_counts_add_length k - L33
apply complementary_bit_counts_add_length - L34
exact hsigncount
06Use earlier factsL35–36
07Establish hdoubleL37–42
08Separate the logical casesL43–43
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L43
cases hhalf
09Establish heqL44–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add right cancel.
10Use earlier factsL54–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
exact hdouble
11Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
left
12Calculate and transport equalitiesL56–56
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L56
rewrite heq
13Use earlier factsL57–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
exact hhalf_left
14Establish hsuccessorL58–64
15Establish heqL65–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add right cancel.
16Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hsuccessor
17Separate the logical casesL76–76
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L76
right
18Construct an explicit witnessL77–77
Supply the displayed value, then prove that it has the required property.
- L77
exists k
19Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
split
Original defined command ledger · 80 lines
- 0001
intro h - 0002
intro k - 0003
intro sb - 0004
intro sc - 0005
intro ib - 0006
intro ic - 0007
intro e - 0008
intro hhalf - 0009
intro hinitial - 0010
intro hsigncount - 0011
intro hcomplement - 0012
have hbound : Le(k,h)Exact native replay line
have hbound : exists gap. gap + k = h - 0013
specialize doubling_half_decomposition_lower_bound h - 0014
specialize doubling_half_decomposition_lower_bound k - 0015
apply doubling_half_decomposition_lower_bound - 0016
exact hhalf - 0017
have hinitialcount : BitCount(ib,ic,h,k)Exact native replay line
have hinitialcount : ((exists ff_u_qst_initial_count_sum ff_v_qst_initial_count_sum. ((((exists ff_h_qst_initial_count_sum_start. ff_h_qst_initial_count_sum_start + S (0) = S ((S (0)) * ff_v_qst_initial_count_sum)) /\ exists ff_q_qst_initial_count_sum_start. ff_u_qst_initial_count_sum = ff_q_qst_initial_count_sum_start * S ((S (0)) * ff_v_qst_initial_count_sum) + (0))) /\ ((((exists ff_h_qst_initial_count_sum_terminal. ff_h_qst_initial_count_sum_terminal + S (k) = S ((S (h)) * ff_v_qst_initial_count_sum)) /\ exists ff_q_qst_initial_count_sum_terminal. ff_u_qst_initial_count_sum = ff_q_qst_initial_count_sum_terminal * S ((S (h)) * ff_v_qst_initial_count_sum) + (k))) /\ forall ff_i_qst_initial_count_sum. (exists ff_lt_qst_initial_count_sum_bound. ff_lt_qst_initial_count_sum_bound + S ff_i_qst_initial_count_sum = h) -> exists ff_a_qst_initial_count_sum ff_r_qst_initial_count_sum ff_s_qst_initial_count_sum. ((((exists ff_h_qst_initial_count_sum_summand. ff_h_qst_initial_count_sum_summand + S (ff_a_qst_initial_count_sum) = S ((S (ff_i_qst_initial_count_sum)) * ic)) /\ exists ff_q_qst_initial_count_sum_summand. ib = ff_q_qst_initial_count_sum_summand * S ((S (ff_i_qst_initial_count_sum)) * ic) + (ff_a_qst_initial_count_sum))) /\ ((((exists ff_h_qst_initial_count_sum_partial. ff_h_qst_initial_count_sum_partial + S (ff_r_qst_initial_count_sum) = S ((S (ff_i_qst_initial_count_sum)) * ff_v_qst_initial_count_sum)) /\ exists ff_q_qst_initial_count_sum_partial. ff_u_qst_initial_count_sum = ff_q_qst_initial_count_sum_partial * S ((S (ff_i_qst_initial_count_sum)) * ff_v_qst_initial_count_sum) + (ff_r_qst_initial_count_sum))) /\ ((((exists ff_h_qst_initial_count_sum_successor. ff_h_qst_initial_count_sum_successor + S (ff_s_qst_initial_count_sum) = S ((S (S ff_i_qst_initial_count_sum)) * ff_v_qst_initial_count_sum)) /\ exists ff_q_qst_initial_count_sum_successor. ff_u_qst_initial_count_sum = ff_q_qst_initial_count_sum_successor * S ((S (S ff_i_qst_initial_count_sum)) * ff_v_qst_initial_count_sum) + (ff_s_qst_initial_count_sum))) /\ ff_s_qst_initial_count_sum = ff_r_qst_initial_count_sum + ff_a_qst_initial_count_sum)))))) /\ (forall ff_i_qst_initial_count_bits. (exists ff_lt_qst_initial_count_bits_bound. ff_lt_qst_initial_count_bits_bound + S ff_i_qst_initial_count_bits = h) -> exists ff_bit_qst_initial_count_bits. ((((exists ff_h_qst_initial_count_bits_decoded. ff_h_qst_initial_count_bits_decoded + S (ff_bit_qst_initial_count_bits) = S ((S (ff_i_qst_initial_count_bits)) * ic)) /\ exists ff_q_qst_initial_count_bits_decoded. ib = ff_q_qst_initial_count_bits_decoded * S ((S (ff_i_qst_initial_count_bits)) * ic) + (ff_bit_qst_initial_count_bits))) /\ (ff_bit_qst_initial_count_bits = 0 \/ ff_bit_qst_initial_count_bits = 1)))) - 0018
specialize eisenstein_initial_segment_bit_count_exact k - 0019
specialize eisenstein_initial_segment_bit_count_exact ib - 0020
specialize eisenstein_initial_segment_bit_count_exact ic - 0021
specialize eisenstein_initial_segment_bit_count_exact h - 0022
apply eisenstein_initial_segment_bit_count_exact - 0023
exact hinitial - 0024
exact hbound - 0025
have hsum : e + k = h - 0026
specialize complementary_bit_counts_add_length sb - 0027
specialize complementary_bit_counts_add_length sc - 0028
specialize complementary_bit_counts_add_length ib - 0029
specialize complementary_bit_counts_add_length ic - 0030
specialize complementary_bit_counts_add_length h - 0031
specialize complementary_bit_counts_add_length e - 0032
specialize complementary_bit_counts_add_length k - 0033
apply complementary_bit_counts_add_length - 0034
exact hsigncount - 0035
exact hinitialcount - 0036
exact hcomplement - 0037
have hdouble : k + k = 2 * k - 0038
trans k * 2 - 0039
simp [zero_add] - 0040
specialize mul_comm k - 0041
specialize mul_comm 2 - 0042
apply mul_comm - 0043
cases hhalf - 0044
have heq : e = k - 0045
specialize add_right_cancel e - 0046
specialize add_right_cancel k - 0047
specialize add_right_cancel k - 0048
apply add_right_cancel - 0049
trans h - 0050
exact hsum - 0051
trans 2 * k - 0052
exact hhalf_left - 0053
symm - 0054
exact hdouble - 0055
left - 0056
rewrite heq - 0057
exact hhalf_left - 0058
have hsuccessor : S k + k = 2 * k + 1 - 0059
trans S (k + k) - 0060
apply add_succ_left - 0061
trans S (2 * k) - 0062
congr - 0063
exact hdouble - 0064
simp - 0065
have heq : e = S k - 0066
specialize add_right_cancel e - 0067
specialize add_right_cancel (S k) - 0068
specialize add_right_cancel k - 0069
apply add_right_cancel - 0070
trans h - 0071
exact hsum - 0072
trans 2 * k + 1 - 0073
exact hhalf_right - 0074
symm - 0075
exact hsuccessor - 0076
right - 0077
exists k - 0078
split - 0079
exact hhalf_right - 0080
exact heq