TH000C

horner_derivative_coprime_bounded_inverse

An actual evaluated coprime formal derivative has a strictly bounded constructive modular inverse.

Alpha v34 checked-use · first admitted v25 · independently kernel and Lean verified; not Stable

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.

Historical partial components only: this chapter proves exact natural polynomial Taylor remainders, bounded corrections, and one-step divisibility lifts. G095 is now closed in the separate Alpha-v27 hensel-lifting branch for integer polynomials, unrestricted input roots, unique canonical representatives, and every positive prime power. Full G095 proof · Alpha v27

Exact theorem in conservative defined notation

∀ b. ∀ c. ∀ a. ∀ l. ∀ n. ∀ d. ∀ p. HornerDerivative(b,c,a,l,n,d) → ¬p = 0 → Coprime(d,p) → ∃ x. Lt(x,p)ModEq(p,d · x,1)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

coprime_bounded_mod_inverse · checked external prerequisite
Original expanded first-order statement
forall b c a l n d p. (exists ff_u_hd_pth_inverse_pair ff_v_hd_pth_inverse_pair ff_d_hd_pth_inverse_pair ff_e_hd_pth_inverse_pair. ((((((exists fs_h_ph_hd_pth_inverse_pair_body_value_start. fs_h_ph_hd_pth_inverse_pair_body_value_start + S (0) = S ((S (0)) * ff_v_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_value_start. ff_u_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_value_start * S ((S (0)) * ff_v_hd_pth_inverse_pair) + (0))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_value_terminal. fs_h_ph_hd_pth_inverse_pair_body_value_terminal + S (n) = S ((S (l)) * ff_v_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_value_terminal. ff_u_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_value_terminal * S ((S (l)) * ff_v_hd_pth_inverse_pair) + (n))) /\ forall ff_i_ph_hd_pth_inverse_pair_body_value_steps. (exists ph_bound_hd_pth_inverse_pair_body_value_steps. ph_bound_hd_pth_inverse_pair_body_value_steps + S ff_i_ph_hd_pth_inverse_pair_body_value_steps = l) -> exists ff_coefficient_ph_hd_pth_inverse_pair_body_value_steps ff_previous_ph_hd_pth_inverse_pair_body_value_steps ff_current_ph_hd_pth_inverse_pair_body_value_steps. ((((exists fs_h_ph_hd_pth_inverse_pair_body_value_steps_coefficient. fs_h_ph_hd_pth_inverse_pair_body_value_steps_coefficient + S (ff_coefficient_ph_hd_pth_inverse_pair_body_value_steps) = S ((S (ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * c)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_value_steps_coefficient. b = fs_q_ph_hd_pth_inverse_pair_body_value_steps_coefficient * S ((S (ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * c) + (ff_coefficient_ph_hd_pth_inverse_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_value_steps_before. fs_h_ph_hd_pth_inverse_pair_body_value_steps_before + S (ff_previous_ph_hd_pth_inverse_pair_body_value_steps) = S ((S (ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * ff_v_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_value_steps_before. ff_u_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_value_steps_before * S ((S (ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * ff_v_hd_pth_inverse_pair) + (ff_previous_ph_hd_pth_inverse_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_value_steps_after. fs_h_ph_hd_pth_inverse_pair_body_value_steps_after + S (ff_current_ph_hd_pth_inverse_pair_body_value_steps) = S ((S (S ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * ff_v_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_value_steps_after. ff_u_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_value_steps_after * S ((S (S ff_i_ph_hd_pth_inverse_pair_body_value_steps)) * ff_v_hd_pth_inverse_pair) + (ff_current_ph_hd_pth_inverse_pair_body_value_steps))) /\ ff_current_ph_hd_pth_inverse_pair_body_value_steps = ff_previous_ph_hd_pth_inverse_pair_body_value_steps * a + ff_coefficient_ph_hd_pth_inverse_pair_body_value_steps)))))) /\ (((((exists fs_h_ph_hd_pth_inverse_pair_body_derivative_start. fs_h_ph_hd_pth_inverse_pair_body_derivative_start + S (0) = S ((S (0)) * ff_e_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_derivative_start. ff_d_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_derivative_start * S ((S (0)) * ff_e_hd_pth_inverse_pair) + (0))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_derivative_terminal. fs_h_ph_hd_pth_inverse_pair_body_derivative_terminal + S (d) = S ((S (l)) * ff_e_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_derivative_terminal. ff_d_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_derivative_terminal * S ((S (l)) * ff_e_hd_pth_inverse_pair) + (d))) /\ forall ff_i_ph_hd_pth_inverse_pair_body_derivative_steps. (exists ph_bound_hd_pth_inverse_pair_body_derivative_steps. ph_bound_hd_pth_inverse_pair_body_derivative_steps + S ff_i_ph_hd_pth_inverse_pair_body_derivative_steps = l) -> exists ff_coefficient_ph_hd_pth_inverse_pair_body_derivative_steps ff_previous_ph_hd_pth_inverse_pair_body_derivative_steps ff_current_ph_hd_pth_inverse_pair_body_derivative_steps. ((((exists fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_coefficient. fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_coefficient + S (ff_coefficient_ph_hd_pth_inverse_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_v_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_coefficient. ff_u_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_coefficient * S ((S (ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_v_hd_pth_inverse_pair) + (ff_coefficient_ph_hd_pth_inverse_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_before. fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_before + S (ff_previous_ph_hd_pth_inverse_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_e_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_before. ff_d_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_before * S ((S (ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_e_hd_pth_inverse_pair) + (ff_previous_ph_hd_pth_inverse_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_after. fs_h_ph_hd_pth_inverse_pair_body_derivative_steps_after + S (ff_current_ph_hd_pth_inverse_pair_body_derivative_steps) = S ((S (S ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_e_hd_pth_inverse_pair)) /\ exists fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_after. ff_d_hd_pth_inverse_pair = fs_q_ph_hd_pth_inverse_pair_body_derivative_steps_after * S ((S (S ff_i_ph_hd_pth_inverse_pair_body_derivative_steps)) * ff_e_hd_pth_inverse_pair) + (ff_current_ph_hd_pth_inverse_pair_body_derivative_steps))) /\ ff_current_ph_hd_pth_inverse_pair_body_derivative_steps = ff_previous_ph_hd_pth_inverse_pair_body_derivative_steps * a + ff_coefficient_ph_hd_pth_inverse_pair_body_derivative_steps)))))))) -> ~(p = 0) -> (forall hmi_divisor_pth_correction. (exists hmi_left_factor_pth_correction. d = hmi_divisor_pth_correction * hmi_left_factor_pth_correction) -> (exists hmi_right_factor_pth_correction. p = hmi_divisor_pth_correction * hmi_right_factor_pth_correction) -> hmi_divisor_pth_correction = 1) -> exists u. (((exists hmi_gap_pth_root_inverse_bound. hmi_gap_pth_root_inverse_bound + S u = p) /\ (exists hmi_left_offset_pth_root_inverse_inverse hmi_right_offset_pth_root_inverse_inverse. d * u + p * hmi_left_offset_pth_root_inverse_inverse = 1 + p * hmi_right_offset_pth_root_inverse_inverse)))

Complete unchanged native tactic proof

All 15 lines are the exact independently kernel-checked original script.

Read the argument

Proof checkpoints

15 script commands · 2 reading checkpoints · 0 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro a
  4. L4
    intro l
  5. L5
    intro n
  6. L6
    intro d
  7. L7
    intro p
  8. L8
    intro hpair
  9. L9
    intro hp
  10. L10
    intro hcop
02Use earlier factsL11–15

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L11
    specialize coprime_bounded_mod_inverse d
  2. L12
    specialize coprime_bounded_mod_inverse p
  3. L13
    apply coprime_bounded_mod_inverse
  4. L14
    exact hp
  5. L15
    exact hcop

Library-wide reading audit

Original defined command ledger · 15 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro a
  4. 0004intro l
  5. 0005intro n
  6. 0006intro d
  7. 0007intro p
  8. 0008intro hpair
  9. 0009intro hp
  10. 0010intro hcop
  11. 0011specialize coprime_bounded_mod_inverse d
  12. 0012specialize coprime_bounded_mod_inverse p
  13. 0013apply coprime_bounded_mod_inverse
  14. 0014exact hp
  15. 0015exact hcop