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 q. ~(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 -> n = m * q -> (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 hpl_gap_bound. hpl_gap_bound + S (a) = (m)) -> exists r. ((((exists hpl_gap_lift. hpl_gap_lift + S (r) = (p * m)) /\ ((exists hgcrt_mod_left_hpl_lift hgcrt_mod_right_hpl_lift. r + m * hgcrt_mod_left_hpl_lift = a + m * hgcrt_mod_right_hpl_lift) /\ (exists hpl_value_lift. ((exists ff_u_ph_hpl_lift ff_v_ph_hpl_lift. ((((exists fs_h_ph_hpl_lift_body_start. fs_h_ph_hpl_lift_body_start + S (0) = S ((S (0)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_start. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_start * S ((S (0)) * ff_v_ph_hpl_lift) + (0))) /\ ((((exists fs_h_ph_hpl_lift_body_terminal. fs_h_ph_hpl_lift_body_terminal + S (hpl_value_lift) = S ((S (l)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_terminal. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_terminal * S ((S (l)) * ff_v_ph_hpl_lift) + (hpl_value_lift))) /\ forall ff_i_ph_hpl_lift_body_steps. (exists ph_bound_hpl_lift_body_steps. ph_bound_hpl_lift_body_steps + S ff_i_ph_hpl_lift_body_steps = l) -> exists ff_coefficient_ph_hpl_lift_body_steps ff_previous_ph_hpl_lift_body_steps ff_current_ph_hpl_lift_body_steps. ((((exists fs_h_ph_hpl_lift_body_steps_coefficient. fs_h_ph_hpl_lift_body_steps_coefficient + S (ff_coefficient_ph_hpl_lift_body_steps) = S ((S (ff_i_ph_hpl_lift_body_steps)) * c)) /\ exists fs_q_ph_hpl_lift_body_steps_coefficient. b = fs_q_ph_hpl_lift_body_steps_coefficient * S ((S (ff_i_ph_hpl_lift_body_steps)) * c) + (ff_coefficient_ph_hpl_lift_body_steps))) /\ ((((exists fs_h_ph_hpl_lift_body_steps_before. fs_h_ph_hpl_lift_body_steps_before + S (ff_previous_ph_hpl_lift_body_steps) = S ((S (ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_steps_before. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_steps_before * S ((S (ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift) + (ff_previous_ph_hpl_lift_body_steps))) /\ ((((exists fs_h_ph_hpl_lift_body_steps_after. fs_h_ph_hpl_lift_body_steps_after + S (ff_current_ph_hpl_lift_body_steps) = S ((S (S ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_steps_after. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_steps_after * S ((S (S ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift) + (ff_current_ph_hpl_lift_body_steps))) /\ ff_current_ph_hpl_lift_body_steps = ff_previous_ph_hpl_lift_body_steps * r + ff_coefficient_ph_hpl_lift_body_steps)))))) /\ (exists hgcrt_mod_left_hpl_lift hgcrt_mod_right_hpl_lift. hpl_value_lift + (p * m) * hgcrt_mod_left_hpl_lift = 0 + (p * m) * hgcrt_mod_right_hpl_lift)))))) /\ forall z. (((exists hpl_gap_lift. hpl_gap_lift + S (z) = (p * m)) /\ ((exists hgcrt_mod_left_hpl_lift hgcrt_mod_right_hpl_lift. z + m * hgcrt_mod_left_hpl_lift = a + m * hgcrt_mod_right_hpl_lift) /\ (exists hpl_value_lift. ((exists ff_u_ph_hpl_lift ff_v_ph_hpl_lift. ((((exists fs_h_ph_hpl_lift_body_start. fs_h_ph_hpl_lift_body_start + S (0) = S ((S (0)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_start. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_start * S ((S (0)) * ff_v_ph_hpl_lift) + (0))) /\ ((((exists fs_h_ph_hpl_lift_body_terminal. fs_h_ph_hpl_lift_body_terminal + S (hpl_value_lift) = S ((S (l)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_terminal. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_terminal * S ((S (l)) * ff_v_ph_hpl_lift) + (hpl_value_lift))) /\ forall ff_i_ph_hpl_lift_body_steps. (exists ph_bound_hpl_lift_body_steps. ph_bound_hpl_lift_body_steps + S ff_i_ph_hpl_lift_body_steps = l) -> exists ff_coefficient_ph_hpl_lift_body_steps ff_previous_ph_hpl_lift_body_steps ff_current_ph_hpl_lift_body_steps. ((((exists fs_h_ph_hpl_lift_body_steps_coefficient. fs_h_ph_hpl_lift_body_steps_coefficient + S (ff_coefficient_ph_hpl_lift_body_steps) = S ((S (ff_i_ph_hpl_lift_body_steps)) * c)) /\ exists fs_q_ph_hpl_lift_body_steps_coefficient. b = fs_q_ph_hpl_lift_body_steps_coefficient * S ((S (ff_i_ph_hpl_lift_body_steps)) * c) + (ff_coefficient_ph_hpl_lift_body_steps))) /\ ((((exists fs_h_ph_hpl_lift_body_steps_before. fs_h_ph_hpl_lift_body_steps_before + S (ff_previous_ph_hpl_lift_body_steps) = S ((S (ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_steps_before. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_steps_before * S ((S (ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift) + (ff_previous_ph_hpl_lift_body_steps))) /\ ((((exists fs_h_ph_hpl_lift_body_steps_after. fs_h_ph_hpl_lift_body_steps_after + S (ff_current_ph_hpl_lift_body_steps) = S ((S (S ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift)) /\ exists fs_q_ph_hpl_lift_body_steps_after. ff_u_ph_hpl_lift = fs_q_ph_hpl_lift_body_steps_after * S ((S (S ff_i_ph_hpl_lift_body_steps)) * ff_v_ph_hpl_lift) + (ff_current_ph_hpl_lift_body_steps))) /\ ff_current_ph_hpl_lift_body_steps = ff_previous_ph_hpl_lift_body_steps * z + ff_coefficient_ph_hpl_lift_body_steps)))))) /\ (exists hgcrt_mod_left_hpl_lift hgcrt_mod_right_hpl_lift. hpl_value_lift + (p * m) * hgcrt_mod_left_hpl_lift = 0 + (p * m) * hgcrt_mod_right_hpl_lift)))))) -> z = r)Constructive proof overview
Generated structural guide
A canonical old simple root has exactly one bounded next-modulus lift among all roots in its old residue class.
The unchanged tactic script uses 6 declared prerequisites and contains 117 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_horner_hensel_lift_exists Alpha theorem; checked-use authorized HL0004 hensel_lift_digit_bound multiple_implies_balanced_zero_congruence Alpha theorem; checked-use authorized HL0005 hensel_canonical_lift_digit_decompose HL0007 hensel_lift_correction_of_root hensel_correction_unique Alpha theorem; checked-use authorizedDirect 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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–17
03Establish hstepL18–27
Establish this local claim before using it. It is not an additional assumption.
- L18
- L19
specialize beta_horner_hensel_lift_exists b - L20
specialize beta_horner_hensel_lift_exists c - L21
specialize beta_horner_hensel_lift_exists a - L22
specialize beta_horner_hensel_lift_exists l - L23
specialize beta_horner_hensel_lift_exists n - L24
specialize beta_horner_hensel_lift_exists d - L25
specialize beta_horner_hensel_lift_exists m - L26
specialize beta_horner_hensel_lift_exists p - L27
specialize beta_horner_hensel_lift_exists s
04Use earlier factsL28–34
05Separate the logical casesL35–38
06Establish htL39–39
Establish this local claim before using it. It is not an additional assumption.
- L39
have ht : exists hpl_gap_bound. hpl_gap_bound + S (x) = (p)
07Separate the logical casesL40–40
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L40
cases hstep_witness_witness_left
08Use earlier factsL41–41
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L41
exact hstep_witness_witness_left_left
09Construct an explicit witnessL42–42
Supply the displayed value, then prove that it has the required property.
- L42
exists a + m * x
10Separate the logical casesL43–44
11Use earlier factsL45–51
12Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
split
13Construct an explicit witnessL53–54
14Calculate and transport equalitiesL55–55
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L55
simp
15Construct an explicit witnessL56–56
Supply the displayed value, then prove that it has the required property.
- L56
exists x1
16Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
split
17Use earlier factsL58–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
18Fix variables and assumptionsL63–64
19Separate the logical casesL65–66
20Establish hdigitL67–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel canonical lift digit decompose.
- L67
have hdigit : exists t. ((exists hpl_gap_bound. hpl_gap_bound + S (t) = (p)) /\ z = a + m * t) - L68
specialize hensel_canonical_lift_digit_decompose m - L69
specialize hensel_canonical_lift_digit_decompose p - L70
specialize hensel_canonical_lift_digit_decompose a - L71
specialize hensel_canonical_lift_digit_decompose z - L72
apply hensel_canonical_lift_digit_decompose - L73
exact hm - L74
exact ha - L75
exact hz_left - L76
exact hz_right_left
21Separate the logical casesL77–80
22Establish hcorrectionL81–90
Establish this local claim before using it. It is not an additional assumption.
- L81
have hcorrection : ((exists ff_lt_pth_hpl_correction_bound. ff_lt_pth_hpl_correction_bound + S x2 = p) /\ (exists hgcrt_mod_left_pth_hpl_correction_annihilation hgcrt_mod_right_pth_hpl_correction_annihilation. (q + d * x2) + p * hgcrt_mod_left_pth_hpl_correction_annihilation = 0 + p * hgcrt_mod_right_pth_hpl_correction_annihilation)) - L82
specialize hensel_lift_correction_of_root b - L83
specialize hensel_lift_correction_of_root c - L84
specialize hensel_lift_correction_of_root a - L85
specialize hensel_lift_correction_of_root l - L86
specialize hensel_lift_correction_of_root n - L87
specialize hensel_lift_correction_of_root d - L88
specialize hensel_lift_correction_of_root m - L89
specialize hensel_lift_correction_of_root p - L90
specialize hensel_lift_correction_of_root s
23Use earlier factsL91–96
24Calculate and transport equalitiesL97–97
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L97
rewrite <- hdigit_witness_right
25Use earlier factsL98–102
26Establish heqL103–112
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel correction unique.
- L103
have heq : x2 = x - L104
specialize hensel_correction_unique d - L105
specialize hensel_correction_unique p - L106
specialize hensel_correction_unique q - L107
specialize hensel_correction_unique x2 - L108
specialize hensel_correction_unique x - L109
apply hensel_correction_unique - L110
exact hp - L111
exact hcop - L112
exact hcorrection
27Use earlier factsL113–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L113
exact hstep_witness_witness_left
28Calculate and transport equalitiesL114–114
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L114
trans a + m * x2
29Use earlier factsL115–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L115
exact hdigit_witness_right
Original exact command ledger · 117 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 q - 0011
intro hp - 0012
intro hm - 0013
intro hpair - 0014
intro hfactor - 0015
intro hn - 0016
intro hcop - 0017
intro ha - 0018
have hstep : exists t y. ((((exists ff_lt_pth_hpl_correction_bound. ff_lt_pth_hpl_correction_bound + S t = p) /\ (exists hgcrt_mod_left_pth_hpl_correction_annihilation hgcrt_mod_right_pth_hpl_correction_annihilation. (q + d * t) + p * hgcrt_mod_left_pth_hpl_correction_annihilation = 0 + p * hgcrt_mod_right_pth_hpl_correction_annihilation))) /\ ((exists ff_u_ph_hpl_eval ff_v_ph_hpl_eval. ((((exists fs_h_ph_hpl_eval_body_start. fs_h_ph_hpl_eval_body_start + S (0) = S ((S (0)) * ff_v_ph_hpl_eval)) /\ exists fs_q_ph_hpl_eval_body_start. ff_u_ph_hpl_eval = fs_q_ph_hpl_eval_body_start * S ((S (0)) * ff_v_ph_hpl_eval) + (0))) /\ ((((exists fs_h_ph_hpl_eval_body_terminal. fs_h_ph_hpl_eval_body_terminal + S (y) = S ((S (l)) * ff_v_ph_hpl_eval)) /\ exists fs_q_ph_hpl_eval_body_terminal. ff_u_ph_hpl_eval = fs_q_ph_hpl_eval_body_terminal * S ((S (l)) * ff_v_ph_hpl_eval) + (y))) /\ forall ff_i_ph_hpl_eval_body_steps. (exists ph_bound_hpl_eval_body_steps. ph_bound_hpl_eval_body_steps + S ff_i_ph_hpl_eval_body_steps = l) -> exists ff_coefficient_ph_hpl_eval_body_steps ff_previous_ph_hpl_eval_body_steps ff_current_ph_hpl_eval_body_steps. ((((exists fs_h_ph_hpl_eval_body_steps_coefficient. fs_h_ph_hpl_eval_body_steps_coefficient + S (ff_coefficient_ph_hpl_eval_body_steps) = S ((S (ff_i_ph_hpl_eval_body_steps)) * c)) /\ exists fs_q_ph_hpl_eval_body_steps_coefficient. b = fs_q_ph_hpl_eval_body_steps_coefficient * S ((S (ff_i_ph_hpl_eval_body_steps)) * c) + (ff_coefficient_ph_hpl_eval_body_steps))) /\ ((((exists fs_h_ph_hpl_eval_body_steps_before. fs_h_ph_hpl_eval_body_steps_before + S (ff_previous_ph_hpl_eval_body_steps) = S ((S (ff_i_ph_hpl_eval_body_steps)) * ff_v_ph_hpl_eval)) /\ exists fs_q_ph_hpl_eval_body_steps_before. ff_u_ph_hpl_eval = fs_q_ph_hpl_eval_body_steps_before * S ((S (ff_i_ph_hpl_eval_body_steps)) * ff_v_ph_hpl_eval) + (ff_previous_ph_hpl_eval_body_steps))) /\ ((((exists fs_h_ph_hpl_eval_body_steps_after. fs_h_ph_hpl_eval_body_steps_after + S (ff_current_ph_hpl_eval_body_steps) = S ((S (S ff_i_ph_hpl_eval_body_steps)) * ff_v_ph_hpl_eval)) /\ exists fs_q_ph_hpl_eval_body_steps_after. ff_u_ph_hpl_eval = fs_q_ph_hpl_eval_body_steps_after * S ((S (S ff_i_ph_hpl_eval_body_steps)) * ff_v_ph_hpl_eval) + (ff_current_ph_hpl_eval_body_steps))) /\ ff_current_ph_hpl_eval_body_steps = ff_previous_ph_hpl_eval_body_steps * (a + m * t) + ff_coefficient_ph_hpl_eval_body_steps)))))) /\ exists w. y = (p * m) * w)) - 0019
specialize beta_horner_hensel_lift_exists b - 0020
specialize beta_horner_hensel_lift_exists c - 0021
specialize beta_horner_hensel_lift_exists a - 0022
specialize beta_horner_hensel_lift_exists l - 0023
specialize beta_horner_hensel_lift_exists n - 0024
specialize beta_horner_hensel_lift_exists d - 0025
specialize beta_horner_hensel_lift_exists m - 0026
specialize beta_horner_hensel_lift_exists p - 0027
specialize beta_horner_hensel_lift_exists s - 0028
specialize beta_horner_hensel_lift_exists q - 0029
apply beta_horner_hensel_lift_exists - 0030
exact hp - 0031
exact hpair - 0032
exact hfactor - 0033
exact hn - 0034
exact hcop - 0035
cases hstep - 0036
cases hstep_witness - 0037
cases hstep_witness_witness - 0038
cases hstep_witness_witness_right - 0039
have ht : exists hpl_gap_bound. hpl_gap_bound + S (x) = (p) - 0040
cases hstep_witness_witness_left - 0041
exact hstep_witness_witness_left_left - 0042
exists a + m * x - 0043
split - 0044
split - 0045
specialize hensel_lift_digit_bound m - 0046
specialize hensel_lift_digit_bound p - 0047
specialize hensel_lift_digit_bound a - 0048
specialize hensel_lift_digit_bound x - 0049
apply hensel_lift_digit_bound - 0050
exact ha - 0051
exact ht - 0052
split - 0053
exists 0 - 0054
exists x - 0055
simp - 0056
exists x1 - 0057
split - 0058
exact hstep_witness_witness_right_left - 0059
specialize multiple_implies_balanced_zero_congruence (p * m) - 0060
specialize multiple_implies_balanced_zero_congruence x1 - 0061
apply multiple_implies_balanced_zero_congruence - 0062
exact hstep_witness_witness_right_right - 0063
intro z - 0064
intro hz - 0065
cases hz - 0066
cases hz_right - 0067
have hdigit : exists t. ((exists hpl_gap_bound. hpl_gap_bound + S (t) = (p)) /\ z = a + m * t) - 0068
specialize hensel_canonical_lift_digit_decompose m - 0069
specialize hensel_canonical_lift_digit_decompose p - 0070
specialize hensel_canonical_lift_digit_decompose a - 0071
specialize hensel_canonical_lift_digit_decompose z - 0072
apply hensel_canonical_lift_digit_decompose - 0073
exact hm - 0074
exact ha - 0075
exact hz_left - 0076
exact hz_right_left - 0077
cases hdigit - 0078
cases hdigit_witness - 0079
cases hz_right_right - 0080
cases hz_right_right_witness - 0081
have hcorrection : ((exists ff_lt_pth_hpl_correction_bound. ff_lt_pth_hpl_correction_bound + S x2 = p) /\ (exists hgcrt_mod_left_pth_hpl_correction_annihilation hgcrt_mod_right_pth_hpl_correction_annihilation. (q + d * x2) + p * hgcrt_mod_left_pth_hpl_correction_annihilation = 0 + p * hgcrt_mod_right_pth_hpl_correction_annihilation)) - 0082
specialize hensel_lift_correction_of_root b - 0083
specialize hensel_lift_correction_of_root c - 0084
specialize hensel_lift_correction_of_root a - 0085
specialize hensel_lift_correction_of_root l - 0086
specialize hensel_lift_correction_of_root n - 0087
specialize hensel_lift_correction_of_root d - 0088
specialize hensel_lift_correction_of_root m - 0089
specialize hensel_lift_correction_of_root p - 0090
specialize hensel_lift_correction_of_root s - 0091
specialize hensel_lift_correction_of_root q - 0092
specialize hensel_lift_correction_of_root x2 - 0093
specialize hensel_lift_correction_of_root x3 - 0094
apply hensel_lift_correction_of_root - 0095
exact hm - 0096
exact hpair - 0097
rewrite <- hdigit_witness_right - 0098
exact hz_right_right_witness_left - 0099
exact hfactor - 0100
exact hn - 0101
exact hdigit_witness_left - 0102
exact hz_right_right_witness_right - 0103
have heq : x2 = x - 0104
specialize hensel_correction_unique d - 0105
specialize hensel_correction_unique p - 0106
specialize hensel_correction_unique q - 0107
specialize hensel_correction_unique x2 - 0108
specialize hensel_correction_unique x - 0109
apply hensel_correction_unique - 0110
exact hp - 0111
exact hcop - 0112
exact hcorrection - 0113
exact hstep_witness_witness_left - 0114
trans a + m * x2 - 0115
exact hdigit_witness_right - 0116
rewrite heq - 0117
refl