PG001D

prime_field_polynomial_shift_scale_aligned_sum_exists

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

Construct actual shift and scalar outputs, harmless leading paddings to the common length L+S N, and their actual coefficient sum; the commuted S N+L bound is explicitly reconciled, including both empty inputs.

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 c ab ac L pb pc N. (~((p) = 1) /\ forall pfa_factor_left_append_alignment_prime pfa_factor_right_append_alignment_prime. (p) = pfa_factor_left_append_alignment_prime * pfa_factor_right_append_alignment_prime -> pfa_factor_left_append_alignment_prime = 1 \/ pfa_factor_right_append_alignment_prime = 1) -> (exists pfa_gap_append_alignment_scalar. pfa_gap_append_alignment_scalar + S (c) = (p)) -> (forall fom_index_pfp_append_alignment_A. (exists fom_gap_pfp_append_alignment_A_index_bound. fom_gap_pfp_append_alignment_A_index_bound + S (fom_index_pfp_append_alignment_A) = L) -> exists fom_value_pfp_append_alignment_A. ((((exists fom_beta_height_pfp_append_alignment_A_entry. fom_beta_height_pfp_append_alignment_A_entry + S (fom_value_pfp_append_alignment_A) = S ((S (fom_index_pfp_append_alignment_A)) * ac)) /\ exists fom_beta_quotient_pfp_append_alignment_A_entry. ab = fom_beta_quotient_pfp_append_alignment_A_entry * S ((S (fom_index_pfp_append_alignment_A)) * ac) + (fom_value_pfp_append_alignment_A))) /\ (exists fom_gap_pfp_append_alignment_A_value_bound. fom_gap_pfp_append_alignment_A_value_bound + S (fom_value_pfp_append_alignment_A) = p))) -> (forall fom_index_pfp_append_alignment_P. (exists fom_gap_pfp_append_alignment_P_index_bound. fom_gap_pfp_append_alignment_P_index_bound + S (fom_index_pfp_append_alignment_P) = N) -> exists fom_value_pfp_append_alignment_P. ((((exists fom_beta_height_pfp_append_alignment_P_entry. fom_beta_height_pfp_append_alignment_P_entry + S (fom_value_pfp_append_alignment_P) = S ((S (fom_index_pfp_append_alignment_P)) * pc)) /\ exists fom_beta_quotient_pfp_append_alignment_P_entry. pb = fom_beta_quotient_pfp_append_alignment_P_entry * S ((S (fom_index_pfp_append_alignment_P)) * pc) + (fom_value_pfp_append_alignment_P))) /\ (exists fom_gap_pfp_append_alignment_P_value_bound. fom_gap_pfp_append_alignment_P_value_bound + S (fom_value_pfp_append_alignment_P) = p))) -> (exists ub uc vb vc UB UC VB VC rb rc. ((((forall mdr_i_pfp_append_alignment_result_shiftprefix mdr_a_pfp_append_alignment_result_shiftprefix. (exists mdr_gap_pfp_append_alignment_result_shiftprefixb. mdr_gap_pfp_append_alignment_result_shiftprefixb + S (mdr_i_pfp_append_alignment_result_shiftprefix) = (N)) -> (((exists ff_h_mdr_pfp_append_alignment_result_shiftprefixo. ff_h_mdr_pfp_append_alignment_result_shiftprefixo + S (mdr_a_pfp_append_alignment_result_shiftprefix) = S ((S (mdr_i_pfp_append_alignment_result_shiftprefix)) * pc)) /\ exists ff_q_mdr_pfp_append_alignment_result_shiftprefixo. pb = ff_q_mdr_pfp_append_alignment_result_shiftprefixo * S ((S (mdr_i_pfp_append_alignment_result_shiftprefix)) * pc) + (mdr_a_pfp_append_alignment_result_shiftprefix))) -> (((exists ff_h_mdr_pfp_append_alignment_result_shiftprefixn. ff_h_mdr_pfp_append_alignment_result_shiftprefixn + S (mdr_a_pfp_append_alignment_result_shiftprefix) = S ((S (mdr_i_pfp_append_alignment_result_shiftprefix)) * uc)) /\ exists ff_q_mdr_pfp_append_alignment_result_shiftprefixn. ub = ff_q_mdr_pfp_append_alignment_result_shiftprefixn * S ((S (mdr_i_pfp_append_alignment_result_shiftprefix)) * uc) + (mdr_a_pfp_append_alignment_result_shiftprefix)))) /\ ((((exists ff_h_pfp_append_alignment_result_shiftlast. ff_h_pfp_append_alignment_result_shiftlast + S (0) = S ((S (N)) * uc)) /\ exists ff_q_pfp_append_alignment_result_shiftlast. ub = ff_q_pfp_append_alignment_result_shiftlast * S ((S (N)) * uc) + (0)))))) /\ (((((exists pfa_gap_append_alignment_result_scalescalar. pfa_gap_append_alignment_result_scalescalar + S (c) = (p)) /\ ((forall pfp_index_append_alignment_result_scale. (exists pfa_gap_append_alignment_result_scaleindex. pfa_gap_append_alignment_result_scaleindex + S (pfp_index_append_alignment_result_scale) = (L)) -> exists pfp_source_append_alignment_result_scale pfp_value_append_alignment_result_scale. ((((exists ff_h_pfp_append_alignment_result_scalesource. ff_h_pfp_append_alignment_result_scalesource + S (pfp_source_append_alignment_result_scale) = S ((S (pfp_index_append_alignment_result_scale)) * ac)) /\ exists ff_q_pfp_append_alignment_result_scalesource. ab = ff_q_pfp_append_alignment_result_scalesource * S ((S (pfp_index_append_alignment_result_scale)) * ac) + (pfp_source_append_alignment_result_scale))) /\ (((((exists ff_h_pfp_append_alignment_result_scaletarget. ff_h_pfp_append_alignment_result_scaletarget + S (pfp_value_append_alignment_result_scale) = S ((S (pfp_index_append_alignment_result_scale)) * vc)) /\ exists ff_q_pfp_append_alignment_result_scaletarget. vb = ff_q_pfp_append_alignment_result_scaletarget * S ((S (pfp_index_append_alignment_result_scale)) * vc) + (pfp_value_append_alignment_result_scale))) /\ ((((exists pfa_gap_append_alignment_result_scaleoperationleft. pfa_gap_append_alignment_result_scaleoperationleft + S (c) = (p)) /\ (((exists pfa_gap_append_alignment_result_scaleoperationright. pfa_gap_append_alignment_result_scaleoperationright + S (pfp_source_append_alignment_result_scale) = (p)) /\ ((((exists pfa_gap_append_alignment_result_scaleoperationresultbound. pfa_gap_append_alignment_result_scaleoperationresultbound + S (pfp_value_append_alignment_result_scale) = (p)) /\ ((exists pfa_offset_left_append_alignment_result_scaleoperationresultcongruence pfa_offset_right_append_alignment_result_scaleoperationresultcongruence. ((c) * (pfp_source_append_alignment_result_scale)) + (p) * pfa_offset_left_append_alignment_result_scaleoperationresultcongruence = (pfp_value_append_alignment_result_scale) + (p) * pfa_offset_right_append_alignment_result_scaleoperationresultcongruence))))))))))))))))) /\ (((((forall pfp_repeat_index_append_alignment_result_leftzeros. (exists pfa_gap_append_alignment_result_leftzerosindex. pfa_gap_append_alignment_result_leftzerosindex + S (pfp_repeat_index_append_alignment_result_leftzeros) = (L)) -> (((exists ff_h_pfp_append_alignment_result_leftzerosentry. ff_h_pfp_append_alignment_result_leftzerosentry + S (0) = S ((S (pfp_repeat_index_append_alignment_result_leftzeros)) * UC)) /\ exists ff_q_pfp_append_alignment_result_leftzerosentry. UB = ff_q_pfp_append_alignment_result_leftzerosentry * S ((S (pfp_repeat_index_append_alignment_result_leftzeros)) * UC) + (0)))) /\ ((forall pfrep_index_append_alignment_result_left pfrep_value_append_alignment_result_left. (exists pfa_gap_append_alignment_result_leftbound. pfa_gap_append_alignment_result_leftbound + S (pfrep_index_append_alignment_result_left) = (S N)) -> (((exists ff_h_pfp_append_alignment_result_leftinput. ff_h_pfp_append_alignment_result_leftinput + S (pfrep_value_append_alignment_result_left) = S ((S (pfrep_index_append_alignment_result_left)) * uc)) /\ exists ff_q_pfp_append_alignment_result_leftinput. ub = ff_q_pfp_append_alignment_result_leftinput * S ((S (pfrep_index_append_alignment_result_left)) * uc) + (pfrep_value_append_alignment_result_left))) -> (((exists ff_h_pfp_append_alignment_result_leftoutput. ff_h_pfp_append_alignment_result_leftoutput + S (pfrep_value_append_alignment_result_left) = S ((S ((L)+pfrep_index_append_alignment_result_left)) * UC)) /\ exists ff_q_pfp_append_alignment_result_leftoutput. UB = ff_q_pfp_append_alignment_result_leftoutput * S ((S ((L)+pfrep_index_append_alignment_result_left)) * UC) + (pfrep_value_append_alignment_result_left))))))) /\ (((((forall pfp_repeat_index_append_alignment_result_rightzeros. (exists pfa_gap_append_alignment_result_rightzerosindex. pfa_gap_append_alignment_result_rightzerosindex + S (pfp_repeat_index_append_alignment_result_rightzeros) = (S N)) -> (((exists ff_h_pfp_append_alignment_result_rightzerosentry. ff_h_pfp_append_alignment_result_rightzerosentry + S (0) = S ((S (pfp_repeat_index_append_alignment_result_rightzeros)) * VC)) /\ exists ff_q_pfp_append_alignment_result_rightzerosentry. VB = ff_q_pfp_append_alignment_result_rightzerosentry * S ((S (pfp_repeat_index_append_alignment_result_rightzeros)) * VC) + (0)))) /\ ((forall pfrep_index_append_alignment_result_right pfrep_value_append_alignment_result_right. (exists pfa_gap_append_alignment_result_rightbound. pfa_gap_append_alignment_result_rightbound + S (pfrep_index_append_alignment_result_right) = (L)) -> (((exists ff_h_pfp_append_alignment_result_rightinput. ff_h_pfp_append_alignment_result_rightinput + S (pfrep_value_append_alignment_result_right) = S ((S (pfrep_index_append_alignment_result_right)) * vc)) /\ exists ff_q_pfp_append_alignment_result_rightinput. vb = ff_q_pfp_append_alignment_result_rightinput * S ((S (pfrep_index_append_alignment_result_right)) * vc) + (pfrep_value_append_alignment_result_right))) -> (((exists ff_h_pfp_append_alignment_result_rightoutput. ff_h_pfp_append_alignment_result_rightoutput + S (pfrep_value_append_alignment_result_right) = S ((S ((S N)+pfrep_index_append_alignment_result_right)) * VC)) /\ exists ff_q_pfp_append_alignment_result_rightoutput. VB = ff_q_pfp_append_alignment_result_rightoutput * S ((S ((S N)+pfrep_index_append_alignment_result_right)) * VC) + (pfrep_value_append_alignment_result_right))))))) /\ ((forall pfp_index_append_alignment_result_sum. (exists pfa_gap_append_alignment_result_sumindex. pfa_gap_append_alignment_result_sumindex + S (pfp_index_append_alignment_result_sum) = (L+S N)) -> exists pfp_left_append_alignment_result_sum pfp_right_append_alignment_result_sum pfp_value_append_alignment_result_sum. ((((exists ff_h_pfp_append_alignment_result_sumleft. ff_h_pfp_append_alignment_result_sumleft + S (pfp_left_append_alignment_result_sum) = S ((S (pfp_index_append_alignment_result_sum)) * UC)) /\ exists ff_q_pfp_append_alignment_result_sumleft. UB = ff_q_pfp_append_alignment_result_sumleft * S ((S (pfp_index_append_alignment_result_sum)) * UC) + (pfp_left_append_alignment_result_sum))) /\ (((((exists ff_h_pfp_append_alignment_result_sumright. ff_h_pfp_append_alignment_result_sumright + S (pfp_right_append_alignment_result_sum) = S ((S (pfp_index_append_alignment_result_sum)) * VC)) /\ exists ff_q_pfp_append_alignment_result_sumright. VB = ff_q_pfp_append_alignment_result_sumright * S ((S (pfp_index_append_alignment_result_sum)) * VC) + (pfp_right_append_alignment_result_sum))) /\ (((((exists ff_h_pfp_append_alignment_result_sumtarget. ff_h_pfp_append_alignment_result_sumtarget + S (pfp_value_append_alignment_result_sum) = S ((S (pfp_index_append_alignment_result_sum)) * rc)) /\ exists ff_q_pfp_append_alignment_result_sumtarget. rb = ff_q_pfp_append_alignment_result_sumtarget * S ((S (pfp_index_append_alignment_result_sum)) * rc) + (pfp_value_append_alignment_result_sum))) /\ ((((exists pfa_gap_append_alignment_result_sumoperationleft. pfa_gap_append_alignment_result_sumoperationleft + S (pfp_left_append_alignment_result_sum) = (p)) /\ (((exists pfa_gap_append_alignment_result_sumoperationright. pfa_gap_append_alignment_result_sumoperationright + S (pfp_right_append_alignment_result_sum) = (p)) /\ ((((exists pfa_gap_append_alignment_result_sumoperationresultbound. pfa_gap_append_alignment_result_sumoperationresultbound + S (pfp_value_append_alignment_result_sum) = (p)) /\ ((exists pfa_offset_left_append_alignment_result_sumoperationresultcongruence pfa_offset_right_append_alignment_result_sumoperationresultcongruence. ((pfp_left_append_alignment_result_sum) + (pfp_right_append_alignment_result_sum)) + (p) * pfa_offset_left_append_alignment_result_sumoperationresultcongruence = (pfp_value_append_alignment_result_sum) + (p) * pfa_offset_right_append_alignment_result_sumoperationresultcongruence)))))))))))))))))))))))))

Constructive proof overview

Generated structural guide

Construct actual shift and scalar outputs, harmless leading paddings to the common length L+S N, and their actual coefficient sum; the commuted S N+L bound is explicitly reconciled, including both empty inputs.

The unchanged tactic script uses 9 declared prerequisites and contains 134 exact native proof lines.

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

Proof neighborhood

Direct dependencies

prime_nonzero Alpha theorem; checked-use authorized PG0001 prime_field_polynomial_shift_exists prime_field_polynomial_scale_exists Alpha theorem; checked-use authorized prime_field_polynomial_left_pad_exists Alpha theorem; checked-use authorized prime_field_polynomial_left_pad_bounded Alpha theorem; checked-use authorized PG0002 prime_field_polynomial_shift_bounded prime_field_polynomial_scale_bounded Alpha theorem; checked-use authorized add_comm Alpha theorem; checked-use authorized prime_field_polynomial_add_exists 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

134 script commands · 31 reading checkpoints · 10 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.

Named ingredients (2)

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 c
  3. L3
    intro ab
  4. L4
    intro ac
  5. L5
    intro L
  6. L6
    intro pb
  7. L7
    intro pc
  8. L8
    intro N
  9. L9
    intro hp
  10. L10
    intro hc
02Fix variables and assumptionsL11–12

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

  1. L11
    intro ha
  2. L12
    intro hb
03Establish hp0L13–18

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

  1. L13
    have hp0 : ~(p=0)
  2. L14
    intro hz
  3. L15
    specialize prime_nonzero (p)
  4. L16
    apply prime_nonzero
  5. L17
    exact hp
  6. L18
    exact hz
04Establish huL19–23

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

  1. L19
    have hu : ∃ ub. ∃ uc. PolynomialShift(pb,pc,N,ub,uc)Definitions: PolynomialShift
  2. L20
    specialize prime_field_polynomial_shift_exists (pb)
  3. L21
    specialize prime_field_polynomial_shift_exists (pc)
  4. L22
    specialize prime_field_polynomial_shift_exists (N)
  5. L23
    apply prime_field_polynomial_shift_exists
05Separate the logical casesL24–25

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

  1. L24
    cases hu
  2. L25
    cases hu_witness
06Establish hvL26–35

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

  1. L26
    have hv : ∃ vb. ∃ vc. FpPolyScale(p,c,ab,ac,vb,vc,L)Definitions: FpPolyScale
  2. L27
    specialize prime_field_polynomial_scale_exists (p)
  3. L28
    specialize prime_field_polynomial_scale_exists (c)
  4. L29
    specialize prime_field_polynomial_scale_exists (ab)
  5. L30
    specialize prime_field_polynomial_scale_exists (ac)
  6. L31
    specialize prime_field_polynomial_scale_exists (L)
  7. L32
    apply prime_field_polynomial_scale_exists
  8. L33
    exact hp0
  9. L34
    exact hc
  10. L35
    exact ha
07Separate the logical casesL36–37

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

  1. L36
    cases hv
  2. L37
    cases hv_witness
08Establish hleftL38–43

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

  1. L38
    have hleft : ∃ UB. ∃ UC. PolynomialLeftPad(x,x1,S N,L,UB,UC)Definitions: PolynomialLeftPad
  2. L39
    specialize prime_field_polynomial_left_pad_exists (x)
  3. L40
    specialize prime_field_polynomial_left_pad_exists (x1)
  4. L41
    specialize prime_field_polynomial_left_pad_exists (L)
  5. L42
    specialize prime_field_polynomial_left_pad_exists (S N)
  6. L43
    apply prime_field_polynomial_left_pad_exists
09Separate the logical casesL44–45

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

  1. L44
    cases hleft
  2. L45
    cases hleft_witness
10Establish hrightL46–51

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

  1. L46
    have hright : ∃ VB. ∃ VC. PolynomialLeftPad(x2,x3,L,S N,VB,VC)Definitions: PolynomialLeftPad
  2. L47
    specialize prime_field_polynomial_left_pad_exists (x2)
  3. L48
    specialize prime_field_polynomial_left_pad_exists (x3)
  4. L49
    specialize prime_field_polynomial_left_pad_exists (S N)
  5. L50
    specialize prime_field_polynomial_left_pad_exists (L)
  6. L51
    apply prime_field_polynomial_left_pad_exists
11Separate the logical casesL52–53

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

  1. L52
    cases hright
  2. L53
    cases hright_witness
12Establish hleft_boundL54–63

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

  1. L54
    have hleft_bound : BetaPrefixInto(x4,x5,L + S N,p)Definitions: BetaPrefixInto
  2. L55
    specialize prime_field_polynomial_left_pad_bounded (p)
  3. L56
    specialize prime_field_polynomial_left_pad_bounded (x)
  4. L57
    specialize prime_field_polynomial_left_pad_bounded (x1)
  5. L58
    specialize prime_field_polynomial_left_pad_bounded (S N)
  6. L59
    specialize prime_field_polynomial_left_pad_bounded (L)
  7. L60
    specialize prime_field_polynomial_left_pad_bounded (x4)
  8. L61
    specialize prime_field_polynomial_left_pad_bounded (x5)
  9. L62
    apply prime_field_polynomial_left_pad_bounded
  10. L63
    exact hp
13Use earlier factsL64–73

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

  1. L64
    specialize prime_field_polynomial_shift_bounded (p)
  2. L65
    specialize prime_field_polynomial_shift_bounded (pb)
  3. L66
    specialize prime_field_polynomial_shift_bounded (pc)
  4. L67
    specialize prime_field_polynomial_shift_bounded (N)
  5. L68
    specialize prime_field_polynomial_shift_bounded (x)
  6. L69
    specialize prime_field_polynomial_shift_bounded (x1)
  7. L70
    apply prime_field_polynomial_shift_bounded
  8. L71
    exact hp
  9. L72
    exact hb
  10. L73
    exact hu_witness_witness
14Use earlier factsL74–74

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

  1. L74
    exact hleft_witness_witness
15Establish hscale_boundsL75–84

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

  1. L75
    have hscale_bounds : BetaPrefixInto(ab,ac,L,p) ∧ BetaPrefixInto(x2,x3,L,p)Definitions: BetaPrefixInto
  2. L76
    specialize prime_field_polynomial_scale_bounded (p)
  3. L77
    specialize prime_field_polynomial_scale_bounded (c)
  4. L78
    specialize prime_field_polynomial_scale_bounded (ab)
  5. L79
    specialize prime_field_polynomial_scale_bounded (ac)
  6. L80
    specialize prime_field_polynomial_scale_bounded (x2)
  7. L81
    specialize prime_field_polynomial_scale_bounded (x3)
  8. L82
    specialize prime_field_polynomial_scale_bounded (L)
  9. L83
    apply prime_field_polynomial_scale_bounded
  10. L84
    exact hv_witness_witness
16Separate the logical casesL85–85

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

  1. L85
    cases hscale_bounds
17Establish hright_boundL86–95

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

  1. L86
    have hright_bound : BetaPrefixInto(x6,x7,S N + L,p)Definitions: BetaPrefixInto
  2. L87
    specialize prime_field_polynomial_left_pad_bounded (p)
  3. L88
    specialize prime_field_polynomial_left_pad_bounded (x2)
  4. L89
    specialize prime_field_polynomial_left_pad_bounded (x3)
  5. L90
    specialize prime_field_polynomial_left_pad_bounded (L)
  6. L91
    specialize prime_field_polynomial_left_pad_bounded (S N)
  7. L92
    specialize prime_field_polynomial_left_pad_bounded (x6)
  8. L93
    specialize prime_field_polynomial_left_pad_bounded (x7)
  9. L94
    apply prime_field_polynomial_left_pad_bounded
  10. L95
    exact hp
18Use earlier factsL96–97

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

  1. L96
    exact hscale_bounds_right
  2. L97
    exact hright_witness_witness
19Establish hcommL98–102

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add comm.

  1. L98
    have hcomm : S N+L=L+S N
  2. L99
    specialize add_comm (S N)
  3. L100
    specialize add_comm (L)
  4. L101
    apply add_comm
  5. L102
    rewrite hcomm at hright_bound
20Establish hsumL103–112

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

  1. L103
    have hsum : ∃ rb. ∃ rc. FpPolyAdd(p,x4,x5,x6,x7,rb,rc,L + S N)Definitions: FpPolyAdd
  2. L104
    specialize prime_field_polynomial_add_exists (p)
  3. L105
    specialize prime_field_polynomial_add_exists (x4)
  4. L106
    specialize prime_field_polynomial_add_exists (x5)
  5. L107
    specialize prime_field_polynomial_add_exists (x6)
  6. L108
    specialize prime_field_polynomial_add_exists (x7)
  7. L109
    specialize prime_field_polynomial_add_exists (L+S N)
  8. L110
    apply prime_field_polynomial_add_exists
  9. L111
    exact hp0
  10. L112
    exact hleft_bound
21Use earlier factsL113–113

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

  1. L113
    exact hright_bound
22Separate the logical casesL114–115

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

  1. L114
    cases hsum
  2. L115
    cases hsum_witness
23Construct an explicit witnessL116–125

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

  1. L116
    exists x
  2. L117
    exists x1
  3. L118
    exists x2
  4. L119
    exists x3
  5. L120
    exists x4
  6. L121
    exists x5
  7. L122
    exists x6
  8. L123
    exists x7
  9. L124
    exists x8
  10. L125
    exists x9
24Separate the logical casesL126–126

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

  1. L126
    split
25Use earlier factsL127–127

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

  1. L127
    exact hu_witness_witness
26Separate the logical casesL128–128

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

  1. L128
    split
27Use earlier factsL129–129

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

  1. L129
    exact hv_witness_witness
28Separate the logical casesL130–130

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

  1. L130
    split
29Use earlier factsL131–131

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

  1. L131
    exact hleft_witness_witness
30Separate the logical casesL132–132

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

  1. L132
    split
31Use earlier factsL133–134

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

  1. L133
    exact hright_witness_witness
  2. L134
    exact hsum_witness_witness

Library-wide reading audit

Original exact command ledger · 134 lines
  1. 0001intro p
  2. 0002intro c
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro L
  6. 0006intro pb
  7. 0007intro pc
  8. 0008intro N
  9. 0009intro hp
  10. 0010intro hc
  11. 0011intro ha
  12. 0012intro hb
  13. 0013have hp0 : ~(p=0)
  14. 0014intro hz
  15. 0015specialize prime_nonzero (p)
  16. 0016apply prime_nonzero
  17. 0017exact hp
  18. 0018exact hz
  19. 0019have hu : exists ub uc. ((forall mdr_i_pfp_append_alignment_shiftprefix mdr_a_pfp_append_alignment_shiftprefix. (exists mdr_gap_pfp_append_alignment_shiftprefixb. mdr_gap_pfp_append_alignment_shiftprefixb + S (mdr_i_pfp_append_alignment_shiftprefix) = (N)) -> (((exists ff_h_mdr_pfp_append_alignment_shiftprefixo. ff_h_mdr_pfp_append_alignment_shiftprefixo + S (mdr_a_pfp_append_alignment_shiftprefix) = S ((S (mdr_i_pfp_append_alignment_shiftprefix)) * pc)) /\ exists ff_q_mdr_pfp_append_alignment_shiftprefixo. pb = ff_q_mdr_pfp_append_alignment_shiftprefixo * S ((S (mdr_i_pfp_append_alignment_shiftprefix)) * pc) + (mdr_a_pfp_append_alignment_shiftprefix))) -> (((exists ff_h_mdr_pfp_append_alignment_shiftprefixn. ff_h_mdr_pfp_append_alignment_shiftprefixn + S (mdr_a_pfp_append_alignment_shiftprefix) = S ((S (mdr_i_pfp_append_alignment_shiftprefix)) * uc)) /\ exists ff_q_mdr_pfp_append_alignment_shiftprefixn. ub = ff_q_mdr_pfp_append_alignment_shiftprefixn * S ((S (mdr_i_pfp_append_alignment_shiftprefix)) * uc) + (mdr_a_pfp_append_alignment_shiftprefix)))) /\ ((((exists ff_h_pfp_append_alignment_shiftlast. ff_h_pfp_append_alignment_shiftlast + S (0) = S ((S (N)) * uc)) /\ exists ff_q_pfp_append_alignment_shiftlast. ub = ff_q_pfp_append_alignment_shiftlast * S ((S (N)) * uc) + (0)))))
  20. 0020specialize prime_field_polynomial_shift_exists (pb)
  21. 0021specialize prime_field_polynomial_shift_exists (pc)
  22. 0022specialize prime_field_polynomial_shift_exists (N)
  23. 0023apply prime_field_polynomial_shift_exists
  24. 0024cases hu
  25. 0025cases hu_witness
  26. 0026have hv : exists vb vc. ((exists pfa_gap_append_alignment_scalescalar. pfa_gap_append_alignment_scalescalar + S (c) = (p)) /\ ((forall pfp_index_append_alignment_scale. (exists pfa_gap_append_alignment_scaleindex. pfa_gap_append_alignment_scaleindex + S (pfp_index_append_alignment_scale) = (L)) -> exists pfp_source_append_alignment_scale pfp_value_append_alignment_scale. ((((exists ff_h_pfp_append_alignment_scalesource. ff_h_pfp_append_alignment_scalesource + S (pfp_source_append_alignment_scale) = S ((S (pfp_index_append_alignment_scale)) * ac)) /\ exists ff_q_pfp_append_alignment_scalesource. ab = ff_q_pfp_append_alignment_scalesource * S ((S (pfp_index_append_alignment_scale)) * ac) + (pfp_source_append_alignment_scale))) /\ (((((exists ff_h_pfp_append_alignment_scaletarget. ff_h_pfp_append_alignment_scaletarget + S (pfp_value_append_alignment_scale) = S ((S (pfp_index_append_alignment_scale)) * vc)) /\ exists ff_q_pfp_append_alignment_scaletarget. vb = ff_q_pfp_append_alignment_scaletarget * S ((S (pfp_index_append_alignment_scale)) * vc) + (pfp_value_append_alignment_scale))) /\ ((((exists pfa_gap_append_alignment_scaleoperationleft. pfa_gap_append_alignment_scaleoperationleft + S (c) = (p)) /\ (((exists pfa_gap_append_alignment_scaleoperationright. pfa_gap_append_alignment_scaleoperationright + S (pfp_source_append_alignment_scale) = (p)) /\ ((((exists pfa_gap_append_alignment_scaleoperationresultbound. pfa_gap_append_alignment_scaleoperationresultbound + S (pfp_value_append_alignment_scale) = (p)) /\ ((exists pfa_offset_left_append_alignment_scaleoperationresultcongruence pfa_offset_right_append_alignment_scaleoperationresultcongruence. ((c) * (pfp_source_append_alignment_scale)) + (p) * pfa_offset_left_append_alignment_scaleoperationresultcongruence = (pfp_value_append_alignment_scale) + (p) * pfa_offset_right_append_alignment_scaleoperationresultcongruence))))))))))))))))
  27. 0027specialize prime_field_polynomial_scale_exists (p)
  28. 0028specialize prime_field_polynomial_scale_exists (c)
  29. 0029specialize prime_field_polynomial_scale_exists (ab)
  30. 0030specialize prime_field_polynomial_scale_exists (ac)
  31. 0031specialize prime_field_polynomial_scale_exists (L)
  32. 0032apply prime_field_polynomial_scale_exists
  33. 0033exact hp0
  34. 0034exact hc
  35. 0035exact ha
  36. 0036cases hv
  37. 0037cases hv_witness
  38. 0038have hleft : exists UB UC. ((forall pfp_repeat_index_append_alignment_chosen_leftzeros. (exists pfa_gap_append_alignment_chosen_leftzerosindex. pfa_gap_append_alignment_chosen_leftzerosindex + S (pfp_repeat_index_append_alignment_chosen_leftzeros) = (L)) -> (((exists ff_h_pfp_append_alignment_chosen_leftzerosentry. ff_h_pfp_append_alignment_chosen_leftzerosentry + S (0) = S ((S (pfp_repeat_index_append_alignment_chosen_leftzeros)) * UC)) /\ exists ff_q_pfp_append_alignment_chosen_leftzerosentry. UB = ff_q_pfp_append_alignment_chosen_leftzerosentry * S ((S (pfp_repeat_index_append_alignment_chosen_leftzeros)) * UC) + (0)))) /\ ((forall pfrep_index_append_alignment_chosen_left pfrep_value_append_alignment_chosen_left. (exists pfa_gap_append_alignment_chosen_leftbound. pfa_gap_append_alignment_chosen_leftbound + S (pfrep_index_append_alignment_chosen_left) = (S N)) -> (((exists ff_h_pfp_append_alignment_chosen_leftinput. ff_h_pfp_append_alignment_chosen_leftinput + S (pfrep_value_append_alignment_chosen_left) = S ((S (pfrep_index_append_alignment_chosen_left)) * x1)) /\ exists ff_q_pfp_append_alignment_chosen_leftinput. x = ff_q_pfp_append_alignment_chosen_leftinput * S ((S (pfrep_index_append_alignment_chosen_left)) * x1) + (pfrep_value_append_alignment_chosen_left))) -> (((exists ff_h_pfp_append_alignment_chosen_leftoutput. ff_h_pfp_append_alignment_chosen_leftoutput + S (pfrep_value_append_alignment_chosen_left) = S ((S ((L)+pfrep_index_append_alignment_chosen_left)) * UC)) /\ exists ff_q_pfp_append_alignment_chosen_leftoutput. UB = ff_q_pfp_append_alignment_chosen_leftoutput * S ((S ((L)+pfrep_index_append_alignment_chosen_left)) * UC) + (pfrep_value_append_alignment_chosen_left))))))
  39. 0039specialize prime_field_polynomial_left_pad_exists (x)
  40. 0040specialize prime_field_polynomial_left_pad_exists (x1)
  41. 0041specialize prime_field_polynomial_left_pad_exists (L)
  42. 0042specialize prime_field_polynomial_left_pad_exists (S N)
  43. 0043apply prime_field_polynomial_left_pad_exists
  44. 0044cases hleft
  45. 0045cases hleft_witness
  46. 0046have hright : exists VB VC. ((forall pfp_repeat_index_append_alignment_chosen_rightzeros. (exists pfa_gap_append_alignment_chosen_rightzerosindex. pfa_gap_append_alignment_chosen_rightzerosindex + S (pfp_repeat_index_append_alignment_chosen_rightzeros) = (S N)) -> (((exists ff_h_pfp_append_alignment_chosen_rightzerosentry. ff_h_pfp_append_alignment_chosen_rightzerosentry + S (0) = S ((S (pfp_repeat_index_append_alignment_chosen_rightzeros)) * VC)) /\ exists ff_q_pfp_append_alignment_chosen_rightzerosentry. VB = ff_q_pfp_append_alignment_chosen_rightzerosentry * S ((S (pfp_repeat_index_append_alignment_chosen_rightzeros)) * VC) + (0)))) /\ ((forall pfrep_index_append_alignment_chosen_right pfrep_value_append_alignment_chosen_right. (exists pfa_gap_append_alignment_chosen_rightbound. pfa_gap_append_alignment_chosen_rightbound + S (pfrep_index_append_alignment_chosen_right) = (L)) -> (((exists ff_h_pfp_append_alignment_chosen_rightinput. ff_h_pfp_append_alignment_chosen_rightinput + S (pfrep_value_append_alignment_chosen_right) = S ((S (pfrep_index_append_alignment_chosen_right)) * x3)) /\ exists ff_q_pfp_append_alignment_chosen_rightinput. x2 = ff_q_pfp_append_alignment_chosen_rightinput * S ((S (pfrep_index_append_alignment_chosen_right)) * x3) + (pfrep_value_append_alignment_chosen_right))) -> (((exists ff_h_pfp_append_alignment_chosen_rightoutput. ff_h_pfp_append_alignment_chosen_rightoutput + S (pfrep_value_append_alignment_chosen_right) = S ((S ((S N)+pfrep_index_append_alignment_chosen_right)) * VC)) /\ exists ff_q_pfp_append_alignment_chosen_rightoutput. VB = ff_q_pfp_append_alignment_chosen_rightoutput * S ((S ((S N)+pfrep_index_append_alignment_chosen_right)) * VC) + (pfrep_value_append_alignment_chosen_right))))))
  47. 0047specialize prime_field_polynomial_left_pad_exists (x2)
  48. 0048specialize prime_field_polynomial_left_pad_exists (x3)
  49. 0049specialize prime_field_polynomial_left_pad_exists (S N)
  50. 0050specialize prime_field_polynomial_left_pad_exists (L)
  51. 0051apply prime_field_polynomial_left_pad_exists
  52. 0052cases hright
  53. 0053cases hright_witness
  54. 0054have hleft_bound : forall fom_index_pfp_append_alignment_left_bound. (exists fom_gap_pfp_append_alignment_left_bound_index_bound. fom_gap_pfp_append_alignment_left_bound_index_bound + S (fom_index_pfp_append_alignment_left_bound) = L+S N) -> exists fom_value_pfp_append_alignment_left_bound. ((((exists fom_beta_height_pfp_append_alignment_left_bound_entry. fom_beta_height_pfp_append_alignment_left_bound_entry + S (fom_value_pfp_append_alignment_left_bound) = S ((S (fom_index_pfp_append_alignment_left_bound)) * x5)) /\ exists fom_beta_quotient_pfp_append_alignment_left_bound_entry. x4 = fom_beta_quotient_pfp_append_alignment_left_bound_entry * S ((S (fom_index_pfp_append_alignment_left_bound)) * x5) + (fom_value_pfp_append_alignment_left_bound))) /\ (exists fom_gap_pfp_append_alignment_left_bound_value_bound. fom_gap_pfp_append_alignment_left_bound_value_bound + S (fom_value_pfp_append_alignment_left_bound) = p))
  55. 0055specialize prime_field_polynomial_left_pad_bounded (p)
  56. 0056specialize prime_field_polynomial_left_pad_bounded (x)
  57. 0057specialize prime_field_polynomial_left_pad_bounded (x1)
  58. 0058specialize prime_field_polynomial_left_pad_bounded (S N)
  59. 0059specialize prime_field_polynomial_left_pad_bounded (L)
  60. 0060specialize prime_field_polynomial_left_pad_bounded (x4)
  61. 0061specialize prime_field_polynomial_left_pad_bounded (x5)
  62. 0062apply prime_field_polynomial_left_pad_bounded
  63. 0063exact hp
  64. 0064specialize prime_field_polynomial_shift_bounded (p)
  65. 0065specialize prime_field_polynomial_shift_bounded (pb)
  66. 0066specialize prime_field_polynomial_shift_bounded (pc)
  67. 0067specialize prime_field_polynomial_shift_bounded (N)
  68. 0068specialize prime_field_polynomial_shift_bounded (x)
  69. 0069specialize prime_field_polynomial_shift_bounded (x1)
  70. 0070apply prime_field_polynomial_shift_bounded
  71. 0071exact hp
  72. 0072exact hb
  73. 0073exact hu_witness_witness
  74. 0074exact hleft_witness_witness
  75. 0075have hscale_bounds : ((forall fom_index_pfp_append_alignment_source_bound. (exists fom_gap_pfp_append_alignment_source_bound_index_bound. fom_gap_pfp_append_alignment_source_bound_index_bound + S (fom_index_pfp_append_alignment_source_bound) = L) -> exists fom_value_pfp_append_alignment_source_bound. ((((exists fom_beta_height_pfp_append_alignment_source_bound_entry. fom_beta_height_pfp_append_alignment_source_bound_entry + S (fom_value_pfp_append_alignment_source_bound) = S ((S (fom_index_pfp_append_alignment_source_bound)) * ac)) /\ exists fom_beta_quotient_pfp_append_alignment_source_bound_entry. ab = fom_beta_quotient_pfp_append_alignment_source_bound_entry * S ((S (fom_index_pfp_append_alignment_source_bound)) * ac) + (fom_value_pfp_append_alignment_source_bound))) /\ (exists fom_gap_pfp_append_alignment_source_bound_value_bound. fom_gap_pfp_append_alignment_source_bound_value_bound + S (fom_value_pfp_append_alignment_source_bound) = p))) /\ ((forall fom_index_pfp_append_alignment_scale_bound. (exists fom_gap_pfp_append_alignment_scale_bound_index_bound. fom_gap_pfp_append_alignment_scale_bound_index_bound + S (fom_index_pfp_append_alignment_scale_bound) = L) -> exists fom_value_pfp_append_alignment_scale_bound. ((((exists fom_beta_height_pfp_append_alignment_scale_bound_entry. fom_beta_height_pfp_append_alignment_scale_bound_entry + S (fom_value_pfp_append_alignment_scale_bound) = S ((S (fom_index_pfp_append_alignment_scale_bound)) * x3)) /\ exists fom_beta_quotient_pfp_append_alignment_scale_bound_entry. x2 = fom_beta_quotient_pfp_append_alignment_scale_bound_entry * S ((S (fom_index_pfp_append_alignment_scale_bound)) * x3) + (fom_value_pfp_append_alignment_scale_bound))) /\ (exists fom_gap_pfp_append_alignment_scale_bound_value_bound. fom_gap_pfp_append_alignment_scale_bound_value_bound + S (fom_value_pfp_append_alignment_scale_bound) = p)))))
  76. 0076specialize prime_field_polynomial_scale_bounded (p)
  77. 0077specialize prime_field_polynomial_scale_bounded (c)
  78. 0078specialize prime_field_polynomial_scale_bounded (ab)
  79. 0079specialize prime_field_polynomial_scale_bounded (ac)
  80. 0080specialize prime_field_polynomial_scale_bounded (x2)
  81. 0081specialize prime_field_polynomial_scale_bounded (x3)
  82. 0082specialize prime_field_polynomial_scale_bounded (L)
  83. 0083apply prime_field_polynomial_scale_bounded
  84. 0084exact hv_witness_witness
  85. 0085cases hscale_bounds
  86. 0086have hright_bound : forall fom_index_pfp_append_alignment_right_bound. (exists fom_gap_pfp_append_alignment_right_bound_index_bound. fom_gap_pfp_append_alignment_right_bound_index_bound + S (fom_index_pfp_append_alignment_right_bound) = S N+L) -> exists fom_value_pfp_append_alignment_right_bound. ((((exists fom_beta_height_pfp_append_alignment_right_bound_entry. fom_beta_height_pfp_append_alignment_right_bound_entry + S (fom_value_pfp_append_alignment_right_bound) = S ((S (fom_index_pfp_append_alignment_right_bound)) * x7)) /\ exists fom_beta_quotient_pfp_append_alignment_right_bound_entry. x6 = fom_beta_quotient_pfp_append_alignment_right_bound_entry * S ((S (fom_index_pfp_append_alignment_right_bound)) * x7) + (fom_value_pfp_append_alignment_right_bound))) /\ (exists fom_gap_pfp_append_alignment_right_bound_value_bound. fom_gap_pfp_append_alignment_right_bound_value_bound + S (fom_value_pfp_append_alignment_right_bound) = p))
  87. 0087specialize prime_field_polynomial_left_pad_bounded (p)
  88. 0088specialize prime_field_polynomial_left_pad_bounded (x2)
  89. 0089specialize prime_field_polynomial_left_pad_bounded (x3)
  90. 0090specialize prime_field_polynomial_left_pad_bounded (L)
  91. 0091specialize prime_field_polynomial_left_pad_bounded (S N)
  92. 0092specialize prime_field_polynomial_left_pad_bounded (x6)
  93. 0093specialize prime_field_polynomial_left_pad_bounded (x7)
  94. 0094apply prime_field_polynomial_left_pad_bounded
  95. 0095exact hp
  96. 0096exact hscale_bounds_right
  97. 0097exact hright_witness_witness
  98. 0098have hcomm : S N+L=L+S N
  99. 0099specialize add_comm (S N)
  100. 0100specialize add_comm (L)
  101. 0101apply add_comm
  102. 0102rewrite hcomm at hright_bound
  103. 0103have hsum : exists rb rc. forall pfp_index_append_alignment_chosen_sum. (exists pfa_gap_append_alignment_chosen_sumindex. pfa_gap_append_alignment_chosen_sumindex + S (pfp_index_append_alignment_chosen_sum) = (L+S N)) -> exists pfp_left_append_alignment_chosen_sum pfp_right_append_alignment_chosen_sum pfp_value_append_alignment_chosen_sum. ((((exists ff_h_pfp_append_alignment_chosen_sumleft. ff_h_pfp_append_alignment_chosen_sumleft + S (pfp_left_append_alignment_chosen_sum) = S ((S (pfp_index_append_alignment_chosen_sum)) * x5)) /\ exists ff_q_pfp_append_alignment_chosen_sumleft. x4 = ff_q_pfp_append_alignment_chosen_sumleft * S ((S (pfp_index_append_alignment_chosen_sum)) * x5) + (pfp_left_append_alignment_chosen_sum))) /\ (((((exists ff_h_pfp_append_alignment_chosen_sumright. ff_h_pfp_append_alignment_chosen_sumright + S (pfp_right_append_alignment_chosen_sum) = S ((S (pfp_index_append_alignment_chosen_sum)) * x7)) /\ exists ff_q_pfp_append_alignment_chosen_sumright. x6 = ff_q_pfp_append_alignment_chosen_sumright * S ((S (pfp_index_append_alignment_chosen_sum)) * x7) + (pfp_right_append_alignment_chosen_sum))) /\ (((((exists ff_h_pfp_append_alignment_chosen_sumtarget. ff_h_pfp_append_alignment_chosen_sumtarget + S (pfp_value_append_alignment_chosen_sum) = S ((S (pfp_index_append_alignment_chosen_sum)) * rc)) /\ exists ff_q_pfp_append_alignment_chosen_sumtarget. rb = ff_q_pfp_append_alignment_chosen_sumtarget * S ((S (pfp_index_append_alignment_chosen_sum)) * rc) + (pfp_value_append_alignment_chosen_sum))) /\ ((((exists pfa_gap_append_alignment_chosen_sumoperationleft. pfa_gap_append_alignment_chosen_sumoperationleft + S (pfp_left_append_alignment_chosen_sum) = (p)) /\ (((exists pfa_gap_append_alignment_chosen_sumoperationright. pfa_gap_append_alignment_chosen_sumoperationright + S (pfp_right_append_alignment_chosen_sum) = (p)) /\ ((((exists pfa_gap_append_alignment_chosen_sumoperationresultbound. pfa_gap_append_alignment_chosen_sumoperationresultbound + S (pfp_value_append_alignment_chosen_sum) = (p)) /\ ((exists pfa_offset_left_append_alignment_chosen_sumoperationresultcongruence pfa_offset_right_append_alignment_chosen_sumoperationresultcongruence. ((pfp_left_append_alignment_chosen_sum) + (pfp_right_append_alignment_chosen_sum)) + (p) * pfa_offset_left_append_alignment_chosen_sumoperationresultcongruence = (pfp_value_append_alignment_chosen_sum) + (p) * pfa_offset_right_append_alignment_chosen_sumoperationresultcongruence)))))))))))))))
  104. 0104specialize prime_field_polynomial_add_exists (p)
  105. 0105specialize prime_field_polynomial_add_exists (x4)
  106. 0106specialize prime_field_polynomial_add_exists (x5)
  107. 0107specialize prime_field_polynomial_add_exists (x6)
  108. 0108specialize prime_field_polynomial_add_exists (x7)
  109. 0109specialize prime_field_polynomial_add_exists (L+S N)
  110. 0110apply prime_field_polynomial_add_exists
  111. 0111exact hp0
  112. 0112exact hleft_bound
  113. 0113exact hright_bound
  114. 0114cases hsum
  115. 0115cases hsum_witness
  116. 0116exists x
  117. 0117exists x1
  118. 0118exists x2
  119. 0119exists x3
  120. 0120exists x4
  121. 0121exists x5
  122. 0122exists x6
  123. 0123exists x7
  124. 0124exists x8
  125. 0125exists x9
  126. 0126split
  127. 0127exact hu_witness_witness
  128. 0128split
  129. 0129exact hv_witness_witness
  130. 0130split
  131. 0131exact hleft_witness_witness
  132. 0132split
  133. 0133exact hright_witness_witness
  134. 0134exact hsum_witness_witness