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 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)))))))))))))Constructive proof overview
Generated structural guide
Construct actual aligned field subtraction at length L+M, using real canonical common representatives and the genuine solution B+R=A.
The unchanged tactic script uses 7 declared prerequisites and contains 104 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PG0039 prime_field_polynomial_common_representatives_exists prime_field_polynomial_subtract_exists Alpha theorem; checked-use authorized prime_field_polynomial_subtract_recover_add Alpha theorem; checked-use authorized prime_field_polynomial_add_bounded Alpha theorem; checked-use authorized PG003C prime_field_polynomial_aligned_add_from_common prime_field_polynomial_power_coefficient_functional Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_symmetric Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (2)
01Fix variables and assumptionsL1–10
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.
- 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: BetaPrefixIntoCommonRepresentatives - L12
specialize prime_field_polynomial_common_representatives_exists (p) - L13
specialize prime_field_polynomial_common_representatives_exists (ab) - L14
specialize prime_field_polynomial_common_representatives_exists (ac) - L15
specialize prime_field_polynomial_common_representatives_exists (L) - L16
specialize prime_field_polynomial_common_representatives_exists (bb) - L17
specialize prime_field_polynomial_common_representatives_exists (bc) - L18
specialize prime_field_polynomial_common_representatives_exists (M) - L19
apply prime_field_polynomial_common_representatives_exists - L20
exact hp
03Use earlier factsL21–22
04Separate the logical casesL23–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
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.
- L30
have hd : ∃ rb. ∃ rc. FpCoefficientSubtraction(p,x,x1,x2,x3,rb,rc,L + M)Definitions: FpCoefficientSubtraction - L31
specialize prime_field_polynomial_subtract_exists (p) - L32
specialize prime_field_polynomial_subtract_exists (x) - L33
specialize prime_field_polynomial_subtract_exists (x1) - L34
specialize prime_field_polynomial_subtract_exists (x2) - L35
specialize prime_field_polynomial_subtract_exists (x3) - L36
specialize prime_field_polynomial_subtract_exists (L+M) - L37
apply prime_field_polynomial_subtract_exists - L38
exact hp - L39
exact hc_witness_witness_witness_witness_left
06Use earlier factsL40–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L40
exact hc_witness_witness_witness_witness_right_left
07Separate the logical casesL41–42
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.
- L43
have hs : FpPolyAdd(p,x2,x3,x4,x5,x,x1,L + M)Definitions: FpPolyAdd - L44
specialize prime_field_polynomial_subtract_recover_add (p) - L45
specialize prime_field_polynomial_subtract_recover_add (x) - L46
specialize prime_field_polynomial_subtract_recover_add (x1) - L47
specialize prime_field_polynomial_subtract_recover_add (x2) - L48
specialize prime_field_polynomial_subtract_recover_add (x3) - L49
specialize prime_field_polynomial_subtract_recover_add (x4) - L50
specialize prime_field_polynomial_subtract_recover_add (x5) - L51
specialize prime_field_polynomial_subtract_recover_add (L+M) - L52
apply prime_field_polynomial_subtract_recover_add
09Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- 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.
- L54
have hbound : BetaPrefixInto(x2,x3,L + M,p) ∧ (BetaPrefixInto(x4,x5,L + M,p) ∧ BetaPrefixInto(x,x1,L + M,p))Definitions: BetaPrefixInto - L55
specialize prime_field_polynomial_add_bounded (p) - L56
specialize prime_field_polynomial_add_bounded (x2) - L57
specialize prime_field_polynomial_add_bounded (x3) - L58
specialize prime_field_polynomial_add_bounded (x4) - L59
specialize prime_field_polynomial_add_bounded (x5) - L60
specialize prime_field_polynomial_add_bounded (x) - L61
specialize prime_field_polynomial_add_bounded (x1) - L62
specialize prime_field_polynomial_add_bounded (L+M) - L63
apply prime_field_polynomial_add_bounded
11Use earlier factsL64–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L64
exact hs
12Separate the logical casesL65–66
13Construct an explicit witnessL67–68
14Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
specialize prime_field_polynomial_aligned_add_from_common (p) - L70
specialize prime_field_polynomial_aligned_add_from_common (bb) - L71
specialize prime_field_polynomial_aligned_add_from_common (bc) - L72
specialize prime_field_polynomial_aligned_add_from_common (M) - L73
specialize prime_field_polynomial_aligned_add_from_common (x4) - L74
specialize prime_field_polynomial_aligned_add_from_common (x5) - L75
specialize prime_field_polynomial_aligned_add_from_common (L+M) - L76
specialize prime_field_polynomial_aligned_add_from_common (ab) - L77
specialize prime_field_polynomial_aligned_add_from_common (ac) - 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.
- L79
specialize prime_field_polynomial_aligned_add_from_common (x2) - L80
specialize prime_field_polynomial_aligned_add_from_common (x3) - L81
specialize prime_field_polynomial_aligned_add_from_common (x4) - L82
specialize prime_field_polynomial_aligned_add_from_common (x5) - L83
specialize prime_field_polynomial_aligned_add_from_common (x) - L84
specialize prime_field_polynomial_aligned_add_from_common (x1) - L85
specialize prime_field_polynomial_aligned_add_from_common (L+M) - L86
apply prime_field_polynomial_aligned_add_from_common - L87
exact hb - L88
exact hbound_right_left
16Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact ha
17Separate the logical casesL90–90
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L90
split
18Use earlier factsL91–100
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L91
exact hc_witness_witness_witness_witness_right_right_right - L92
specialize prime_field_polynomial_power_coefficient_functional (x4) - L93
specialize prime_field_polynomial_power_coefficient_functional (x5) - L94
specialize prime_field_polynomial_power_coefficient_functional (L+M) - L95
apply prime_field_polynomial_power_coefficient_functional - L96
exact hs - L97
specialize prime_field_polynomial_equivalent_symmetric (ab) - L98
specialize prime_field_polynomial_equivalent_symmetric (ac) - L99
specialize prime_field_polynomial_equivalent_symmetric (L) - L100
specialize prime_field_polynomial_equivalent_symmetric (x)
19Use earlier factsL101–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 104 lines
- 0001
intro p - 0002
intro ab - 0003
intro ac - 0004
intro L - 0005
intro bb - 0006
intro bc - 0007
intro M - 0008
intro hp - 0009
intro ha - 0010
intro hb - 0011
have hc : exists ub uc vb vc. ((forall fom_index_pfp_sub_exists_left_bound. (exists fom_gap_pfp_sub_exists_left_bound_index_bound. fom_gap_pfp_sub_exists_left_bound_index_bound + S (fom_index_pfp_sub_exists_left_bound) = L+M) -> exists fom_value_pfp_sub_exists_left_bound. ((((exists fom_beta_height_pfp_sub_exists_left_bound_entry. fom_beta_height_pfp_sub_exists_left_bound_entry + S (fom_value_pfp_sub_exists_left_bound) = S ((S (fom_index_pfp_sub_exists_left_bound)) * uc)) /\ exists fom_beta_quotient_pfp_sub_exists_left_bound_entry. ub = fom_beta_quotient_pfp_sub_exists_left_bound_entry * S ((S (fom_index_pfp_sub_exists_left_bound)) * uc) + (fom_value_pfp_sub_exists_left_bound))) /\ (exists fom_gap_pfp_sub_exists_left_bound_value_bound. fom_gap_pfp_sub_exists_left_bound_value_bound + S (fom_value_pfp_sub_exists_left_bound) = p))) /\ (((forall fom_index_pfp_sub_exists_right_bound. (exists fom_gap_pfp_sub_exists_right_bound_index_bound. fom_gap_pfp_sub_exists_right_bound_index_bound + S (fom_index_pfp_sub_exists_right_bound) = L+M) -> exists fom_value_pfp_sub_exists_right_bound. ((((exists fom_beta_height_pfp_sub_exists_right_bound_entry. fom_beta_height_pfp_sub_exists_right_bound_entry + S (fom_value_pfp_sub_exists_right_bound) = S ((S (fom_index_pfp_sub_exists_right_bound)) * vc)) /\ exists fom_beta_quotient_pfp_sub_exists_right_bound_entry. vb = fom_beta_quotient_pfp_sub_exists_right_bound_entry * S ((S (fom_index_pfp_sub_exists_right_bound)) * vc) + (fom_value_pfp_sub_exists_right_bound))) /\ (exists fom_gap_pfp_sub_exists_right_bound_value_bound. fom_gap_pfp_sub_exists_right_bound_value_bound + S (fom_value_pfp_sub_exists_right_bound) = p))) /\ ((((forall pfrep_power_sub_exists_common_left pfrep_left_sub_exists_common_left pfrep_right_sub_exists_common_left. ((exists pfrep_position_sub_exists_common_leftfirst. ((pfrep_position_sub_exists_common_leftfirst+S (pfrep_power_sub_exists_common_left)=(L)) /\ ((((exists ff_h_pfp_sub_exists_common_leftfirstentry. ff_h_pfp_sub_exists_common_leftfirstentry + S (pfrep_left_sub_exists_common_left) = S ((S (pfrep_position_sub_exists_common_leftfirst)) * ac)) /\ exists ff_q_pfp_sub_exists_common_leftfirstentry. ab = ff_q_pfp_sub_exists_common_leftfirstentry * S ((S (pfrep_position_sub_exists_common_leftfirst)) * ac) + (pfrep_left_sub_exists_common_left)))))) \/ (((exists pfrep_gap_sub_exists_common_leftfirstoutside. pfrep_gap_sub_exists_common_leftfirstoutside+(L)=(pfrep_power_sub_exists_common_left)) /\ (((pfrep_left_sub_exists_common_left)=0))))) -> ((exists pfrep_position_sub_exists_common_leftsecond. ((pfrep_position_sub_exists_common_leftsecond+S (pfrep_power_sub_exists_common_left)=(L+M)) /\ ((((exists ff_h_pfp_sub_exists_common_leftsecondentry. ff_h_pfp_sub_exists_common_leftsecondentry + S (pfrep_right_sub_exists_common_left) = S ((S (pfrep_position_sub_exists_common_leftsecond)) * uc)) /\ exists ff_q_pfp_sub_exists_common_leftsecondentry. ub = ff_q_pfp_sub_exists_common_leftsecondentry * S ((S (pfrep_position_sub_exists_common_leftsecond)) * uc) + (pfrep_right_sub_exists_common_left)))))) \/ (((exists pfrep_gap_sub_exists_common_leftsecondoutside. pfrep_gap_sub_exists_common_leftsecondoutside+(L+M)=(pfrep_power_sub_exists_common_left)) /\ (((pfrep_right_sub_exists_common_left)=0))))) -> pfrep_left_sub_exists_common_left=pfrep_right_sub_exists_common_left) /\ ((forall pfrep_power_sub_exists_common_right pfrep_left_sub_exists_common_right pfrep_right_sub_exists_common_right. ((exists pfrep_position_sub_exists_common_rightfirst. ((pfrep_position_sub_exists_common_rightfirst+S (pfrep_power_sub_exists_common_right)=(M)) /\ ((((exists ff_h_pfp_sub_exists_common_rightfirstentry. ff_h_pfp_sub_exists_common_rightfirstentry + S (pfrep_left_sub_exists_common_right) = S ((S (pfrep_position_sub_exists_common_rightfirst)) * bc)) /\ exists ff_q_pfp_sub_exists_common_rightfirstentry. bb = ff_q_pfp_sub_exists_common_rightfirstentry * S ((S (pfrep_position_sub_exists_common_rightfirst)) * bc) + (pfrep_left_sub_exists_common_right)))))) \/ (((exists pfrep_gap_sub_exists_common_rightfirstoutside. pfrep_gap_sub_exists_common_rightfirstoutside+(M)=(pfrep_power_sub_exists_common_right)) /\ (((pfrep_left_sub_exists_common_right)=0))))) -> ((exists pfrep_position_sub_exists_common_rightsecond. ((pfrep_position_sub_exists_common_rightsecond+S (pfrep_power_sub_exists_common_right)=(L+M)) /\ ((((exists ff_h_pfp_sub_exists_common_rightsecondentry. ff_h_pfp_sub_exists_common_rightsecondentry + S (pfrep_right_sub_exists_common_right) = S ((S (pfrep_position_sub_exists_common_rightsecond)) * vc)) /\ exists ff_q_pfp_sub_exists_common_rightsecondentry. vb = ff_q_pfp_sub_exists_common_rightsecondentry * S ((S (pfrep_position_sub_exists_common_rightsecond)) * vc) + (pfrep_right_sub_exists_common_right)))))) \/ (((exists pfrep_gap_sub_exists_common_rightsecondoutside. pfrep_gap_sub_exists_common_rightsecondoutside+(L+M)=(pfrep_power_sub_exists_common_right)) /\ (((pfrep_right_sub_exists_common_right)=0))))) -> pfrep_left_sub_exists_common_right=pfrep_right_sub_exists_common_right)))))))) - 0012
specialize prime_field_polynomial_common_representatives_exists (p) - 0013
specialize prime_field_polynomial_common_representatives_exists (ab) - 0014
specialize prime_field_polynomial_common_representatives_exists (ac) - 0015
specialize prime_field_polynomial_common_representatives_exists (L) - 0016
specialize prime_field_polynomial_common_representatives_exists (bb) - 0017
specialize prime_field_polynomial_common_representatives_exists (bc) - 0018
specialize prime_field_polynomial_common_representatives_exists (M) - 0019
apply prime_field_polynomial_common_representatives_exists - 0020
exact hp - 0021
exact ha - 0022
exact hb - 0023
cases hc - 0024
cases hc_witness - 0025
cases hc_witness_witness - 0026
cases hc_witness_witness_witness - 0027
cases hc_witness_witness_witness_witness - 0028
cases hc_witness_witness_witness_witness_right - 0029
cases hc_witness_witness_witness_witness_right_right - 0030
have hd : exists rb rc. forall pfs_index_sub_exists_difference. (exists pfa_gap_sub_exists_differenceindex. pfa_gap_sub_exists_differenceindex + S (pfs_index_sub_exists_difference) = (L+M)) -> exists pfs_left_sub_exists_difference pfs_right_sub_exists_difference pfs_result_sub_exists_difference. ((((exists ff_h_pfp_sub_exists_differenceleft. ff_h_pfp_sub_exists_differenceleft + S (pfs_left_sub_exists_difference) = S ((S (pfs_index_sub_exists_difference)) * x1)) /\ exists ff_q_pfp_sub_exists_differenceleft. x = ff_q_pfp_sub_exists_differenceleft * S ((S (pfs_index_sub_exists_difference)) * x1) + (pfs_left_sub_exists_difference))) /\ (((((exists ff_h_pfp_sub_exists_differenceright. ff_h_pfp_sub_exists_differenceright + S (pfs_right_sub_exists_difference) = S ((S (pfs_index_sub_exists_difference)) * x3)) /\ exists ff_q_pfp_sub_exists_differenceright. x2 = ff_q_pfp_sub_exists_differenceright * S ((S (pfs_index_sub_exists_difference)) * x3) + (pfs_right_sub_exists_difference))) /\ (((((exists ff_h_pfp_sub_exists_differenceresult. ff_h_pfp_sub_exists_differenceresult + S (pfs_result_sub_exists_difference) = S ((S (pfs_index_sub_exists_difference)) * rc)) /\ exists ff_q_pfp_sub_exists_differenceresult. rb = ff_q_pfp_sub_exists_differenceresult * S ((S (pfs_index_sub_exists_difference)) * rc) + (pfs_result_sub_exists_difference))) /\ ((((exists pfa_gap_sub_exists_differenceoperationleft. pfa_gap_sub_exists_differenceoperationleft + S (pfs_right_sub_exists_difference) = (p)) /\ (((exists pfa_gap_sub_exists_differenceoperationright. pfa_gap_sub_exists_differenceoperationright + S (pfs_result_sub_exists_difference) = (p)) /\ ((((exists pfa_gap_sub_exists_differenceoperationresultbound. pfa_gap_sub_exists_differenceoperationresultbound + S (pfs_left_sub_exists_difference) = (p)) /\ ((exists pfa_offset_left_sub_exists_differenceoperationresultcongruence pfa_offset_right_sub_exists_differenceoperationresultcongruence. ((pfs_right_sub_exists_difference) + (pfs_result_sub_exists_difference)) + (p) * pfa_offset_left_sub_exists_differenceoperationresultcongruence = (pfs_left_sub_exists_difference) + (p) * pfa_offset_right_sub_exists_differenceoperationresultcongruence))))))))))))))) - 0031
specialize prime_field_polynomial_subtract_exists (p) - 0032
specialize prime_field_polynomial_subtract_exists (x) - 0033
specialize prime_field_polynomial_subtract_exists (x1) - 0034
specialize prime_field_polynomial_subtract_exists (x2) - 0035
specialize prime_field_polynomial_subtract_exists (x3) - 0036
specialize prime_field_polynomial_subtract_exists (L+M) - 0037
apply prime_field_polynomial_subtract_exists - 0038
exact hp - 0039
exact hc_witness_witness_witness_witness_left - 0040
exact hc_witness_witness_witness_witness_right_left - 0041
cases hd - 0042
cases hd_witness - 0043
have hs : forall pfp_index_sub_exists_recover. (exists pfa_gap_sub_exists_recoverindex. pfa_gap_sub_exists_recoverindex + S (pfp_index_sub_exists_recover) = (L+M)) -> exists pfp_left_sub_exists_recover pfp_right_sub_exists_recover pfp_value_sub_exists_recover. ((((exists ff_h_pfp_sub_exists_recoverleft. ff_h_pfp_sub_exists_recoverleft + S (pfp_left_sub_exists_recover) = S ((S (pfp_index_sub_exists_recover)) * x3)) /\ exists ff_q_pfp_sub_exists_recoverleft. x2 = ff_q_pfp_sub_exists_recoverleft * S ((S (pfp_index_sub_exists_recover)) * x3) + (pfp_left_sub_exists_recover))) /\ (((((exists ff_h_pfp_sub_exists_recoverright. ff_h_pfp_sub_exists_recoverright + S (pfp_right_sub_exists_recover) = S ((S (pfp_index_sub_exists_recover)) * x5)) /\ exists ff_q_pfp_sub_exists_recoverright. x4 = ff_q_pfp_sub_exists_recoverright * S ((S (pfp_index_sub_exists_recover)) * x5) + (pfp_right_sub_exists_recover))) /\ (((((exists ff_h_pfp_sub_exists_recovertarget. ff_h_pfp_sub_exists_recovertarget + S (pfp_value_sub_exists_recover) = S ((S (pfp_index_sub_exists_recover)) * x1)) /\ exists ff_q_pfp_sub_exists_recovertarget. x = ff_q_pfp_sub_exists_recovertarget * S ((S (pfp_index_sub_exists_recover)) * x1) + (pfp_value_sub_exists_recover))) /\ ((((exists pfa_gap_sub_exists_recoveroperationleft. pfa_gap_sub_exists_recoveroperationleft + S (pfp_left_sub_exists_recover) = (p)) /\ (((exists pfa_gap_sub_exists_recoveroperationright. pfa_gap_sub_exists_recoveroperationright + S (pfp_right_sub_exists_recover) = (p)) /\ ((((exists pfa_gap_sub_exists_recoveroperationresultbound. pfa_gap_sub_exists_recoveroperationresultbound + S (pfp_value_sub_exists_recover) = (p)) /\ ((exists pfa_offset_left_sub_exists_recoveroperationresultcongruence pfa_offset_right_sub_exists_recoveroperationresultcongruence. ((pfp_left_sub_exists_recover) + (pfp_right_sub_exists_recover)) + (p) * pfa_offset_left_sub_exists_recoveroperationresultcongruence = (pfp_value_sub_exists_recover) + (p) * pfa_offset_right_sub_exists_recoveroperationresultcongruence))))))))))))))) - 0044
specialize prime_field_polynomial_subtract_recover_add (p) - 0045
specialize prime_field_polynomial_subtract_recover_add (x) - 0046
specialize prime_field_polynomial_subtract_recover_add (x1) - 0047
specialize prime_field_polynomial_subtract_recover_add (x2) - 0048
specialize prime_field_polynomial_subtract_recover_add (x3) - 0049
specialize prime_field_polynomial_subtract_recover_add (x4) - 0050
specialize prime_field_polynomial_subtract_recover_add (x5) - 0051
specialize prime_field_polynomial_subtract_recover_add (L+M) - 0052
apply prime_field_polynomial_subtract_recover_add - 0053
exact hd_witness_witness - 0054
have hbound : ((forall fom_index_pfp_sub_exists_sum_left. (exists fom_gap_pfp_sub_exists_sum_left_index_bound. fom_gap_pfp_sub_exists_sum_left_index_bound + S (fom_index_pfp_sub_exists_sum_left) = L+M) -> exists fom_value_pfp_sub_exists_sum_left. ((((exists fom_beta_height_pfp_sub_exists_sum_left_entry. fom_beta_height_pfp_sub_exists_sum_left_entry + S (fom_value_pfp_sub_exists_sum_left) = S ((S (fom_index_pfp_sub_exists_sum_left)) * x3)) /\ exists fom_beta_quotient_pfp_sub_exists_sum_left_entry. x2 = fom_beta_quotient_pfp_sub_exists_sum_left_entry * S ((S (fom_index_pfp_sub_exists_sum_left)) * x3) + (fom_value_pfp_sub_exists_sum_left))) /\ (exists fom_gap_pfp_sub_exists_sum_left_value_bound. fom_gap_pfp_sub_exists_sum_left_value_bound + S (fom_value_pfp_sub_exists_sum_left) = p))) /\ (((forall fom_index_pfp_sub_exists_sum_right. (exists fom_gap_pfp_sub_exists_sum_right_index_bound. fom_gap_pfp_sub_exists_sum_right_index_bound + S (fom_index_pfp_sub_exists_sum_right) = L+M) -> exists fom_value_pfp_sub_exists_sum_right. ((((exists fom_beta_height_pfp_sub_exists_sum_right_entry. fom_beta_height_pfp_sub_exists_sum_right_entry + S (fom_value_pfp_sub_exists_sum_right) = S ((S (fom_index_pfp_sub_exists_sum_right)) * x5)) /\ exists fom_beta_quotient_pfp_sub_exists_sum_right_entry. x4 = fom_beta_quotient_pfp_sub_exists_sum_right_entry * S ((S (fom_index_pfp_sub_exists_sum_right)) * x5) + (fom_value_pfp_sub_exists_sum_right))) /\ (exists fom_gap_pfp_sub_exists_sum_right_value_bound. fom_gap_pfp_sub_exists_sum_right_value_bound + S (fom_value_pfp_sub_exists_sum_right) = p))) /\ ((forall fom_index_pfp_sub_exists_sum_result. (exists fom_gap_pfp_sub_exists_sum_result_index_bound. fom_gap_pfp_sub_exists_sum_result_index_bound + S (fom_index_pfp_sub_exists_sum_result) = L+M) -> exists fom_value_pfp_sub_exists_sum_result. ((((exists fom_beta_height_pfp_sub_exists_sum_result_entry. fom_beta_height_pfp_sub_exists_sum_result_entry + S (fom_value_pfp_sub_exists_sum_result) = S ((S (fom_index_pfp_sub_exists_sum_result)) * x1)) /\ exists fom_beta_quotient_pfp_sub_exists_sum_result_entry. x = fom_beta_quotient_pfp_sub_exists_sum_result_entry * S ((S (fom_index_pfp_sub_exists_sum_result)) * x1) + (fom_value_pfp_sub_exists_sum_result))) /\ (exists fom_gap_pfp_sub_exists_sum_result_value_bound. fom_gap_pfp_sub_exists_sum_result_value_bound + S (fom_value_pfp_sub_exists_sum_result) = p))))))) - 0055
specialize prime_field_polynomial_add_bounded (p) - 0056
specialize prime_field_polynomial_add_bounded (x2) - 0057
specialize prime_field_polynomial_add_bounded (x3) - 0058
specialize prime_field_polynomial_add_bounded (x4) - 0059
specialize prime_field_polynomial_add_bounded (x5) - 0060
specialize prime_field_polynomial_add_bounded (x) - 0061
specialize prime_field_polynomial_add_bounded (x1) - 0062
specialize prime_field_polynomial_add_bounded (L+M) - 0063
apply prime_field_polynomial_add_bounded - 0064
exact hs - 0065
cases hbound - 0066
cases hbound_right - 0067
exists x4 - 0068
exists x5 - 0069
specialize prime_field_polynomial_aligned_add_from_common (p) - 0070
specialize prime_field_polynomial_aligned_add_from_common (bb) - 0071
specialize prime_field_polynomial_aligned_add_from_common (bc) - 0072
specialize prime_field_polynomial_aligned_add_from_common (M) - 0073
specialize prime_field_polynomial_aligned_add_from_common (x4) - 0074
specialize prime_field_polynomial_aligned_add_from_common (x5) - 0075
specialize prime_field_polynomial_aligned_add_from_common (L+M) - 0076
specialize prime_field_polynomial_aligned_add_from_common (ab) - 0077
specialize prime_field_polynomial_aligned_add_from_common (ac) - 0078
specialize prime_field_polynomial_aligned_add_from_common (L) - 0079
specialize prime_field_polynomial_aligned_add_from_common (x2) - 0080
specialize prime_field_polynomial_aligned_add_from_common (x3) - 0081
specialize prime_field_polynomial_aligned_add_from_common (x4) - 0082
specialize prime_field_polynomial_aligned_add_from_common (x5) - 0083
specialize prime_field_polynomial_aligned_add_from_common (x) - 0084
specialize prime_field_polynomial_aligned_add_from_common (x1) - 0085
specialize prime_field_polynomial_aligned_add_from_common (L+M) - 0086
apply prime_field_polynomial_aligned_add_from_common - 0087
exact hb - 0088
exact hbound_right_left - 0089
exact ha - 0090
split - 0091
exact hc_witness_witness_witness_witness_right_right_right - 0092
specialize prime_field_polynomial_power_coefficient_functional (x4) - 0093
specialize prime_field_polynomial_power_coefficient_functional (x5) - 0094
specialize prime_field_polynomial_power_coefficient_functional (L+M) - 0095
apply prime_field_polynomial_power_coefficient_functional - 0096
exact hs - 0097
specialize prime_field_polynomial_equivalent_symmetric (ab) - 0098
specialize prime_field_polynomial_equivalent_symmetric (ac) - 0099
specialize prime_field_polynomial_equivalent_symmetric (L) - 0100
specialize prime_field_polynomial_equivalent_symmetric (x) - 0101
specialize prime_field_polynomial_equivalent_symmetric (x1) - 0102
specialize prime_field_polynomial_equivalent_symmetric (L+M) - 0103
apply prime_field_polynomial_equivalent_symmetric - 0104
exact hc_witness_witness_witness_witness_right_right_left