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 a h k r. (~((p) = 1) /\ forall pfa_factor_left_successor_intro_prime pfa_factor_right_successor_intro_prime. (p) = pfa_factor_left_successor_intro_prime * pfa_factor_right_successor_intro_prime -> pfa_factor_left_successor_intro_prime = 1 \/ pfa_factor_right_successor_intro_prime = 1) -> (((exists ff_h_pfp_successor_intro_coefficient. ff_h_pfp_successor_intro_coefficient + S (a) = S ((S (l)) * c)) /\ exists ff_q_pfp_successor_intro_coefficient. b = ff_q_pfp_successor_intro_coefficient * S ((S (l)) * c) + (a))) -> (exists pfh_trace_code_successor_intro_prefix pfh_trace_scale_successor_intro_prefix. (((exists pfa_gap_successor_intro_prefixtracebase. pfa_gap_successor_intro_prefixtracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_intro_prefixtraceinitial. ff_h_pfp_successor_intro_prefixtraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_intro_prefix)) /\ exists ff_q_pfp_successor_intro_prefixtraceinitial. pfh_trace_code_successor_intro_prefix = ff_q_pfp_successor_intro_prefixtraceinitial * S ((S (0)) * pfh_trace_scale_successor_intro_prefix) + (0))) /\ (((((exists ff_h_pfp_successor_intro_prefixtraceterminal. ff_h_pfp_successor_intro_prefixtraceterminal + S (h) = S ((S (l)) * pfh_trace_scale_successor_intro_prefix)) /\ exists ff_q_pfp_successor_intro_prefixtraceterminal. pfh_trace_code_successor_intro_prefix = ff_q_pfp_successor_intro_prefixtraceterminal * S ((S (l)) * pfh_trace_scale_successor_intro_prefix) + (h))) /\ ((forall pfh_index_successor_intro_prefixtracesteps. (exists pfa_gap_successor_intro_prefixtracestepsindex. pfa_gap_successor_intro_prefixtracestepsindex + S (pfh_index_successor_intro_prefixtracesteps) = (l)) -> (exists pfh_coefficient_successor_intro_prefixtracestepsstep pfh_before_successor_intro_prefixtracestepsstep pfh_after_successor_intro_prefixtracestepsstep pfh_product_successor_intro_prefixtracestepsstep. ((((exists ff_h_pfp_successor_intro_prefixtracestepsstepcoefficient. ff_h_pfp_successor_intro_prefixtracestepsstepcoefficient + S (pfh_coefficient_successor_intro_prefixtracestepsstep) = S ((S (pfh_index_successor_intro_prefixtracesteps)) * c)) /\ exists ff_q_pfp_successor_intro_prefixtracestepsstepcoefficient. b = ff_q_pfp_successor_intro_prefixtracestepsstepcoefficient * S ((S (pfh_index_successor_intro_prefixtracesteps)) * c) + (pfh_coefficient_successor_intro_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_prefixtracestepsstepbefore. ff_h_pfp_successor_intro_prefixtracestepsstepbefore + S (pfh_before_successor_intro_prefixtracestepsstep) = S ((S (pfh_index_successor_intro_prefixtracesteps)) * pfh_trace_scale_successor_intro_prefix)) /\ exists ff_q_pfp_successor_intro_prefixtracestepsstepbefore. pfh_trace_code_successor_intro_prefix = ff_q_pfp_successor_intro_prefixtracestepsstepbefore * S ((S (pfh_index_successor_intro_prefixtracesteps)) * pfh_trace_scale_successor_intro_prefix) + (pfh_before_successor_intro_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_prefixtracestepsstepafter. ff_h_pfp_successor_intro_prefixtracestepsstepafter + S (pfh_after_successor_intro_prefixtracestepsstep) = S ((S (S (pfh_index_successor_intro_prefixtracesteps))) * pfh_trace_scale_successor_intro_prefix)) /\ exists ff_q_pfp_successor_intro_prefixtracestepsstepafter. pfh_trace_code_successor_intro_prefix = ff_q_pfp_successor_intro_prefixtracestepsstepafter * S ((S (S (pfh_index_successor_intro_prefixtracesteps))) * pfh_trace_scale_successor_intro_prefix) + (pfh_after_successor_intro_prefixtracestepsstep))) /\ (((((exists pfa_gap_successor_intro_prefixtracestepsstepmultiplyleft. pfa_gap_successor_intro_prefixtracestepsstepmultiplyleft + S (pfh_before_successor_intro_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_prefixtracestepsstepmultiplyright. pfa_gap_successor_intro_prefixtracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_prefixtracestepsstepmultiplyresultbound. pfa_gap_successor_intro_prefixtracestepsstepmultiplyresultbound + S (pfh_product_successor_intro_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_prefixtracestepsstepmultiplyresultcongruence pfa_offset_right_successor_intro_prefixtracestepsstepmultiplyresultcongruence. ((pfh_before_successor_intro_prefixtracestepsstep) * (t)) + (p) * pfa_offset_left_successor_intro_prefixtracestepsstepmultiplyresultcongruence = (pfh_product_successor_intro_prefixtracestepsstep) + (p) * pfa_offset_right_successor_intro_prefixtracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_intro_prefixtracestepsstepaddleft. pfa_gap_successor_intro_prefixtracestepsstepaddleft + S (pfh_product_successor_intro_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_prefixtracestepsstepaddright. pfa_gap_successor_intro_prefixtracestepsstepaddright + S (pfh_coefficient_successor_intro_prefixtracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_intro_prefixtracestepsstepaddresultbound. pfa_gap_successor_intro_prefixtracestepsstepaddresultbound + S (pfh_after_successor_intro_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_prefixtracestepsstepaddresultcongruence pfa_offset_right_successor_intro_prefixtracestepsstepaddresultcongruence. ((pfh_product_successor_intro_prefixtracestepsstep) + (pfh_coefficient_successor_intro_prefixtracestepsstep)) + (p) * pfa_offset_left_successor_intro_prefixtracestepsstepaddresultcongruence = (pfh_after_successor_intro_prefixtracestepsstep) + (p) * pfa_offset_right_successor_intro_prefixtracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> (((exists pfa_gap_successor_intro_multiplyleft. pfa_gap_successor_intro_multiplyleft + S (h) = (p)) /\ (((exists pfa_gap_successor_intro_multiplyright. pfa_gap_successor_intro_multiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_multiplyresultbound. pfa_gap_successor_intro_multiplyresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_successor_intro_multiplyresultcongruence pfa_offset_right_successor_intro_multiplyresultcongruence. ((h) * (t)) + (p) * pfa_offset_left_successor_intro_multiplyresultcongruence = (k) + (p) * pfa_offset_right_successor_intro_multiplyresultcongruence))))))))) -> (((exists pfa_gap_successor_intro_addleft. pfa_gap_successor_intro_addleft + S (k) = (p)) /\ (((exists pfa_gap_successor_intro_addright. pfa_gap_successor_intro_addright + S (a) = (p)) /\ ((((exists pfa_gap_successor_intro_addresultbound. pfa_gap_successor_intro_addresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_successor_intro_addresultcongruence pfa_offset_right_successor_intro_addresultcongruence. ((k) + (a)) + (p) * pfa_offset_left_successor_intro_addresultcongruence = (r) + (p) * pfa_offset_right_successor_intro_addresultcongruence))))))))) -> (exists pfh_trace_code_successor_intro_execution pfh_trace_scale_successor_intro_execution. (((exists pfa_gap_successor_intro_executiontracebase. pfa_gap_successor_intro_executiontracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_intro_executiontraceinitial. ff_h_pfp_successor_intro_executiontraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_intro_execution)) /\ exists ff_q_pfp_successor_intro_executiontraceinitial. pfh_trace_code_successor_intro_execution = ff_q_pfp_successor_intro_executiontraceinitial * S ((S (0)) * pfh_trace_scale_successor_intro_execution) + (0))) /\ (((((exists ff_h_pfp_successor_intro_executiontraceterminal. ff_h_pfp_successor_intro_executiontraceterminal + S (r) = S ((S (S l)) * pfh_trace_scale_successor_intro_execution)) /\ exists ff_q_pfp_successor_intro_executiontraceterminal. pfh_trace_code_successor_intro_execution = ff_q_pfp_successor_intro_executiontraceterminal * S ((S (S l)) * pfh_trace_scale_successor_intro_execution) + (r))) /\ ((forall pfh_index_successor_intro_executiontracesteps. (exists pfa_gap_successor_intro_executiontracestepsindex. pfa_gap_successor_intro_executiontracestepsindex + S (pfh_index_successor_intro_executiontracesteps) = (S l)) -> (exists pfh_coefficient_successor_intro_executiontracestepsstep pfh_before_successor_intro_executiontracestepsstep pfh_after_successor_intro_executiontracestepsstep pfh_product_successor_intro_executiontracestepsstep. ((((exists ff_h_pfp_successor_intro_executiontracestepsstepcoefficient. ff_h_pfp_successor_intro_executiontracestepsstepcoefficient + S (pfh_coefficient_successor_intro_executiontracestepsstep) = S ((S (pfh_index_successor_intro_executiontracesteps)) * c)) /\ exists ff_q_pfp_successor_intro_executiontracestepsstepcoefficient. b = ff_q_pfp_successor_intro_executiontracestepsstepcoefficient * S ((S (pfh_index_successor_intro_executiontracesteps)) * c) + (pfh_coefficient_successor_intro_executiontracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_executiontracestepsstepbefore. ff_h_pfp_successor_intro_executiontracestepsstepbefore + S (pfh_before_successor_intro_executiontracestepsstep) = S ((S (pfh_index_successor_intro_executiontracesteps)) * pfh_trace_scale_successor_intro_execution)) /\ exists ff_q_pfp_successor_intro_executiontracestepsstepbefore. pfh_trace_code_successor_intro_execution = ff_q_pfp_successor_intro_executiontracestepsstepbefore * S ((S (pfh_index_successor_intro_executiontracesteps)) * pfh_trace_scale_successor_intro_execution) + (pfh_before_successor_intro_executiontracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_executiontracestepsstepafter. ff_h_pfp_successor_intro_executiontracestepsstepafter + S (pfh_after_successor_intro_executiontracestepsstep) = S ((S (S (pfh_index_successor_intro_executiontracesteps))) * pfh_trace_scale_successor_intro_execution)) /\ exists ff_q_pfp_successor_intro_executiontracestepsstepafter. pfh_trace_code_successor_intro_execution = ff_q_pfp_successor_intro_executiontracestepsstepafter * S ((S (S (pfh_index_successor_intro_executiontracesteps))) * pfh_trace_scale_successor_intro_execution) + (pfh_after_successor_intro_executiontracestepsstep))) /\ (((((exists pfa_gap_successor_intro_executiontracestepsstepmultiplyleft. pfa_gap_successor_intro_executiontracestepsstepmultiplyleft + S (pfh_before_successor_intro_executiontracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_executiontracestepsstepmultiplyright. pfa_gap_successor_intro_executiontracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_executiontracestepsstepmultiplyresultbound. pfa_gap_successor_intro_executiontracestepsstepmultiplyresultbound + S (pfh_product_successor_intro_executiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_executiontracestepsstepmultiplyresultcongruence pfa_offset_right_successor_intro_executiontracestepsstepmultiplyresultcongruence. ((pfh_before_successor_intro_executiontracestepsstep) * (t)) + (p) * pfa_offset_left_successor_intro_executiontracestepsstepmultiplyresultcongruence = (pfh_product_successor_intro_executiontracestepsstep) + (p) * pfa_offset_right_successor_intro_executiontracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_intro_executiontracestepsstepaddleft. pfa_gap_successor_intro_executiontracestepsstepaddleft + S (pfh_product_successor_intro_executiontracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_executiontracestepsstepaddright. pfa_gap_successor_intro_executiontracestepsstepaddright + S (pfh_coefficient_successor_intro_executiontracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_intro_executiontracestepsstepaddresultbound. pfa_gap_successor_intro_executiontracestepsstepaddresultbound + S (pfh_after_successor_intro_executiontracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_executiontracestepsstepaddresultcongruence pfa_offset_right_successor_intro_executiontracestepsstepaddresultcongruence. ((pfh_product_successor_intro_executiontracestepsstep) + (pfh_coefficient_successor_intro_executiontracestepsstep)) + (p) * pfa_offset_left_successor_intro_executiontracestepsstepaddresultcongruence = (pfh_after_successor_intro_executiontracestepsstep) + (p) * pfa_offset_right_successor_intro_executiontracestepsstepaddresultcongruence)))))))))))))))))))))))))))Constructive proof overview
Generated structural guide
Every actual canonical last multiply/add step extends an actual prefix to a full execution; the required coefficient bounds are derived, not assumed.
The unchanged tactic script uses 8 declared prerequisites and contains 112 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PP0023 prime_field_polynomial_horner_input_bounds matrix_rank_bounded_prefix_extend Alpha theorem; checked-use authorized PP0022 prime_field_polynomial_horner_exists PP0025 prime_field_polynomial_horner_successor_decompose beta_at_unique Stable theorem; checked-use authorized PP0029 prime_field_polynomial_horner_functional prime_field_multiply_functional Alpha theorem; checked-use authorized prime_field_add_functional 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 (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hboundsL15–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner input bounds.
- L15
have hbounds : Lt(t,p) ∧ BetaPrefixInto(b,c,l,p)Definitions: BetaPrefixIntoLt - L16
specialize prime_field_polynomial_horner_input_bounds (p) - L17
specialize prime_field_polynomial_horner_input_bounds (b) - L18
specialize prime_field_polynomial_horner_input_bounds (c) - L19
specialize prime_field_polynomial_horner_input_bounds (t) - L20
specialize prime_field_polynomial_horner_input_bounds (l) - L21
specialize prime_field_polynomial_horner_input_bounds (h) - L22
apply prime_field_polynomial_horner_input_bounds - L23
exact hh
04Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hbounds
05Establish hrcopyL25–26
06Separate the logical casesL27–28
07Establish hcoeffL29–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix extend.
- L29
have hcoeff : BetaPrefixInto(b,c,S l,p)Definitions: BetaPrefixInto - L30
specialize matrix_rank_bounded_prefix_extend (b) - L31
specialize matrix_rank_bounded_prefix_extend (c) - L32
specialize matrix_rank_bounded_prefix_extend (l) - L33
specialize matrix_rank_bounded_prefix_extend (p) - L34
specialize matrix_rank_bounded_prefix_extend (a) - L35
apply matrix_rank_bounded_prefix_extend - L36
exact hbounds_right - L37
exact ha - L38
exact hrcopy_right_left
08Establish heL39–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner exists.
- L39
have he : ∃ s. FpHorner(p,b,c,t,S l,s)Definitions: FpHorner - L40
specialize prime_field_polynomial_horner_exists (p) - L41
specialize prime_field_polynomial_horner_exists (b) - L42
specialize prime_field_polynomial_horner_exists (c) - L43
specialize prime_field_polynomial_horner_exists (t) - L44
specialize prime_field_polynomial_horner_exists (S l) - L45
apply prime_field_polynomial_horner_exists - L46
exact hp - L47
exact hcoeff - L48
exact hbounds_left
09Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases he
10Establish hsL50–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner successor decompose.
- L50
- L51
specialize prime_field_polynomial_horner_successor_decompose (p) - L52
specialize prime_field_polynomial_horner_successor_decompose (b) - L53
specialize prime_field_polynomial_horner_successor_decompose (c) - L54
specialize prime_field_polynomial_horner_successor_decompose (t) - L55
specialize prime_field_polynomial_horner_successor_decompose (l) - L56
specialize prime_field_polynomial_horner_successor_decompose (x) - L57
apply prime_field_polynomial_horner_successor_decompose - L58
exact he_witness
11Separate the logical casesL59–64
12Establish haeL65–73
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
13Establish hheL74–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner functional.
- L74
have hhe : x2=h - L75
specialize prime_field_polynomial_horner_functional (p) - L76
specialize prime_field_polynomial_horner_functional (b) - L77
specialize prime_field_polynomial_horner_functional (c) - L78
specialize prime_field_polynomial_horner_functional (t) - L79
specialize prime_field_polynomial_horner_functional (l) - L80
specialize prime_field_polynomial_horner_functional (x2) - L81
specialize prime_field_polynomial_horner_functional (h) - L82
apply prime_field_polynomial_horner_functional - L83
exact hp
14Use earlier factsL84–85
15Calculate and transport equalitiesL86–87
16Establish hkeL88–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply functional.
- L88
have hke : x3=k - L89
specialize prime_field_multiply_functional (p) - L90
specialize prime_field_multiply_functional (h) - L91
specialize prime_field_multiply_functional (t) - L92
specialize prime_field_multiply_functional (x3) - L93
specialize prime_field_multiply_functional (k) - L94
apply prime_field_multiply_functional - L95
exact hs_witness_witness_witness_right_right_left - L96
exact hm - L97
rewrite hae at hs_witness_witness_witness_right_right_right
17Calculate and transport equalitiesL98–100
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
18Establish hreL101–110
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field add functional.
- L101
have hre : x=r - L102
specialize prime_field_add_functional (p) - L103
specialize prime_field_add_functional (k) - L104
specialize prime_field_add_functional (a) - L105
specialize prime_field_add_functional (x) - L106
specialize prime_field_add_functional (r) - L107
apply prime_field_add_functional - L108
exact hs_witness_witness_witness_right_right_right - L109
exact hr - L110
rewrite hre at he_witness
19Calculate and transport equalitiesL111–111
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L111
rewrite hre at he_witness
20Use earlier factsL112–112
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L112
exact he_witness
Original exact command ledger · 112 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
intro t - 0005
intro l - 0006
intro a - 0007
intro h - 0008
intro k - 0009
intro r - 0010
intro hp - 0011
intro ha - 0012
intro hh - 0013
intro hm - 0014
intro hr - 0015
have hbounds : ((exists pfa_gap_successor_intro_base. pfa_gap_successor_intro_base + S (t) = (p)) /\ ((forall fom_index_pfp_successor_intro_prefix_bounds. (exists fom_gap_pfp_successor_intro_prefix_bounds_index_bound. fom_gap_pfp_successor_intro_prefix_bounds_index_bound + S (fom_index_pfp_successor_intro_prefix_bounds) = l) -> exists fom_value_pfp_successor_intro_prefix_bounds. ((((exists fom_beta_height_pfp_successor_intro_prefix_bounds_entry. fom_beta_height_pfp_successor_intro_prefix_bounds_entry + S (fom_value_pfp_successor_intro_prefix_bounds) = S ((S (fom_index_pfp_successor_intro_prefix_bounds)) * c)) /\ exists fom_beta_quotient_pfp_successor_intro_prefix_bounds_entry. b = fom_beta_quotient_pfp_successor_intro_prefix_bounds_entry * S ((S (fom_index_pfp_successor_intro_prefix_bounds)) * c) + (fom_value_pfp_successor_intro_prefix_bounds))) /\ (exists fom_gap_pfp_successor_intro_prefix_bounds_value_bound. fom_gap_pfp_successor_intro_prefix_bounds_value_bound + S (fom_value_pfp_successor_intro_prefix_bounds) = p))))) - 0016
specialize prime_field_polynomial_horner_input_bounds (p) - 0017
specialize prime_field_polynomial_horner_input_bounds (b) - 0018
specialize prime_field_polynomial_horner_input_bounds (c) - 0019
specialize prime_field_polynomial_horner_input_bounds (t) - 0020
specialize prime_field_polynomial_horner_input_bounds (l) - 0021
specialize prime_field_polynomial_horner_input_bounds (h) - 0022
apply prime_field_polynomial_horner_input_bounds - 0023
exact hh - 0024
cases hbounds - 0025
have hrcopy : ((exists pfa_gap_successor_intro_operation_copyleft. pfa_gap_successor_intro_operation_copyleft + S (k) = (p)) /\ (((exists pfa_gap_successor_intro_operation_copyright. pfa_gap_successor_intro_operation_copyright + S (a) = (p)) /\ ((((exists pfa_gap_successor_intro_operation_copyresultbound. pfa_gap_successor_intro_operation_copyresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_successor_intro_operation_copyresultcongruence pfa_offset_right_successor_intro_operation_copyresultcongruence. ((k) + (a)) + (p) * pfa_offset_left_successor_intro_operation_copyresultcongruence = (r) + (p) * pfa_offset_right_successor_intro_operation_copyresultcongruence)))))))) - 0026
exact hr - 0027
cases hrcopy - 0028
cases hrcopy_right - 0029
have hcoeff : forall fom_index_pfp_successor_intro_coefficients. (exists fom_gap_pfp_successor_intro_coefficients_index_bound. fom_gap_pfp_successor_intro_coefficients_index_bound + S (fom_index_pfp_successor_intro_coefficients) = S l) -> exists fom_value_pfp_successor_intro_coefficients. ((((exists fom_beta_height_pfp_successor_intro_coefficients_entry. fom_beta_height_pfp_successor_intro_coefficients_entry + S (fom_value_pfp_successor_intro_coefficients) = S ((S (fom_index_pfp_successor_intro_coefficients)) * c)) /\ exists fom_beta_quotient_pfp_successor_intro_coefficients_entry. b = fom_beta_quotient_pfp_successor_intro_coefficients_entry * S ((S (fom_index_pfp_successor_intro_coefficients)) * c) + (fom_value_pfp_successor_intro_coefficients))) /\ (exists fom_gap_pfp_successor_intro_coefficients_value_bound. fom_gap_pfp_successor_intro_coefficients_value_bound + S (fom_value_pfp_successor_intro_coefficients) = p)) - 0030
specialize matrix_rank_bounded_prefix_extend (b) - 0031
specialize matrix_rank_bounded_prefix_extend (c) - 0032
specialize matrix_rank_bounded_prefix_extend (l) - 0033
specialize matrix_rank_bounded_prefix_extend (p) - 0034
specialize matrix_rank_bounded_prefix_extend (a) - 0035
apply matrix_rank_bounded_prefix_extend - 0036
exact hbounds_right - 0037
exact ha - 0038
exact hrcopy_right_left - 0039
have he : exists s. (exists pfh_trace_code_successor_intro_candidate pfh_trace_scale_successor_intro_candidate. (((exists pfa_gap_successor_intro_candidatetracebase. pfa_gap_successor_intro_candidatetracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_intro_candidatetraceinitial. ff_h_pfp_successor_intro_candidatetraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_intro_candidate)) /\ exists ff_q_pfp_successor_intro_candidatetraceinitial. pfh_trace_code_successor_intro_candidate = ff_q_pfp_successor_intro_candidatetraceinitial * S ((S (0)) * pfh_trace_scale_successor_intro_candidate) + (0))) /\ (((((exists ff_h_pfp_successor_intro_candidatetraceterminal. ff_h_pfp_successor_intro_candidatetraceterminal + S (s) = S ((S (S l)) * pfh_trace_scale_successor_intro_candidate)) /\ exists ff_q_pfp_successor_intro_candidatetraceterminal. pfh_trace_code_successor_intro_candidate = ff_q_pfp_successor_intro_candidatetraceterminal * S ((S (S l)) * pfh_trace_scale_successor_intro_candidate) + (s))) /\ ((forall pfh_index_successor_intro_candidatetracesteps. (exists pfa_gap_successor_intro_candidatetracestepsindex. pfa_gap_successor_intro_candidatetracestepsindex + S (pfh_index_successor_intro_candidatetracesteps) = (S l)) -> (exists pfh_coefficient_successor_intro_candidatetracestepsstep pfh_before_successor_intro_candidatetracestepsstep pfh_after_successor_intro_candidatetracestepsstep pfh_product_successor_intro_candidatetracestepsstep. ((((exists ff_h_pfp_successor_intro_candidatetracestepsstepcoefficient. ff_h_pfp_successor_intro_candidatetracestepsstepcoefficient + S (pfh_coefficient_successor_intro_candidatetracestepsstep) = S ((S (pfh_index_successor_intro_candidatetracesteps)) * c)) /\ exists ff_q_pfp_successor_intro_candidatetracestepsstepcoefficient. b = ff_q_pfp_successor_intro_candidatetracestepsstepcoefficient * S ((S (pfh_index_successor_intro_candidatetracesteps)) * c) + (pfh_coefficient_successor_intro_candidatetracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_candidatetracestepsstepbefore. ff_h_pfp_successor_intro_candidatetracestepsstepbefore + S (pfh_before_successor_intro_candidatetracestepsstep) = S ((S (pfh_index_successor_intro_candidatetracesteps)) * pfh_trace_scale_successor_intro_candidate)) /\ exists ff_q_pfp_successor_intro_candidatetracestepsstepbefore. pfh_trace_code_successor_intro_candidate = ff_q_pfp_successor_intro_candidatetracestepsstepbefore * S ((S (pfh_index_successor_intro_candidatetracesteps)) * pfh_trace_scale_successor_intro_candidate) + (pfh_before_successor_intro_candidatetracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_candidatetracestepsstepafter. ff_h_pfp_successor_intro_candidatetracestepsstepafter + S (pfh_after_successor_intro_candidatetracestepsstep) = S ((S (S (pfh_index_successor_intro_candidatetracesteps))) * pfh_trace_scale_successor_intro_candidate)) /\ exists ff_q_pfp_successor_intro_candidatetracestepsstepafter. pfh_trace_code_successor_intro_candidate = ff_q_pfp_successor_intro_candidatetracestepsstepafter * S ((S (S (pfh_index_successor_intro_candidatetracesteps))) * pfh_trace_scale_successor_intro_candidate) + (pfh_after_successor_intro_candidatetracestepsstep))) /\ (((((exists pfa_gap_successor_intro_candidatetracestepsstepmultiplyleft. pfa_gap_successor_intro_candidatetracestepsstepmultiplyleft + S (pfh_before_successor_intro_candidatetracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_candidatetracestepsstepmultiplyright. pfa_gap_successor_intro_candidatetracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_candidatetracestepsstepmultiplyresultbound. pfa_gap_successor_intro_candidatetracestepsstepmultiplyresultbound + S (pfh_product_successor_intro_candidatetracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidatetracestepsstepmultiplyresultcongruence pfa_offset_right_successor_intro_candidatetracestepsstepmultiplyresultcongruence. ((pfh_before_successor_intro_candidatetracestepsstep) * (t)) + (p) * pfa_offset_left_successor_intro_candidatetracestepsstepmultiplyresultcongruence = (pfh_product_successor_intro_candidatetracestepsstep) + (p) * pfa_offset_right_successor_intro_candidatetracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_intro_candidatetracestepsstepaddleft. pfa_gap_successor_intro_candidatetracestepsstepaddleft + S (pfh_product_successor_intro_candidatetracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_candidatetracestepsstepaddright. pfa_gap_successor_intro_candidatetracestepsstepaddright + S (pfh_coefficient_successor_intro_candidatetracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_intro_candidatetracestepsstepaddresultbound. pfa_gap_successor_intro_candidatetracestepsstepaddresultbound + S (pfh_after_successor_intro_candidatetracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidatetracestepsstepaddresultcongruence pfa_offset_right_successor_intro_candidatetracestepsstepaddresultcongruence. ((pfh_product_successor_intro_candidatetracestepsstep) + (pfh_coefficient_successor_intro_candidatetracestepsstep)) + (p) * pfa_offset_left_successor_intro_candidatetracestepsstepaddresultcongruence = (pfh_after_successor_intro_candidatetracestepsstep) + (p) * pfa_offset_right_successor_intro_candidatetracestepsstepaddresultcongruence))))))))))))))))))))))))))) - 0040
specialize prime_field_polynomial_horner_exists (p) - 0041
specialize prime_field_polynomial_horner_exists (b) - 0042
specialize prime_field_polynomial_horner_exists (c) - 0043
specialize prime_field_polynomial_horner_exists (t) - 0044
specialize prime_field_polynomial_horner_exists (S l) - 0045
apply prime_field_polynomial_horner_exists - 0046
exact hp - 0047
exact hcoeff - 0048
exact hbounds_left - 0049
cases he - 0050
have hs : exists a h k. ((((exists ff_h_pfp_successor_intro_candidate_coefficient. ff_h_pfp_successor_intro_candidate_coefficient + S (a) = S ((S (l)) * c)) /\ exists ff_q_pfp_successor_intro_candidate_coefficient. b = ff_q_pfp_successor_intro_candidate_coefficient * S ((S (l)) * c) + (a))) /\ (((exists pfh_trace_code_successor_intro_candidate_prefix pfh_trace_scale_successor_intro_candidate_prefix. (((exists pfa_gap_successor_intro_candidate_prefixtracebase. pfa_gap_successor_intro_candidate_prefixtracebase + S (t) = (p)) /\ (((((exists ff_h_pfp_successor_intro_candidate_prefixtraceinitial. ff_h_pfp_successor_intro_candidate_prefixtraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_successor_intro_candidate_prefix)) /\ exists ff_q_pfp_successor_intro_candidate_prefixtraceinitial. pfh_trace_code_successor_intro_candidate_prefix = ff_q_pfp_successor_intro_candidate_prefixtraceinitial * S ((S (0)) * pfh_trace_scale_successor_intro_candidate_prefix) + (0))) /\ (((((exists ff_h_pfp_successor_intro_candidate_prefixtraceterminal. ff_h_pfp_successor_intro_candidate_prefixtraceterminal + S (h) = S ((S (l)) * pfh_trace_scale_successor_intro_candidate_prefix)) /\ exists ff_q_pfp_successor_intro_candidate_prefixtraceterminal. pfh_trace_code_successor_intro_candidate_prefix = ff_q_pfp_successor_intro_candidate_prefixtraceterminal * S ((S (l)) * pfh_trace_scale_successor_intro_candidate_prefix) + (h))) /\ ((forall pfh_index_successor_intro_candidate_prefixtracesteps. (exists pfa_gap_successor_intro_candidate_prefixtracestepsindex. pfa_gap_successor_intro_candidate_prefixtracestepsindex + S (pfh_index_successor_intro_candidate_prefixtracesteps) = (l)) -> (exists pfh_coefficient_successor_intro_candidate_prefixtracestepsstep pfh_before_successor_intro_candidate_prefixtracestepsstep pfh_after_successor_intro_candidate_prefixtracestepsstep pfh_product_successor_intro_candidate_prefixtracestepsstep. ((((exists ff_h_pfp_successor_intro_candidate_prefixtracestepsstepcoefficient. ff_h_pfp_successor_intro_candidate_prefixtracestepsstepcoefficient + S (pfh_coefficient_successor_intro_candidate_prefixtracestepsstep) = S ((S (pfh_index_successor_intro_candidate_prefixtracesteps)) * c)) /\ exists ff_q_pfp_successor_intro_candidate_prefixtracestepsstepcoefficient. b = ff_q_pfp_successor_intro_candidate_prefixtracestepsstepcoefficient * S ((S (pfh_index_successor_intro_candidate_prefixtracesteps)) * c) + (pfh_coefficient_successor_intro_candidate_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_candidate_prefixtracestepsstepbefore. ff_h_pfp_successor_intro_candidate_prefixtracestepsstepbefore + S (pfh_before_successor_intro_candidate_prefixtracestepsstep) = S ((S (pfh_index_successor_intro_candidate_prefixtracesteps)) * pfh_trace_scale_successor_intro_candidate_prefix)) /\ exists ff_q_pfp_successor_intro_candidate_prefixtracestepsstepbefore. pfh_trace_code_successor_intro_candidate_prefix = ff_q_pfp_successor_intro_candidate_prefixtracestepsstepbefore * S ((S (pfh_index_successor_intro_candidate_prefixtracesteps)) * pfh_trace_scale_successor_intro_candidate_prefix) + (pfh_before_successor_intro_candidate_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_successor_intro_candidate_prefixtracestepsstepafter. ff_h_pfp_successor_intro_candidate_prefixtracestepsstepafter + S (pfh_after_successor_intro_candidate_prefixtracestepsstep) = S ((S (S (pfh_index_successor_intro_candidate_prefixtracesteps))) * pfh_trace_scale_successor_intro_candidate_prefix)) /\ exists ff_q_pfp_successor_intro_candidate_prefixtracestepsstepafter. pfh_trace_code_successor_intro_candidate_prefix = ff_q_pfp_successor_intro_candidate_prefixtracestepsstepafter * S ((S (S (pfh_index_successor_intro_candidate_prefixtracesteps))) * pfh_trace_scale_successor_intro_candidate_prefix) + (pfh_after_successor_intro_candidate_prefixtracestepsstep))) /\ (((((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyleft. pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyleft + S (pfh_before_successor_intro_candidate_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyright. pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyresultbound. pfa_gap_successor_intro_candidate_prefixtracestepsstepmultiplyresultbound + S (pfh_product_successor_intro_candidate_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidate_prefixtracestepsstepmultiplyresultcongruence pfa_offset_right_successor_intro_candidate_prefixtracestepsstepmultiplyresultcongruence. ((pfh_before_successor_intro_candidate_prefixtracestepsstep) * (t)) + (p) * pfa_offset_left_successor_intro_candidate_prefixtracestepsstepmultiplyresultcongruence = (pfh_product_successor_intro_candidate_prefixtracestepsstep) + (p) * pfa_offset_right_successor_intro_candidate_prefixtracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepaddleft. pfa_gap_successor_intro_candidate_prefixtracestepsstepaddleft + S (pfh_product_successor_intro_candidate_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepaddright. pfa_gap_successor_intro_candidate_prefixtracestepsstepaddright + S (pfh_coefficient_successor_intro_candidate_prefixtracestepsstep) = (p)) /\ ((((exists pfa_gap_successor_intro_candidate_prefixtracestepsstepaddresultbound. pfa_gap_successor_intro_candidate_prefixtracestepsstepaddresultbound + S (pfh_after_successor_intro_candidate_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidate_prefixtracestepsstepaddresultcongruence pfa_offset_right_successor_intro_candidate_prefixtracestepsstepaddresultcongruence. ((pfh_product_successor_intro_candidate_prefixtracestepsstep) + (pfh_coefficient_successor_intro_candidate_prefixtracestepsstep)) + (p) * pfa_offset_left_successor_intro_candidate_prefixtracestepsstepaddresultcongruence = (pfh_after_successor_intro_candidate_prefixtracestepsstep) + (p) * pfa_offset_right_successor_intro_candidate_prefixtracestepsstepaddresultcongruence))))))))))))))))))))))))))) /\ (((((exists pfa_gap_successor_intro_candidate_multiplyleft. pfa_gap_successor_intro_candidate_multiplyleft + S (h) = (p)) /\ (((exists pfa_gap_successor_intro_candidate_multiplyright. pfa_gap_successor_intro_candidate_multiplyright + S (t) = (p)) /\ ((((exists pfa_gap_successor_intro_candidate_multiplyresultbound. pfa_gap_successor_intro_candidate_multiplyresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidate_multiplyresultcongruence pfa_offset_right_successor_intro_candidate_multiplyresultcongruence. ((h) * (t)) + (p) * pfa_offset_left_successor_intro_candidate_multiplyresultcongruence = (k) + (p) * pfa_offset_right_successor_intro_candidate_multiplyresultcongruence))))))))) /\ ((((exists pfa_gap_successor_intro_candidate_addleft. pfa_gap_successor_intro_candidate_addleft + S (k) = (p)) /\ (((exists pfa_gap_successor_intro_candidate_addright. pfa_gap_successor_intro_candidate_addright + S (a) = (p)) /\ ((((exists pfa_gap_successor_intro_candidate_addresultbound. pfa_gap_successor_intro_candidate_addresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_successor_intro_candidate_addresultcongruence pfa_offset_right_successor_intro_candidate_addresultcongruence. ((k) + (a)) + (p) * pfa_offset_left_successor_intro_candidate_addresultcongruence = (x) + (p) * pfa_offset_right_successor_intro_candidate_addresultcongruence))))))))))))))) - 0051
specialize prime_field_polynomial_horner_successor_decompose (p) - 0052
specialize prime_field_polynomial_horner_successor_decompose (b) - 0053
specialize prime_field_polynomial_horner_successor_decompose (c) - 0054
specialize prime_field_polynomial_horner_successor_decompose (t) - 0055
specialize prime_field_polynomial_horner_successor_decompose (l) - 0056
specialize prime_field_polynomial_horner_successor_decompose (x) - 0057
apply prime_field_polynomial_horner_successor_decompose - 0058
exact he_witness - 0059
cases hs - 0060
cases hs_witness - 0061
cases hs_witness_witness - 0062
cases hs_witness_witness_witness - 0063
cases hs_witness_witness_witness_right - 0064
cases hs_witness_witness_witness_right_right - 0065
have hae : x1=a - 0066
specialize beta_at_unique (b) - 0067
specialize beta_at_unique (c) - 0068
specialize beta_at_unique (l) - 0069
specialize beta_at_unique (x1) - 0070
specialize beta_at_unique (a) - 0071
apply beta_at_unique - 0072
exact hs_witness_witness_witness_left - 0073
exact ha - 0074
have hhe : x2=h - 0075
specialize prime_field_polynomial_horner_functional (p) - 0076
specialize prime_field_polynomial_horner_functional (b) - 0077
specialize prime_field_polynomial_horner_functional (c) - 0078
specialize prime_field_polynomial_horner_functional (t) - 0079
specialize prime_field_polynomial_horner_functional (l) - 0080
specialize prime_field_polynomial_horner_functional (x2) - 0081
specialize prime_field_polynomial_horner_functional (h) - 0082
apply prime_field_polynomial_horner_functional - 0083
exact hp - 0084
exact hs_witness_witness_witness_right_left - 0085
exact hh - 0086
rewrite hhe at hs_witness_witness_witness_right_right_left - 0087
rewrite hhe at hs_witness_witness_witness_right_right_left - 0088
have hke : x3=k - 0089
specialize prime_field_multiply_functional (p) - 0090
specialize prime_field_multiply_functional (h) - 0091
specialize prime_field_multiply_functional (t) - 0092
specialize prime_field_multiply_functional (x3) - 0093
specialize prime_field_multiply_functional (k) - 0094
apply prime_field_multiply_functional - 0095
exact hs_witness_witness_witness_right_right_left - 0096
exact hm - 0097
rewrite hae at hs_witness_witness_witness_right_right_right - 0098
rewrite hae at hs_witness_witness_witness_right_right_right - 0099
rewrite hke at hs_witness_witness_witness_right_right_right - 0100
rewrite hke at hs_witness_witness_witness_right_right_right - 0101
have hre : x=r - 0102
specialize prime_field_add_functional (p) - 0103
specialize prime_field_add_functional (k) - 0104
specialize prime_field_add_functional (a) - 0105
specialize prime_field_add_functional (x) - 0106
specialize prime_field_add_functional (r) - 0107
apply prime_field_add_functional - 0108
exact hs_witness_witness_witness_right_right_right - 0109
exact hr - 0110
rewrite hre at he_witness - 0111
rewrite hre at he_witness - 0112
exact he_witness