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
∀ n. ∀ a. ∀ m. BinaryModulus(m) → ∃ x. ∃ y. ∃ z. ∃ k. ∃ i. BinaryCompleteModularExecution(n,a,m,x,y,z,k) ∧ (BinaryExecutionOperationCount(y,z,x,i) ∧ Le(i,3 · x + 2))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete unchanged native tactic proof
All 46 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.
Combine an actual execution, its operation count, and a length bound
First use the existing construction of canonical exponent digits and a complete modular-exponentiation execution. The large local fact hfull packages the digit length, beta codes, accumulator trace, and modular-power result; it does not guess a new invariant.
Extract the binary-digit condition from that execution and use the operation-count theorem to obtain an actual counted cost. The last theorem bounds that cost by three times the canonical binary length plus two. The same witnesses are retained throughout, so the result couples an execution with its cost bound. This counts the formal execution operations; it is not a claim about the bit-complexity of arbitrary-precision multiplication.
Named ingredients (3)
01Fix variables and assumptionsL1–4
02Establish hfullL5–10
Apply binary_modular_exponent_coded_execution_exists to the exponent n, base a, modulus m, and its guard. The resulting existential package is exactly the long hfull formula.
- L5
have hfull : ∃ l. ∃ b. ∃ c. ∃ r. BinaryCompleteModularExecution(n,a,m,l,b,c,r)Definitions: BinaryCompleteModularExecutionOriginal native command in the exact edition - L6
specialize binary_modular_exponent_coded_execution_exists n - L7
specialize binary_modular_exponent_coded_execution_exists a - L8
specialize binary_modular_exponent_coded_execution_exists m - L9
apply binary_modular_exponent_coded_execution_exists - L10
exact hmodulus
03Separate the logical casesL11–14
04Establish hdigitsL15–15
Project the binary-digit property from the completed execution. This is an existing component of hfull, not an extra assumption about the digits.
- L15
have hdigits : BinaryDigitPrefix(x1,x2,x)Definitions: BinaryDigitPrefixOriginal native command in the exact edition
05Separate the logical casesL16–18
06Use earlier factsL19–19
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L19
exact hfull_witness_witness_witness_witness_left_right_left
07Establish hcostL20–25
Use that digit property to obtain the beta-counted number of operations for these very same digit codes. The final application combines this witness with the existing execution bound.
- L20
have hcost : ∃ operations. BinaryExecutionOperationCount(x1,x2,x,operations)Definitions: BinaryExecutionOperationCountOriginal native command in the exact edition - L21
specialize binary_digit_operation_count_exists x1 - L22
specialize binary_digit_operation_count_exists x2 - L23
specialize binary_digit_operation_count_exists x - L24
apply binary_digit_operation_count_exists - L25
exact hdigits
08Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hcost
09Construct an explicit witnessL27–31
10Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
split
11Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
exact hfull_witness_witness_witness_witness
12Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
split
13Use earlier factsL35–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L35
exact hcost_witness - L36
specialize binary_modular_execution_bitlength_bound n - L37
specialize binary_modular_execution_bitlength_bound a - L38
specialize binary_modular_execution_bitlength_bound m - L39
specialize binary_modular_execution_bitlength_bound x - L40
specialize binary_modular_execution_bitlength_bound x1 - L41
specialize binary_modular_execution_bitlength_bound x2 - L42
specialize binary_modular_execution_bitlength_bound x3 - L43
specialize binary_modular_execution_bitlength_bound x4 - L44
apply binary_modular_execution_bitlength_bound
Original defined command ledger · 46 lines
- 0001
intro n - 0002
intro a - 0003
intro m - 0004
intro hmodulus - 0005
have hfull : exists l b c r. ((((((((n) = 0 /\ (l) = 1) \/ exists ff_exponent_bl_bd_logarithmic_run_canonical_length ff_lower_bl_bd_logarithmic_run_canonical_length ff_upper_bl_bd_logarithmic_run_canonical_length. (((l) = S ff_exponent_bl_bd_logarithmic_run_canonical_length) /\ ((exists ff_positive_bl_bd_logarithmic_run_canonical_length. ff_positive_bl_bd_logarithmic_run_canonical_length + 1 = (n)) /\ ((exists pa_b_bl_bd_logarithmic_run_canonical_length_lower pa_c_bl_bd_logarithmic_run_canonical_length_lower. ((forall pa_i_bl_bd_logarithmic_run_canonical_length_lower_repeat. (exists pa_lt_bl_bd_logarithmic_run_canonical_length_lower_repeat_bound. pa_lt_bl_bd_logarithmic_run_canonical_length_lower_repeat_bound + S pa_i_bl_bd_logarithmic_run_canonical_length_lower_repeat = ff_exponent_bl_bd_logarithmic_run_canonical_length) -> (((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_repeat_decoded. pa_h_bl_bd_logarithmic_run_canonical_length_lower_repeat_decoded + S (2) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_repeat)) * pa_c_bl_bd_logarithmic_run_canonical_length_lower)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_repeat_decoded. pa_b_bl_bd_logarithmic_run_canonical_length_lower = pa_q_bl_bd_logarithmic_run_canonical_length_lower_repeat_decoded * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_repeat)) * pa_c_bl_bd_logarithmic_run_canonical_length_lower) + (2)))) /\ (exists pa_u_bl_bd_logarithmic_run_canonical_length_lower_product pa_v_bl_bd_logarithmic_run_canonical_length_lower_product. ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_start. pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_start + S (1) = S ((S (0)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_start. pa_u_bl_bd_logarithmic_run_canonical_length_lower_product = pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_start * S ((S (0)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product) + (1))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_terminal. pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_terminal + S (ff_lower_bl_bd_logarithmic_run_canonical_length) = S ((S (ff_exponent_bl_bd_logarithmic_run_canonical_length)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_terminal. pa_u_bl_bd_logarithmic_run_canonical_length_lower_product = pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_terminal * S ((S (ff_exponent_bl_bd_logarithmic_run_canonical_length)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product) + (ff_lower_bl_bd_logarithmic_run_canonical_length))) /\ forall pa_i_bl_bd_logarithmic_run_canonical_length_lower_product. (exists pa_lt_bl_bd_logarithmic_run_canonical_length_lower_product_bound. pa_lt_bl_bd_logarithmic_run_canonical_length_lower_product_bound + S pa_i_bl_bd_logarithmic_run_canonical_length_lower_product = ff_exponent_bl_bd_logarithmic_run_canonical_length) -> exists pa_p_bl_bd_logarithmic_run_canonical_length_lower_product pa_r_bl_bd_logarithmic_run_canonical_length_lower_product pa_s_bl_bd_logarithmic_run_canonical_length_lower_product. ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_factor. pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_factor + S (pa_p_bl_bd_logarithmic_run_canonical_length_lower_product) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_c_bl_bd_logarithmic_run_canonical_length_lower)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_factor. pa_b_bl_bd_logarithmic_run_canonical_length_lower = pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_factor * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_c_bl_bd_logarithmic_run_canonical_length_lower) + (pa_p_bl_bd_logarithmic_run_canonical_length_lower_product))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_partial. pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_partial + S (pa_r_bl_bd_logarithmic_run_canonical_length_lower_product) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_partial. pa_u_bl_bd_logarithmic_run_canonical_length_lower_product = pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_partial * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product) + (pa_r_bl_bd_logarithmic_run_canonical_length_lower_product))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_successor. pa_h_bl_bd_logarithmic_run_canonical_length_lower_product_successor + S (pa_s_bl_bd_logarithmic_run_canonical_length_lower_product) = S ((S (S pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_successor. pa_u_bl_bd_logarithmic_run_canonical_length_lower_product = pa_q_bl_bd_logarithmic_run_canonical_length_lower_product_successor * S ((S (S pa_i_bl_bd_logarithmic_run_canonical_length_lower_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_lower_product) + (pa_s_bl_bd_logarithmic_run_canonical_length_lower_product))) /\ pa_s_bl_bd_logarithmic_run_canonical_length_lower_product = pa_r_bl_bd_logarithmic_run_canonical_length_lower_product * pa_p_bl_bd_logarithmic_run_canonical_length_lower_product)))))))) /\ ((exists pa_b_bl_bd_logarithmic_run_canonical_length_upper pa_c_bl_bd_logarithmic_run_canonical_length_upper. ((forall pa_i_bl_bd_logarithmic_run_canonical_length_upper_repeat. (exists pa_lt_bl_bd_logarithmic_run_canonical_length_upper_repeat_bound. pa_lt_bl_bd_logarithmic_run_canonical_length_upper_repeat_bound + S pa_i_bl_bd_logarithmic_run_canonical_length_upper_repeat = l) -> (((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_repeat_decoded. pa_h_bl_bd_logarithmic_run_canonical_length_upper_repeat_decoded + S (2) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_repeat)) * pa_c_bl_bd_logarithmic_run_canonical_length_upper)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_repeat_decoded. pa_b_bl_bd_logarithmic_run_canonical_length_upper = pa_q_bl_bd_logarithmic_run_canonical_length_upper_repeat_decoded * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_repeat)) * pa_c_bl_bd_logarithmic_run_canonical_length_upper) + (2)))) /\ (exists pa_u_bl_bd_logarithmic_run_canonical_length_upper_product pa_v_bl_bd_logarithmic_run_canonical_length_upper_product. ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_start. pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_start + S (1) = S ((S (0)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_start. pa_u_bl_bd_logarithmic_run_canonical_length_upper_product = pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_start * S ((S (0)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product) + (1))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_terminal. pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_terminal + S (ff_upper_bl_bd_logarithmic_run_canonical_length) = S ((S (l)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_terminal. pa_u_bl_bd_logarithmic_run_canonical_length_upper_product = pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_terminal * S ((S (l)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product) + (ff_upper_bl_bd_logarithmic_run_canonical_length))) /\ forall pa_i_bl_bd_logarithmic_run_canonical_length_upper_product. (exists pa_lt_bl_bd_logarithmic_run_canonical_length_upper_product_bound. pa_lt_bl_bd_logarithmic_run_canonical_length_upper_product_bound + S pa_i_bl_bd_logarithmic_run_canonical_length_upper_product = l) -> exists pa_p_bl_bd_logarithmic_run_canonical_length_upper_product pa_r_bl_bd_logarithmic_run_canonical_length_upper_product pa_s_bl_bd_logarithmic_run_canonical_length_upper_product. ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_factor. pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_factor + S (pa_p_bl_bd_logarithmic_run_canonical_length_upper_product) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_c_bl_bd_logarithmic_run_canonical_length_upper)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_factor. pa_b_bl_bd_logarithmic_run_canonical_length_upper = pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_factor * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_c_bl_bd_logarithmic_run_canonical_length_upper) + (pa_p_bl_bd_logarithmic_run_canonical_length_upper_product))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_partial. pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_partial + S (pa_r_bl_bd_logarithmic_run_canonical_length_upper_product) = S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_partial. pa_u_bl_bd_logarithmic_run_canonical_length_upper_product = pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_partial * S ((S (pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product) + (pa_r_bl_bd_logarithmic_run_canonical_length_upper_product))) /\ ((((exists pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_successor. pa_h_bl_bd_logarithmic_run_canonical_length_upper_product_successor + S (pa_s_bl_bd_logarithmic_run_canonical_length_upper_product) = S ((S (S pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product)) /\ exists pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_successor. pa_u_bl_bd_logarithmic_run_canonical_length_upper_product = pa_q_bl_bd_logarithmic_run_canonical_length_upper_product_successor * S ((S (S pa_i_bl_bd_logarithmic_run_canonical_length_upper_product)) * pa_v_bl_bd_logarithmic_run_canonical_length_upper_product) + (pa_s_bl_bd_logarithmic_run_canonical_length_upper_product))) /\ pa_s_bl_bd_logarithmic_run_canonical_length_upper_product = pa_r_bl_bd_logarithmic_run_canonical_length_upper_product * pa_p_bl_bd_logarithmic_run_canonical_length_upper_product)))))))) /\ ((exists ff_lower_gap_bl_bd_logarithmic_run_canonical_length. ff_lower_gap_bl_bd_logarithmic_run_canonical_length + (ff_lower_bl_bd_logarithmic_run_canonical_length) = (n)) /\ (exists ff_upper_gap_bl_bd_logarithmic_run_canonical_length. ff_upper_gap_bl_bd_logarithmic_run_canonical_length + S (n) = (ff_upper_bl_bd_logarithmic_run_canonical_length))))))))) /\ (((forall ff_index_be_bd_logarithmic_run_canonical_code_digits ff_digit_be_bd_logarithmic_run_canonical_code_digits. (exists ff_lt_be_bd_logarithmic_run_canonical_code_digits_bound. ff_lt_be_bd_logarithmic_run_canonical_code_digits_bound + S ff_index_be_bd_logarithmic_run_canonical_code_digits = l) -> (((exists ff_h_be_bd_logarithmic_run_canonical_code_digits_digit. ff_h_be_bd_logarithmic_run_canonical_code_digits_digit + S (ff_digit_be_bd_logarithmic_run_canonical_code_digits) = S ((S (ff_index_be_bd_logarithmic_run_canonical_code_digits)) * c)) /\ exists ff_q_be_bd_logarithmic_run_canonical_code_digits_digit. b = ff_q_be_bd_logarithmic_run_canonical_code_digits_digit * S ((S (ff_index_be_bd_logarithmic_run_canonical_code_digits)) * c) + (ff_digit_be_bd_logarithmic_run_canonical_code_digits))) -> (ff_digit_be_bd_logarithmic_run_canonical_code_digits = 0 \/ ff_digit_be_bd_logarithmic_run_canonical_code_digits = 1)) /\ (exists ff_u_ph_bd_logarithmic_run_canonical_code_horner ff_v_ph_bd_logarithmic_run_canonical_code_horner. ((((exists fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_start. fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_start + S (0) = S ((S (0)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner)) /\ exists fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_start. ff_u_ph_bd_logarithmic_run_canonical_code_horner = fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_start * S ((S (0)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner) + (0))) /\ ((((exists fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_terminal. fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_terminal + S (n) = S ((S (l)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner)) /\ exists fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_terminal. ff_u_ph_bd_logarithmic_run_canonical_code_horner = fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_terminal * S ((S (l)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner) + (n))) /\ forall ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps. (exists ph_bound_bd_logarithmic_run_canonical_code_horner_body_steps. ph_bound_bd_logarithmic_run_canonical_code_horner_body_steps + S ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps = l) -> exists ff_coefficient_ph_bd_logarithmic_run_canonical_code_horner_body_steps ff_previous_ph_bd_logarithmic_run_canonical_code_horner_body_steps ff_current_ph_bd_logarithmic_run_canonical_code_horner_body_steps. ((((exists fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_coefficient. fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_coefficient + S (ff_coefficient_ph_bd_logarithmic_run_canonical_code_horner_body_steps) = S ((S (ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * c)) /\ exists fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_coefficient. b = fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_coefficient * S ((S (ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * c) + (ff_coefficient_ph_bd_logarithmic_run_canonical_code_horner_body_steps))) /\ ((((exists fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_before. fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_before + S (ff_previous_ph_bd_logarithmic_run_canonical_code_horner_body_steps) = S ((S (ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner)) /\ exists fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_before. ff_u_ph_bd_logarithmic_run_canonical_code_horner = fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_before * S ((S (ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner) + (ff_previous_ph_bd_logarithmic_run_canonical_code_horner_body_steps))) /\ ((((exists fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_after. fs_h_ph_bd_logarithmic_run_canonical_code_horner_body_steps_after + S (ff_current_ph_bd_logarithmic_run_canonical_code_horner_body_steps) = S ((S (S ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner)) /\ exists fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_after. ff_u_ph_bd_logarithmic_run_canonical_code_horner = fs_q_ph_bd_logarithmic_run_canonical_code_horner_body_steps_after * S ((S (S ff_i_ph_bd_logarithmic_run_canonical_code_horner_body_steps)) * ff_v_ph_bd_logarithmic_run_canonical_code_horner) + (ff_current_ph_bd_logarithmic_run_canonical_code_horner_body_steps))) /\ ff_current_ph_bd_logarithmic_run_canonical_code_horner_body_steps = ff_previous_ph_bd_logarithmic_run_canonical_code_horner_body_steps * 2 + ff_coefficient_ph_bd_logarithmic_run_canonical_code_horner_body_steps)))))))))) /\ ((exists ff_trace_code_be_bd_logarithmic_run_execution ff_trace_scale_be_bd_logarithmic_run_execution. ((((((exists ff_h_be_bd_logarithmic_run_execution_trace_start. ff_h_be_bd_logarithmic_run_execution_trace_start + S (1) = S ((S (0)) * ff_trace_scale_be_bd_logarithmic_run_execution)) /\ exists ff_q_be_bd_logarithmic_run_execution_trace_start. ff_trace_code_be_bd_logarithmic_run_execution = ff_q_be_bd_logarithmic_run_execution_trace_start * S ((S (0)) * ff_trace_scale_be_bd_logarithmic_run_execution) + (1))) /\ forall ff_index_be_bd_logarithmic_run_execution_trace. (exists ff_lt_be_bd_logarithmic_run_execution_trace_bound. ff_lt_be_bd_logarithmic_run_execution_trace_bound + S ff_index_be_bd_logarithmic_run_execution_trace = l) -> exists ff_digit_be_bd_logarithmic_run_execution_trace ff_previous_be_bd_logarithmic_run_execution_trace ff_current_be_bd_logarithmic_run_execution_trace. ((((exists ff_h_be_bd_logarithmic_run_execution_trace_source. ff_h_be_bd_logarithmic_run_execution_trace_source + S (ff_digit_be_bd_logarithmic_run_execution_trace) = S ((S (ff_index_be_bd_logarithmic_run_execution_trace)) * c)) /\ exists ff_q_be_bd_logarithmic_run_execution_trace_source. b = ff_q_be_bd_logarithmic_run_execution_trace_source * S ((S (ff_index_be_bd_logarithmic_run_execution_trace)) * c) + (ff_digit_be_bd_logarithmic_run_execution_trace))) /\ ((((exists ff_h_be_bd_logarithmic_run_execution_trace_before. ff_h_be_bd_logarithmic_run_execution_trace_before + S (ff_previous_be_bd_logarithmic_run_execution_trace) = S ((S (ff_index_be_bd_logarithmic_run_execution_trace)) * ff_trace_scale_be_bd_logarithmic_run_execution)) /\ exists ff_q_be_bd_logarithmic_run_execution_trace_before. ff_trace_code_be_bd_logarithmic_run_execution = ff_q_be_bd_logarithmic_run_execution_trace_before * S ((S (ff_index_be_bd_logarithmic_run_execution_trace)) * ff_trace_scale_be_bd_logarithmic_run_execution) + (ff_previous_be_bd_logarithmic_run_execution_trace))) /\ ((((exists ff_h_be_bd_logarithmic_run_execution_trace_after. ff_h_be_bd_logarithmic_run_execution_trace_after + S (ff_current_be_bd_logarithmic_run_execution_trace) = S ((S (S ff_index_be_bd_logarithmic_run_execution_trace)) * ff_trace_scale_be_bd_logarithmic_run_execution)) /\ exists ff_q_be_bd_logarithmic_run_execution_trace_after. ff_trace_code_be_bd_logarithmic_run_execution = ff_q_be_bd_logarithmic_run_execution_trace_after * S ((S (S ff_index_be_bd_logarithmic_run_execution_trace)) * ff_trace_scale_be_bd_logarithmic_run_execution) + (ff_current_be_bd_logarithmic_run_execution_trace))) /\ ((((ff_digit_be_bd_logarithmic_run_execution_trace = 0) /\ (((exists ff_gap_binary_be_bd_logarithmic_run_execution_trace_transition_square. ff_gap_binary_be_bd_logarithmic_run_execution_trace_transition_square + S (ff_current_be_bd_logarithmic_run_execution_trace) = m) /\ (exists ff_left_binary_be_bd_logarithmic_run_execution_trace_transition_square_congruence ff_right_binary_be_bd_logarithmic_run_execution_trace_transition_square_congruence. (ff_previous_be_bd_logarithmic_run_execution_trace * ff_previous_be_bd_logarithmic_run_execution_trace) + m * ff_left_binary_be_bd_logarithmic_run_execution_trace_transition_square_congruence = (ff_current_be_bd_logarithmic_run_execution_trace) + m * ff_right_binary_be_bd_logarithmic_run_execution_trace_transition_square_congruence)))) \/ ((ff_digit_be_bd_logarithmic_run_execution_trace = 1) /\ (((exists ff_gap_binary_be_bd_logarithmic_run_execution_trace_transition_multiply. ff_gap_binary_be_bd_logarithmic_run_execution_trace_transition_multiply + S (ff_current_be_bd_logarithmic_run_execution_trace) = m) /\ (exists ff_left_binary_be_bd_logarithmic_run_execution_trace_transition_multiply_congruence ff_right_binary_be_bd_logarithmic_run_execution_trace_transition_multiply_congruence. ((ff_previous_be_bd_logarithmic_run_execution_trace * ff_previous_be_bd_logarithmic_run_execution_trace) * a) + m * ff_left_binary_be_bd_logarithmic_run_execution_trace_transition_multiply_congruence = (ff_current_be_bd_logarithmic_run_execution_trace) + m * ff_right_binary_be_bd_logarithmic_run_execution_trace_transition_multiply_congruence))))))))))) /\ (((exists ff_h_be_bd_logarithmic_run_execution_terminal. ff_h_be_bd_logarithmic_run_execution_terminal + S (r) = S ((S (l)) * ff_trace_scale_be_bd_logarithmic_run_execution)) /\ exists ff_q_be_bd_logarithmic_run_execution_terminal. ff_trace_code_be_bd_logarithmic_run_execution = ff_q_be_bd_logarithmic_run_execution_terminal * S ((S (l)) * ff_trace_scale_be_bd_logarithmic_run_execution) + (r))))) /\ (exists ff_power_binary_bd_logarithmic_run_power. ((exists ff_b_binary_bd_logarithmic_run_power_value ff_c_binary_bd_logarithmic_run_power_value. ((forall ff_i_binary_bd_logarithmic_run_power_value_repeat. (exists ff_lt_binary_bd_logarithmic_run_power_value_repeat_bound. ff_lt_binary_bd_logarithmic_run_power_value_repeat_bound + S ff_i_binary_bd_logarithmic_run_power_value_repeat = n) -> (((exists ff_h_binary_bd_logarithmic_run_power_value_repeat_decoded. ff_h_binary_bd_logarithmic_run_power_value_repeat_decoded + S (a) = S ((S (ff_i_binary_bd_logarithmic_run_power_value_repeat)) * ff_c_binary_bd_logarithmic_run_power_value)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_repeat_decoded. ff_b_binary_bd_logarithmic_run_power_value = ff_q_binary_bd_logarithmic_run_power_value_repeat_decoded * S ((S (ff_i_binary_bd_logarithmic_run_power_value_repeat)) * ff_c_binary_bd_logarithmic_run_power_value) + (a)))) /\ (exists ff_u_binary_bd_logarithmic_run_power_value_product ff_v_binary_bd_logarithmic_run_power_value_product. ((((exists ff_h_binary_bd_logarithmic_run_power_value_product_start. ff_h_binary_bd_logarithmic_run_power_value_product_start + S (1) = S ((S (0)) * ff_v_binary_bd_logarithmic_run_power_value_product)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_product_start. ff_u_binary_bd_logarithmic_run_power_value_product = ff_q_binary_bd_logarithmic_run_power_value_product_start * S ((S (0)) * ff_v_binary_bd_logarithmic_run_power_value_product) + (1))) /\ ((((exists ff_h_binary_bd_logarithmic_run_power_value_product_terminal. ff_h_binary_bd_logarithmic_run_power_value_product_terminal + S (ff_power_binary_bd_logarithmic_run_power) = S ((S (n)) * ff_v_binary_bd_logarithmic_run_power_value_product)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_product_terminal. ff_u_binary_bd_logarithmic_run_power_value_product = ff_q_binary_bd_logarithmic_run_power_value_product_terminal * S ((S (n)) * ff_v_binary_bd_logarithmic_run_power_value_product) + (ff_power_binary_bd_logarithmic_run_power))) /\ forall ff_i_binary_bd_logarithmic_run_power_value_product. (exists ff_lt_binary_bd_logarithmic_run_power_value_product_bound. ff_lt_binary_bd_logarithmic_run_power_value_product_bound + S ff_i_binary_bd_logarithmic_run_power_value_product = n) -> exists ff_p_binary_bd_logarithmic_run_power_value_product ff_r_binary_bd_logarithmic_run_power_value_product ff_s_binary_bd_logarithmic_run_power_value_product. ((((exists ff_h_binary_bd_logarithmic_run_power_value_product_factor. ff_h_binary_bd_logarithmic_run_power_value_product_factor + S (ff_p_binary_bd_logarithmic_run_power_value_product) = S ((S (ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_c_binary_bd_logarithmic_run_power_value)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_product_factor. ff_b_binary_bd_logarithmic_run_power_value = ff_q_binary_bd_logarithmic_run_power_value_product_factor * S ((S (ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_c_binary_bd_logarithmic_run_power_value) + (ff_p_binary_bd_logarithmic_run_power_value_product))) /\ ((((exists ff_h_binary_bd_logarithmic_run_power_value_product_partial. ff_h_binary_bd_logarithmic_run_power_value_product_partial + S (ff_r_binary_bd_logarithmic_run_power_value_product) = S ((S (ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_v_binary_bd_logarithmic_run_power_value_product)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_product_partial. ff_u_binary_bd_logarithmic_run_power_value_product = ff_q_binary_bd_logarithmic_run_power_value_product_partial * S ((S (ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_v_binary_bd_logarithmic_run_power_value_product) + (ff_r_binary_bd_logarithmic_run_power_value_product))) /\ ((((exists ff_h_binary_bd_logarithmic_run_power_value_product_successor. ff_h_binary_bd_logarithmic_run_power_value_product_successor + S (ff_s_binary_bd_logarithmic_run_power_value_product) = S ((S (S ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_v_binary_bd_logarithmic_run_power_value_product)) /\ exists ff_q_binary_bd_logarithmic_run_power_value_product_successor. ff_u_binary_bd_logarithmic_run_power_value_product = ff_q_binary_bd_logarithmic_run_power_value_product_successor * S ((S (S ff_i_binary_bd_logarithmic_run_power_value_product)) * ff_v_binary_bd_logarithmic_run_power_value_product) + (ff_s_binary_bd_logarithmic_run_power_value_product))) /\ ff_s_binary_bd_logarithmic_run_power_value_product = ff_r_binary_bd_logarithmic_run_power_value_product * ff_p_binary_bd_logarithmic_run_power_value_product)))))))) /\ (((exists ff_gap_binary_bd_logarithmic_run_power_residue. ff_gap_binary_bd_logarithmic_run_power_residue + S (r) = m) /\ (exists ff_left_binary_bd_logarithmic_run_power_residue_congruence ff_right_binary_bd_logarithmic_run_power_residue_congruence. (ff_power_binary_bd_logarithmic_run_power) + m * ff_left_binary_bd_logarithmic_run_power_residue_congruence = (r) + m * ff_right_binary_bd_logarithmic_run_power_residue_congruence)))))))) - 0006
specialize binary_modular_exponent_coded_execution_exists n - 0007
specialize binary_modular_exponent_coded_execution_exists a - 0008
specialize binary_modular_exponent_coded_execution_exists m - 0009
apply binary_modular_exponent_coded_execution_exists - 0010
exact hmodulus - 0011
cases hfull - 0012
cases hfull_witness - 0013
cases hfull_witness_witness - 0014
cases hfull_witness_witness_witness - 0015
have hdigits : (forall ff_index_be_bd_logarithmic_digits ff_digit_be_bd_logarithmic_digits. (exists ff_lt_be_bd_logarithmic_digits_bound. ff_lt_be_bd_logarithmic_digits_bound + S ff_index_be_bd_logarithmic_digits = x) -> (((exists ff_h_be_bd_logarithmic_digits_digit. ff_h_be_bd_logarithmic_digits_digit + S (ff_digit_be_bd_logarithmic_digits) = S ((S (ff_index_be_bd_logarithmic_digits)) * x2)) /\ exists ff_q_be_bd_logarithmic_digits_digit. x1 = ff_q_be_bd_logarithmic_digits_digit * S ((S (ff_index_be_bd_logarithmic_digits)) * x2) + (ff_digit_be_bd_logarithmic_digits))) -> (ff_digit_be_bd_logarithmic_digits = 0 \/ ff_digit_be_bd_logarithmic_digits = 1)) - 0016
cases hfull_witness_witness_witness_witness - 0017
cases hfull_witness_witness_witness_witness_left - 0018
cases hfull_witness_witness_witness_witness_left_right - 0019
exact hfull_witness_witness_witness_witness_left_right_left - 0020
have hcost : exists operations. (exists ff_ones_bd_logarithmic_chosen. ((((exists ff_u_bd_logarithmic_chosen_count_sum ff_v_bd_logarithmic_chosen_count_sum. ((((exists ff_h_bd_logarithmic_chosen_count_sum_start. ff_h_bd_logarithmic_chosen_count_sum_start + S (0) = S ((S (0)) * ff_v_bd_logarithmic_chosen_count_sum)) /\ exists ff_q_bd_logarithmic_chosen_count_sum_start. ff_u_bd_logarithmic_chosen_count_sum = ff_q_bd_logarithmic_chosen_count_sum_start * S ((S (0)) * ff_v_bd_logarithmic_chosen_count_sum) + (0))) /\ ((((exists ff_h_bd_logarithmic_chosen_count_sum_terminal. ff_h_bd_logarithmic_chosen_count_sum_terminal + S (ff_ones_bd_logarithmic_chosen) = S ((S (x)) * ff_v_bd_logarithmic_chosen_count_sum)) /\ exists ff_q_bd_logarithmic_chosen_count_sum_terminal. ff_u_bd_logarithmic_chosen_count_sum = ff_q_bd_logarithmic_chosen_count_sum_terminal * S ((S (x)) * ff_v_bd_logarithmic_chosen_count_sum) + (ff_ones_bd_logarithmic_chosen))) /\ forall ff_i_bd_logarithmic_chosen_count_sum. (exists ff_lt_bd_logarithmic_chosen_count_sum_bound. ff_lt_bd_logarithmic_chosen_count_sum_bound + S ff_i_bd_logarithmic_chosen_count_sum = x) -> exists ff_a_bd_logarithmic_chosen_count_sum ff_r_bd_logarithmic_chosen_count_sum ff_s_bd_logarithmic_chosen_count_sum. ((((exists ff_h_bd_logarithmic_chosen_count_sum_summand. ff_h_bd_logarithmic_chosen_count_sum_summand + S (ff_a_bd_logarithmic_chosen_count_sum) = S ((S (ff_i_bd_logarithmic_chosen_count_sum)) * x2)) /\ exists ff_q_bd_logarithmic_chosen_count_sum_summand. x1 = ff_q_bd_logarithmic_chosen_count_sum_summand * S ((S (ff_i_bd_logarithmic_chosen_count_sum)) * x2) + (ff_a_bd_logarithmic_chosen_count_sum))) /\ ((((exists ff_h_bd_logarithmic_chosen_count_sum_partial. ff_h_bd_logarithmic_chosen_count_sum_partial + S (ff_r_bd_logarithmic_chosen_count_sum) = S ((S (ff_i_bd_logarithmic_chosen_count_sum)) * ff_v_bd_logarithmic_chosen_count_sum)) /\ exists ff_q_bd_logarithmic_chosen_count_sum_partial. ff_u_bd_logarithmic_chosen_count_sum = ff_q_bd_logarithmic_chosen_count_sum_partial * S ((S (ff_i_bd_logarithmic_chosen_count_sum)) * ff_v_bd_logarithmic_chosen_count_sum) + (ff_r_bd_logarithmic_chosen_count_sum))) /\ ((((exists ff_h_bd_logarithmic_chosen_count_sum_successor. ff_h_bd_logarithmic_chosen_count_sum_successor + S (ff_s_bd_logarithmic_chosen_count_sum) = S ((S (S ff_i_bd_logarithmic_chosen_count_sum)) * ff_v_bd_logarithmic_chosen_count_sum)) /\ exists ff_q_bd_logarithmic_chosen_count_sum_successor. ff_u_bd_logarithmic_chosen_count_sum = ff_q_bd_logarithmic_chosen_count_sum_successor * S ((S (S ff_i_bd_logarithmic_chosen_count_sum)) * ff_v_bd_logarithmic_chosen_count_sum) + (ff_s_bd_logarithmic_chosen_count_sum))) /\ ff_s_bd_logarithmic_chosen_count_sum = ff_r_bd_logarithmic_chosen_count_sum + ff_a_bd_logarithmic_chosen_count_sum)))))) /\ (forall ff_i_bd_logarithmic_chosen_count_bits. (exists ff_lt_bd_logarithmic_chosen_count_bits_bound. ff_lt_bd_logarithmic_chosen_count_bits_bound + S ff_i_bd_logarithmic_chosen_count_bits = x) -> exists ff_bit_bd_logarithmic_chosen_count_bits. ((((exists ff_h_bd_logarithmic_chosen_count_bits_decoded. ff_h_bd_logarithmic_chosen_count_bits_decoded + S (ff_bit_bd_logarithmic_chosen_count_bits) = S ((S (ff_i_bd_logarithmic_chosen_count_bits)) * x2)) /\ exists ff_q_bd_logarithmic_chosen_count_bits_decoded. x1 = ff_q_bd_logarithmic_chosen_count_bits_decoded * S ((S (ff_i_bd_logarithmic_chosen_count_bits)) * x2) + (ff_bit_bd_logarithmic_chosen_count_bits))) /\ (ff_bit_bd_logarithmic_chosen_count_bits = 0 \/ ff_bit_bd_logarithmic_chosen_count_bits = 1))))) /\ operations = (2 + (x + x)) + ff_ones_bd_logarithmic_chosen)) - 0021
specialize binary_digit_operation_count_exists x1 - 0022
specialize binary_digit_operation_count_exists x2 - 0023
specialize binary_digit_operation_count_exists x - 0024
apply binary_digit_operation_count_exists - 0025
exact hdigits - 0026
cases hcost - 0027
exists x - 0028
exists x1 - 0029
exists x2 - 0030
exists x3 - 0031
exists x4 - 0032
split - 0033
exact hfull_witness_witness_witness_witness - 0034
split - 0035
exact hcost_witness - 0036
specialize binary_modular_execution_bitlength_bound n - 0037
specialize binary_modular_execution_bitlength_bound a - 0038
specialize binary_modular_execution_bitlength_bound m - 0039
specialize binary_modular_execution_bitlength_bound x - 0040
specialize binary_modular_execution_bitlength_bound x1 - 0041
specialize binary_modular_execution_bitlength_bound x2 - 0042
specialize binary_modular_execution_bitlength_bound x3 - 0043
specialize binary_modular_execution_bitlength_bound x4 - 0044
apply binary_modular_execution_bitlength_bound - 0045
exact hfull_witness_witness_witness_witness - 0046
exact hcost_witness