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.
G102 was OPEN at this family's Alpha-v22 first admission: complete execution was proved only for a supplied valid beta-coded digit prefix. G102 is now CLOSED in Alpha v23 for every arbitrary exponent, with actual canonical digits and operations≤3*BitLen(e)+2.
Exact theorem in conservative defined notation
∀ b. ∀ c. ∀ a. ∀ m. ∀ l. BinaryModulus(m) → BinaryDigitPrefix(b,c,l) → ∃ x. ∃ y. BinaryExecutionTrace(b,c,a,m,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 60 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 (3)
01Fix variables and assumptionsL1–4
02Induction on lL5–7
03Separate the logical casesL8–9
04Construct an explicit witnessL10–11
05Separate the logical casesL12–12
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L12
split
06Use earlier factsL13–13
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L13
exact binary_execution_initial_state_witness_witness
07Fix variables and assumptionsL14–15
08Separate the logical casesL16–17
09Establish hzeroL18–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
10Establish hprefixL28–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary digit prefix restrict.
- L28
have hprefix : (forall ff_index_be_prefix ff_digit_be_prefix. (exists ff_lt_be_prefix_bound. ff_lt_be_prefix_bound + S ff_index_be_prefix = l) -> (((exists ff_h_be_prefix_digit. ff_h_be_prefix_digit + S (ff_digit_be_prefix) = S ((S (ff_index_be_prefix)) * c)) /\ exists ff_q_be_prefix_digit. b = ff_q_be_prefix_digit * S ((S (ff_index_be_prefix)) * c) + (ff_digit_be_prefix))) -> (ff_digit_be_prefix = 0 \/ ff_digit_be_prefix = 1)) - L29
specialize binary_digit_prefix_restrict b - L30
specialize binary_digit_prefix_restrict c - L31
specialize binary_digit_prefix_restrict l - L32
apply binary_digit_prefix_restrict - L33
exact hdigits
11Establish htraceL34–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L34
have htrace : ∃ u. ∃ v. BinaryExecutionTrace(b,c,a,m,l,u,v)Definitions: BinaryExecutionTraceOriginal native command in the exact edition - L35
apply IH - L36
exact hmodulus - L37
exact hprefix
12Separate the logical casesL38–39
13Establish hlastL40–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary digit prefix terminal bit.
- L40
have hlast : exists x. ((((exists ff_h_be_terminal_digit. ff_h_be_terminal_digit + S (x) = S ((S (l)) * c)) /\ exists ff_q_be_terminal_digit. b = ff_q_be_terminal_digit * S ((S (l)) * c) + (x))) /\ (x = 0 \/ x = 1)) - L41
specialize binary_digit_prefix_terminal_bit b - L42
specialize binary_digit_prefix_terminal_bit c - L43
specialize binary_digit_prefix_terminal_bit l - L44
apply binary_digit_prefix_terminal_bit - L45
exact hdigits
14Separate the logical casesL46–47
15Use earlier factsL48–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
specialize binary_execution_prefix_extend b - L49
specialize binary_execution_prefix_extend c - L50
specialize binary_execution_prefix_extend a - L51
specialize binary_execution_prefix_extend m - L52
specialize binary_execution_prefix_extend l - L53
specialize binary_execution_prefix_extend x - L54
specialize binary_execution_prefix_extend x1 - L55
specialize binary_execution_prefix_extend x2 - L56
apply binary_execution_prefix_extend - L57
exact hmodulus
Original defined command ledger · 60 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
intro m - 0005
induction l - 0006
intro hmodulus - 0007
intro hdigits - 0008
cases binary_execution_initial_state - 0009
cases binary_execution_initial_state_witness - 0010
exists x - 0011
exists x1 - 0012
split - 0013
exact binary_execution_initial_state_witness_witness - 0014
intro i - 0015
intro hi - 0016
exfalso - 0017
cases hi - 0018
have hzero : S i = 0 - 0019
specialize add_eq_zero_right x2 - 0020
specialize add_eq_zero_right (S i) - 0021
apply add_eq_zero_right - 0022
exact hi_witness - 0023
specialize succ_ne_zero i - 0024
apply succ_ne_zero - 0025
exact hzero - 0026
intro hmodulus - 0027
intro hdigits - 0028
have hprefix : (forall ff_index_be_prefix ff_digit_be_prefix. (exists ff_lt_be_prefix_bound. ff_lt_be_prefix_bound + S ff_index_be_prefix = l) -> (((exists ff_h_be_prefix_digit. ff_h_be_prefix_digit + S (ff_digit_be_prefix) = S ((S (ff_index_be_prefix)) * c)) /\ exists ff_q_be_prefix_digit. b = ff_q_be_prefix_digit * S ((S (ff_index_be_prefix)) * c) + (ff_digit_be_prefix))) -> (ff_digit_be_prefix = 0 \/ ff_digit_be_prefix = 1)) - 0029
specialize binary_digit_prefix_restrict b - 0030
specialize binary_digit_prefix_restrict c - 0031
specialize binary_digit_prefix_restrict l - 0032
apply binary_digit_prefix_restrict - 0033
exact hdigits - 0034
have htrace : exists u v. (((((exists ff_h_be_trace_start. ff_h_be_trace_start + S (1) = S ((S (0)) * v)) /\ exists ff_q_be_trace_start. u = ff_q_be_trace_start * S ((S (0)) * v) + (1))) /\ forall ff_index_be_trace. (exists ff_lt_be_trace_bound. ff_lt_be_trace_bound + S ff_index_be_trace = l) -> exists ff_digit_be_trace ff_previous_be_trace ff_current_be_trace. ((((exists ff_h_be_trace_source. ff_h_be_trace_source + S (ff_digit_be_trace) = S ((S (ff_index_be_trace)) * c)) /\ exists ff_q_be_trace_source. b = ff_q_be_trace_source * S ((S (ff_index_be_trace)) * c) + (ff_digit_be_trace))) /\ ((((exists ff_h_be_trace_before. ff_h_be_trace_before + S (ff_previous_be_trace) = S ((S (ff_index_be_trace)) * v)) /\ exists ff_q_be_trace_before. u = ff_q_be_trace_before * S ((S (ff_index_be_trace)) * v) + (ff_previous_be_trace))) /\ ((((exists ff_h_be_trace_after. ff_h_be_trace_after + S (ff_current_be_trace) = S ((S (S ff_index_be_trace)) * v)) /\ exists ff_q_be_trace_after. u = ff_q_be_trace_after * S ((S (S ff_index_be_trace)) * v) + (ff_current_be_trace))) /\ ((((ff_digit_be_trace = 0) /\ (((exists ff_gap_binary_be_trace_transition_square. ff_gap_binary_be_trace_transition_square + S (ff_current_be_trace) = m) /\ (exists ff_left_binary_be_trace_transition_square_congruence ff_right_binary_be_trace_transition_square_congruence. (ff_previous_be_trace * ff_previous_be_trace) + m * ff_left_binary_be_trace_transition_square_congruence = (ff_current_be_trace) + m * ff_right_binary_be_trace_transition_square_congruence)))) \/ ((ff_digit_be_trace = 1) /\ (((exists ff_gap_binary_be_trace_transition_multiply. ff_gap_binary_be_trace_transition_multiply + S (ff_current_be_trace) = m) /\ (exists ff_left_binary_be_trace_transition_multiply_congruence ff_right_binary_be_trace_transition_multiply_congruence. ((ff_previous_be_trace * ff_previous_be_trace) * a) + m * ff_left_binary_be_trace_transition_multiply_congruence = (ff_current_be_trace) + m * ff_right_binary_be_trace_transition_multiply_congruence))))))))))) - 0035
apply IH - 0036
exact hmodulus - 0037
exact hprefix - 0038
cases htrace - 0039
cases htrace_witness - 0040
have hlast : exists x. ((((exists ff_h_be_terminal_digit. ff_h_be_terminal_digit + S (x) = S ((S (l)) * c)) /\ exists ff_q_be_terminal_digit. b = ff_q_be_terminal_digit * S ((S (l)) * c) + (x))) /\ (x = 0 \/ x = 1)) - 0041
specialize binary_digit_prefix_terminal_bit b - 0042
specialize binary_digit_prefix_terminal_bit c - 0043
specialize binary_digit_prefix_terminal_bit l - 0044
apply binary_digit_prefix_terminal_bit - 0045
exact hdigits - 0046
cases hlast - 0047
cases hlast_witness - 0048
specialize binary_execution_prefix_extend b - 0049
specialize binary_execution_prefix_extend c - 0050
specialize binary_execution_prefix_extend a - 0051
specialize binary_execution_prefix_extend m - 0052
specialize binary_execution_prefix_extend l - 0053
specialize binary_execution_prefix_extend x - 0054
specialize binary_execution_prefix_extend x1 - 0055
specialize binary_execution_prefix_extend x2 - 0056
apply binary_execution_prefix_extend - 0057
exact hmodulus - 0058
exact hlast_witness_right - 0059
exact hlast_witness_left - 0060
exact htrace_witness_witness