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.
The exact G102 milestone is fully proved for every natural exponent and every modulus greater than one, including actual canonical digits, a beta-coded accumulator execution, modular-power correctness, and the formal bound k≤3·BitLen(e)+2. The independent T13 determinant/rank/integer-span substrate is now closed in the separate Alpha-v27 integer-linear-algebra branch. Full T13 proof · Alpha v27
Exact theorem in conservative defined notation
∀ b. ∀ c. ∀ l. ∀ h. ∀ d. ∀ n. BinaryDigitPrefix(b,c,l) → Horner(b,c,2,l,h) → d = 0 ∨ d = 1 → n = h + h + d → ∃ x. ∃ y. BinaryExponentDigitCode(n,S l,x,y)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete unchanged native tactic proof
All 92 lines are the exact independently kernel-checked original 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 (2)
01Fix variables and assumptionsL1–10
02Establish happendL11–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary digit prefix append.
- L11
have happend : ∃ z. ∃ e. Beta(z,e,l,d) ∧ (BinaryDigitPrefix(z,e,S l) ∧ (∀ x. ∀ y. Lt(x,l) → Beta(b,c,x,y) → Beta(z,e,x,y)))Definitions: BetaBinaryDigitPrefixLtOriginal native command in the exact edition - L12
specialize binary_digit_prefix_append b - L13
specialize binary_digit_prefix_append c - L14
specialize binary_digit_prefix_append l - L15
specialize binary_digit_prefix_append d - L16
apply binary_digit_prefix_append - L17
exact hdigits - L18
exact hdigit
03Separate the logical casesL19–22
04Establish hprefixL23–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary horner prefix recode.
- L23
- L24
specialize binary_horner_prefix_recode b - L25
specialize binary_horner_prefix_recode c - L26
specialize binary_horner_prefix_recode x - L27
specialize binary_horner_prefix_recode x1 - L28
specialize binary_horner_prefix_recode l - L29
specialize binary_horner_prefix_recode h - L30
apply binary_horner_prefix_recode - L31
exact happend_witness_witness_right_right - L32
exact hhorner
05Establish hevaluationL33–38
Establish this local claim before using it. It is not an additional assumption.
- L33
have hevaluation : ∃ value. Horner(x,x1,2,S l,value)Definitions: HornerOriginal native command in the exact edition - L34
specialize beta_horner_eval_exists x - L35
specialize beta_horner_eval_exists x1 - L36
specialize beta_horner_eval_exists 2 - L37
specialize beta_horner_eval_exists (S l) - L38
exact beta_horner_eval_exists
06Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
cases hevaluation
07Establish hdecomposeL40–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval successor decompose.
- L40
have hdecompose : ∃ digit. ∃ half. Beta(x,x1,l,digit) ∧ (Horner(x,x1,2,l,half) ∧ x2 = half · 2 + digit)Definitions: BetaHornerOriginal native command in the exact edition - L41
specialize beta_horner_eval_successor_decompose x - L42
specialize beta_horner_eval_successor_decompose x1 - L43
specialize beta_horner_eval_successor_decompose 2 - L44
specialize beta_horner_eval_successor_decompose l - L45
specialize beta_horner_eval_successor_decompose x2 - L46
apply beta_horner_eval_successor_decompose - L47
exact hevaluation_witness
08Separate the logical casesL48–51
09Establish hlastL52–60
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
10Establish hhalfL61–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval functional.
- L61
have hhalf : x4 = h - L62
specialize beta_horner_eval_functional x - L63
specialize beta_horner_eval_functional x1 - L64
specialize beta_horner_eval_functional 2 - L65
specialize beta_horner_eval_functional l - L66
specialize beta_horner_eval_functional x4 - L67
specialize beta_horner_eval_functional h - L68
apply beta_horner_eval_functional - L69
exact hdecompose_witness_witness_right_left - L70
exact hprefix
11Establish hdoubleL71–80
Establish this local claim before using it. It is not an additional assumption.
- L71
have hdouble : h * 2 = h + h - L72
trans 2 * h - L73
specialize mul_comm h - L74
specialize mul_comm 2 - L75
exact mul_comm - L76
specialize two_mul_eq_add_self h - L77
exact two_mul_eq_add_self - L78
rewrite hhalf at hdecompose_witness_witness_right_right - L79
rewrite hlast at hdecompose_witness_witness_right_right - L80
rewrite hdouble at hdecompose_witness_witness_right_right
12Establish hvalueL81–85
13Construct an explicit witnessL86–87
14Separate the logical casesL88–88
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L88
split
15Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact happend_witness_witness_right_left
16Calculate and transport equalitiesL90–91
17Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hevaluation_witness
Original defined command ledger · 92 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro h - 0005
intro d - 0006
intro n - 0007
intro hdigits - 0008
intro hhorner - 0009
intro hdigit - 0010
intro htarget - 0011
have happend : exists z e. ((((exists ff_h_bd_append_terminal. ff_h_bd_append_terminal + S (d) = S ((S (l)) * e)) /\ exists ff_q_bd_append_terminal. z = ff_q_bd_append_terminal * S ((S (l)) * e) + (d))) /\ ((forall ff_index_be_bd_append ff_digit_be_bd_append. (exists ff_lt_be_bd_append_bound. ff_lt_be_bd_append_bound + S ff_index_be_bd_append = S l) -> (((exists ff_h_be_bd_append_digit. ff_h_be_bd_append_digit + S (ff_digit_be_bd_append) = S ((S (ff_index_be_bd_append)) * e)) /\ exists ff_q_be_bd_append_digit. z = ff_q_be_bd_append_digit * S ((S (ff_index_be_bd_append)) * e) + (ff_digit_be_bd_append))) -> (ff_digit_be_bd_append = 0 \/ ff_digit_be_bd_append = 1)) /\ (forall bd_index_append_recode bd_value_append_recode. (exists bd_gap_append_recode. bd_gap_append_recode + S bd_index_append_recode = l) -> (((exists ff_h_bd_append_recode_old. ff_h_bd_append_recode_old + S (bd_value_append_recode) = S ((S (bd_index_append_recode)) * c)) /\ exists ff_q_bd_append_recode_old. b = ff_q_bd_append_recode_old * S ((S (bd_index_append_recode)) * c) + (bd_value_append_recode))) -> (((exists ff_h_bd_append_recode_new. ff_h_bd_append_recode_new + S (bd_value_append_recode) = S ((S (bd_index_append_recode)) * e)) /\ exists ff_q_bd_append_recode_new. z = ff_q_bd_append_recode_new * S ((S (bd_index_append_recode)) * e) + (bd_value_append_recode)))))) - 0012
specialize binary_digit_prefix_append b - 0013
specialize binary_digit_prefix_append c - 0014
specialize binary_digit_prefix_append l - 0015
specialize binary_digit_prefix_append d - 0016
apply binary_digit_prefix_append - 0017
exact hdigits - 0018
exact hdigit - 0019
cases happend - 0020
cases happend_witness - 0021
cases happend_witness_witness - 0022
cases happend_witness_witness_right - 0023
have hprefix : (exists ff_u_ph_bd_append_prefix ff_v_ph_bd_append_prefix. ((((exists fs_h_ph_bd_append_prefix_body_start. fs_h_ph_bd_append_prefix_body_start + S (0) = S ((S (0)) * ff_v_ph_bd_append_prefix)) /\ exists fs_q_ph_bd_append_prefix_body_start. ff_u_ph_bd_append_prefix = fs_q_ph_bd_append_prefix_body_start * S ((S (0)) * ff_v_ph_bd_append_prefix) + (0))) /\ ((((exists fs_h_ph_bd_append_prefix_body_terminal. fs_h_ph_bd_append_prefix_body_terminal + S (h) = S ((S (l)) * ff_v_ph_bd_append_prefix)) /\ exists fs_q_ph_bd_append_prefix_body_terminal. ff_u_ph_bd_append_prefix = fs_q_ph_bd_append_prefix_body_terminal * S ((S (l)) * ff_v_ph_bd_append_prefix) + (h))) /\ forall ff_i_ph_bd_append_prefix_body_steps. (exists ph_bound_bd_append_prefix_body_steps. ph_bound_bd_append_prefix_body_steps + S ff_i_ph_bd_append_prefix_body_steps = l) -> exists ff_coefficient_ph_bd_append_prefix_body_steps ff_previous_ph_bd_append_prefix_body_steps ff_current_ph_bd_append_prefix_body_steps. ((((exists fs_h_ph_bd_append_prefix_body_steps_coefficient. fs_h_ph_bd_append_prefix_body_steps_coefficient + S (ff_coefficient_ph_bd_append_prefix_body_steps) = S ((S (ff_i_ph_bd_append_prefix_body_steps)) * x1)) /\ exists fs_q_ph_bd_append_prefix_body_steps_coefficient. x = fs_q_ph_bd_append_prefix_body_steps_coefficient * S ((S (ff_i_ph_bd_append_prefix_body_steps)) * x1) + (ff_coefficient_ph_bd_append_prefix_body_steps))) /\ ((((exists fs_h_ph_bd_append_prefix_body_steps_before. fs_h_ph_bd_append_prefix_body_steps_before + S (ff_previous_ph_bd_append_prefix_body_steps) = S ((S (ff_i_ph_bd_append_prefix_body_steps)) * ff_v_ph_bd_append_prefix)) /\ exists fs_q_ph_bd_append_prefix_body_steps_before. ff_u_ph_bd_append_prefix = fs_q_ph_bd_append_prefix_body_steps_before * S ((S (ff_i_ph_bd_append_prefix_body_steps)) * ff_v_ph_bd_append_prefix) + (ff_previous_ph_bd_append_prefix_body_steps))) /\ ((((exists fs_h_ph_bd_append_prefix_body_steps_after. fs_h_ph_bd_append_prefix_body_steps_after + S (ff_current_ph_bd_append_prefix_body_steps) = S ((S (S ff_i_ph_bd_append_prefix_body_steps)) * ff_v_ph_bd_append_prefix)) /\ exists fs_q_ph_bd_append_prefix_body_steps_after. ff_u_ph_bd_append_prefix = fs_q_ph_bd_append_prefix_body_steps_after * S ((S (S ff_i_ph_bd_append_prefix_body_steps)) * ff_v_ph_bd_append_prefix) + (ff_current_ph_bd_append_prefix_body_steps))) /\ ff_current_ph_bd_append_prefix_body_steps = ff_previous_ph_bd_append_prefix_body_steps * 2 + ff_coefficient_ph_bd_append_prefix_body_steps)))))) - 0024
specialize binary_horner_prefix_recode b - 0025
specialize binary_horner_prefix_recode c - 0026
specialize binary_horner_prefix_recode x - 0027
specialize binary_horner_prefix_recode x1 - 0028
specialize binary_horner_prefix_recode l - 0029
specialize binary_horner_prefix_recode h - 0030
apply binary_horner_prefix_recode - 0031
exact happend_witness_witness_right_right - 0032
exact hhorner - 0033
have hevaluation : exists value. (exists ff_u_ph_bd_append_evaluation ff_v_ph_bd_append_evaluation. ((((exists fs_h_ph_bd_append_evaluation_body_start. fs_h_ph_bd_append_evaluation_body_start + S (0) = S ((S (0)) * ff_v_ph_bd_append_evaluation)) /\ exists fs_q_ph_bd_append_evaluation_body_start. ff_u_ph_bd_append_evaluation = fs_q_ph_bd_append_evaluation_body_start * S ((S (0)) * ff_v_ph_bd_append_evaluation) + (0))) /\ ((((exists fs_h_ph_bd_append_evaluation_body_terminal. fs_h_ph_bd_append_evaluation_body_terminal + S (value) = S ((S (S l)) * ff_v_ph_bd_append_evaluation)) /\ exists fs_q_ph_bd_append_evaluation_body_terminal. ff_u_ph_bd_append_evaluation = fs_q_ph_bd_append_evaluation_body_terminal * S ((S (S l)) * ff_v_ph_bd_append_evaluation) + (value))) /\ forall ff_i_ph_bd_append_evaluation_body_steps. (exists ph_bound_bd_append_evaluation_body_steps. ph_bound_bd_append_evaluation_body_steps + S ff_i_ph_bd_append_evaluation_body_steps = S l) -> exists ff_coefficient_ph_bd_append_evaluation_body_steps ff_previous_ph_bd_append_evaluation_body_steps ff_current_ph_bd_append_evaluation_body_steps. ((((exists fs_h_ph_bd_append_evaluation_body_steps_coefficient. fs_h_ph_bd_append_evaluation_body_steps_coefficient + S (ff_coefficient_ph_bd_append_evaluation_body_steps) = S ((S (ff_i_ph_bd_append_evaluation_body_steps)) * x1)) /\ exists fs_q_ph_bd_append_evaluation_body_steps_coefficient. x = fs_q_ph_bd_append_evaluation_body_steps_coefficient * S ((S (ff_i_ph_bd_append_evaluation_body_steps)) * x1) + (ff_coefficient_ph_bd_append_evaluation_body_steps))) /\ ((((exists fs_h_ph_bd_append_evaluation_body_steps_before. fs_h_ph_bd_append_evaluation_body_steps_before + S (ff_previous_ph_bd_append_evaluation_body_steps) = S ((S (ff_i_ph_bd_append_evaluation_body_steps)) * ff_v_ph_bd_append_evaluation)) /\ exists fs_q_ph_bd_append_evaluation_body_steps_before. ff_u_ph_bd_append_evaluation = fs_q_ph_bd_append_evaluation_body_steps_before * S ((S (ff_i_ph_bd_append_evaluation_body_steps)) * ff_v_ph_bd_append_evaluation) + (ff_previous_ph_bd_append_evaluation_body_steps))) /\ ((((exists fs_h_ph_bd_append_evaluation_body_steps_after. fs_h_ph_bd_append_evaluation_body_steps_after + S (ff_current_ph_bd_append_evaluation_body_steps) = S ((S (S ff_i_ph_bd_append_evaluation_body_steps)) * ff_v_ph_bd_append_evaluation)) /\ exists fs_q_ph_bd_append_evaluation_body_steps_after. ff_u_ph_bd_append_evaluation = fs_q_ph_bd_append_evaluation_body_steps_after * S ((S (S ff_i_ph_bd_append_evaluation_body_steps)) * ff_v_ph_bd_append_evaluation) + (ff_current_ph_bd_append_evaluation_body_steps))) /\ ff_current_ph_bd_append_evaluation_body_steps = ff_previous_ph_bd_append_evaluation_body_steps * 2 + ff_coefficient_ph_bd_append_evaluation_body_steps)))))) - 0034
specialize beta_horner_eval_exists x - 0035
specialize beta_horner_eval_exists x1 - 0036
specialize beta_horner_eval_exists 2 - 0037
specialize beta_horner_eval_exists (S l) - 0038
exact beta_horner_eval_exists - 0039
cases hevaluation - 0040
have hdecompose : exists digit half. ((((exists ff_h_bd_bd_append_last. ff_h_bd_bd_append_last + S (digit) = S ((S (l)) * x1)) /\ exists ff_q_bd_bd_append_last. x = ff_q_bd_bd_append_last * S ((S (l)) * x1) + (digit))) /\ ((exists ff_u_ph_bd_append_half ff_v_ph_bd_append_half. ((((exists fs_h_ph_bd_append_half_body_start. fs_h_ph_bd_append_half_body_start + S (0) = S ((S (0)) * ff_v_ph_bd_append_half)) /\ exists fs_q_ph_bd_append_half_body_start. ff_u_ph_bd_append_half = fs_q_ph_bd_append_half_body_start * S ((S (0)) * ff_v_ph_bd_append_half) + (0))) /\ ((((exists fs_h_ph_bd_append_half_body_terminal. fs_h_ph_bd_append_half_body_terminal + S (half) = S ((S (l)) * ff_v_ph_bd_append_half)) /\ exists fs_q_ph_bd_append_half_body_terminal. ff_u_ph_bd_append_half = fs_q_ph_bd_append_half_body_terminal * S ((S (l)) * ff_v_ph_bd_append_half) + (half))) /\ forall ff_i_ph_bd_append_half_body_steps. (exists ph_bound_bd_append_half_body_steps. ph_bound_bd_append_half_body_steps + S ff_i_ph_bd_append_half_body_steps = l) -> exists ff_coefficient_ph_bd_append_half_body_steps ff_previous_ph_bd_append_half_body_steps ff_current_ph_bd_append_half_body_steps. ((((exists fs_h_ph_bd_append_half_body_steps_coefficient. fs_h_ph_bd_append_half_body_steps_coefficient + S (ff_coefficient_ph_bd_append_half_body_steps) = S ((S (ff_i_ph_bd_append_half_body_steps)) * x1)) /\ exists fs_q_ph_bd_append_half_body_steps_coefficient. x = fs_q_ph_bd_append_half_body_steps_coefficient * S ((S (ff_i_ph_bd_append_half_body_steps)) * x1) + (ff_coefficient_ph_bd_append_half_body_steps))) /\ ((((exists fs_h_ph_bd_append_half_body_steps_before. fs_h_ph_bd_append_half_body_steps_before + S (ff_previous_ph_bd_append_half_body_steps) = S ((S (ff_i_ph_bd_append_half_body_steps)) * ff_v_ph_bd_append_half)) /\ exists fs_q_ph_bd_append_half_body_steps_before. ff_u_ph_bd_append_half = fs_q_ph_bd_append_half_body_steps_before * S ((S (ff_i_ph_bd_append_half_body_steps)) * ff_v_ph_bd_append_half) + (ff_previous_ph_bd_append_half_body_steps))) /\ ((((exists fs_h_ph_bd_append_half_body_steps_after. fs_h_ph_bd_append_half_body_steps_after + S (ff_current_ph_bd_append_half_body_steps) = S ((S (S ff_i_ph_bd_append_half_body_steps)) * ff_v_ph_bd_append_half)) /\ exists fs_q_ph_bd_append_half_body_steps_after. ff_u_ph_bd_append_half = fs_q_ph_bd_append_half_body_steps_after * S ((S (S ff_i_ph_bd_append_half_body_steps)) * ff_v_ph_bd_append_half) + (ff_current_ph_bd_append_half_body_steps))) /\ ff_current_ph_bd_append_half_body_steps = ff_previous_ph_bd_append_half_body_steps * 2 + ff_coefficient_ph_bd_append_half_body_steps)))))) /\ x2 = half * 2 + digit)) - 0041
specialize beta_horner_eval_successor_decompose x - 0042
specialize beta_horner_eval_successor_decompose x1 - 0043
specialize beta_horner_eval_successor_decompose 2 - 0044
specialize beta_horner_eval_successor_decompose l - 0045
specialize beta_horner_eval_successor_decompose x2 - 0046
apply beta_horner_eval_successor_decompose - 0047
exact hevaluation_witness - 0048
cases hdecompose - 0049
cases hdecompose_witness - 0050
cases hdecompose_witness_witness - 0051
cases hdecompose_witness_witness_right - 0052
have hlast : x3 = d - 0053
specialize beta_at_unique x - 0054
specialize beta_at_unique x1 - 0055
specialize beta_at_unique l - 0056
specialize beta_at_unique x3 - 0057
specialize beta_at_unique d - 0058
apply beta_at_unique - 0059
exact hdecompose_witness_witness_left - 0060
exact happend_witness_witness_left - 0061
have hhalf : x4 = h - 0062
specialize beta_horner_eval_functional x - 0063
specialize beta_horner_eval_functional x1 - 0064
specialize beta_horner_eval_functional 2 - 0065
specialize beta_horner_eval_functional l - 0066
specialize beta_horner_eval_functional x4 - 0067
specialize beta_horner_eval_functional h - 0068
apply beta_horner_eval_functional - 0069
exact hdecompose_witness_witness_right_left - 0070
exact hprefix - 0071
have hdouble : h * 2 = h + h - 0072
trans 2 * h - 0073
specialize mul_comm h - 0074
specialize mul_comm 2 - 0075
exact mul_comm - 0076
specialize two_mul_eq_add_self h - 0077
exact two_mul_eq_add_self - 0078
rewrite hhalf at hdecompose_witness_witness_right_right - 0079
rewrite hlast at hdecompose_witness_witness_right_right - 0080
rewrite hdouble at hdecompose_witness_witness_right_right - 0081
have hvalue : x2 = n - 0082
trans (h + h) + d - 0083
exact hdecompose_witness_witness_right_right - 0084
symm - 0085
exact htarget - 0086
exists x - 0087
exists x1 - 0088
split - 0089
exact happend_witness_witness_right_left - 0090
rewrite <- hvalue - 0091
rewrite <- hvalue - 0092
exact hevaluation_witness