PG0045

prime_field_polynomial_aligned_subtract_exists

Construct actual aligned field subtraction at length L+M, using real canonical common representatives and the genuine solution B+R=A.

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

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

All products and sums use actual beta-coded coefficients; equality is formal coefficient equivalence, not equality of evaluations or raw codes. The zero gcd is included. Uniqueness is up to formal equivalence, not unique Bézout coefficients. This proves the polynomial gcd component, not G091 irreducible-polynomial existence or arbitrary prime-power-field construction.

Exact theorem in conservative defined notation

∀ p. ∀ ab. ∀ ac. ∀ L. ∀ bb. ∀ bc. ∀ M. Prime(p)BetaPrefixInto(ab,ac,L,p)BetaPrefixInto(bb,bc,M,p) → ∃ x. ∃ y. FpPolynomialAlignedAdd(p,bb,bc,M,x,y,L + M,ab,ac,L)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p ab ac L bb bc M. (~((p) = 1) /\ forall pfa_factor_left_sub_exists_prime pfa_factor_right_sub_exists_prime. (p) = pfa_factor_left_sub_exists_prime * pfa_factor_right_sub_exists_prime -> pfa_factor_left_sub_exists_prime = 1 \/ pfa_factor_right_sub_exists_prime = 1) -> (forall fom_index_pfp_sub_exists_A. (exists fom_gap_pfp_sub_exists_A_index_bound. fom_gap_pfp_sub_exists_A_index_bound + S (fom_index_pfp_sub_exists_A) = L) -> exists fom_value_pfp_sub_exists_A. ((((exists fom_beta_height_pfp_sub_exists_A_entry. fom_beta_height_pfp_sub_exists_A_entry + S (fom_value_pfp_sub_exists_A) = S ((S (fom_index_pfp_sub_exists_A)) * ac)) /\ exists fom_beta_quotient_pfp_sub_exists_A_entry. ab = fom_beta_quotient_pfp_sub_exists_A_entry * S ((S (fom_index_pfp_sub_exists_A)) * ac) + (fom_value_pfp_sub_exists_A))) /\ (exists fom_gap_pfp_sub_exists_A_value_bound. fom_gap_pfp_sub_exists_A_value_bound + S (fom_value_pfp_sub_exists_A) = p))) -> (forall fom_index_pfp_sub_exists_B. (exists fom_gap_pfp_sub_exists_B_index_bound. fom_gap_pfp_sub_exists_B_index_bound + S (fom_index_pfp_sub_exists_B) = M) -> exists fom_value_pfp_sub_exists_B. ((((exists fom_beta_height_pfp_sub_exists_B_entry. fom_beta_height_pfp_sub_exists_B_entry + S (fom_value_pfp_sub_exists_B) = S ((S (fom_index_pfp_sub_exists_B)) * bc)) /\ exists fom_beta_quotient_pfp_sub_exists_B_entry. bb = fom_beta_quotient_pfp_sub_exists_B_entry * S ((S (fom_index_pfp_sub_exists_B)) * bc) + (fom_value_pfp_sub_exists_B))) /\ (exists fom_gap_pfp_sub_exists_B_value_bound. fom_gap_pfp_sub_exists_B_value_bound + S (fom_value_pfp_sub_exists_B) = p))) -> (exists rb rc. ((forall fom_index_pfp_sub_exists_result_left_bounded. (exists fom_gap_pfp_sub_exists_result_left_bounded_index_bound. fom_gap_pfp_sub_exists_result_left_bounded_index_bound + S (fom_index_pfp_sub_exists_result_left_bounded) = M) -> exists fom_value_pfp_sub_exists_result_left_bounded. ((((exists fom_beta_height_pfp_sub_exists_result_left_bounded_entry. fom_beta_height_pfp_sub_exists_result_left_bounded_entry + S (fom_value_pfp_sub_exists_result_left_bounded) = S ((S (fom_index_pfp_sub_exists_result_left_bounded)) * bc)) /\ exists fom_beta_quotient_pfp_sub_exists_result_left_bounded_entry. bb = fom_beta_quotient_pfp_sub_exists_result_left_bounded_entry * S ((S (fom_index_pfp_sub_exists_result_left_bounded)) * bc) + (fom_value_pfp_sub_exists_result_left_bounded))) /\ (exists fom_gap_pfp_sub_exists_result_left_bounded_value_bound. fom_gap_pfp_sub_exists_result_left_bounded_value_bound + S (fom_value_pfp_sub_exists_result_left_bounded) = p))) /\ (((forall fom_index_pfp_sub_exists_result_right_bounded. (exists fom_gap_pfp_sub_exists_result_right_bounded_index_bound. fom_gap_pfp_sub_exists_result_right_bounded_index_bound + S (fom_index_pfp_sub_exists_result_right_bounded) = L+M) -> exists fom_value_pfp_sub_exists_result_right_bounded. ((((exists fom_beta_height_pfp_sub_exists_result_right_bounded_entry. fom_beta_height_pfp_sub_exists_result_right_bounded_entry + S (fom_value_pfp_sub_exists_result_right_bounded) = S ((S (fom_index_pfp_sub_exists_result_right_bounded)) * rc)) /\ exists fom_beta_quotient_pfp_sub_exists_result_right_bounded_entry. rb = fom_beta_quotient_pfp_sub_exists_result_right_bounded_entry * S ((S (fom_index_pfp_sub_exists_result_right_bounded)) * rc) + (fom_value_pfp_sub_exists_result_right_bounded))) /\ (exists fom_gap_pfp_sub_exists_result_right_bounded_value_bound. fom_gap_pfp_sub_exists_result_right_bounded_value_bound + S (fom_value_pfp_sub_exists_result_right_bounded) = p))) /\ (((forall fom_index_pfp_sub_exists_result_result_bounded. (exists fom_gap_pfp_sub_exists_result_result_bounded_index_bound. fom_gap_pfp_sub_exists_result_result_bounded_index_bound + S (fom_index_pfp_sub_exists_result_result_bounded) = L) -> exists fom_value_pfp_sub_exists_result_result_bounded. ((((exists fom_beta_height_pfp_sub_exists_result_result_bounded_entry. fom_beta_height_pfp_sub_exists_result_result_bounded_entry + S (fom_value_pfp_sub_exists_result_result_bounded) = S ((S (fom_index_pfp_sub_exists_result_result_bounded)) * ac)) /\ exists fom_beta_quotient_pfp_sub_exists_result_result_bounded_entry. ab = fom_beta_quotient_pfp_sub_exists_result_result_bounded_entry * S ((S (fom_index_pfp_sub_exists_result_result_bounded)) * ac) + (fom_value_pfp_sub_exists_result_result_bounded))) /\ (exists fom_gap_pfp_sub_exists_result_result_bounded_value_bound. fom_gap_pfp_sub_exists_result_result_bounded_value_bound + S (fom_value_pfp_sub_exists_result_result_bounded) = p))) /\ ((exists pfaa_left_b_sub_exists_result pfaa_left_c_sub_exists_result pfaa_right_b_sub_exists_result pfaa_right_c_sub_exists_result pfaa_sum_b_sub_exists_result pfaa_sum_c_sub_exists_result pfaa_length_sub_exists_result. ((((forall pfrep_power_sub_exists_result_witness_common_left pfrep_left_sub_exists_result_witness_common_left pfrep_right_sub_exists_result_witness_common_left. ((exists pfrep_position_sub_exists_result_witness_common_leftfirst. ((pfrep_position_sub_exists_result_witness_common_leftfirst+S (pfrep_power_sub_exists_result_witness_common_left)=(M)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_common_leftfirstentry. ff_h_pfp_sub_exists_result_witness_common_leftfirstentry + S (pfrep_left_sub_exists_result_witness_common_left) = S ((S (pfrep_position_sub_exists_result_witness_common_leftfirst)) * bc)) /\ exists ff_q_pfp_sub_exists_result_witness_common_leftfirstentry. bb = ff_q_pfp_sub_exists_result_witness_common_leftfirstentry * S ((S (pfrep_position_sub_exists_result_witness_common_leftfirst)) * bc) + (pfrep_left_sub_exists_result_witness_common_left)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_common_leftfirstoutside. pfrep_gap_sub_exists_result_witness_common_leftfirstoutside+(M)=(pfrep_power_sub_exists_result_witness_common_left)) /\ (((pfrep_left_sub_exists_result_witness_common_left)=0))))) -> ((exists pfrep_position_sub_exists_result_witness_common_leftsecond. ((pfrep_position_sub_exists_result_witness_common_leftsecond+S (pfrep_power_sub_exists_result_witness_common_left)=(pfaa_length_sub_exists_result)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_common_leftsecondentry. ff_h_pfp_sub_exists_result_witness_common_leftsecondentry + S (pfrep_right_sub_exists_result_witness_common_left) = S ((S (pfrep_position_sub_exists_result_witness_common_leftsecond)) * pfaa_left_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_common_leftsecondentry. pfaa_left_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_common_leftsecondentry * S ((S (pfrep_position_sub_exists_result_witness_common_leftsecond)) * pfaa_left_c_sub_exists_result) + (pfrep_right_sub_exists_result_witness_common_left)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_common_leftsecondoutside. pfrep_gap_sub_exists_result_witness_common_leftsecondoutside+(pfaa_length_sub_exists_result)=(pfrep_power_sub_exists_result_witness_common_left)) /\ (((pfrep_right_sub_exists_result_witness_common_left)=0))))) -> pfrep_left_sub_exists_result_witness_common_left=pfrep_right_sub_exists_result_witness_common_left) /\ ((forall pfrep_power_sub_exists_result_witness_common_right pfrep_left_sub_exists_result_witness_common_right pfrep_right_sub_exists_result_witness_common_right. ((exists pfrep_position_sub_exists_result_witness_common_rightfirst. ((pfrep_position_sub_exists_result_witness_common_rightfirst+S (pfrep_power_sub_exists_result_witness_common_right)=(L+M)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_common_rightfirstentry. ff_h_pfp_sub_exists_result_witness_common_rightfirstentry + S (pfrep_left_sub_exists_result_witness_common_right) = S ((S (pfrep_position_sub_exists_result_witness_common_rightfirst)) * rc)) /\ exists ff_q_pfp_sub_exists_result_witness_common_rightfirstentry. rb = ff_q_pfp_sub_exists_result_witness_common_rightfirstentry * S ((S (pfrep_position_sub_exists_result_witness_common_rightfirst)) * rc) + (pfrep_left_sub_exists_result_witness_common_right)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_common_rightfirstoutside. pfrep_gap_sub_exists_result_witness_common_rightfirstoutside+(L+M)=(pfrep_power_sub_exists_result_witness_common_right)) /\ (((pfrep_left_sub_exists_result_witness_common_right)=0))))) -> ((exists pfrep_position_sub_exists_result_witness_common_rightsecond. ((pfrep_position_sub_exists_result_witness_common_rightsecond+S (pfrep_power_sub_exists_result_witness_common_right)=(pfaa_length_sub_exists_result)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_common_rightsecondentry. ff_h_pfp_sub_exists_result_witness_common_rightsecondentry + S (pfrep_right_sub_exists_result_witness_common_right) = S ((S (pfrep_position_sub_exists_result_witness_common_rightsecond)) * pfaa_right_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_common_rightsecondentry. pfaa_right_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_common_rightsecondentry * S ((S (pfrep_position_sub_exists_result_witness_common_rightsecond)) * pfaa_right_c_sub_exists_result) + (pfrep_right_sub_exists_result_witness_common_right)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_common_rightsecondoutside. pfrep_gap_sub_exists_result_witness_common_rightsecondoutside+(pfaa_length_sub_exists_result)=(pfrep_power_sub_exists_result_witness_common_right)) /\ (((pfrep_right_sub_exists_result_witness_common_right)=0))))) -> pfrep_left_sub_exists_result_witness_common_right=pfrep_right_sub_exists_result_witness_common_right)))) /\ (((forall pfp_index_sub_exists_result_witness_operation. (exists pfa_gap_sub_exists_result_witness_operationindex. pfa_gap_sub_exists_result_witness_operationindex + S (pfp_index_sub_exists_result_witness_operation) = (pfaa_length_sub_exists_result)) -> exists pfp_left_sub_exists_result_witness_operation pfp_right_sub_exists_result_witness_operation pfp_value_sub_exists_result_witness_operation. ((((exists ff_h_pfp_sub_exists_result_witness_operationleft. ff_h_pfp_sub_exists_result_witness_operationleft + S (pfp_left_sub_exists_result_witness_operation) = S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_left_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_operationleft. pfaa_left_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_operationleft * S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_left_c_sub_exists_result) + (pfp_left_sub_exists_result_witness_operation))) /\ (((((exists ff_h_pfp_sub_exists_result_witness_operationright. ff_h_pfp_sub_exists_result_witness_operationright + S (pfp_right_sub_exists_result_witness_operation) = S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_right_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_operationright. pfaa_right_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_operationright * S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_right_c_sub_exists_result) + (pfp_right_sub_exists_result_witness_operation))) /\ (((((exists ff_h_pfp_sub_exists_result_witness_operationtarget. ff_h_pfp_sub_exists_result_witness_operationtarget + S (pfp_value_sub_exists_result_witness_operation) = S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_sum_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_operationtarget. pfaa_sum_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_operationtarget * S ((S (pfp_index_sub_exists_result_witness_operation)) * pfaa_sum_c_sub_exists_result) + (pfp_value_sub_exists_result_witness_operation))) /\ ((((exists pfa_gap_sub_exists_result_witness_operationoperationleft. pfa_gap_sub_exists_result_witness_operationoperationleft + S (pfp_left_sub_exists_result_witness_operation) = (p)) /\ (((exists pfa_gap_sub_exists_result_witness_operationoperationright. pfa_gap_sub_exists_result_witness_operationoperationright + S (pfp_right_sub_exists_result_witness_operation) = (p)) /\ ((((exists pfa_gap_sub_exists_result_witness_operationoperationresultbound. pfa_gap_sub_exists_result_witness_operationoperationresultbound + S (pfp_value_sub_exists_result_witness_operation) = (p)) /\ ((exists pfa_offset_left_sub_exists_result_witness_operationoperationresultcongruence pfa_offset_right_sub_exists_result_witness_operationoperationresultcongruence. ((pfp_left_sub_exists_result_witness_operation) + (pfp_right_sub_exists_result_witness_operation)) + (p) * pfa_offset_left_sub_exists_result_witness_operationoperationresultcongruence = (pfp_value_sub_exists_result_witness_operation) + (p) * pfa_offset_right_sub_exists_result_witness_operationoperationresultcongruence)))))))))))))))) /\ ((forall pfrep_power_sub_exists_result_witness_output pfrep_left_sub_exists_result_witness_output pfrep_right_sub_exists_result_witness_output. ((exists pfrep_position_sub_exists_result_witness_outputfirst. ((pfrep_position_sub_exists_result_witness_outputfirst+S (pfrep_power_sub_exists_result_witness_output)=(pfaa_length_sub_exists_result)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_outputfirstentry. ff_h_pfp_sub_exists_result_witness_outputfirstentry + S (pfrep_left_sub_exists_result_witness_output) = S ((S (pfrep_position_sub_exists_result_witness_outputfirst)) * pfaa_sum_c_sub_exists_result)) /\ exists ff_q_pfp_sub_exists_result_witness_outputfirstentry. pfaa_sum_b_sub_exists_result = ff_q_pfp_sub_exists_result_witness_outputfirstentry * S ((S (pfrep_position_sub_exists_result_witness_outputfirst)) * pfaa_sum_c_sub_exists_result) + (pfrep_left_sub_exists_result_witness_output)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_outputfirstoutside. pfrep_gap_sub_exists_result_witness_outputfirstoutside+(pfaa_length_sub_exists_result)=(pfrep_power_sub_exists_result_witness_output)) /\ (((pfrep_left_sub_exists_result_witness_output)=0))))) -> ((exists pfrep_position_sub_exists_result_witness_outputsecond. ((pfrep_position_sub_exists_result_witness_outputsecond+S (pfrep_power_sub_exists_result_witness_output)=(L)) /\ ((((exists ff_h_pfp_sub_exists_result_witness_outputsecondentry. ff_h_pfp_sub_exists_result_witness_outputsecondentry + S (pfrep_right_sub_exists_result_witness_output) = S ((S (pfrep_position_sub_exists_result_witness_outputsecond)) * ac)) /\ exists ff_q_pfp_sub_exists_result_witness_outputsecondentry. ab = ff_q_pfp_sub_exists_result_witness_outputsecondentry * S ((S (pfrep_position_sub_exists_result_witness_outputsecond)) * ac) + (pfrep_right_sub_exists_result_witness_output)))))) \/ (((exists pfrep_gap_sub_exists_result_witness_outputsecondoutside. pfrep_gap_sub_exists_result_witness_outputsecondoutside+(L)=(pfrep_power_sub_exists_result_witness_output)) /\ (((pfrep_right_sub_exists_result_witness_output)=0))))) -> pfrep_left_sub_exists_result_witness_output=pfrep_right_sub_exists_result_witness_output)))))))))))))

Complete tactic proof in conservative notation

All 104 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

104 script commands · 19 reading checkpoints · 4 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro ab
  3. L3
    intro ac
  4. L4
    intro L
  5. L5
    intro bb
  6. L6
    intro bc
  7. L7
    intro M
  8. L8
    intro hp
  9. L9
    intro ha
  10. L10
    intro hb
02Establish hcL11–20

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

  1. L11
    have hc : ∃ ub. ∃ uc. ∃ vb. ∃ vc. BetaPrefixInto(ub,uc,L + M,p) ∧ (BetaPrefixInto(vb,vc,L + M,p) ∧ CommonRepresentatives(ab,ac,L,bb,bc,M,ub,uc,vb,vc,L + M))Definitions: BetaPrefixInto(ub,uc,L + M,p)BetaPrefixInto(vb,vc,L + M,p)CommonRepresentatives(ab,ac,L,bb,bc,M,ub,uc,vb,vc,L + M)Original native command in the exact edition
  2. L12
    specialize prime_field_polynomial_common_representatives_exists (p)
  3. L13
    specialize prime_field_polynomial_common_representatives_exists (ab)
  4. L14
    specialize prime_field_polynomial_common_representatives_exists (ac)
  5. L15
    specialize prime_field_polynomial_common_representatives_exists (L)
  6. L16
    specialize prime_field_polynomial_common_representatives_exists (bb)
  7. L17
    specialize prime_field_polynomial_common_representatives_exists (bc)
  8. L18
    specialize prime_field_polynomial_common_representatives_exists (M)
  9. L19
    apply prime_field_polynomial_common_representatives_exists
  10. L20
    exact hp
03Use earlier factsL21–22

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

  1. L21
    exact ha
  2. L22
    exact hb
04Separate the logical casesL23–29

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

  1. L23
    cases hc
  2. L24
    cases hc_witness
  3. L25
    cases hc_witness_witness
  4. L26
    cases hc_witness_witness_witness
  5. L27
    cases hc_witness_witness_witness_witness
  6. L28
    cases hc_witness_witness_witness_witness_right
  7. L29
    cases hc_witness_witness_witness_witness_right_right
05Establish hdL30–39

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

  1. L30
    have hd : ∃ rb. ∃ rc. FpCoefficientSubtraction(p,x,x1,x2,x3,rb,rc,L + M)Definitions: FpCoefficientSubtraction(p,x,x1,x2,x3,rb,rc,L + M)Original native command in the exact edition
  2. L31
    specialize prime_field_polynomial_subtract_exists (p)
  3. L32
    specialize prime_field_polynomial_subtract_exists (x)
  4. L33
    specialize prime_field_polynomial_subtract_exists (x1)
  5. L34
    specialize prime_field_polynomial_subtract_exists (x2)
  6. L35
    specialize prime_field_polynomial_subtract_exists (x3)
  7. L36
    specialize prime_field_polynomial_subtract_exists (L+M)
  8. L37
    apply prime_field_polynomial_subtract_exists
  9. L38
    exact hp
  10. L39
    exact hc_witness_witness_witness_witness_left
06Use earlier factsL40–40

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

  1. L40
    exact hc_witness_witness_witness_witness_right_left
07Separate the logical casesL41–42

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

  1. L41
    cases hd
  2. L42
    cases hd_witness
08Establish hsL43–52

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

  1. L43
    have hs : FpPolyAdd(p,x2,x3,x4,x5,x,x1,L + M)Definitions: FpPolyAdd(p,x2,x3,x4,x5,x,x1,L + M)Original native command in the exact edition
  2. L44
    specialize prime_field_polynomial_subtract_recover_add (p)
  3. L45
    specialize prime_field_polynomial_subtract_recover_add (x)
  4. L46
    specialize prime_field_polynomial_subtract_recover_add (x1)
  5. L47
    specialize prime_field_polynomial_subtract_recover_add (x2)
  6. L48
    specialize prime_field_polynomial_subtract_recover_add (x3)
  7. L49
    specialize prime_field_polynomial_subtract_recover_add (x4)
  8. L50
    specialize prime_field_polynomial_subtract_recover_add (x5)
  9. L51
    specialize prime_field_polynomial_subtract_recover_add (L+M)
  10. L52
    apply prime_field_polynomial_subtract_recover_add
09Use earlier factsL53–53

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

  1. L53
    exact hd_witness_witness
10Establish hboundL54–63

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

  1. L54
    have hbound : BetaPrefixInto(x2,x3,L + M,p) ∧ (BetaPrefixInto(x4,x5,L + M,p) ∧ BetaPrefixInto(x,x1,L + M,p))Definitions: BetaPrefixInto(x2,x3,L + M,p)BetaPrefixInto(x4,x5,L + M,p)BetaPrefixInto(x,x1,L + M,p)Original native command in the exact edition
  2. L55
    specialize prime_field_polynomial_add_bounded (p)
  3. L56
    specialize prime_field_polynomial_add_bounded (x2)
  4. L57
    specialize prime_field_polynomial_add_bounded (x3)
  5. L58
    specialize prime_field_polynomial_add_bounded (x4)
  6. L59
    specialize prime_field_polynomial_add_bounded (x5)
  7. L60
    specialize prime_field_polynomial_add_bounded (x)
  8. L61
    specialize prime_field_polynomial_add_bounded (x1)
  9. L62
    specialize prime_field_polynomial_add_bounded (L+M)
  10. L63
    apply prime_field_polynomial_add_bounded
11Use earlier factsL64–64

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

  1. L64
    exact hs
12Separate the logical casesL65–66

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

  1. L65
    cases hbound
  2. L66
    cases hbound_right
13Construct an explicit witnessL67–68

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

  1. L67
    exists x4
  2. L68
    exists x5
14Use earlier factsL69–78

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

  1. L69
    specialize prime_field_polynomial_aligned_add_from_common (p)
  2. L70
    specialize prime_field_polynomial_aligned_add_from_common (bb)
  3. L71
    specialize prime_field_polynomial_aligned_add_from_common (bc)
  4. L72
    specialize prime_field_polynomial_aligned_add_from_common (M)
  5. L73
    specialize prime_field_polynomial_aligned_add_from_common (x4)
  6. L74
    specialize prime_field_polynomial_aligned_add_from_common (x5)
  7. L75
    specialize prime_field_polynomial_aligned_add_from_common (L+M)
  8. L76
    specialize prime_field_polynomial_aligned_add_from_common (ab)
  9. L77
    specialize prime_field_polynomial_aligned_add_from_common (ac)
  10. L78
    specialize prime_field_polynomial_aligned_add_from_common (L)
15Use earlier factsL79–88

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

  1. L79
    specialize prime_field_polynomial_aligned_add_from_common (x2)
  2. L80
    specialize prime_field_polynomial_aligned_add_from_common (x3)
  3. L81
    specialize prime_field_polynomial_aligned_add_from_common (x4)
  4. L82
    specialize prime_field_polynomial_aligned_add_from_common (x5)
  5. L83
    specialize prime_field_polynomial_aligned_add_from_common (x)
  6. L84
    specialize prime_field_polynomial_aligned_add_from_common (x1)
  7. L85
    specialize prime_field_polynomial_aligned_add_from_common (L+M)
  8. L86
    apply prime_field_polynomial_aligned_add_from_common
  9. L87
    exact hb
  10. L88
    exact hbound_right_left
16Use earlier factsL89–89

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

  1. L89
    exact ha
17Separate the logical casesL90–90

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

  1. L90
    split
18Use earlier factsL91–100

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

  1. L91
    exact hc_witness_witness_witness_witness_right_right_right
  2. L92
    specialize prime_field_polynomial_power_coefficient_functional (x4)
  3. L93
    specialize prime_field_polynomial_power_coefficient_functional (x5)
  4. L94
    specialize prime_field_polynomial_power_coefficient_functional (L+M)
  5. L95
    apply prime_field_polynomial_power_coefficient_functional
  6. L96
    exact hs
  7. L97
    specialize prime_field_polynomial_equivalent_symmetric (ab)
  8. L98
    specialize prime_field_polynomial_equivalent_symmetric (ac)
  9. L99
    specialize prime_field_polynomial_equivalent_symmetric (L)
  10. L100
    specialize prime_field_polynomial_equivalent_symmetric (x)
19Use earlier factsL101–104

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

  1. L101
    specialize prime_field_polynomial_equivalent_symmetric (x1)
  2. L102
    specialize prime_field_polynomial_equivalent_symmetric (L+M)
  3. L103
    apply prime_field_polynomial_equivalent_symmetric
  4. L104
    exact hc_witness_witness_witness_witness_right_right_left

Library-wide reading audit

Original defined command ledger · 104 lines
  1. 0001intro p
  2. 0002intro ab
  3. 0003intro ac
  4. 0004intro L
  5. 0005intro bb
  6. 0006intro bc
  7. 0007intro M
  8. 0008intro hp
  9. 0009intro ha
  10. 0010intro hb
  11. 0011have hc : ∃ ub. ∃ uc. ∃ vb. ∃ vc. BetaPrefixInto(ub,uc,L + M,p) ∧ (BetaPrefixInto(vb,vc,L + M,p)CommonRepresentatives(ab,ac,L,bb,bc,M,ub,uc,vb,vc,L + M))
  12. 0012specialize prime_field_polynomial_common_representatives_exists (p)
  13. 0013specialize prime_field_polynomial_common_representatives_exists (ab)
  14. 0014specialize prime_field_polynomial_common_representatives_exists (ac)
  15. 0015specialize prime_field_polynomial_common_representatives_exists (L)
  16. 0016specialize prime_field_polynomial_common_representatives_exists (bb)
  17. 0017specialize prime_field_polynomial_common_representatives_exists (bc)
  18. 0018specialize prime_field_polynomial_common_representatives_exists (M)
  19. 0019apply prime_field_polynomial_common_representatives_exists
  20. 0020exact hp
  21. 0021exact ha
  22. 0022exact hb
  23. 0023cases hc
  24. 0024cases hc_witness
  25. 0025cases hc_witness_witness
  26. 0026cases hc_witness_witness_witness
  27. 0027cases hc_witness_witness_witness_witness
  28. 0028cases hc_witness_witness_witness_witness_right
  29. 0029cases hc_witness_witness_witness_witness_right_right
  30. 0030have hd : ∃ rb. ∃ rc. FpCoefficientSubtraction(p,x,x1,x2,x3,rb,rc,L + M)
  31. 0031specialize prime_field_polynomial_subtract_exists (p)
  32. 0032specialize prime_field_polynomial_subtract_exists (x)
  33. 0033specialize prime_field_polynomial_subtract_exists (x1)
  34. 0034specialize prime_field_polynomial_subtract_exists (x2)
  35. 0035specialize prime_field_polynomial_subtract_exists (x3)
  36. 0036specialize prime_field_polynomial_subtract_exists (L+M)
  37. 0037apply prime_field_polynomial_subtract_exists
  38. 0038exact hp
  39. 0039exact hc_witness_witness_witness_witness_left
  40. 0040exact hc_witness_witness_witness_witness_right_left
  41. 0041cases hd
  42. 0042cases hd_witness
  43. 0043have hs : FpPolyAdd(p,x2,x3,x4,x5,x,x1,L + M)
  44. 0044specialize prime_field_polynomial_subtract_recover_add (p)
  45. 0045specialize prime_field_polynomial_subtract_recover_add (x)
  46. 0046specialize prime_field_polynomial_subtract_recover_add (x1)
  47. 0047specialize prime_field_polynomial_subtract_recover_add (x2)
  48. 0048specialize prime_field_polynomial_subtract_recover_add (x3)
  49. 0049specialize prime_field_polynomial_subtract_recover_add (x4)
  50. 0050specialize prime_field_polynomial_subtract_recover_add (x5)
  51. 0051specialize prime_field_polynomial_subtract_recover_add (L+M)
  52. 0052apply prime_field_polynomial_subtract_recover_add
  53. 0053exact hd_witness_witness
  54. 0054have hbound : BetaPrefixInto(x2,x3,L + M,p) ∧ (BetaPrefixInto(x4,x5,L + M,p)BetaPrefixInto(x,x1,L + M,p))
  55. 0055specialize prime_field_polynomial_add_bounded (p)
  56. 0056specialize prime_field_polynomial_add_bounded (x2)
  57. 0057specialize prime_field_polynomial_add_bounded (x3)
  58. 0058specialize prime_field_polynomial_add_bounded (x4)
  59. 0059specialize prime_field_polynomial_add_bounded (x5)
  60. 0060specialize prime_field_polynomial_add_bounded (x)
  61. 0061specialize prime_field_polynomial_add_bounded (x1)
  62. 0062specialize prime_field_polynomial_add_bounded (L+M)
  63. 0063apply prime_field_polynomial_add_bounded
  64. 0064exact hs
  65. 0065cases hbound
  66. 0066cases hbound_right
  67. 0067exists x4
  68. 0068exists x5
  69. 0069specialize prime_field_polynomial_aligned_add_from_common (p)
  70. 0070specialize prime_field_polynomial_aligned_add_from_common (bb)
  71. 0071specialize prime_field_polynomial_aligned_add_from_common (bc)
  72. 0072specialize prime_field_polynomial_aligned_add_from_common (M)
  73. 0073specialize prime_field_polynomial_aligned_add_from_common (x4)
  74. 0074specialize prime_field_polynomial_aligned_add_from_common (x5)
  75. 0075specialize prime_field_polynomial_aligned_add_from_common (L+M)
  76. 0076specialize prime_field_polynomial_aligned_add_from_common (ab)
  77. 0077specialize prime_field_polynomial_aligned_add_from_common (ac)
  78. 0078specialize prime_field_polynomial_aligned_add_from_common (L)
  79. 0079specialize prime_field_polynomial_aligned_add_from_common (x2)
  80. 0080specialize prime_field_polynomial_aligned_add_from_common (x3)
  81. 0081specialize prime_field_polynomial_aligned_add_from_common (x4)
  82. 0082specialize prime_field_polynomial_aligned_add_from_common (x5)
  83. 0083specialize prime_field_polynomial_aligned_add_from_common (x)
  84. 0084specialize prime_field_polynomial_aligned_add_from_common (x1)
  85. 0085specialize prime_field_polynomial_aligned_add_from_common (L+M)
  86. 0086apply prime_field_polynomial_aligned_add_from_common
  87. 0087exact hb
  88. 0088exact hbound_right_left
  89. 0089exact ha
  90. 0090split
  91. 0091exact hc_witness_witness_witness_witness_right_right_right
  92. 0092specialize prime_field_polynomial_power_coefficient_functional (x4)
  93. 0093specialize prime_field_polynomial_power_coefficient_functional (x5)
  94. 0094specialize prime_field_polynomial_power_coefficient_functional (L+M)
  95. 0095apply prime_field_polynomial_power_coefficient_functional
  96. 0096exact hs
  97. 0097specialize prime_field_polynomial_equivalent_symmetric (ab)
  98. 0098specialize prime_field_polynomial_equivalent_symmetric (ac)
  99. 0099specialize prime_field_polynomial_equivalent_symmetric (L)
  100. 0100specialize prime_field_polynomial_equivalent_symmetric (x)
  101. 0101specialize prime_field_polynomial_equivalent_symmetric (x1)
  102. 0102specialize prime_field_polynomial_equivalent_symmetric (L+M)
  103. 0103apply prime_field_polynomial_equivalent_symmetric
  104. 0104exact hc_witness_witness_witness_witness_right_right_left