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 kb kc db dc ab ac d pb pc. (~((p) = 1) /\ forall pfa_factor_left_singleton_prime pfa_factor_right_singleton_prime. (p) = pfa_factor_left_singleton_prime * pfa_factor_right_singleton_prime -> pfa_factor_left_singleton_prime = 1 \/ pfa_factor_right_singleton_prime = 1) -> (((~((S d) = 0)) /\ (((forall fom_index_pfp_singleton_divisorcoefficients. (exists fom_gap_pfp_singleton_divisorcoefficients_index_bound. fom_gap_pfp_singleton_divisorcoefficients_index_bound + S (fom_index_pfp_singleton_divisorcoefficients) = S d) -> exists fom_value_pfp_singleton_divisorcoefficients. ((((exists fom_beta_height_pfp_singleton_divisorcoefficients_entry. fom_beta_height_pfp_singleton_divisorcoefficients_entry + S (fom_value_pfp_singleton_divisorcoefficients) = S ((S (fom_index_pfp_singleton_divisorcoefficients)) * dc)) /\ exists fom_beta_quotient_pfp_singleton_divisorcoefficients_entry. db = fom_beta_quotient_pfp_singleton_divisorcoefficients_entry * S ((S (fom_index_pfp_singleton_divisorcoefficients)) * dc) + (fom_value_pfp_singleton_divisorcoefficients))) /\ (exists fom_gap_pfp_singleton_divisorcoefficients_value_bound. fom_gap_pfp_singleton_divisorcoefficients_value_bound + S (fom_value_pfp_singleton_divisorcoefficients) = p))) /\ ((((exists ff_h_pfp_singleton_divisorleading. ff_h_pfp_singleton_divisorleading + S (1) = S ((S (0)) * dc)) /\ exists ff_q_pfp_singleton_divisorleading. db = ff_q_pfp_singleton_divisorleading * S ((S (0)) * dc) + (1)))))))) -> (((~((S d) = 0)) /\ (((forall fom_index_pfp_singleton_targetcoefficients. (exists fom_gap_pfp_singleton_targetcoefficients_index_bound. fom_gap_pfp_singleton_targetcoefficients_index_bound + S (fom_index_pfp_singleton_targetcoefficients) = S d) -> exists fom_value_pfp_singleton_targetcoefficients. ((((exists fom_beta_height_pfp_singleton_targetcoefficients_entry. fom_beta_height_pfp_singleton_targetcoefficients_entry + S (fom_value_pfp_singleton_targetcoefficients) = S ((S (fom_index_pfp_singleton_targetcoefficients)) * ac)) /\ exists fom_beta_quotient_pfp_singleton_targetcoefficients_entry. ab = fom_beta_quotient_pfp_singleton_targetcoefficients_entry * S ((S (fom_index_pfp_singleton_targetcoefficients)) * ac) + (fom_value_pfp_singleton_targetcoefficients))) /\ (exists fom_gap_pfp_singleton_targetcoefficients_value_bound. fom_gap_pfp_singleton_targetcoefficients_value_bound + S (fom_value_pfp_singleton_targetcoefficients) = p))) /\ ((((exists ff_h_pfp_singleton_targetleading. ff_h_pfp_singleton_targetleading + S (1) = S ((S (0)) * ac)) /\ exists ff_q_pfp_singleton_targetleading. ab = ff_q_pfp_singleton_targetleading * S ((S (0)) * ac) + (1)))))))) -> (((forall fom_index_pfp_singleton_productleft. (exists fom_gap_pfp_singleton_productleft_index_bound. fom_gap_pfp_singleton_productleft_index_bound + S (fom_index_pfp_singleton_productleft) = 1) -> exists fom_value_pfp_singleton_productleft. ((((exists fom_beta_height_pfp_singleton_productleft_entry. fom_beta_height_pfp_singleton_productleft_entry + S (fom_value_pfp_singleton_productleft) = S ((S (fom_index_pfp_singleton_productleft)) * kc)) /\ exists fom_beta_quotient_pfp_singleton_productleft_entry. kb = fom_beta_quotient_pfp_singleton_productleft_entry * S ((S (fom_index_pfp_singleton_productleft)) * kc) + (fom_value_pfp_singleton_productleft))) /\ (exists fom_gap_pfp_singleton_productleft_value_bound. fom_gap_pfp_singleton_productleft_value_bound + S (fom_value_pfp_singleton_productleft) = p))) /\ (((forall fom_index_pfp_singleton_productright. (exists fom_gap_pfp_singleton_productright_index_bound. fom_gap_pfp_singleton_productright_index_bound + S (fom_index_pfp_singleton_productright) = S d) -> exists fom_value_pfp_singleton_productright. ((((exists fom_beta_height_pfp_singleton_productright_entry. fom_beta_height_pfp_singleton_productright_entry + S (fom_value_pfp_singleton_productright) = S ((S (fom_index_pfp_singleton_productright)) * dc)) /\ exists fom_beta_quotient_pfp_singleton_productright_entry. db = fom_beta_quotient_pfp_singleton_productright_entry * S ((S (fom_index_pfp_singleton_productright)) * dc) + (fom_value_pfp_singleton_productright))) /\ (exists fom_gap_pfp_singleton_productright_value_bound. fom_gap_pfp_singleton_productright_value_bound + S (fom_value_pfp_singleton_productright) = p))) /\ (((((((1)=0 \/ (S d)=0) /\ (((S d)=0)))) \/ (((~((1)=0)) /\ (((~((S d)=0)) /\ (((1)+(S d)=S (S d)))))))) /\ ((forall pfc_index_singleton_productcoefficients. (exists pfa_gap_singleton_productcoefficientsbound. pfa_gap_singleton_productcoefficientsbound + S (pfc_index_singleton_productcoefficients) = (S d)) -> exists pfc_value_singleton_productcoefficients. ((((exists ff_h_pfp_singleton_productcoefficientsentry. ff_h_pfp_singleton_productcoefficientsentry + S (pfc_value_singleton_productcoefficients) = S ((S (pfc_index_singleton_productcoefficients)) * pc)) /\ exists ff_q_pfp_singleton_productcoefficientsentry. pb = ff_q_pfp_singleton_productcoefficientsentry * S ((S (pfc_index_singleton_productcoefficients)) * pc) + (pfc_value_singleton_productcoefficients))) /\ ((exists pfc_terms_code_singleton_productcoefficientscoefficient pfc_terms_scale_singleton_productcoefficientscoefficient pfc_natural_sum_singleton_productcoefficientscoefficient. ((forall pfc_index_singleton_productcoefficientscoefficientdiagonal. (exists pfa_gap_singleton_productcoefficientscoefficientdiagonalbound. pfa_gap_singleton_productcoefficientscoefficientdiagonalbound + S (pfc_index_singleton_productcoefficientscoefficientdiagonal) = (S (pfc_index_singleton_productcoefficients))) -> exists pfc_value_singleton_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_singleton_productcoefficientscoefficientdiagonalentry. ff_h_pfp_singleton_productcoefficientscoefficientdiagonalentry + S (pfc_value_singleton_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_singleton_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_singleton_productcoefficientscoefficient)) /\ exists ff_q_pfp_singleton_productcoefficientscoefficientdiagonalentry. pfc_terms_code_singleton_productcoefficientscoefficient = ff_q_pfp_singleton_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_singleton_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_singleton_productcoefficientscoefficient) + (pfc_value_singleton_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_singleton_productcoefficientscoefficientdiagonalterm pfc_left_singleton_productcoefficientscoefficientdiagonalterm pfc_right_singleton_productcoefficientscoefficientdiagonalterm. (((pfc_index_singleton_productcoefficientscoefficientdiagonal)+pfc_complement_singleton_productcoefficientscoefficientdiagonalterm=(pfc_index_singleton_productcoefficients)) /\ ((((((exists pfa_gap_singleton_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_singleton_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_singleton_productcoefficientscoefficientdiagonal) = (1)) /\ ((((exists ff_h_pfp_singleton_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_singleton_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_singleton_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_singleton_productcoefficientscoefficientdiagonal)) * kc)) /\ exists ff_q_pfp_singleton_productcoefficientscoefficientdiagonaltermleftentry. kb = ff_q_pfp_singleton_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_singleton_productcoefficientscoefficientdiagonal)) * kc) + (pfc_left_singleton_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_singleton_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_singleton_productcoefficientscoefficientdiagonaltermleftoutside+(1)=(pfc_index_singleton_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_singleton_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_singleton_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_singleton_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_singleton_productcoefficientscoefficientdiagonalterm) = (S d)) /\ ((((exists ff_h_pfp_singleton_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_singleton_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_singleton_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_singleton_productcoefficientscoefficientdiagonalterm)) * dc)) /\ exists ff_q_pfp_singleton_productcoefficientscoefficientdiagonaltermrightentry. db = ff_q_pfp_singleton_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_singleton_productcoefficientscoefficientdiagonalterm)) * dc) + (pfc_right_singleton_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_singleton_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_singleton_productcoefficientscoefficientdiagonaltermrightoutside+(S d)=(pfc_complement_singleton_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_singleton_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_singleton_productcoefficientscoefficientdiagonal)=pfc_left_singleton_productcoefficientscoefficientdiagonalterm*pfc_right_singleton_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_singleton_productcoefficientscoefficientsum fs_v_pfc_singleton_productcoefficientscoefficientsum. ((((exists fs_h_pfc_singleton_productcoefficientscoefficientsum_body_start. fs_h_pfc_singleton_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_singleton_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_singleton_productcoefficientscoefficientsum_body_start. fs_u_pfc_singleton_productcoefficientscoefficientsum = fs_q_pfc_singleton_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_singleton_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_singleton_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_singleton_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_singleton_productcoefficientscoefficient) = S ((S (S (pfc_index_singleton_productcoefficients))) * fs_v_pfc_singleton_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_singleton_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_singleton_productcoefficientscoefficientsum = fs_q_pfc_singleton_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_singleton_productcoefficients))) * fs_v_pfc_singleton_productcoefficientscoefficientsum) + (pfc_natural_sum_singleton_productcoefficientscoefficient))) /\ forall fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_singleton_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_singleton_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps = S (pfc_index_singleton_productcoefficients)) -> exists fs_a_pfc_singleton_productcoefficientscoefficientsum_body_steps fs_r_pfc_singleton_productcoefficientscoefficientsum_body_steps fs_s_pfc_singleton_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_singleton_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_singleton_productcoefficientscoefficient)) /\ exists fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_singleton_productcoefficientscoefficient = fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_singleton_productcoefficientscoefficient) + (fs_a_pfc_singleton_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_singleton_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_singleton_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_singleton_productcoefficientscoefficientsum = fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_singleton_productcoefficientscoefficientsum) + (fs_r_pfc_singleton_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_singleton_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_singleton_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_singleton_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_singleton_productcoefficientscoefficientsum = fs_q_pfc_singleton_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_singleton_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_singleton_productcoefficientscoefficientsum) + (fs_s_pfc_singleton_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_singleton_productcoefficientscoefficientsum_body_steps = fs_r_pfc_singleton_productcoefficientscoefficientsum_body_steps + fs_a_pfc_singleton_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_singleton_productcoefficientscoefficientresiduebound. pfa_gap_singleton_productcoefficientscoefficientresiduebound + S (pfc_value_singleton_productcoefficients) = (p)) /\ ((exists pfa_offset_left_singleton_productcoefficientscoefficientresiduecongruence pfa_offset_right_singleton_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_singleton_productcoefficientscoefficient) + (p) * pfa_offset_left_singleton_productcoefficientscoefficientresiduecongruence = (pfc_value_singleton_productcoefficients) + (p) * pfa_offset_right_singleton_productcoefficientscoefficientresiduecongruence))))))))))))))))))) -> (forall pfrep_power_singleton_target_equivalent pfrep_left_singleton_target_equivalent pfrep_right_singleton_target_equivalent. ((exists pfrep_position_singleton_target_equivalentfirst. ((pfrep_position_singleton_target_equivalentfirst+S (pfrep_power_singleton_target_equivalent)=(S d)) /\ ((((exists ff_h_pfp_singleton_target_equivalentfirstentry. ff_h_pfp_singleton_target_equivalentfirstentry + S (pfrep_left_singleton_target_equivalent) = S ((S (pfrep_position_singleton_target_equivalentfirst)) * pc)) /\ exists ff_q_pfp_singleton_target_equivalentfirstentry. pb = ff_q_pfp_singleton_target_equivalentfirstentry * S ((S (pfrep_position_singleton_target_equivalentfirst)) * pc) + (pfrep_left_singleton_target_equivalent)))))) \/ (((exists pfrep_gap_singleton_target_equivalentfirstoutside. pfrep_gap_singleton_target_equivalentfirstoutside+(S d)=(pfrep_power_singleton_target_equivalent)) /\ (((pfrep_left_singleton_target_equivalent)=0))))) -> ((exists pfrep_position_singleton_target_equivalentsecond. ((pfrep_position_singleton_target_equivalentsecond+S (pfrep_power_singleton_target_equivalent)=(S d)) /\ ((((exists ff_h_pfp_singleton_target_equivalentsecondentry. ff_h_pfp_singleton_target_equivalentsecondentry + S (pfrep_right_singleton_target_equivalent) = S ((S (pfrep_position_singleton_target_equivalentsecond)) * ac)) /\ exists ff_q_pfp_singleton_target_equivalentsecondentry. ab = ff_q_pfp_singleton_target_equivalentsecondentry * S ((S (pfrep_position_singleton_target_equivalentsecond)) * ac) + (pfrep_right_singleton_target_equivalent)))))) \/ (((exists pfrep_gap_singleton_target_equivalentsecondoutside. pfrep_gap_singleton_target_equivalentsecondoutside+(S d)=(pfrep_power_singleton_target_equivalent)) /\ (((pfrep_right_singleton_target_equivalent)=0))))) -> pfrep_left_singleton_target_equivalent=pfrep_right_singleton_target_equivalent) -> (forall pfrep_power_singleton_result pfrep_left_singleton_result pfrep_right_singleton_result. ((exists pfrep_position_singleton_resultfirst. ((pfrep_position_singleton_resultfirst+S (pfrep_power_singleton_result)=(S d)) /\ ((((exists ff_h_pfp_singleton_resultfirstentry. ff_h_pfp_singleton_resultfirstentry + S (pfrep_left_singleton_result) = S ((S (pfrep_position_singleton_resultfirst)) * dc)) /\ exists ff_q_pfp_singleton_resultfirstentry. db = ff_q_pfp_singleton_resultfirstentry * S ((S (pfrep_position_singleton_resultfirst)) * dc) + (pfrep_left_singleton_result)))))) \/ (((exists pfrep_gap_singleton_resultfirstoutside. pfrep_gap_singleton_resultfirstoutside+(S d)=(pfrep_power_singleton_result)) /\ (((pfrep_left_singleton_result)=0))))) -> ((exists pfrep_position_singleton_resultsecond. ((pfrep_position_singleton_resultsecond+S (pfrep_power_singleton_result)=(S d)) /\ ((((exists ff_h_pfp_singleton_resultsecondentry. ff_h_pfp_singleton_resultsecondentry + S (pfrep_right_singleton_result) = S ((S (pfrep_position_singleton_resultsecond)) * ac)) /\ exists ff_q_pfp_singleton_resultsecondentry. ab = ff_q_pfp_singleton_resultsecondentry * S ((S (pfrep_position_singleton_resultsecond)) * ac) + (pfrep_right_singleton_result)))))) \/ (((exists pfrep_gap_singleton_resultsecondoutside. pfrep_gap_singleton_resultsecondoutside+(S d)=(pfrep_power_singleton_result)) /\ (((pfrep_right_singleton_result)=0))))) -> pfrep_left_singleton_result=pfrep_right_singleton_result)Constructive proof overview
Generated structural guide
Both monic heads force an actual left singleton quotient to have coefficient one, by the ordered leading product k*1. The genuine left-unit convolution law then gives formal equivalence.
The unchanged tactic script uses 8 declared prerequisites and contains 115 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_at_exists Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_implies_equal_same_length Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_symmetric Alpha theorem; checked-use authorized prime_field_polynomial_convolution_leading_coefficient Alpha theorem; checked-use authorized prime_field_multiply_functional Alpha theorem; checked-use authorized prime_field_multiply_one_right Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_transitive Alpha theorem; checked-use authorized PG0032 prime_field_polynomial_convolution_left_unit_equivalentDirect 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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–15
03Separate the logical casesL16–19
04Establish hkL20–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L20
have hk : exists k. ((exists ff_h_pfp_singleton_head. ff_h_pfp_singleton_head + S (k) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_head. kb = ff_q_pfp_singleton_head * S ((S (0)) * kc) + (k)) - L21
specialize beta_at_exists (kb) - L22
specialize beta_at_exists (kc) - L23
specialize beta_at_exists (0) - L24
apply beta_at_exists
05Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
cases hk
06Establish hpaL26–26
Establish this local claim before using it. It is not an additional assumption.
- L26
have hpa : ((exists ff_h_pfp_singleton_product_head. ff_h_pfp_singleton_product_head + S (1) = S ((S (0)) * pc)) /\ exists ff_q_pfp_singleton_product_head. pb = ff_q_pfp_singleton_product_head * S ((S (0)) * pc) + (1))
07Establish hprefixL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial equivalent implies equal same length.
- L27
have hprefix : BetaPrefixEqual(ab,ac,pb,pc,S d)Definitions: BetaPrefixEqual - L28
specialize prime_field_polynomial_equivalent_implies_equal_same_length (ab) - L29
specialize prime_field_polynomial_equivalent_implies_equal_same_length (ac) - L30
specialize prime_field_polynomial_equivalent_implies_equal_same_length (pb) - L31
specialize prime_field_polynomial_equivalent_implies_equal_same_length (pc) - L32
specialize prime_field_polynomial_equivalent_implies_equal_same_length (S d) - L33
apply prime_field_polynomial_equivalent_implies_equal_same_length - L34
specialize prime_field_polynomial_equivalent_symmetric (pb) - L35
specialize prime_field_polynomial_equivalent_symmetric (pc) - L36
specialize prime_field_polynomial_equivalent_symmetric (S d)
08Use earlier factsL37–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
specialize prime_field_polynomial_equivalent_symmetric (ab) - L38
specialize prime_field_polynomial_equivalent_symmetric (ac) - L39
specialize prime_field_polynomial_equivalent_symmetric (S d) - L40
apply prime_field_polynomial_equivalent_symmetric - L41
exact he - L42
specialize hprefix (0) - L43
specialize hprefix (1) - L44
apply hprefix
09Construct an explicit witnessL45–45
Supply the displayed value, then prove that it has the required property.
- L45
exists d
10Calculate and transport equalitiesL46–46
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L46
simp
11Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact ha_right_right
12Establish hmL48–57
Establish this local claim before using it. It is not an additional assumption.
- L48
have hm : FpMul(p,x,1,1)Definitions: FpMul - L49
specialize prime_field_polynomial_convolution_leading_coefficient (p) - L50
specialize prime_field_polynomial_convolution_leading_coefficient (kb) - L51
specialize prime_field_polynomial_convolution_leading_coefficient (kc) - L52
specialize prime_field_polynomial_convolution_leading_coefficient (0) - L53
specialize prime_field_polynomial_convolution_leading_coefficient (db) - L54
specialize prime_field_polynomial_convolution_leading_coefficient (dc) - L55
specialize prime_field_polynomial_convolution_leading_coefficient (d) - L56
specialize prime_field_polynomial_convolution_leading_coefficient (pb) - L57
specialize prime_field_polynomial_convolution_leading_coefficient (pc)
13Use earlier factsL58–66
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
specialize prime_field_polynomial_convolution_leading_coefficient (S d) - L59
specialize prime_field_polynomial_convolution_leading_coefficient (x) - L60
specialize prime_field_polynomial_convolution_leading_coefficient (1) - L61
specialize prime_field_polynomial_convolution_leading_coefficient (1) - L62
apply prime_field_polynomial_convolution_leading_coefficient - L63
exact hc - L64
exact hk_witness - L65
exact hd_right_right - L66
exact hpa
14Establish honeL67–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply functional.
- L67
have hone : x=1 - L68
specialize prime_field_multiply_functional (p) - L69
specialize prime_field_multiply_functional (x) - L70
specialize prime_field_multiply_functional (1) - L71
specialize prime_field_multiply_functional (x) - L72
specialize prime_field_multiply_functional (1) - L73
apply prime_field_multiply_functional - L74
specialize prime_field_multiply_one_right (p) - L75
specialize prime_field_multiply_one_right (x) - L76
apply prime_field_multiply_one_right
15Use earlier factsL77–77
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
exact hp
16Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
cases hm
17Use earlier factsL79–80
18Establish hkoneL81–81
Establish this local claim before using it. It is not an additional assumption.
- L81
have hkone : ((exists ff_h_pfp_singleton_unit_head. ff_h_pfp_singleton_unit_head + S (1) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_unit_head. kb = ff_q_pfp_singleton_unit_head * S ((S (0)) * kc) + (1))
19Establish hcopyL82–91
Establish this local claim before using it. It is not an additional assumption.
- L82
have hcopy : ((exists ff_h_pfp_singleton_copy_head. ff_h_pfp_singleton_copy_head + S (x) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_copy_head. kb = ff_q_pfp_singleton_copy_head * S ((S (0)) * kc) + (x)) - L83
exact hk_witness - L84
rewrite hone at hcopy - L85
rewrite hone at hcopy - L86
exact hcopy - L87
specialize prime_field_polynomial_equivalent_transitive (db) - L88
specialize prime_field_polynomial_equivalent_transitive (dc) - L89
specialize prime_field_polynomial_equivalent_transitive (S d) - L90
specialize prime_field_polynomial_equivalent_transitive (pb) - L91
specialize prime_field_polynomial_equivalent_transitive (pc)
20Use earlier factsL92–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
specialize prime_field_polynomial_equivalent_transitive (S d) - L93
specialize prime_field_polynomial_equivalent_transitive (ab) - L94
specialize prime_field_polynomial_equivalent_transitive (ac) - L95
specialize prime_field_polynomial_equivalent_transitive (S d) - L96
apply prime_field_polynomial_equivalent_transitive - L97
specialize prime_field_polynomial_equivalent_symmetric (pb) - L98
specialize prime_field_polynomial_equivalent_symmetric (pc) - L99
specialize prime_field_polynomial_equivalent_symmetric (S d) - L100
specialize prime_field_polynomial_equivalent_symmetric (db) - L101
specialize prime_field_polynomial_equivalent_symmetric (dc)
21Use earlier factsL102–111
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L102
specialize prime_field_polynomial_equivalent_symmetric (S d) - L103
apply prime_field_polynomial_equivalent_symmetric - L104
specialize prime_field_polynomial_convolution_left_unit_equivalent (p) - L105
specialize prime_field_polynomial_convolution_left_unit_equivalent (kb) - L106
specialize prime_field_polynomial_convolution_left_unit_equivalent (kc) - L107
specialize prime_field_polynomial_convolution_left_unit_equivalent (db) - L108
specialize prime_field_polynomial_convolution_left_unit_equivalent (dc) - L109
specialize prime_field_polynomial_convolution_left_unit_equivalent (S d) - L110
specialize prime_field_polynomial_convolution_left_unit_equivalent (pb) - L111
specialize prime_field_polynomial_convolution_left_unit_equivalent (pc)
Original exact command ledger · 115 lines
- 0001
intro p - 0002
intro kb - 0003
intro kc - 0004
intro db - 0005
intro dc - 0006
intro ab - 0007
intro ac - 0008
intro d - 0009
intro pb - 0010
intro pc - 0011
intro hp - 0012
intro hd - 0013
intro ha - 0014
intro hc - 0015
intro he - 0016
cases hd - 0017
cases hd_right - 0018
cases ha - 0019
cases ha_right - 0020
have hk : exists k. ((exists ff_h_pfp_singleton_head. ff_h_pfp_singleton_head + S (k) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_head. kb = ff_q_pfp_singleton_head * S ((S (0)) * kc) + (k)) - 0021
specialize beta_at_exists (kb) - 0022
specialize beta_at_exists (kc) - 0023
specialize beta_at_exists (0) - 0024
apply beta_at_exists - 0025
cases hk - 0026
have hpa : ((exists ff_h_pfp_singleton_product_head. ff_h_pfp_singleton_product_head + S (1) = S ((S (0)) * pc)) /\ exists ff_q_pfp_singleton_product_head. pb = ff_q_pfp_singleton_product_head * S ((S (0)) * pc) + (1)) - 0027
have hprefix : forall mdr_i_pfp_singleton_prefix mdr_a_pfp_singleton_prefix. (exists mdr_gap_pfp_singleton_prefixb. mdr_gap_pfp_singleton_prefixb + S (mdr_i_pfp_singleton_prefix) = (S d)) -> (((exists ff_h_mdr_pfp_singleton_prefixo. ff_h_mdr_pfp_singleton_prefixo + S (mdr_a_pfp_singleton_prefix) = S ((S (mdr_i_pfp_singleton_prefix)) * ac)) /\ exists ff_q_mdr_pfp_singleton_prefixo. ab = ff_q_mdr_pfp_singleton_prefixo * S ((S (mdr_i_pfp_singleton_prefix)) * ac) + (mdr_a_pfp_singleton_prefix))) -> (((exists ff_h_mdr_pfp_singleton_prefixn. ff_h_mdr_pfp_singleton_prefixn + S (mdr_a_pfp_singleton_prefix) = S ((S (mdr_i_pfp_singleton_prefix)) * pc)) /\ exists ff_q_mdr_pfp_singleton_prefixn. pb = ff_q_mdr_pfp_singleton_prefixn * S ((S (mdr_i_pfp_singleton_prefix)) * pc) + (mdr_a_pfp_singleton_prefix))) - 0028
specialize prime_field_polynomial_equivalent_implies_equal_same_length (ab) - 0029
specialize prime_field_polynomial_equivalent_implies_equal_same_length (ac) - 0030
specialize prime_field_polynomial_equivalent_implies_equal_same_length (pb) - 0031
specialize prime_field_polynomial_equivalent_implies_equal_same_length (pc) - 0032
specialize prime_field_polynomial_equivalent_implies_equal_same_length (S d) - 0033
apply prime_field_polynomial_equivalent_implies_equal_same_length - 0034
specialize prime_field_polynomial_equivalent_symmetric (pb) - 0035
specialize prime_field_polynomial_equivalent_symmetric (pc) - 0036
specialize prime_field_polynomial_equivalent_symmetric (S d) - 0037
specialize prime_field_polynomial_equivalent_symmetric (ab) - 0038
specialize prime_field_polynomial_equivalent_symmetric (ac) - 0039
specialize prime_field_polynomial_equivalent_symmetric (S d) - 0040
apply prime_field_polynomial_equivalent_symmetric - 0041
exact he - 0042
specialize hprefix (0) - 0043
specialize hprefix (1) - 0044
apply hprefix - 0045
exists d - 0046
simp - 0047
exact ha_right_right - 0048
have hm : ((exists pfa_gap_singleton_leading_multiplyleft. pfa_gap_singleton_leading_multiplyleft + S (x) = (p)) /\ (((exists pfa_gap_singleton_leading_multiplyright. pfa_gap_singleton_leading_multiplyright + S (1) = (p)) /\ ((((exists pfa_gap_singleton_leading_multiplyresultbound. pfa_gap_singleton_leading_multiplyresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_singleton_leading_multiplyresultcongruence pfa_offset_right_singleton_leading_multiplyresultcongruence. ((x) * (1)) + (p) * pfa_offset_left_singleton_leading_multiplyresultcongruence = (1) + (p) * pfa_offset_right_singleton_leading_multiplyresultcongruence)))))))) - 0049
specialize prime_field_polynomial_convolution_leading_coefficient (p) - 0050
specialize prime_field_polynomial_convolution_leading_coefficient (kb) - 0051
specialize prime_field_polynomial_convolution_leading_coefficient (kc) - 0052
specialize prime_field_polynomial_convolution_leading_coefficient (0) - 0053
specialize prime_field_polynomial_convolution_leading_coefficient (db) - 0054
specialize prime_field_polynomial_convolution_leading_coefficient (dc) - 0055
specialize prime_field_polynomial_convolution_leading_coefficient (d) - 0056
specialize prime_field_polynomial_convolution_leading_coefficient (pb) - 0057
specialize prime_field_polynomial_convolution_leading_coefficient (pc) - 0058
specialize prime_field_polynomial_convolution_leading_coefficient (S d) - 0059
specialize prime_field_polynomial_convolution_leading_coefficient (x) - 0060
specialize prime_field_polynomial_convolution_leading_coefficient (1) - 0061
specialize prime_field_polynomial_convolution_leading_coefficient (1) - 0062
apply prime_field_polynomial_convolution_leading_coefficient - 0063
exact hc - 0064
exact hk_witness - 0065
exact hd_right_right - 0066
exact hpa - 0067
have hone : x=1 - 0068
specialize prime_field_multiply_functional (p) - 0069
specialize prime_field_multiply_functional (x) - 0070
specialize prime_field_multiply_functional (1) - 0071
specialize prime_field_multiply_functional (x) - 0072
specialize prime_field_multiply_functional (1) - 0073
apply prime_field_multiply_functional - 0074
specialize prime_field_multiply_one_right (p) - 0075
specialize prime_field_multiply_one_right (x) - 0076
apply prime_field_multiply_one_right - 0077
exact hp - 0078
cases hm - 0079
exact hm_left - 0080
exact hm - 0081
have hkone : ((exists ff_h_pfp_singleton_unit_head. ff_h_pfp_singleton_unit_head + S (1) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_unit_head. kb = ff_q_pfp_singleton_unit_head * S ((S (0)) * kc) + (1)) - 0082
have hcopy : ((exists ff_h_pfp_singleton_copy_head. ff_h_pfp_singleton_copy_head + S (x) = S ((S (0)) * kc)) /\ exists ff_q_pfp_singleton_copy_head. kb = ff_q_pfp_singleton_copy_head * S ((S (0)) * kc) + (x)) - 0083
exact hk_witness - 0084
rewrite hone at hcopy - 0085
rewrite hone at hcopy - 0086
exact hcopy - 0087
specialize prime_field_polynomial_equivalent_transitive (db) - 0088
specialize prime_field_polynomial_equivalent_transitive (dc) - 0089
specialize prime_field_polynomial_equivalent_transitive (S d) - 0090
specialize prime_field_polynomial_equivalent_transitive (pb) - 0091
specialize prime_field_polynomial_equivalent_transitive (pc) - 0092
specialize prime_field_polynomial_equivalent_transitive (S d) - 0093
specialize prime_field_polynomial_equivalent_transitive (ab) - 0094
specialize prime_field_polynomial_equivalent_transitive (ac) - 0095
specialize prime_field_polynomial_equivalent_transitive (S d) - 0096
apply prime_field_polynomial_equivalent_transitive - 0097
specialize prime_field_polynomial_equivalent_symmetric (pb) - 0098
specialize prime_field_polynomial_equivalent_symmetric (pc) - 0099
specialize prime_field_polynomial_equivalent_symmetric (S d) - 0100
specialize prime_field_polynomial_equivalent_symmetric (db) - 0101
specialize prime_field_polynomial_equivalent_symmetric (dc) - 0102
specialize prime_field_polynomial_equivalent_symmetric (S d) - 0103
apply prime_field_polynomial_equivalent_symmetric - 0104
specialize prime_field_polynomial_convolution_left_unit_equivalent (p) - 0105
specialize prime_field_polynomial_convolution_left_unit_equivalent (kb) - 0106
specialize prime_field_polynomial_convolution_left_unit_equivalent (kc) - 0107
specialize prime_field_polynomial_convolution_left_unit_equivalent (db) - 0108
specialize prime_field_polynomial_convolution_left_unit_equivalent (dc) - 0109
specialize prime_field_polynomial_convolution_left_unit_equivalent (S d) - 0110
specialize prime_field_polynomial_convolution_left_unit_equivalent (pb) - 0111
specialize prime_field_polynomial_convolution_left_unit_equivalent (pc) - 0112
apply prime_field_polynomial_convolution_left_unit_equivalent - 0113
exact hkone - 0114
exact hc - 0115
exact he