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 expanded first-order arithmetic statement
forall p b c t l r. (exists pfh_trace_code_successor_execution pfh_trace_scale_successor_execution. (((exists pfa_gap_successor_executiontracebase. pfa_gap_successor_executiontracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_executiontraceinitial. ff_h_pfp_successor_executiontraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_execution)) /\ exists ff_q_pfp_successor_executiontraceinitial. pfh_trace_code_successor_execution = ff_q_pfp_successor_executiontraceinitial * S ((S (0)) * pfh_trace_scale_successor_execution) + (0))) /\ (((((exists ff_h_pfp_successor_executiontraceterminal. ff_h_pfp_successor_executiontraceterminal + S (r) = S ((S (S l)) * pfh_trace_scale_successor_execution)) /\ exists ff_q_pfp_successor_executiontraceterminal. pfh_trace_code_successor_execution = ff_q_pfp_successor_executiontraceterminal * S ((S (S l)) * pfh_trace_scale_successor_execution) + (r))) /\ ((forall pfh_index_successor_executiontracesteps. (exists pfa_gap_successor_executiontracestepsindex. pfa_gap_successor_executiontracestepsindex + S (pfh_index_successor_executiontracesteps) = (S l)) -> (exists pfh_coefficient_successor_executiontracestepsstep pfh_before_successor_executiontracestepsstep pfh_after_successor_executiontracestepsstep pfh_product_successor_executiontracestepsstep. ((((exists ff_h_pfp_successor_executiontracestepsstepcoefficient. ff_h_pfp_successor_executiontracestepsstepcoefficient + S (pfh_coefficient_successor_executiontracestepsstep) = S ((S (pfh_index_successor_executiontracesteps)) * c)) /\ exists ff_q_pfp_successor_executiontracestepsstepcoefficient. b = ff_q_pfp_successor_executiontracestepsstepcoefficient * S ((S (pfh_index_successor_executiontracesteps)) * c) + (pfh_coefficient_successor_executiontracestepsstep))) /\ (((((exists ff_h_pfp_successor_executiontracestepsstepbefore. ff_h_pfp_successor_executiontracestepsstepbefore + S (pfh_before_successor_executiontracestepsstep) = S ((S (pfh_index_successor_executiontracesteps)) * pfh_trace_scale_successor_execution)) /\ exists ff_q_pfp_successor_executiontracestepsstepbefore. pfh_trace_code_successor_execution = ff_q_pfp_successor_executiontracestepsstepbefore * S ((S (pfh_index_successor_executiontracesteps)) * pfh_trace_scale_successor_execution) + (pfh_before_successor_executiontracestepsstep))) /\ (((((exists ff_h_pfp_successor_executiontracestepsstepafter. ff_h_pfp_successor_executiontracestepsstepafter + S (pfh_after_successor_executiontracestepsstep) = S ((S (S (pfh_index_successor_executiontracesteps))) * pfh_trace_scale_successor_execution)) /\ exists ff_q_pfp_successor_executiontracestepsstepafter. pfh_trace_code_successor_execution = ff_q_pfp_successor_executiontracestepsstepafter * S ((S (S (pfh_index_successor_executiontracesteps))) * pfh_trace_scale_successor_execution) + (pfh_after_successor_executiontracestepsstep))) /\ (((((exists pfa_gap_successor_executiontracestepsstepmultiplyleft. pfa_gap_successor_executiontracestepsstepmultiplyleft + S (pfh_before_successor_executiontracestepsstep) = (p)) /\ (((exists pfa_gap_successor_executiontracestepsstepmultiplyright. pfa_gap_successor_executiontracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_executiontracestepsstepmultiplyresultbound. pfa_gap_successor_executiontracestepsstepmultiplyresultbound + S (pfh_product_successor_executiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_executiontracestepsstepmultiplyresultcongruence pfa_offset_right_successor_executiontracestepsstepmultiplyresultcongruence. ((pfh_before_successor_executiontracestepsstep) * (t)) + (p) * pfa_offset_left_successor_executiontracestepsstepmultiplyresultcongruence = (pfh_product_successor_executiontracestepsstep) + (p) * pfa_offset_right_successor_executiontracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_executiontracestepsstepaddleft. pfa_gap_successor_executiontracestepsstepaddleft + S (pfh_product_successor_executiontracestepsstep) = (p)) /\ (((exists pfa_gap_successor_executiontracestepsstepaddright. pfa_gap_successor_executiontracestepsstepaddright + S (pfh_coefficient_successor_executiontracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_executiontracestepsstepaddresultbound. pfa_gap_successor_executiontracestepsstepaddresultbound + S (pfh_after_successor_executiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_executiontracestepsstepaddresultcongruence pfa_offset_right_successor_executiontracestepsstepaddresultcongruence. ((pfh_product_successor_executiontracestepsstep) + (pfh_coefficient_successor_executiontracestepsstep)) + (p) * pfa_offset_left_successor_executiontracestepsstepaddresultcongruence = (pfh_after_successor_executiontracestepsstep) + (p) * pfa_offset_right_successor_executiontracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> exists a h k. ((((exists ff_h_pfp_successor_coefficient. ff_h_pfp_successor_coefficient + S (a) = S ((S (l)) * c)) /\ exists ff_q_pfp_successor_coefficient. b = ff_q_pfp_successor_coefficient * S ((S (l)) * c) + (a))) /\ (((exists pfh_trace_code_successor_prefix pfh_trace_scale_successor_prefix. (((exists pfa_gap_successor_prefixtracebase. pfa_gap_successor_prefixtracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_prefixtraceinitial. ff_h_pfp_successor_prefixtraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_prefix)) /\ exists ff_q_pfp_successor_prefixtraceinitial. pfh_trace_code_successor_prefix = ff_q_pfp_successor_prefixtraceinitial * S ((S (0)) * pfh_trace_scale_successor_prefix) + (0))) /\ (((((exists ff_h_pfp_successor_prefixtraceterminal. ff_h_pfp_successor_prefixtraceterminal + S (h) = S ((S (l)) * pfh_trace_scale_successor_prefix)) /\ exists ff_q_pfp_successor_prefixtraceterminal. pfh_trace_code_successor_prefix = ff_q_pfp_successor_prefixtraceterminal * S ((S (l)) * pfh_trace_scale_successor_prefix) + (h))) /\ ((forall pfh_index_successor_prefixtracesteps. (exists pfa_gap_successor_prefixtracestepsindex. pfa_gap_successor_prefixtracestepsindex + S (pfh_index_successor_prefixtracesteps) = (l)) -> (exists pfh_coefficient_successor_prefixtracestepsstep pfh_before_successor_prefixtracestepsstep pfh_after_successor_prefixtracestepsstep pfh_product_successor_prefixtracestepsstep. ((((exists ff_h_pfp_successor_prefixtracestepsstepcoefficient. ff_h_pfp_successor_prefixtracestepsstepcoefficient + S (pfh_coefficient_successor_prefixtracestepsstep) = S ((S (pfh_index_successor_prefixtracesteps)) * c)) /\ exists ff_q_pfp_successor_prefixtracestepsstepcoefficient. b = ff_q_pfp_successor_prefixtracestepsstepcoefficient * S ((S (pfh_index_successor_prefixtracesteps)) * c) + (pfh_coefficient_successor_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_prefixtracestepsstepbefore. ff_h_pfp_successor_prefixtracestepsstepbefore + S (pfh_before_successor_prefixtracestepsstep) = S ((S (pfh_index_successor_prefixtracesteps)) * pfh_trace_scale_successor_prefix)) /\ exists ff_q_pfp_successor_prefixtracestepsstepbefore. pfh_trace_code_successor_prefix = ff_q_pfp_successor_prefixtracestepsstepbefore * S ((S (pfh_index_successor_prefixtracesteps)) * pfh_trace_scale_successor_prefix) + (pfh_before_successor_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_prefixtracestepsstepafter. ff_h_pfp_successor_prefixtracestepsstepafter + S (pfh_after_successor_prefixtracestepsstep) = S ((S (S (pfh_index_successor_prefixtracesteps))) * pfh_trace_scale_successor_prefix)) /\ exists ff_q_pfp_successor_prefixtracestepsstepafter. pfh_trace_code_successor_prefix = ff_q_pfp_successor_prefixtracestepsstepafter * S ((S (S (pfh_index_successor_prefixtracesteps))) * pfh_trace_scale_successor_prefix) + (pfh_after_successor_prefixtracestepsstep))) /\ (((((exists pfa_gap_successor_prefixtracestepsstepmultiplyleft. pfa_gap_successor_prefixtracestepsstepmultiplyleft + S (pfh_before_successor_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_prefixtracestepsstepmultiplyright. pfa_gap_successor_prefixtracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_prefixtracestepsstepmultiplyresultbound. pfa_gap_successor_prefixtracestepsstepmultiplyresultbound + S (pfh_product_successor_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_prefixtracestepsstepmultiplyresultcongruence pfa_offset_right_successor_prefixtracestepsstepmultiplyresultcongruence. ((pfh_before_successor_prefixtracestepsstep) * (t)) + (p) * pfa_offset_left_successor_prefixtracestepsstepmultiplyresultcongruence = (pfh_product_successor_prefixtracestepsstep) + (p) * pfa_offset_right_successor_prefixtracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_prefixtracestepsstepaddleft. pfa_gap_successor_prefixtracestepsstepaddleft + S (pfh_product_successor_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_prefixtracestepsstepaddright. pfa_gap_successor_prefixtracestepsstepaddright + S (pfh_coefficient_successor_prefixtracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_prefixtracestepsstepaddresultbound. pfa_gap_successor_prefixtracestepsstepaddresultbound + S (pfh_after_successor_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_prefixtracestepsstepaddresultcongruence pfa_offset_right_successor_prefixtracestepsstepaddresultcongruence. ((pfh_product_successor_prefixtracestepsstep) + (pfh_coefficient_successor_prefixtracestepsstep)) + (p) * pfa_offset_left_successor_prefixtracestepsstepaddresultcongruence = (pfh_after_successor_prefixtracestepsstep) + (p) * pfa_offset_right_successor_prefixtracestepsstepaddresultcongruence))))))))))))))))))))))))))) /\ (((((exists pfa_gap_successor_multiplyleft. pfa_gap_successor_multiplyleft + S (h) = (p)) /\ (((exists pfa_gap_successor_multiplyright. pfa_gap_successor_multiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_multiplyresultbound. pfa_gap_successor_multiplyresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_successor_multiplyresultcongruence pfa_offset_right_successor_multiplyresultcongruence. ((h) * (t)) + (p) * pfa_offset_left_successor_multiplyresultcongruence = (k) + (p) * pfa_offset_right_successor_multiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_addleft. pfa_gap_successor_addleft + S (k) = (p)) /\ (((exists pfa_gap_successor_addright. pfa_gap_successor_addright + S (a) = (p)) /\ ((((exists pfa_gap_successor_addresultbound. pfa_gap_successor_addresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_successor_addresultcongruence pfa_offset_right_successor_addresultcongruence. ((k) + (a)) + (p) * pfa_offset_left_successor_addresultcongruence = (r) + (p) * pfa_offset_right_successor_addresultcongruence)))))))))))))))Constructive proof overview
Generated structural guide
An actual successor execution decomposes into its actual prefix and final multiply-then-add step in highest-degree-first order.
The unchanged tactic script uses 3 declared prerequisites and contains 61 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
zero_add Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized le_succ Stable 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.
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–12
03Establish hsL13–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply h witness witness right right right.
- L13
have hs : FpHornerStep(p,b,c,t,x,x1,l)Definitions: FpHornerStep - L14
specialize h_witness_witness_right_right_right (l) - L15
apply h_witness_witness_right_right_right
04Construct an explicit witnessL16–16
Supply the displayed value, then prove that it has the required property.
- L16
exists 0
05Use earlier factsL17–17
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L17
apply zero_add
06Separate the logical casesL18–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
cases hs - L19
cases hs_witness - L20
cases hs_witness_witness - L21
cases hs_witness_witness_witness - L22
cases hs_witness_witness_witness_witness - L23
cases hs_witness_witness_witness_witness_right - L24
cases hs_witness_witness_witness_witness_right_right - L25
cases hs_witness_witness_witness_witness_right_right_right
07Establish heqL26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L26
have heq : x4=r - L27
specialize beta_at_unique (x) - L28
specialize beta_at_unique (x1) - L29
specialize beta_at_unique (S l) - L30
specialize beta_at_unique (x4) - L31
specialize beta_at_unique (r) - L32
apply beta_at_unique - L33
exact hs_witness_witness_witness_witness_right_right_left - L34
exact h_witness_witness_right_right_left - L35
rewrite heq at hs_witness_witness_witness_witness_right_right_right_right
08Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
rewrite heq at hs_witness_witness_witness_witness_right_right_right_right
09Construct an explicit witnessL37–39
10Separate the logical casesL40–40
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L40
split
11Use earlier factsL41–41
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L41
exact hs_witness_witness_witness_witness_left
12Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
split
13Construct an explicit witnessL43–44
14Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
split
15Use earlier factsL46–46
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L46
exact h_witness_witness_left
16Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
17Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact h_witness_witness_right_left
18Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
19Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hs_witness_witness_witness_witness_right_left
20Fix variables and assumptionsL51–52
21Use earlier factsL53–58
22Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
split
Original exact command ledger · 61 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
intro t - 0005
intro l - 0006
intro r - 0007
intro h - 0008
cases h - 0009
cases h_witness - 0010
cases h_witness_witness - 0011
cases h_witness_witness_right - 0012
cases h_witness_witness_right_right - 0013
have hs : exists pfh_coefficient_successor_step pfh_before_successor_step pfh_after_successor_step pfh_product_successor_step. ((((exists ff_h_pfp_successor_stepcoefficient. ff_h_pfp_successor_stepcoefficient + S (pfh_coefficient_successor_step) = S ((S (l)) * c)) /\ exists ff_q_pfp_successor_stepcoefficient. b = ff_q_pfp_successor_stepcoefficient * S ((S (l)) * c) + (pfh_coefficient_successor_step))) /\ (((((exists ff_h_pfp_successor_stepbefore. ff_h_pfp_successor_stepbefore + S (pfh_before_successor_step) = S ((S (l)) * x1)) /\ exists ff_q_pfp_successor_stepbefore. x = ff_q_pfp_successor_stepbefore * S ((S (l)) * x1) + (pfh_before_successor_step))) /\ (((((exists ff_h_pfp_successor_stepafter. ff_h_pfp_successor_stepafter + S (pfh_after_successor_step) = S ((S (S (l))) * x1)) /\ exists ff_q_pfp_successor_stepafter. x = ff_q_pfp_successor_stepafter * S ((S (S (l))) * x1) + (pfh_after_successor_step))) /\ (((((exists pfa_gap_successor_stepmultiplyleft. pfa_gap_successor_stepmultiplyleft + S (pfh_before_successor_step) = (p)) /\ (((exists pfa_gap_successor_stepmultiplyright. pfa_gap_successor_stepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_stepmultiplyresultbound. pfa_gap_successor_stepmultiplyresultbound + S (pfh_product_successor_step) = (p)) /\ ((exists pfa_offset_left_successor_stepmultiplyresultcongruence pfa_offset_right_successor_stepmultiplyresultcongruence. ((pfh_before_successor_step) * (t)) + (p) * pfa_offset_left_successor_stepmultiplyresultcongruence = (pfh_product_successor_step) + (p) * pfa_offset_right_successor_stepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_stepaddleft. pfa_gap_successor_stepaddleft + S (pfh_product_successor_step) = (p)) /\ (((exists pfa_gap_successor_stepaddright. pfa_gap_successor_stepaddright + S (pfh_coefficient_successor_step) = (p)) /\ ((((exists pfa_gap_successor_stepaddresultbound. pfa_gap_successor_stepaddresultbound + S (pfh_after_successor_step) = (p)) /\ ((exists pfa_offset_left_successor_stepaddresultcongruence pfa_offset_right_successor_stepaddresultcongruence. ((pfh_product_successor_step) + (pfh_coefficient_successor_step)) + (p) * pfa_offset_left_successor_stepaddresultcongruence = (pfh_after_successor_step) + (p) * pfa_offset_right_successor_stepaddresultcongruence))))))))))))))))) - 0014
specialize h_witness_witness_right_right_right (l) - 0015
apply h_witness_witness_right_right_right - 0016
exists 0 - 0017
apply zero_add - 0018
cases hs - 0019
cases hs_witness - 0020
cases hs_witness_witness - 0021
cases hs_witness_witness_witness - 0022
cases hs_witness_witness_witness_witness - 0023
cases hs_witness_witness_witness_witness_right - 0024
cases hs_witness_witness_witness_witness_right_right - 0025
cases hs_witness_witness_witness_witness_right_right_right - 0026
have heq : x4=r - 0027
specialize beta_at_unique (x) - 0028
specialize beta_at_unique (x1) - 0029
specialize beta_at_unique (S l) - 0030
specialize beta_at_unique (x4) - 0031
specialize beta_at_unique (r) - 0032
apply beta_at_unique - 0033
exact hs_witness_witness_witness_witness_right_right_left - 0034
exact h_witness_witness_right_right_left - 0035
rewrite heq at hs_witness_witness_witness_witness_right_right_right_right - 0036
rewrite heq at hs_witness_witness_witness_witness_right_right_right_right - 0037
exists x2 - 0038
exists x3 - 0039
exists x5 - 0040
split - 0041
exact hs_witness_witness_witness_witness_left - 0042
split - 0043
exists x - 0044
exists x1 - 0045
split - 0046
exact h_witness_witness_left - 0047
split - 0048
exact h_witness_witness_right_left - 0049
split - 0050
exact hs_witness_witness_witness_witness_right_left - 0051
intro i - 0052
intro hi - 0053
specialize h_witness_witness_right_right_right (i) - 0054
apply h_witness_witness_right_right_right - 0055
specialize le_succ (S i) - 0056
specialize le_succ (l) - 0057
apply le_succ - 0058
exact hi - 0059
split - 0060
exact hs_witness_witness_witness_witness_right_right_right_left - 0061
exact hs_witness_witness_witness_witness_right_right_right_right