PQ004E

prime_field_polynomial_horner_transition_values

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

Adjacent actual prefix values satisfy the genuine multiply-then-add recurrence, even when their execution histories use different codes.

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 a i h v r. (~((p) = 1) /\ forall pfa_factor_left_transition_prime pfa_factor_right_transition_prime. (p) = pfa_factor_left_transition_prime * pfa_factor_right_transition_prime -> pfa_factor_left_transition_prime = 1 \/ pfa_factor_right_transition_prime = 1) -> (exists pfh_trace_code_transition_before pfh_trace_scale_transition_before. (((exists pfa_gap_transition_beforetracebase. pfa_gap_transition_beforetracebase + S (a) = (p)) /\ (((((exists ff_h_pfp_transition_beforetraceinitial. ff_h_pfp_transition_beforetraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_transition_before)) /\ exists ff_q_pfp_transition_beforetraceinitial. pfh_trace_code_transition_before = ff_q_pfp_transition_beforetraceinitial * S ((S (0)) * pfh_trace_scale_transition_before) + (0))) /\ (((((exists ff_h_pfp_transition_beforetraceterminal. ff_h_pfp_transition_beforetraceterminal + S (h) = S ((S (i)) * pfh_trace_scale_transition_before)) /\ exists ff_q_pfp_transition_beforetraceterminal. pfh_trace_code_transition_before = ff_q_pfp_transition_beforetraceterminal * S ((S (i)) * pfh_trace_scale_transition_before) + (h))) /\ ((forall pfh_index_transition_beforetracesteps. (exists pfa_gap_transition_beforetracestepsindex. pfa_gap_transition_beforetracestepsindex + S (pfh_index_transition_beforetracesteps) = (i)) -> (exists pfh_coefficient_transition_beforetracestepsstep pfh_before_transition_beforetracestepsstep pfh_after_transition_beforetracestepsstep pfh_product_transition_beforetracestepsstep. ((((exists ff_h_pfp_transition_beforetracestepsstepcoefficient. ff_h_pfp_transition_beforetracestepsstepcoefficient + S (pfh_coefficient_transition_beforetracestepsstep) = S ((S (pfh_index_transition_beforetracesteps)) * c)) /\ exists ff_q_pfp_transition_beforetracestepsstepcoefficient. b = ff_q_pfp_transition_beforetracestepsstepcoefficient * S ((S (pfh_index_transition_beforetracesteps)) * c) + (pfh_coefficient_transition_beforetracestepsstep))) /\ (((((exists ff_h_pfp_transition_beforetracestepsstepbefore. ff_h_pfp_transition_beforetracestepsstepbefore + S (pfh_before_transition_beforetracestepsstep) = S ((S (pfh_index_transition_beforetracesteps)) * pfh_trace_scale_transition_before)) /\ exists ff_q_pfp_transition_beforetracestepsstepbefore. pfh_trace_code_transition_before = ff_q_pfp_transition_beforetracestepsstepbefore * S ((S (pfh_index_transition_beforetracesteps)) * pfh_trace_scale_transition_before) + (pfh_before_transition_beforetracestepsstep))) /\ (((((exists ff_h_pfp_transition_beforetracestepsstepafter. ff_h_pfp_transition_beforetracestepsstepafter + S (pfh_after_transition_beforetracestepsstep) = S ((S (S (pfh_index_transition_beforetracesteps))) * pfh_trace_scale_transition_before)) /\ exists ff_q_pfp_transition_beforetracestepsstepafter. pfh_trace_code_transition_before = ff_q_pfp_transition_beforetracestepsstepafter * S ((S (S (pfh_index_transition_beforetracesteps))) * pfh_trace_scale_transition_before) + (pfh_after_transition_beforetracestepsstep))) /\ (((((exists pfa_gap_transition_beforetracestepsstepmultiplyleft. pfa_gap_transition_beforetracestepsstepmultiplyleft + S (pfh_before_transition_beforetracestepsstep) = (p)) /\ (((exists pfa_gap_transition_beforetracestepsstepmultiplyright. pfa_gap_transition_beforetracestepsstepmultiplyright + S (a) = (p)) /\ ((((exists pfa_gap_transition_beforetracestepsstepmultiplyresultbound. pfa_gap_transition_beforetracestepsstepmultiplyresultbound + S (pfh_product_transition_beforetracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_beforetracestepsstepmultiplyresultcongruence pfa_offset_right_transition_beforetracestepsstepmultiplyresultcongruence. ((pfh_before_transition_beforetracestepsstep) * (a)) + (p) * pfa_offset_left_transition_beforetracestepsstepmultiplyresultcongruence = (pfh_product_transition_beforetracestepsstep) + (p) * pfa_offset_right_transition_beforetracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_transition_beforetracestepsstepaddleft. pfa_gap_transition_beforetracestepsstepaddleft + S (pfh_product_transition_beforetracestepsstep) = (p)) /\ (((exists pfa_gap_transition_beforetracestepsstepaddright. pfa_gap_transition_beforetracestepsstepaddright + S (pfh_coefficient_transition_beforetracestepsstep) = (p)) /\ ((((exists pfa_gap_transition_beforetracestepsstepaddresultbound. pfa_gap_transition_beforetracestepsstepaddresultbound + S (pfh_after_transition_beforetracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_beforetracestepsstepaddresultcongruence pfa_offset_right_transition_beforetracestepsstepaddresultcongruence. ((pfh_product_transition_beforetracestepsstep) + (pfh_coefficient_transition_beforetracestepsstep)) + (p) * pfa_offset_left_transition_beforetracestepsstepaddresultcongruence = (pfh_after_transition_beforetracestepsstep) + (p) * pfa_offset_right_transition_beforetracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> (exists pfh_trace_code_transition_after pfh_trace_scale_transition_after. (((exists pfa_gap_transition_aftertracebase. pfa_gap_transition_aftertracebase + S (a) = (p)) /\ (((((exists ff_h_pfp_transition_aftertraceinitial. ff_h_pfp_transition_aftertraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_transition_after)) /\ exists ff_q_pfp_transition_aftertraceinitial. pfh_trace_code_transition_after = ff_q_pfp_transition_aftertraceinitial * S ((S (0)) * pfh_trace_scale_transition_after) + (0))) /\ (((((exists ff_h_pfp_transition_aftertraceterminal. ff_h_pfp_transition_aftertraceterminal + S (r) = S ((S (S i)) * pfh_trace_scale_transition_after)) /\ exists ff_q_pfp_transition_aftertraceterminal. pfh_trace_code_transition_after = ff_q_pfp_transition_aftertraceterminal * S ((S (S i)) * pfh_trace_scale_transition_after) + (r))) /\ ((forall pfh_index_transition_aftertracesteps. (exists pfa_gap_transition_aftertracestepsindex. pfa_gap_transition_aftertracestepsindex + S (pfh_index_transition_aftertracesteps) = (S i)) -> (exists pfh_coefficient_transition_aftertracestepsstep pfh_before_transition_aftertracestepsstep pfh_after_transition_aftertracestepsstep pfh_product_transition_aftertracestepsstep. ((((exists ff_h_pfp_transition_aftertracestepsstepcoefficient. ff_h_pfp_transition_aftertracestepsstepcoefficient + S (pfh_coefficient_transition_aftertracestepsstep) = S ((S (pfh_index_transition_aftertracesteps)) * c)) /\ exists ff_q_pfp_transition_aftertracestepsstepcoefficient. b = ff_q_pfp_transition_aftertracestepsstepcoefficient * S ((S (pfh_index_transition_aftertracesteps)) * c) + (pfh_coefficient_transition_aftertracestepsstep))) /\ (((((exists ff_h_pfp_transition_aftertracestepsstepbefore. ff_h_pfp_transition_aftertracestepsstepbefore + S (pfh_before_transition_aftertracestepsstep) = S ((S (pfh_index_transition_aftertracesteps)) * pfh_trace_scale_transition_after)) /\ exists ff_q_pfp_transition_aftertracestepsstepbefore. pfh_trace_code_transition_after = ff_q_pfp_transition_aftertracestepsstepbefore * S ((S (pfh_index_transition_aftertracesteps)) * pfh_trace_scale_transition_after) + (pfh_before_transition_aftertracestepsstep))) /\ (((((exists ff_h_pfp_transition_aftertracestepsstepafter. ff_h_pfp_transition_aftertracestepsstepafter + S (pfh_after_transition_aftertracestepsstep) = S ((S (S (pfh_index_transition_aftertracesteps))) * pfh_trace_scale_transition_after)) /\ exists ff_q_pfp_transition_aftertracestepsstepafter. pfh_trace_code_transition_after = ff_q_pfp_transition_aftertracestepsstepafter * S ((S (S (pfh_index_transition_aftertracesteps))) * pfh_trace_scale_transition_after) + (pfh_after_transition_aftertracestepsstep))) /\ (((((exists pfa_gap_transition_aftertracestepsstepmultiplyleft. pfa_gap_transition_aftertracestepsstepmultiplyleft + S (pfh_before_transition_aftertracestepsstep) = (p)) /\ (((exists pfa_gap_transition_aftertracestepsstepmultiplyright. pfa_gap_transition_aftertracestepsstepmultiplyright + S (a) = (p)) /\ ((((exists pfa_gap_transition_aftertracestepsstepmultiplyresultbound. pfa_gap_transition_aftertracestepsstepmultiplyresultbound + S (pfh_product_transition_aftertracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_aftertracestepsstepmultiplyresultcongruence pfa_offset_right_transition_aftertracestepsstepmultiplyresultcongruence. ((pfh_before_transition_aftertracestepsstep) * (a)) + (p) * pfa_offset_left_transition_aftertracestepsstepmultiplyresultcongruence = (pfh_product_transition_aftertracestepsstep) + (p) * pfa_offset_right_transition_aftertracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_transition_aftertracestepsstepaddleft. pfa_gap_transition_aftertracestepsstepaddleft + S (pfh_product_transition_aftertracestepsstep) = (p)) /\ (((exists pfa_gap_transition_aftertracestepsstepaddright. pfa_gap_transition_aftertracestepsstepaddright + S (pfh_coefficient_transition_aftertracestepsstep) = (p)) /\ ((((exists pfa_gap_transition_aftertracestepsstepaddresultbound. pfa_gap_transition_aftertracestepsstepaddresultbound + S (pfh_after_transition_aftertracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_aftertracestepsstepaddresultcongruence pfa_offset_right_transition_aftertracestepsstepaddresultcongruence. ((pfh_product_transition_aftertracestepsstep) + (pfh_coefficient_transition_aftertracestepsstep)) + (p) * pfa_offset_left_transition_aftertracestepsstepaddresultcongruence = (pfh_after_transition_aftertracestepsstep) + (p) * pfa_offset_right_transition_aftertracestepsstepaddresultcongruence))))))))))))))))))))))))))) -> (((exists ff_h_pfp_transition_coefficient. ff_h_pfp_transition_coefficient + S (v) = S ((S (i)) * c)) /\ exists ff_q_pfp_transition_coefficient. b = ff_q_pfp_transition_coefficient * S ((S (i)) * c) + (v))) -> exists k. ((((exists pfa_gap_transition_productleft. pfa_gap_transition_productleft + S (h) = (p)) /\ (((exists pfa_gap_transition_productright. pfa_gap_transition_productright + S (a) = (p)) /\ ((((exists pfa_gap_transition_productresultbound. pfa_gap_transition_productresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_transition_productresultcongruence pfa_offset_right_transition_productresultcongruence. ((h) * (a)) + (p) * pfa_offset_left_transition_productresultcongruence = (k) + (p) * pfa_offset_right_transition_productresultcongruence))))))))) /\ ((((exists pfa_gap_transition_sumleft. pfa_gap_transition_sumleft + S (k) = (p)) /\ (((exists pfa_gap_transition_sumright. pfa_gap_transition_sumright + S (v) = (p)) /\ ((((exists pfa_gap_transition_sumresultbound. pfa_gap_transition_sumresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_transition_sumresultcongruence pfa_offset_right_transition_sumresultcongruence. ((k) + (v)) + (p) * pfa_offset_left_transition_sumresultcongruence = (r) + (p) * pfa_offset_right_transition_sumresultcongruence)))))))))))

Constructive proof overview

Generated structural guide

Adjacent actual prefix values satisfy the genuine multiply-then-add recurrence, even when their execution histories use different codes.

The unchanged tactic script uses 3 declared prerequisites and contains 56 exact native proof lines.

Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable

Proof neighborhood

Direct dependencies

prime_field_polynomial_horner_successor_decompose Alpha theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized prime_field_polynomial_horner_functional Alpha theorem; checked-use authorized

Direct 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

56 script commands · 11 reading checkpoints · 3 local claims

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.

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro b
  3. L3
    intro c
  4. L4
    intro a
  5. L5
    intro i
  6. L6
    intro h
  7. L7
    intro v
  8. L8
    intro r
  9. L9
    intro hp
  10. L10
    intro he
02Fix variables and assumptionsL11–12

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro hn
  2. L12
    intro hv
03Establish hdL13–21

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner successor decompose.

  1. L13
    have hd : ∃ v. ∃ h. ∃ k. BetaAt(b,c,i,v) ∧ (FpHorner(p,b,c,a,i,h) ∧ (FpMul(p,h,a,k) ∧ FpAdd(p,k,v,r)))Definitions: FpAddFpMulFpHornerBetaAt
  2. L14
    specialize prime_field_polynomial_horner_successor_decompose (p)
  3. L15
    specialize prime_field_polynomial_horner_successor_decompose (b)
  4. L16
    specialize prime_field_polynomial_horner_successor_decompose (c)
  5. L17
    specialize prime_field_polynomial_horner_successor_decompose (a)
  6. L18
    specialize prime_field_polynomial_horner_successor_decompose (i)
  7. L19
    specialize prime_field_polynomial_horner_successor_decompose (r)
  8. L20
    apply prime_field_polynomial_horner_successor_decompose
  9. L21
    exact hn
04Separate the logical casesL22–27

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L22
    cases hd
  2. L23
    cases hd_witness
  3. L24
    cases hd_witness_witness
  4. L25
    cases hd_witness_witness_witness
  5. L26
    cases hd_witness_witness_witness_right
  6. L27
    cases hd_witness_witness_witness_right_right
05Establish hveL28–36

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.

  1. L28
    have hve : x=v
  2. L29
    specialize beta_at_unique (b)
  3. L30
    specialize beta_at_unique (c)
  4. L31
    specialize beta_at_unique (i)
  5. L32
    specialize beta_at_unique (x)
  6. L33
    specialize beta_at_unique (v)
  7. L34
    apply beta_at_unique
  8. L35
    exact hd_witness_witness_witness_left
  9. L36
    exact hv
06Establish hheL37–46

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial horner functional.

  1. L37
    have hhe : x1=h
  2. L38
    specialize prime_field_polynomial_horner_functional (p)
  3. L39
    specialize prime_field_polynomial_horner_functional (b)
  4. L40
    specialize prime_field_polynomial_horner_functional (c)
  5. L41
    specialize prime_field_polynomial_horner_functional (a)
  6. L42
    specialize prime_field_polynomial_horner_functional (i)
  7. L43
    specialize prime_field_polynomial_horner_functional (x1)
  8. L44
    specialize prime_field_polynomial_horner_functional (h)
  9. L45
    apply prime_field_polynomial_horner_functional
  10. L46
    exact hp
07Use earlier factsL47–48

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L47
    exact hd_witness_witness_witness_right_left
  2. L48
    exact he
08Calculate and transport equalitiesL49–52

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L49
    rewrite hhe at hd_witness_witness_witness_right_right_left
  2. L50
    rewrite hhe at hd_witness_witness_witness_right_right_left
  3. L51
    rewrite hve at hd_witness_witness_witness_right_right_right
  4. L52
    rewrite hve at hd_witness_witness_witness_right_right_right
09Construct an explicit witnessL53–53

Supply the displayed value, then prove that it has the required property.

  1. L53
    exists x2
10Separate the logical casesL54–54

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L54
    split
11Use earlier factsL55–56

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L55
    exact hd_witness_witness_witness_right_right_left
  2. L56
    exact hd_witness_witness_witness_right_right_right

Library-wide reading audit

Original exact command ledger · 56 lines
  1. 0001intro p
  2. 0002intro b
  3. 0003intro c
  4. 0004intro a
  5. 0005intro i
  6. 0006intro h
  7. 0007intro v
  8. 0008intro r
  9. 0009intro hp
  10. 0010intro he
  11. 0011intro hn
  12. 0012intro hv
  13. 0013have hd : exists v h k. ((((exists ff_h_pfp_transition_chosen_coefficient. ff_h_pfp_transition_chosen_coefficient + S (v) = S ((S (i)) * c)) /\ exists ff_q_pfp_transition_chosen_coefficient. b = ff_q_pfp_transition_chosen_coefficient * S ((S (i)) * c) + (v))) /\ (((exists pfh_trace_code_transition_chosen_prefix pfh_trace_scale_transition_chosen_prefix. (((exists pfa_gap_transition_chosen_prefixtracebase. pfa_gap_transition_chosen_prefixtracebase + S (a) = (p)) /\ (((((exists ff_h_pfp_transition_chosen_prefixtraceinitial. ff_h_pfp_transition_chosen_prefixtraceinitial + S (0) = S ((S (0)) * pfh_trace_scale_transition_chosen_prefix)) /\ exists ff_q_pfp_transition_chosen_prefixtraceinitial. pfh_trace_code_transition_chosen_prefix = ff_q_pfp_transition_chosen_prefixtraceinitial * S ((S (0)) * pfh_trace_scale_transition_chosen_prefix) + (0))) /\ (((((exists ff_h_pfp_transition_chosen_prefixtraceterminal. ff_h_pfp_transition_chosen_prefixtraceterminal + S (h) = S ((S (i)) * pfh_trace_scale_transition_chosen_prefix)) /\ exists ff_q_pfp_transition_chosen_prefixtraceterminal. pfh_trace_code_transition_chosen_prefix = ff_q_pfp_transition_chosen_prefixtraceterminal * S ((S (i)) * pfh_trace_scale_transition_chosen_prefix) + (h))) /\ ((forall pfh_index_transition_chosen_prefixtracesteps. (exists pfa_gap_transition_chosen_prefixtracestepsindex. pfa_gap_transition_chosen_prefixtracestepsindex + S (pfh_index_transition_chosen_prefixtracesteps) = (i)) -> (exists pfh_coefficient_transition_chosen_prefixtracestepsstep pfh_before_transition_chosen_prefixtracestepsstep pfh_after_transition_chosen_prefixtracestepsstep pfh_product_transition_chosen_prefixtracestepsstep. ((((exists ff_h_pfp_transition_chosen_prefixtracestepsstepcoefficient. ff_h_pfp_transition_chosen_prefixtracestepsstepcoefficient + S (pfh_coefficient_transition_chosen_prefixtracestepsstep) = S ((S (pfh_index_transition_chosen_prefixtracesteps)) * c)) /\ exists ff_q_pfp_transition_chosen_prefixtracestepsstepcoefficient. b = ff_q_pfp_transition_chosen_prefixtracestepsstepcoefficient * S ((S (pfh_index_transition_chosen_prefixtracesteps)) * c) + (pfh_coefficient_transition_chosen_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_transition_chosen_prefixtracestepsstepbefore. ff_h_pfp_transition_chosen_prefixtracestepsstepbefore + S (pfh_before_transition_chosen_prefixtracestepsstep) = S ((S (pfh_index_transition_chosen_prefixtracesteps)) * pfh_trace_scale_transition_chosen_prefix)) /\ exists ff_q_pfp_transition_chosen_prefixtracestepsstepbefore. pfh_trace_code_transition_chosen_prefix = ff_q_pfp_transition_chosen_prefixtracestepsstepbefore * S ((S (pfh_index_transition_chosen_prefixtracesteps)) * pfh_trace_scale_transition_chosen_prefix) + (pfh_before_transition_chosen_prefixtracestepsstep))) /\ (((((exists ff_h_pfp_transition_chosen_prefixtracestepsstepafter. ff_h_pfp_transition_chosen_prefixtracestepsstepafter + S (pfh_after_transition_chosen_prefixtracestepsstep) = S ((S (S (pfh_index_transition_chosen_prefixtracesteps))) * pfh_trace_scale_transition_chosen_prefix)) /\ exists ff_q_pfp_transition_chosen_prefixtracestepsstepafter. pfh_trace_code_transition_chosen_prefix = ff_q_pfp_transition_chosen_prefixtracestepsstepafter * S ((S (S (pfh_index_transition_chosen_prefixtracesteps))) * pfh_trace_scale_transition_chosen_prefix) + (pfh_after_transition_chosen_prefixtracestepsstep))) /\ (((((exists pfa_gap_transition_chosen_prefixtracestepsstepmultiplyleft. pfa_gap_transition_chosen_prefixtracestepsstepmultiplyleft + S (pfh_before_transition_chosen_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_transition_chosen_prefixtracestepsstepmultiplyright. pfa_gap_transition_chosen_prefixtracestepsstepmultiplyright + S (a) = (p)) /\ ((((exists pfa_gap_transition_chosen_prefixtracestepsstepmultiplyresultbound. pfa_gap_transition_chosen_prefixtracestepsstepmultiplyresultbound + S (pfh_product_transition_chosen_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_chosen_prefixtracestepsstepmultiplyresultcongruence pfa_offset_right_transition_chosen_prefixtracestepsstepmultiplyresultcongruence. ((pfh_before_transition_chosen_prefixtracestepsstep) * (a)) + (p) * pfa_offset_left_transition_chosen_prefixtracestepsstepmultiplyresultcongruence = (pfh_product_transition_chosen_prefixtracestepsstep) + (p) * pfa_offset_right_transition_chosen_prefixtracestepsstepmultiplyresultcongruence))))))))) /\ ((((exists pfa_gap_transition_chosen_prefixtracestepsstepaddleft. pfa_gap_transition_chosen_prefixtracestepsstepaddleft + S (pfh_product_transition_chosen_prefixtracestepsstep) = (p)) /\ (((exists pfa_gap_transition_chosen_prefixtracestepsstepaddright. pfa_gap_transition_chosen_prefixtracestepsstepaddright + S (pfh_coefficient_transition_chosen_prefixtracestepsstep) = (p)) /\ ((((exists pfa_gap_transition_chosen_prefixtracestepsstepaddresultbound. pfa_gap_transition_chosen_prefixtracestepsstepaddresultbound + S (pfh_after_transition_chosen_prefixtracestepsstep) = (p)) /\ ((exists pfa_offset_left_transition_chosen_prefixtracestepsstepaddresultcongruence pfa_offset_right_transition_chosen_prefixtracestepsstepaddresultcongruence. ((pfh_product_transition_chosen_prefixtracestepsstep) + (pfh_coefficient_transition_chosen_prefixtracestepsstep)) + (p) * pfa_offset_left_transition_chosen_prefixtracestepsstepaddresultcongruence = (pfh_after_transition_chosen_prefixtracestepsstep) + (p) * pfa_offset_right_transition_chosen_prefixtracestepsstepaddresultcongruence))))))))))))))))))))))))))) /\ (((((exists pfa_gap_transition_chosen_productleft. pfa_gap_transition_chosen_productleft + S (h) = (p)) /\ (((exists pfa_gap_transition_chosen_productright. pfa_gap_transition_chosen_productright + S (a) = (p)) /\ ((((exists pfa_gap_transition_chosen_productresultbound. pfa_gap_transition_chosen_productresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_transition_chosen_productresultcongruence pfa_offset_right_transition_chosen_productresultcongruence. ((h) * (a)) + (p) * pfa_offset_left_transition_chosen_productresultcongruence = (k) + (p) * pfa_offset_right_transition_chosen_productresultcongruence))))))))) /\ ((((exists pfa_gap_transition_chosen_sumleft. pfa_gap_transition_chosen_sumleft + S (k) = (p)) /\ (((exists pfa_gap_transition_chosen_sumright. pfa_gap_transition_chosen_sumright + S (v) = (p)) /\ ((((exists pfa_gap_transition_chosen_sumresultbound. pfa_gap_transition_chosen_sumresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_transition_chosen_sumresultcongruence pfa_offset_right_transition_chosen_sumresultcongruence. ((k) + (v)) + (p) * pfa_offset_left_transition_chosen_sumresultcongruence = (r) + (p) * pfa_offset_right_transition_chosen_sumresultcongruence)))))))))))))))
  14. 0014specialize prime_field_polynomial_horner_successor_decompose (p)
  15. 0015specialize prime_field_polynomial_horner_successor_decompose (b)
  16. 0016specialize prime_field_polynomial_horner_successor_decompose (c)
  17. 0017specialize prime_field_polynomial_horner_successor_decompose (a)
  18. 0018specialize prime_field_polynomial_horner_successor_decompose (i)
  19. 0019specialize prime_field_polynomial_horner_successor_decompose (r)
  20. 0020apply prime_field_polynomial_horner_successor_decompose
  21. 0021exact hn
  22. 0022cases hd
  23. 0023cases hd_witness
  24. 0024cases hd_witness_witness
  25. 0025cases hd_witness_witness_witness
  26. 0026cases hd_witness_witness_witness_right
  27. 0027cases hd_witness_witness_witness_right_right
  28. 0028have hve : x=v
  29. 0029specialize beta_at_unique (b)
  30. 0030specialize beta_at_unique (c)
  31. 0031specialize beta_at_unique (i)
  32. 0032specialize beta_at_unique (x)
  33. 0033specialize beta_at_unique (v)
  34. 0034apply beta_at_unique
  35. 0035exact hd_witness_witness_witness_left
  36. 0036exact hv
  37. 0037have hhe : x1=h
  38. 0038specialize prime_field_polynomial_horner_functional (p)
  39. 0039specialize prime_field_polynomial_horner_functional (b)
  40. 0040specialize prime_field_polynomial_horner_functional (c)
  41. 0041specialize prime_field_polynomial_horner_functional (a)
  42. 0042specialize prime_field_polynomial_horner_functional (i)
  43. 0043specialize prime_field_polynomial_horner_functional (x1)
  44. 0044specialize prime_field_polynomial_horner_functional (h)
  45. 0045apply prime_field_polynomial_horner_functional
  46. 0046exact hp
  47. 0047exact hd_witness_witness_witness_right_left
  48. 0048exact he
  49. 0049rewrite hhe at hd_witness_witness_witness_right_right_left
  50. 0050rewrite hhe at hd_witness_witness_witness_right_right_left
  51. 0051rewrite hve at hd_witness_witness_witness_right_right_right
  52. 0052rewrite hve at hd_witness_witness_witness_right_right_right
  53. 0053exists x2
  54. 0054split
  55. 0055exact hd_witness_witness_witness_right_right_left
  56. 0056exact hd_witness_witness_witness_right_right_right