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 m t s l n z. (exists hgcrt_mod_left_pth_eval_base hgcrt_mod_right_pth_eval_base. t + m * hgcrt_mod_left_pth_eval_base = s + m * hgcrt_mod_right_pth_eval_base) -> (exists ff_u_ph_pth_eval_left ff_v_ph_pth_eval_left. ((((exists fs_h_ph_pth_eval_left_body_start. fs_h_ph_pth_eval_left_body_start + S (0) = S ((S (0)) * ff_v_ph_pth_eval_left)) /\ exists fs_q_ph_pth_eval_left_body_start. ff_u_ph_pth_eval_left = fs_q_ph_pth_eval_left_body_start * S ((S (0)) * ff_v_ph_pth_eval_left) + (0))) /\ ((((exists fs_h_ph_pth_eval_left_body_terminal. fs_h_ph_pth_eval_left_body_terminal + S (n) = S ((S (l)) * ff_v_ph_pth_eval_left)) /\ exists fs_q_ph_pth_eval_left_body_terminal. ff_u_ph_pth_eval_left = fs_q_ph_pth_eval_left_body_terminal * S ((S (l)) * ff_v_ph_pth_eval_left) + (n))) /\ forall ff_i_ph_pth_eval_left_body_steps. (exists ph_bound_pth_eval_left_body_steps. ph_bound_pth_eval_left_body_steps + S ff_i_ph_pth_eval_left_body_steps = l) -> exists ff_coefficient_ph_pth_eval_left_body_steps ff_previous_ph_pth_eval_left_body_steps ff_current_ph_pth_eval_left_body_steps. ((((exists fs_h_ph_pth_eval_left_body_steps_coefficient. fs_h_ph_pth_eval_left_body_steps_coefficient + S (ff_coefficient_ph_pth_eval_left_body_steps) = S ((S (ff_i_ph_pth_eval_left_body_steps)) * c)) /\ exists fs_q_ph_pth_eval_left_body_steps_coefficient. b = fs_q_ph_pth_eval_left_body_steps_coefficient * S ((S (ff_i_ph_pth_eval_left_body_steps)) * c) + (ff_coefficient_ph_pth_eval_left_body_steps))) /\ ((((exists fs_h_ph_pth_eval_left_body_steps_before. fs_h_ph_pth_eval_left_body_steps_before + S (ff_previous_ph_pth_eval_left_body_steps) = S ((S (ff_i_ph_pth_eval_left_body_steps)) * ff_v_ph_pth_eval_left)) /\ exists fs_q_ph_pth_eval_left_body_steps_before. ff_u_ph_pth_eval_left = fs_q_ph_pth_eval_left_body_steps_before * S ((S (ff_i_ph_pth_eval_left_body_steps)) * ff_v_ph_pth_eval_left) + (ff_previous_ph_pth_eval_left_body_steps))) /\ ((((exists fs_h_ph_pth_eval_left_body_steps_after. fs_h_ph_pth_eval_left_body_steps_after + S (ff_current_ph_pth_eval_left_body_steps) = S ((S (S ff_i_ph_pth_eval_left_body_steps)) * ff_v_ph_pth_eval_left)) /\ exists fs_q_ph_pth_eval_left_body_steps_after. ff_u_ph_pth_eval_left = fs_q_ph_pth_eval_left_body_steps_after * S ((S (S ff_i_ph_pth_eval_left_body_steps)) * ff_v_ph_pth_eval_left) + (ff_current_ph_pth_eval_left_body_steps))) /\ ff_current_ph_pth_eval_left_body_steps = ff_previous_ph_pth_eval_left_body_steps * t + ff_coefficient_ph_pth_eval_left_body_steps)))))) -> (exists ff_u_ph_pth_eval_right ff_v_ph_pth_eval_right. ((((exists fs_h_ph_pth_eval_right_body_start. fs_h_ph_pth_eval_right_body_start + S (0) = S ((S (0)) * ff_v_ph_pth_eval_right)) /\ exists fs_q_ph_pth_eval_right_body_start. ff_u_ph_pth_eval_right = fs_q_ph_pth_eval_right_body_start * S ((S (0)) * ff_v_ph_pth_eval_right) + (0))) /\ ((((exists fs_h_ph_pth_eval_right_body_terminal. fs_h_ph_pth_eval_right_body_terminal + S (z) = S ((S (l)) * ff_v_ph_pth_eval_right)) /\ exists fs_q_ph_pth_eval_right_body_terminal. ff_u_ph_pth_eval_right = fs_q_ph_pth_eval_right_body_terminal * S ((S (l)) * ff_v_ph_pth_eval_right) + (z))) /\ forall ff_i_ph_pth_eval_right_body_steps. (exists ph_bound_pth_eval_right_body_steps. ph_bound_pth_eval_right_body_steps + S ff_i_ph_pth_eval_right_body_steps = l) -> exists ff_coefficient_ph_pth_eval_right_body_steps ff_previous_ph_pth_eval_right_body_steps ff_current_ph_pth_eval_right_body_steps. ((((exists fs_h_ph_pth_eval_right_body_steps_coefficient. fs_h_ph_pth_eval_right_body_steps_coefficient + S (ff_coefficient_ph_pth_eval_right_body_steps) = S ((S (ff_i_ph_pth_eval_right_body_steps)) * c)) /\ exists fs_q_ph_pth_eval_right_body_steps_coefficient. b = fs_q_ph_pth_eval_right_body_steps_coefficient * S ((S (ff_i_ph_pth_eval_right_body_steps)) * c) + (ff_coefficient_ph_pth_eval_right_body_steps))) /\ ((((exists fs_h_ph_pth_eval_right_body_steps_before. fs_h_ph_pth_eval_right_body_steps_before + S (ff_previous_ph_pth_eval_right_body_steps) = S ((S (ff_i_ph_pth_eval_right_body_steps)) * ff_v_ph_pth_eval_right)) /\ exists fs_q_ph_pth_eval_right_body_steps_before. ff_u_ph_pth_eval_right = fs_q_ph_pth_eval_right_body_steps_before * S ((S (ff_i_ph_pth_eval_right_body_steps)) * ff_v_ph_pth_eval_right) + (ff_previous_ph_pth_eval_right_body_steps))) /\ ((((exists fs_h_ph_pth_eval_right_body_steps_after. fs_h_ph_pth_eval_right_body_steps_after + S (ff_current_ph_pth_eval_right_body_steps) = S ((S (S ff_i_ph_pth_eval_right_body_steps)) * ff_v_ph_pth_eval_right)) /\ exists fs_q_ph_pth_eval_right_body_steps_after. ff_u_ph_pth_eval_right = fs_q_ph_pth_eval_right_body_steps_after * S ((S (S ff_i_ph_pth_eval_right_body_steps)) * ff_v_ph_pth_eval_right) + (ff_current_ph_pth_eval_right_body_steps))) /\ ff_current_ph_pth_eval_right_body_steps = ff_previous_ph_pth_eval_right_body_steps * s + ff_coefficient_ph_pth_eval_right_body_steps)))))) -> (exists hgcrt_mod_left_pth_eval_result hgcrt_mod_right_pth_eval_result. n + m * hgcrt_mod_left_pth_eval_result = z + m * hgcrt_mod_right_pth_eval_result)Constructive proof overview
Generated structural guide
Every arbitrary beta-coded natural polynomial preserves balanced congruence between evaluation points.
The unchanged tactic script uses 5 declared prerequisites and contains 89 exact native proof lines.
Alpha v34 checked-use · first admitted v25 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_horner_eval_empty Alpha theorem; checked-use authorized beta_horner_eval_successor_decompose Alpha theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized mod_eq_refl Stable theorem; checked-use authorized TH0002 horner_mod_congruence_successor_stepDirect 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 (1)
01Fix variables and assumptionsL1–5
02Induction on lL6–11
03Establish hzero_leftL12–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval empty.
04Establish hzero_rightL19–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval empty.
05Use earlier factsL29–30
06Fix variables and assumptionsL31–35
07Establish hfirstL36–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval successor decompose.
- L36
- L37
specialize beta_horner_eval_successor_decompose b - L38
specialize beta_horner_eval_successor_decompose c - L39
specialize beta_horner_eval_successor_decompose t - L40
specialize beta_horner_eval_successor_decompose l - L41
specialize beta_horner_eval_successor_decompose n - L42
apply beta_horner_eval_successor_decompose - L43
exact hleft
08Separate the logical casesL44–47
09Establish hsecondL48–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta horner eval successor decompose.
- L48
- L49
specialize beta_horner_eval_successor_decompose b - L50
specialize beta_horner_eval_successor_decompose c - L51
specialize beta_horner_eval_successor_decompose s - L52
specialize beta_horner_eval_successor_decompose l - L53
specialize beta_horner_eval_successor_decompose z - L54
apply beta_horner_eval_successor_decompose - L55
exact hright
10Separate the logical casesL56–59
11Establish hcoefficientL60–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
12Establish hprefixL69–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L69
have hprefix : exists hgcrt_mod_left_pth_eval_prefix hgcrt_mod_right_pth_eval_prefix. x1 + m * hgcrt_mod_left_pth_eval_prefix = x3 + m * hgcrt_mod_right_pth_eval_prefix - L70
specialize IH x1 - L71
specialize IH x3 - L72
apply IH - L73
exact hbase - L74
exact hfirst_witness_witness_right_left - L75
exact hsecond_witness_witness_right_left
13Establish hstepL76–85
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply horner mod congruence successor step.
- L76
have hstep : exists hgcrt_mod_left_pth_eval_step hgcrt_mod_right_pth_eval_step. (x1 * t + x) + m * hgcrt_mod_left_pth_eval_step = (x3 * s + x) + m * hgcrt_mod_right_pth_eval_step - L77
specialize horner_mod_congruence_successor_step m - L78
specialize horner_mod_congruence_successor_step t - L79
specialize horner_mod_congruence_successor_step s - L80
specialize horner_mod_congruence_successor_step x1 - L81
specialize horner_mod_congruence_successor_step x3 - L82
specialize horner_mod_congruence_successor_step x - L83
apply horner_mod_congruence_successor_step - L84
exact hbase - L85
exact hprefix
14Calculate and transport equalitiesL86–88
15Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact hstep
Original exact command ledger · 89 lines
- 0001
intro b - 0002
intro c - 0003
intro m - 0004
intro t - 0005
intro s - 0006
induction l - 0007
intro n - 0008
intro z - 0009
intro hbase - 0010
intro hleft - 0011
intro hright - 0012
have hzero_left : n = 0 - 0013
specialize beta_horner_eval_empty b - 0014
specialize beta_horner_eval_empty c - 0015
specialize beta_horner_eval_empty t - 0016
specialize beta_horner_eval_empty n - 0017
apply beta_horner_eval_empty - 0018
exact hleft - 0019
have hzero_right : z = 0 - 0020
specialize beta_horner_eval_empty b - 0021
specialize beta_horner_eval_empty c - 0022
specialize beta_horner_eval_empty s - 0023
specialize beta_horner_eval_empty z - 0024
apply beta_horner_eval_empty - 0025
exact hright - 0026
rewrite hzero_left - 0027
rewrite hzero_right - 0028
specialize mod_eq_refl m - 0029
specialize mod_eq_refl 0 - 0030
apply mod_eq_refl - 0031
intro n - 0032
intro z - 0033
intro hbase - 0034
intro hleft - 0035
intro hright - 0036
have hfirst : exists a r. ((((exists fs_h_pth_eval_first_coefficient. fs_h_pth_eval_first_coefficient + S (a) = S ((S (l)) * c)) /\ exists fs_q_pth_eval_first_coefficient. b = fs_q_pth_eval_first_coefficient * S ((S (l)) * c) + (a))) /\ ((exists ff_u_ph_pth_eval_first_prefix ff_v_ph_pth_eval_first_prefix. ((((exists fs_h_ph_pth_eval_first_prefix_body_start. fs_h_ph_pth_eval_first_prefix_body_start + S (0) = S ((S (0)) * ff_v_ph_pth_eval_first_prefix)) /\ exists fs_q_ph_pth_eval_first_prefix_body_start. ff_u_ph_pth_eval_first_prefix = fs_q_ph_pth_eval_first_prefix_body_start * S ((S (0)) * ff_v_ph_pth_eval_first_prefix) + (0))) /\ ((((exists fs_h_ph_pth_eval_first_prefix_body_terminal. fs_h_ph_pth_eval_first_prefix_body_terminal + S (r) = S ((S (l)) * ff_v_ph_pth_eval_first_prefix)) /\ exists fs_q_ph_pth_eval_first_prefix_body_terminal. ff_u_ph_pth_eval_first_prefix = fs_q_ph_pth_eval_first_prefix_body_terminal * S ((S (l)) * ff_v_ph_pth_eval_first_prefix) + (r))) /\ forall ff_i_ph_pth_eval_first_prefix_body_steps. (exists ph_bound_pth_eval_first_prefix_body_steps. ph_bound_pth_eval_first_prefix_body_steps + S ff_i_ph_pth_eval_first_prefix_body_steps = l) -> exists ff_coefficient_ph_pth_eval_first_prefix_body_steps ff_previous_ph_pth_eval_first_prefix_body_steps ff_current_ph_pth_eval_first_prefix_body_steps. ((((exists fs_h_ph_pth_eval_first_prefix_body_steps_coefficient. fs_h_ph_pth_eval_first_prefix_body_steps_coefficient + S (ff_coefficient_ph_pth_eval_first_prefix_body_steps) = S ((S (ff_i_ph_pth_eval_first_prefix_body_steps)) * c)) /\ exists fs_q_ph_pth_eval_first_prefix_body_steps_coefficient. b = fs_q_ph_pth_eval_first_prefix_body_steps_coefficient * S ((S (ff_i_ph_pth_eval_first_prefix_body_steps)) * c) + (ff_coefficient_ph_pth_eval_first_prefix_body_steps))) /\ ((((exists fs_h_ph_pth_eval_first_prefix_body_steps_before. fs_h_ph_pth_eval_first_prefix_body_steps_before + S (ff_previous_ph_pth_eval_first_prefix_body_steps) = S ((S (ff_i_ph_pth_eval_first_prefix_body_steps)) * ff_v_ph_pth_eval_first_prefix)) /\ exists fs_q_ph_pth_eval_first_prefix_body_steps_before. ff_u_ph_pth_eval_first_prefix = fs_q_ph_pth_eval_first_prefix_body_steps_before * S ((S (ff_i_ph_pth_eval_first_prefix_body_steps)) * ff_v_ph_pth_eval_first_prefix) + (ff_previous_ph_pth_eval_first_prefix_body_steps))) /\ ((((exists fs_h_ph_pth_eval_first_prefix_body_steps_after. fs_h_ph_pth_eval_first_prefix_body_steps_after + S (ff_current_ph_pth_eval_first_prefix_body_steps) = S ((S (S ff_i_ph_pth_eval_first_prefix_body_steps)) * ff_v_ph_pth_eval_first_prefix)) /\ exists fs_q_ph_pth_eval_first_prefix_body_steps_after. ff_u_ph_pth_eval_first_prefix = fs_q_ph_pth_eval_first_prefix_body_steps_after * S ((S (S ff_i_ph_pth_eval_first_prefix_body_steps)) * ff_v_ph_pth_eval_first_prefix) + (ff_current_ph_pth_eval_first_prefix_body_steps))) /\ ff_current_ph_pth_eval_first_prefix_body_steps = ff_previous_ph_pth_eval_first_prefix_body_steps * t + ff_coefficient_ph_pth_eval_first_prefix_body_steps)))))) /\ n = r * t + a)) - 0037
specialize beta_horner_eval_successor_decompose b - 0038
specialize beta_horner_eval_successor_decompose c - 0039
specialize beta_horner_eval_successor_decompose t - 0040
specialize beta_horner_eval_successor_decompose l - 0041
specialize beta_horner_eval_successor_decompose n - 0042
apply beta_horner_eval_successor_decompose - 0043
exact hleft - 0044
cases hfirst - 0045
cases hfirst_witness - 0046
cases hfirst_witness_witness - 0047
cases hfirst_witness_witness_right - 0048
have hsecond : exists a r. ((((exists fs_h_pth_eval_second_coefficient. fs_h_pth_eval_second_coefficient + S (a) = S ((S (l)) * c)) /\ exists fs_q_pth_eval_second_coefficient. b = fs_q_pth_eval_second_coefficient * S ((S (l)) * c) + (a))) /\ ((exists ff_u_ph_pth_eval_second_prefix ff_v_ph_pth_eval_second_prefix. ((((exists fs_h_ph_pth_eval_second_prefix_body_start. fs_h_ph_pth_eval_second_prefix_body_start + S (0) = S ((S (0)) * ff_v_ph_pth_eval_second_prefix)) /\ exists fs_q_ph_pth_eval_second_prefix_body_start. ff_u_ph_pth_eval_second_prefix = fs_q_ph_pth_eval_second_prefix_body_start * S ((S (0)) * ff_v_ph_pth_eval_second_prefix) + (0))) /\ ((((exists fs_h_ph_pth_eval_second_prefix_body_terminal. fs_h_ph_pth_eval_second_prefix_body_terminal + S (r) = S ((S (l)) * ff_v_ph_pth_eval_second_prefix)) /\ exists fs_q_ph_pth_eval_second_prefix_body_terminal. ff_u_ph_pth_eval_second_prefix = fs_q_ph_pth_eval_second_prefix_body_terminal * S ((S (l)) * ff_v_ph_pth_eval_second_prefix) + (r))) /\ forall ff_i_ph_pth_eval_second_prefix_body_steps. (exists ph_bound_pth_eval_second_prefix_body_steps. ph_bound_pth_eval_second_prefix_body_steps + S ff_i_ph_pth_eval_second_prefix_body_steps = l) -> exists ff_coefficient_ph_pth_eval_second_prefix_body_steps ff_previous_ph_pth_eval_second_prefix_body_steps ff_current_ph_pth_eval_second_prefix_body_steps. ((((exists fs_h_ph_pth_eval_second_prefix_body_steps_coefficient. fs_h_ph_pth_eval_second_prefix_body_steps_coefficient + S (ff_coefficient_ph_pth_eval_second_prefix_body_steps) = S ((S (ff_i_ph_pth_eval_second_prefix_body_steps)) * c)) /\ exists fs_q_ph_pth_eval_second_prefix_body_steps_coefficient. b = fs_q_ph_pth_eval_second_prefix_body_steps_coefficient * S ((S (ff_i_ph_pth_eval_second_prefix_body_steps)) * c) + (ff_coefficient_ph_pth_eval_second_prefix_body_steps))) /\ ((((exists fs_h_ph_pth_eval_second_prefix_body_steps_before. fs_h_ph_pth_eval_second_prefix_body_steps_before + S (ff_previous_ph_pth_eval_second_prefix_body_steps) = S ((S (ff_i_ph_pth_eval_second_prefix_body_steps)) * ff_v_ph_pth_eval_second_prefix)) /\ exists fs_q_ph_pth_eval_second_prefix_body_steps_before. ff_u_ph_pth_eval_second_prefix = fs_q_ph_pth_eval_second_prefix_body_steps_before * S ((S (ff_i_ph_pth_eval_second_prefix_body_steps)) * ff_v_ph_pth_eval_second_prefix) + (ff_previous_ph_pth_eval_second_prefix_body_steps))) /\ ((((exists fs_h_ph_pth_eval_second_prefix_body_steps_after. fs_h_ph_pth_eval_second_prefix_body_steps_after + S (ff_current_ph_pth_eval_second_prefix_body_steps) = S ((S (S ff_i_ph_pth_eval_second_prefix_body_steps)) * ff_v_ph_pth_eval_second_prefix)) /\ exists fs_q_ph_pth_eval_second_prefix_body_steps_after. ff_u_ph_pth_eval_second_prefix = fs_q_ph_pth_eval_second_prefix_body_steps_after * S ((S (S ff_i_ph_pth_eval_second_prefix_body_steps)) * ff_v_ph_pth_eval_second_prefix) + (ff_current_ph_pth_eval_second_prefix_body_steps))) /\ ff_current_ph_pth_eval_second_prefix_body_steps = ff_previous_ph_pth_eval_second_prefix_body_steps * s + ff_coefficient_ph_pth_eval_second_prefix_body_steps)))))) /\ z = r * s + a)) - 0049
specialize beta_horner_eval_successor_decompose b - 0050
specialize beta_horner_eval_successor_decompose c - 0051
specialize beta_horner_eval_successor_decompose s - 0052
specialize beta_horner_eval_successor_decompose l - 0053
specialize beta_horner_eval_successor_decompose z - 0054
apply beta_horner_eval_successor_decompose - 0055
exact hright - 0056
cases hsecond - 0057
cases hsecond_witness - 0058
cases hsecond_witness_witness - 0059
cases hsecond_witness_witness_right - 0060
have hcoefficient : x = x2 - 0061
specialize beta_at_unique b - 0062
specialize beta_at_unique c - 0063
specialize beta_at_unique l - 0064
specialize beta_at_unique x - 0065
specialize beta_at_unique x2 - 0066
apply beta_at_unique - 0067
exact hfirst_witness_witness_left - 0068
exact hsecond_witness_witness_left - 0069
have hprefix : exists hgcrt_mod_left_pth_eval_prefix hgcrt_mod_right_pth_eval_prefix. x1 + m * hgcrt_mod_left_pth_eval_prefix = x3 + m * hgcrt_mod_right_pth_eval_prefix - 0070
specialize IH x1 - 0071
specialize IH x3 - 0072
apply IH - 0073
exact hbase - 0074
exact hfirst_witness_witness_right_left - 0075
exact hsecond_witness_witness_right_left - 0076
have hstep : exists hgcrt_mod_left_pth_eval_step hgcrt_mod_right_pth_eval_step. (x1 * t + x) + m * hgcrt_mod_left_pth_eval_step = (x3 * s + x) + m * hgcrt_mod_right_pth_eval_step - 0077
specialize horner_mod_congruence_successor_step m - 0078
specialize horner_mod_congruence_successor_step t - 0079
specialize horner_mod_congruence_successor_step s - 0080
specialize horner_mod_congruence_successor_step x1 - 0081
specialize horner_mod_congruence_successor_step x3 - 0082
specialize horner_mod_congruence_successor_step x - 0083
apply horner_mod_congruence_successor_step - 0084
exact hbase - 0085
exact hprefix - 0086
rewrite hfirst_witness_witness_right_right - 0087
rewrite hsecond_witness_witness_right_right - 0088
rewrite <- hcoefficient - 0089
exact hstep
Separate complete second-wave branches: Full G095 proof · Alpha v27.