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.
Exact expanded first-order arithmetic statement
forall b c a l n d m p s. ~(p = 0) -> ~(m = 0) -> (exists ff_u_hd_hpl_pair ff_v_hd_hpl_pair ff_d_hd_hpl_pair ff_e_hd_hpl_pair. ((((((exists fs_h_ph_hd_hpl_pair_body_value_start. fs_h_ph_hd_hpl_pair_body_value_start + S (0) = S ((S (0)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_start. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_start * S ((S (0)) * ff_v_hd_hpl_pair) + (0))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_terminal. fs_h_ph_hd_hpl_pair_body_value_terminal + S (n) = S ((S (l)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_terminal. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_terminal * S ((S (l)) * ff_v_hd_hpl_pair) + (n))) /\ forall ff_i_ph_hd_hpl_pair_body_value_steps. (exists ph_bound_hd_hpl_pair_body_value_steps. ph_bound_hd_hpl_pair_body_value_steps + S ff_i_ph_hd_hpl_pair_body_value_steps = l) -> exists ff_coefficient_ph_hd_hpl_pair_body_value_steps ff_previous_ph_hd_hpl_pair_body_value_steps ff_current_ph_hd_hpl_pair_body_value_steps. ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_coefficient. fs_h_ph_hd_hpl_pair_body_value_steps_coefficient + S (ff_coefficient_ph_hd_hpl_pair_body_value_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * c)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_coefficient. b = fs_q_ph_hd_hpl_pair_body_value_steps_coefficient * S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * c) + (ff_coefficient_ph_hd_hpl_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_before. fs_h_ph_hd_hpl_pair_body_value_steps_before + S (ff_previous_ph_hd_hpl_pair_body_value_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_before. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_steps_before * S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair) + (ff_previous_ph_hd_hpl_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_after. fs_h_ph_hd_hpl_pair_body_value_steps_after + S (ff_current_ph_hd_hpl_pair_body_value_steps) = S ((S (S ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_after. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_steps_after * S ((S (S ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair) + (ff_current_ph_hd_hpl_pair_body_value_steps))) /\ ff_current_ph_hd_hpl_pair_body_value_steps = ff_previous_ph_hd_hpl_pair_body_value_steps * a + ff_coefficient_ph_hd_hpl_pair_body_value_steps)))))) /\ (((((exists fs_h_ph_hd_hpl_pair_body_derivative_start. fs_h_ph_hd_hpl_pair_body_derivative_start + S (0) = S ((S (0)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_start. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_start * S ((S (0)) * ff_e_hd_hpl_pair) + (0))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_terminal. fs_h_ph_hd_hpl_pair_body_derivative_terminal + S (d) = S ((S (l)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_terminal. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_terminal * S ((S (l)) * ff_e_hd_hpl_pair) + (d))) /\ forall ff_i_ph_hd_hpl_pair_body_derivative_steps. (exists ph_bound_hd_hpl_pair_body_derivative_steps. ph_bound_hd_hpl_pair_body_derivative_steps + S ff_i_ph_hd_hpl_pair_body_derivative_steps = l) -> exists ff_coefficient_ph_hd_hpl_pair_body_derivative_steps ff_previous_ph_hd_hpl_pair_body_derivative_steps ff_current_ph_hd_hpl_pair_body_derivative_steps. ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_coefficient. fs_h_ph_hd_hpl_pair_body_derivative_steps_coefficient + S (ff_coefficient_ph_hd_hpl_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_coefficient. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_coefficient * S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_v_hd_hpl_pair) + (ff_coefficient_ph_hd_hpl_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_before. fs_h_ph_hd_hpl_pair_body_derivative_steps_before + S (ff_previous_ph_hd_hpl_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_before. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_before * S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair) + (ff_previous_ph_hd_hpl_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_after. fs_h_ph_hd_hpl_pair_body_derivative_steps_after + S (ff_current_ph_hd_hpl_pair_body_derivative_steps) = S ((S (S ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_after. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_after * S ((S (S ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair) + (ff_current_ph_hd_hpl_pair_body_derivative_steps))) /\ ff_current_ph_hd_hpl_pair_body_derivative_steps = ff_previous_ph_hd_hpl_pair_body_derivative_steps * a + ff_coefficient_ph_hd_hpl_pair_body_derivative_steps)))))))) -> m = p * s -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. n + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod) -> (forall hmi_divisor_hpl_coprime. (exists hmi_left_factor_hpl_coprime. d = hmi_divisor_hpl_coprime * hmi_left_factor_hpl_coprime) -> (exists hmi_right_factor_hpl_coprime. p = hmi_divisor_hpl_coprime * hmi_right_factor_hpl_coprime) -> hmi_divisor_hpl_coprime = 1) -> exists r. ((exists hpl_gap_bound. hpl_gap_bound + S (r) = (m)) /\ ((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. r + m * hgcrt_mod_left_hpl_mod = a + m * hgcrt_mod_right_hpl_mod) /\ (exists hpl_value_simple hpl_derivative_simple. ((exists ff_u_hd_hpl_simple ff_v_hd_hpl_simple ff_d_hd_hpl_simple ff_e_hd_hpl_simple. ((((((exists fs_h_ph_hd_hpl_simple_body_value_start. fs_h_ph_hd_hpl_simple_body_value_start + S (0) = S ((S (0)) * ff_v_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_value_start. ff_u_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_value_start * S ((S (0)) * ff_v_hd_hpl_simple) + (0))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_value_terminal. fs_h_ph_hd_hpl_simple_body_value_terminal + S (hpl_value_simple) = S ((S (l)) * ff_v_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_value_terminal. ff_u_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_value_terminal * S ((S (l)) * ff_v_hd_hpl_simple) + (hpl_value_simple))) /\ forall ff_i_ph_hd_hpl_simple_body_value_steps. (exists ph_bound_hd_hpl_simple_body_value_steps. ph_bound_hd_hpl_simple_body_value_steps + S ff_i_ph_hd_hpl_simple_body_value_steps = l) -> exists ff_coefficient_ph_hd_hpl_simple_body_value_steps ff_previous_ph_hd_hpl_simple_body_value_steps ff_current_ph_hd_hpl_simple_body_value_steps. ((((exists fs_h_ph_hd_hpl_simple_body_value_steps_coefficient. fs_h_ph_hd_hpl_simple_body_value_steps_coefficient + S (ff_coefficient_ph_hd_hpl_simple_body_value_steps) = S ((S (ff_i_ph_hd_hpl_simple_body_value_steps)) * c)) /\ exists fs_q_ph_hd_hpl_simple_body_value_steps_coefficient. b = fs_q_ph_hd_hpl_simple_body_value_steps_coefficient * S ((S (ff_i_ph_hd_hpl_simple_body_value_steps)) * c) + (ff_coefficient_ph_hd_hpl_simple_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_value_steps_before. fs_h_ph_hd_hpl_simple_body_value_steps_before + S (ff_previous_ph_hd_hpl_simple_body_value_steps) = S ((S (ff_i_ph_hd_hpl_simple_body_value_steps)) * ff_v_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_value_steps_before. ff_u_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_value_steps_before * S ((S (ff_i_ph_hd_hpl_simple_body_value_steps)) * ff_v_hd_hpl_simple) + (ff_previous_ph_hd_hpl_simple_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_value_steps_after. fs_h_ph_hd_hpl_simple_body_value_steps_after + S (ff_current_ph_hd_hpl_simple_body_value_steps) = S ((S (S ff_i_ph_hd_hpl_simple_body_value_steps)) * ff_v_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_value_steps_after. ff_u_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_value_steps_after * S ((S (S ff_i_ph_hd_hpl_simple_body_value_steps)) * ff_v_hd_hpl_simple) + (ff_current_ph_hd_hpl_simple_body_value_steps))) /\ ff_current_ph_hd_hpl_simple_body_value_steps = ff_previous_ph_hd_hpl_simple_body_value_steps * r + ff_coefficient_ph_hd_hpl_simple_body_value_steps)))))) /\ (((((exists fs_h_ph_hd_hpl_simple_body_derivative_start. fs_h_ph_hd_hpl_simple_body_derivative_start + S (0) = S ((S (0)) * ff_e_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_derivative_start. ff_d_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_derivative_start * S ((S (0)) * ff_e_hd_hpl_simple) + (0))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_derivative_terminal. fs_h_ph_hd_hpl_simple_body_derivative_terminal + S (hpl_derivative_simple) = S ((S (l)) * ff_e_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_derivative_terminal. ff_d_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_derivative_terminal * S ((S (l)) * ff_e_hd_hpl_simple) + (hpl_derivative_simple))) /\ forall ff_i_ph_hd_hpl_simple_body_derivative_steps. (exists ph_bound_hd_hpl_simple_body_derivative_steps. ph_bound_hd_hpl_simple_body_derivative_steps + S ff_i_ph_hd_hpl_simple_body_derivative_steps = l) -> exists ff_coefficient_ph_hd_hpl_simple_body_derivative_steps ff_previous_ph_hd_hpl_simple_body_derivative_steps ff_current_ph_hd_hpl_simple_body_derivative_steps. ((((exists fs_h_ph_hd_hpl_simple_body_derivative_steps_coefficient. fs_h_ph_hd_hpl_simple_body_derivative_steps_coefficient + S (ff_coefficient_ph_hd_hpl_simple_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_v_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_derivative_steps_coefficient. ff_u_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_derivative_steps_coefficient * S ((S (ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_v_hd_hpl_simple) + (ff_coefficient_ph_hd_hpl_simple_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_derivative_steps_before. fs_h_ph_hd_hpl_simple_body_derivative_steps_before + S (ff_previous_ph_hd_hpl_simple_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_e_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_derivative_steps_before. ff_d_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_derivative_steps_before * S ((S (ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_e_hd_hpl_simple) + (ff_previous_ph_hd_hpl_simple_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_simple_body_derivative_steps_after. fs_h_ph_hd_hpl_simple_body_derivative_steps_after + S (ff_current_ph_hd_hpl_simple_body_derivative_steps) = S ((S (S ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_e_hd_hpl_simple)) /\ exists fs_q_ph_hd_hpl_simple_body_derivative_steps_after. ff_d_hd_hpl_simple = fs_q_ph_hd_hpl_simple_body_derivative_steps_after * S ((S (S ff_i_ph_hd_hpl_simple_body_derivative_steps)) * ff_e_hd_hpl_simple) + (ff_current_ph_hd_hpl_simple_body_derivative_steps))) /\ ff_current_ph_hd_hpl_simple_body_derivative_steps = ff_previous_ph_hd_hpl_simple_body_derivative_steps * r + ff_coefficient_ph_hd_hpl_simple_body_derivative_steps)))))))) /\ ((exists hgcrt_mod_left_hpl_simple hgcrt_mod_right_hpl_simple. hpl_value_simple + m * hgcrt_mod_left_hpl_simple = 0 + m * hgcrt_mod_right_hpl_simple) /\ (forall hmi_divisor_hpl_simple. (exists hmi_left_factor_hpl_simple. hpl_derivative_simple = hmi_divisor_hpl_simple * hmi_left_factor_hpl_simple) -> (exists hmi_right_factor_hpl_simple. p = hmi_divisor_hpl_simple * hmi_right_factor_hpl_simple) -> hmi_divisor_hpl_simple = 1))))))Constructive proof overview
Generated structural guide
An unrestricted natural input can be normalized without losing its exact polynomial root or simple derivative.
The unchanged tactic script uses 7 declared prerequisites and contains 85 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
HL0003 hensel_canonical_residue_exists beta_horner_derivative_value_exists Alpha theorem; checked-use authorized beta_horner_derivative_mod_congruence Alpha theorem; checked-use authorized mod_eq_trans Stable theorem; checked-use authorized mod_eq_symm Stable theorem; checked-use authorized mod_eq_of_mod_eq_multiple Stable theorem; checked-use authorized HL0002 hensel_coprime_mod_transportDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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
02Fix variables and assumptionsL11–15
03Establish hresidueL16–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel canonical residue exists.
- L16
have hresidue : exists r. ((exists hpl_gap_bound. hpl_gap_bound + S (r) = (m)) /\ (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. a + m * hgcrt_mod_left_hpl_mod = r + m * hgcrt_mod_right_hpl_mod)) - L17
specialize hensel_canonical_residue_exists m - L18
specialize hensel_canonical_residue_exists a - L19
apply hensel_canonical_residue_exists - L20
exact hm
04Separate the logical casesL21–22
05Establish hnewpairL23–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner derivative value exists.
- L23
have hnewpair : ∃ v. ∃ e. HornerDerivative(b,c,x,l,v,e)Definitions: HornerDerivative - L24
specialize beta_horner_derivative_value_exists b - L25
specialize beta_horner_derivative_value_exists c - L26
specialize beta_horner_derivative_value_exists x - L27
specialize beta_horner_derivative_value_exists l - L28
apply beta_horner_derivative_value_exists
06Separate the logical casesL29–30
07Establish hbothL31–40
Establish this local claim before using it. It is not an additional assumption.
- L31
have hboth : (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. n + m * hgcrt_mod_left_hpl_mod = x1 + m * hgcrt_mod_right_hpl_mod) /\ (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. d + m * hgcrt_mod_left_hpl_mod = x2 + m * hgcrt_mod_right_hpl_mod) - L32
specialize beta_horner_derivative_mod_congruence b - L33
specialize beta_horner_derivative_mod_congruence c - L34
specialize beta_horner_derivative_mod_congruence m - L35
specialize beta_horner_derivative_mod_congruence a - L36
specialize beta_horner_derivative_mod_congruence x - L37
specialize beta_horner_derivative_mod_congruence l - L38
specialize beta_horner_derivative_mod_congruence n - L39
specialize beta_horner_derivative_mod_congruence d - L40
specialize beta_horner_derivative_mod_congruence x1
08Use earlier factsL41–45
09Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hboth
10Construct an explicit witnessL47–47
Supply the displayed value, then prove that it has the required property.
- L47
exists x
11Separate the logical casesL48–48
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L48
split
12Use earlier factsL49–49
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
exact hresidue_witness_left
13Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
split
14Use earlier factsL51–55
15Construct an explicit witnessL56–57
16Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
split
17Use earlier factsL59–59
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
exact hnewpair_witness_witness
18Separate the logical casesL60–60
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L60
split
19Use earlier factsL61–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
20Use earlier factsL71–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
exact hroot - L72
specialize hensel_coprime_mod_transport p - L73
specialize hensel_coprime_mod_transport d - L74
specialize hensel_coprime_mod_transport x2 - L75
apply hensel_coprime_mod_transport - L76
exact hp - L77
exact hcop - L78
specialize mod_eq_of_mod_eq_multiple p - L79
specialize mod_eq_of_mod_eq_multiple m - L80
specialize mod_eq_of_mod_eq_multiple d
21Use earlier factsL81–82
22Construct an explicit witnessL83–83
Supply the displayed value, then prove that it has the required property.
- L83
exists s
Original exact command ledger · 85 lines
- 0001
intro b - 0002
intro c - 0003
intro a - 0004
intro l - 0005
intro n - 0006
intro d - 0007
intro m - 0008
intro p - 0009
intro s - 0010
intro hp - 0011
intro hm - 0012
intro hpair - 0013
intro hfactor - 0014
intro hroot - 0015
intro hcop - 0016
have hresidue : exists r. ((exists hpl_gap_bound. hpl_gap_bound + S (r) = (m)) /\ (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. a + m * hgcrt_mod_left_hpl_mod = r + m * hgcrt_mod_right_hpl_mod)) - 0017
specialize hensel_canonical_residue_exists m - 0018
specialize hensel_canonical_residue_exists a - 0019
apply hensel_canonical_residue_exists - 0020
exact hm - 0021
cases hresidue - 0022
cases hresidue_witness - 0023
have hnewpair : exists v e. (exists ff_u_hd_hpl_pair ff_v_hd_hpl_pair ff_d_hd_hpl_pair ff_e_hd_hpl_pair. ((((((exists fs_h_ph_hd_hpl_pair_body_value_start. fs_h_ph_hd_hpl_pair_body_value_start + S (0) = S ((S (0)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_start. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_start * S ((S (0)) * ff_v_hd_hpl_pair) + (0))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_terminal. fs_h_ph_hd_hpl_pair_body_value_terminal + S (v) = S ((S (l)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_terminal. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_terminal * S ((S (l)) * ff_v_hd_hpl_pair) + (v))) /\ forall ff_i_ph_hd_hpl_pair_body_value_steps. (exists ph_bound_hd_hpl_pair_body_value_steps. ph_bound_hd_hpl_pair_body_value_steps + S ff_i_ph_hd_hpl_pair_body_value_steps = l) -> exists ff_coefficient_ph_hd_hpl_pair_body_value_steps ff_previous_ph_hd_hpl_pair_body_value_steps ff_current_ph_hd_hpl_pair_body_value_steps. ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_coefficient. fs_h_ph_hd_hpl_pair_body_value_steps_coefficient + S (ff_coefficient_ph_hd_hpl_pair_body_value_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * c)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_coefficient. b = fs_q_ph_hd_hpl_pair_body_value_steps_coefficient * S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * c) + (ff_coefficient_ph_hd_hpl_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_before. fs_h_ph_hd_hpl_pair_body_value_steps_before + S (ff_previous_ph_hd_hpl_pair_body_value_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_before. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_steps_before * S ((S (ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair) + (ff_previous_ph_hd_hpl_pair_body_value_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_value_steps_after. fs_h_ph_hd_hpl_pair_body_value_steps_after + S (ff_current_ph_hd_hpl_pair_body_value_steps) = S ((S (S ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_value_steps_after. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_value_steps_after * S ((S (S ff_i_ph_hd_hpl_pair_body_value_steps)) * ff_v_hd_hpl_pair) + (ff_current_ph_hd_hpl_pair_body_value_steps))) /\ ff_current_ph_hd_hpl_pair_body_value_steps = ff_previous_ph_hd_hpl_pair_body_value_steps * x + ff_coefficient_ph_hd_hpl_pair_body_value_steps)))))) /\ (((((exists fs_h_ph_hd_hpl_pair_body_derivative_start. fs_h_ph_hd_hpl_pair_body_derivative_start + S (0) = S ((S (0)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_start. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_start * S ((S (0)) * ff_e_hd_hpl_pair) + (0))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_terminal. fs_h_ph_hd_hpl_pair_body_derivative_terminal + S (e) = S ((S (l)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_terminal. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_terminal * S ((S (l)) * ff_e_hd_hpl_pair) + (e))) /\ forall ff_i_ph_hd_hpl_pair_body_derivative_steps. (exists ph_bound_hd_hpl_pair_body_derivative_steps. ph_bound_hd_hpl_pair_body_derivative_steps + S ff_i_ph_hd_hpl_pair_body_derivative_steps = l) -> exists ff_coefficient_ph_hd_hpl_pair_body_derivative_steps ff_previous_ph_hd_hpl_pair_body_derivative_steps ff_current_ph_hd_hpl_pair_body_derivative_steps. ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_coefficient. fs_h_ph_hd_hpl_pair_body_derivative_steps_coefficient + S (ff_coefficient_ph_hd_hpl_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_v_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_coefficient. ff_u_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_coefficient * S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_v_hd_hpl_pair) + (ff_coefficient_ph_hd_hpl_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_before. fs_h_ph_hd_hpl_pair_body_derivative_steps_before + S (ff_previous_ph_hd_hpl_pair_body_derivative_steps) = S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_before. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_before * S ((S (ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair) + (ff_previous_ph_hd_hpl_pair_body_derivative_steps))) /\ ((((exists fs_h_ph_hd_hpl_pair_body_derivative_steps_after. fs_h_ph_hd_hpl_pair_body_derivative_steps_after + S (ff_current_ph_hd_hpl_pair_body_derivative_steps) = S ((S (S ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair)) /\ exists fs_q_ph_hd_hpl_pair_body_derivative_steps_after. ff_d_hd_hpl_pair = fs_q_ph_hd_hpl_pair_body_derivative_steps_after * S ((S (S ff_i_ph_hd_hpl_pair_body_derivative_steps)) * ff_e_hd_hpl_pair) + (ff_current_ph_hd_hpl_pair_body_derivative_steps))) /\ ff_current_ph_hd_hpl_pair_body_derivative_steps = ff_previous_ph_hd_hpl_pair_body_derivative_steps * x + ff_coefficient_ph_hd_hpl_pair_body_derivative_steps)))))))) - 0024
specialize beta_horner_derivative_value_exists b - 0025
specialize beta_horner_derivative_value_exists c - 0026
specialize beta_horner_derivative_value_exists x - 0027
specialize beta_horner_derivative_value_exists l - 0028
apply beta_horner_derivative_value_exists - 0029
cases hnewpair - 0030
cases hnewpair_witness - 0031
have hboth : (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. n + m * hgcrt_mod_left_hpl_mod = x1 + m * hgcrt_mod_right_hpl_mod) /\ (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. d + m * hgcrt_mod_left_hpl_mod = x2 + m * hgcrt_mod_right_hpl_mod) - 0032
specialize beta_horner_derivative_mod_congruence b - 0033
specialize beta_horner_derivative_mod_congruence c - 0034
specialize beta_horner_derivative_mod_congruence m - 0035
specialize beta_horner_derivative_mod_congruence a - 0036
specialize beta_horner_derivative_mod_congruence x - 0037
specialize beta_horner_derivative_mod_congruence l - 0038
specialize beta_horner_derivative_mod_congruence n - 0039
specialize beta_horner_derivative_mod_congruence d - 0040
specialize beta_horner_derivative_mod_congruence x1 - 0041
specialize beta_horner_derivative_mod_congruence x2 - 0042
apply beta_horner_derivative_mod_congruence - 0043
exact hresidue_witness_right - 0044
exact hpair - 0045
exact hnewpair_witness_witness - 0046
cases hboth - 0047
exists x - 0048
split - 0049
exact hresidue_witness_left - 0050
split - 0051
specialize mod_eq_symm m - 0052
specialize mod_eq_symm a - 0053
specialize mod_eq_symm x - 0054
apply mod_eq_symm - 0055
exact hresidue_witness_right - 0056
exists x1 - 0057
exists x2 - 0058
split - 0059
exact hnewpair_witness_witness - 0060
split - 0061
specialize mod_eq_trans m - 0062
specialize mod_eq_trans x1 - 0063
specialize mod_eq_trans n - 0064
specialize mod_eq_trans 0 - 0065
apply mod_eq_trans - 0066
specialize mod_eq_symm m - 0067
specialize mod_eq_symm n - 0068
specialize mod_eq_symm x1 - 0069
apply mod_eq_symm - 0070
exact hboth_left - 0071
exact hroot - 0072
specialize hensel_coprime_mod_transport p - 0073
specialize hensel_coprime_mod_transport d - 0074
specialize hensel_coprime_mod_transport x2 - 0075
apply hensel_coprime_mod_transport - 0076
exact hp - 0077
exact hcop - 0078
specialize mod_eq_of_mod_eq_multiple p - 0079
specialize mod_eq_of_mod_eq_multiple m - 0080
specialize mod_eq_of_mod_eq_multiple d - 0081
specialize mod_eq_of_mod_eq_multiple x2 - 0082
apply mod_eq_of_mod_eq_multiple - 0083
exists s - 0084
exact hfactor - 0085
exact hboth_right