PG0072

prime_field_polynomial_monic_singleton_multiple_equivalent

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

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.

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_equivalent

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

115 script commands · 22 reading checkpoints · 7 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Named ingredients (1)

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

01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro kb
  3. L3
    intro kc
  4. L4
    intro db
  5. L5
    intro dc
  6. L6
    intro ab
  7. L7
    intro ac
  8. L8
    intro d
  9. L9
    intro pb
  10. L10
    intro pc
02Fix variables and assumptionsL11–15

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

  1. L11
    intro hp
  2. L12
    intro hd
  3. L13
    intro ha
  4. L14
    intro hc
  5. L15
    intro he
03Separate the logical casesL16–19

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

  1. L16
    cases hd
  2. L17
    cases hd_right
  3. L18
    cases ha
  4. L19
    cases ha_right
04Establish hkL20–24

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

  1. 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))
  2. L21
    specialize beta_at_exists (kb)
  3. L22
    specialize beta_at_exists (kc)
  4. L23
    specialize beta_at_exists (0)
  5. L24
    apply beta_at_exists
05Separate the logical casesL25–25

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

  1. L25
    cases hk
06Establish hpaL26–26

Establish this local claim before using it. It is not an additional assumption.

  1. 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.

  1. L27
    have hprefix : BetaPrefixEqual(ab,ac,pb,pc,S d)Definitions: BetaPrefixEqual
  2. L28
    specialize prime_field_polynomial_equivalent_implies_equal_same_length (ab)
  3. L29
    specialize prime_field_polynomial_equivalent_implies_equal_same_length (ac)
  4. L30
    specialize prime_field_polynomial_equivalent_implies_equal_same_length (pb)
  5. L31
    specialize prime_field_polynomial_equivalent_implies_equal_same_length (pc)
  6. L32
    specialize prime_field_polynomial_equivalent_implies_equal_same_length (S d)
  7. L33
    apply prime_field_polynomial_equivalent_implies_equal_same_length
  8. L34
    specialize prime_field_polynomial_equivalent_symmetric (pb)
  9. L35
    specialize prime_field_polynomial_equivalent_symmetric (pc)
  10. L36
    specialize prime_field_polynomial_equivalent_symmetric (S d)
08Use earlier factsL37–44

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

  1. L37
    specialize prime_field_polynomial_equivalent_symmetric (ab)
  2. L38
    specialize prime_field_polynomial_equivalent_symmetric (ac)
  3. L39
    specialize prime_field_polynomial_equivalent_symmetric (S d)
  4. L40
    apply prime_field_polynomial_equivalent_symmetric
  5. L41
    exact he
  6. L42
    specialize hprefix (0)
  7. L43
    specialize hprefix (1)
  8. L44
    apply hprefix
09Construct an explicit witnessL45–45

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

  1. 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.

  1. L46
    simp
11Use earlier factsL47–47

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

  1. L47
    exact ha_right_right
12Establish hmL48–57

Establish this local claim before using it. It is not an additional assumption.

  1. L48
    have hm : FpMul(p,x,1,1)Definitions: FpMul
  2. L49
    specialize prime_field_polynomial_convolution_leading_coefficient (p)
  3. L50
    specialize prime_field_polynomial_convolution_leading_coefficient (kb)
  4. L51
    specialize prime_field_polynomial_convolution_leading_coefficient (kc)
  5. L52
    specialize prime_field_polynomial_convolution_leading_coefficient (0)
  6. L53
    specialize prime_field_polynomial_convolution_leading_coefficient (db)
  7. L54
    specialize prime_field_polynomial_convolution_leading_coefficient (dc)
  8. L55
    specialize prime_field_polynomial_convolution_leading_coefficient (d)
  9. L56
    specialize prime_field_polynomial_convolution_leading_coefficient (pb)
  10. L57
    specialize prime_field_polynomial_convolution_leading_coefficient (pc)
13Use earlier factsL58–66

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

  1. L58
    specialize prime_field_polynomial_convolution_leading_coefficient (S d)
  2. L59
    specialize prime_field_polynomial_convolution_leading_coefficient (x)
  3. L60
    specialize prime_field_polynomial_convolution_leading_coefficient (1)
  4. L61
    specialize prime_field_polynomial_convolution_leading_coefficient (1)
  5. L62
    apply prime_field_polynomial_convolution_leading_coefficient
  6. L63
    exact hc
  7. L64
    exact hk_witness
  8. L65
    exact hd_right_right
  9. 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.

  1. L67
    have hone : x=1
  2. L68
    specialize prime_field_multiply_functional (p)
  3. L69
    specialize prime_field_multiply_functional (x)
  4. L70
    specialize prime_field_multiply_functional (1)
  5. L71
    specialize prime_field_multiply_functional (x)
  6. L72
    specialize prime_field_multiply_functional (1)
  7. L73
    apply prime_field_multiply_functional
  8. L74
    specialize prime_field_multiply_one_right (p)
  9. L75
    specialize prime_field_multiply_one_right (x)
  10. L76
    apply prime_field_multiply_one_right
15Use earlier factsL77–77

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

  1. L77
    exact hp
16Separate the logical casesL78–78

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

  1. L78
    cases hm
17Use earlier factsL79–80

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

  1. L79
    exact hm_left
  2. L80
    exact hm
18Establish hkoneL81–81

Establish this local claim before using it. It is not an additional assumption.

  1. 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.

  1. 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))
  2. L83
    exact hk_witness
  3. L84
    rewrite hone at hcopy
  4. L85
    rewrite hone at hcopy
  5. L86
    exact hcopy
  6. L87
    specialize prime_field_polynomial_equivalent_transitive (db)
  7. L88
    specialize prime_field_polynomial_equivalent_transitive (dc)
  8. L89
    specialize prime_field_polynomial_equivalent_transitive (S d)
  9. L90
    specialize prime_field_polynomial_equivalent_transitive (pb)
  10. L91
    specialize prime_field_polynomial_equivalent_transitive (pc)
20Use earlier factsL92–101

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

  1. L92
    specialize prime_field_polynomial_equivalent_transitive (S d)
  2. L93
    specialize prime_field_polynomial_equivalent_transitive (ab)
  3. L94
    specialize prime_field_polynomial_equivalent_transitive (ac)
  4. L95
    specialize prime_field_polynomial_equivalent_transitive (S d)
  5. L96
    apply prime_field_polynomial_equivalent_transitive
  6. L97
    specialize prime_field_polynomial_equivalent_symmetric (pb)
  7. L98
    specialize prime_field_polynomial_equivalent_symmetric (pc)
  8. L99
    specialize prime_field_polynomial_equivalent_symmetric (S d)
  9. L100
    specialize prime_field_polynomial_equivalent_symmetric (db)
  10. L101
    specialize prime_field_polynomial_equivalent_symmetric (dc)
21Use earlier factsL102–111

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

  1. L102
    specialize prime_field_polynomial_equivalent_symmetric (S d)
  2. L103
    apply prime_field_polynomial_equivalent_symmetric
  3. L104
    specialize prime_field_polynomial_convolution_left_unit_equivalent (p)
  4. L105
    specialize prime_field_polynomial_convolution_left_unit_equivalent (kb)
  5. L106
    specialize prime_field_polynomial_convolution_left_unit_equivalent (kc)
  6. L107
    specialize prime_field_polynomial_convolution_left_unit_equivalent (db)
  7. L108
    specialize prime_field_polynomial_convolution_left_unit_equivalent (dc)
  8. L109
    specialize prime_field_polynomial_convolution_left_unit_equivalent (S d)
  9. L110
    specialize prime_field_polynomial_convolution_left_unit_equivalent (pb)
  10. L111
    specialize prime_field_polynomial_convolution_left_unit_equivalent (pc)
22Use earlier factsL112–115

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

  1. L112
    apply prime_field_polynomial_convolution_left_unit_equivalent
  2. L113
    exact hkone
  3. L114
    exact hc
  4. L115
    exact he

Library-wide reading audit

Original exact command ledger · 115 lines
  1. 0001intro p
  2. 0002intro kb
  3. 0003intro kc
  4. 0004intro db
  5. 0005intro dc
  6. 0006intro ab
  7. 0007intro ac
  8. 0008intro d
  9. 0009intro pb
  10. 0010intro pc
  11. 0011intro hp
  12. 0012intro hd
  13. 0013intro ha
  14. 0014intro hc
  15. 0015intro he
  16. 0016cases hd
  17. 0017cases hd_right
  18. 0018cases ha
  19. 0019cases ha_right
  20. 0020have 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))
  21. 0021specialize beta_at_exists (kb)
  22. 0022specialize beta_at_exists (kc)
  23. 0023specialize beta_at_exists (0)
  24. 0024apply beta_at_exists
  25. 0025cases hk
  26. 0026have 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))
  27. 0027have 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)))
  28. 0028specialize prime_field_polynomial_equivalent_implies_equal_same_length (ab)
  29. 0029specialize prime_field_polynomial_equivalent_implies_equal_same_length (ac)
  30. 0030specialize prime_field_polynomial_equivalent_implies_equal_same_length (pb)
  31. 0031specialize prime_field_polynomial_equivalent_implies_equal_same_length (pc)
  32. 0032specialize prime_field_polynomial_equivalent_implies_equal_same_length (S d)
  33. 0033apply prime_field_polynomial_equivalent_implies_equal_same_length
  34. 0034specialize prime_field_polynomial_equivalent_symmetric (pb)
  35. 0035specialize prime_field_polynomial_equivalent_symmetric (pc)
  36. 0036specialize prime_field_polynomial_equivalent_symmetric (S d)
  37. 0037specialize prime_field_polynomial_equivalent_symmetric (ab)
  38. 0038specialize prime_field_polynomial_equivalent_symmetric (ac)
  39. 0039specialize prime_field_polynomial_equivalent_symmetric (S d)
  40. 0040apply prime_field_polynomial_equivalent_symmetric
  41. 0041exact he
  42. 0042specialize hprefix (0)
  43. 0043specialize hprefix (1)
  44. 0044apply hprefix
  45. 0045exists d
  46. 0046simp
  47. 0047exact ha_right_right
  48. 0048have 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))))))))
  49. 0049specialize prime_field_polynomial_convolution_leading_coefficient (p)
  50. 0050specialize prime_field_polynomial_convolution_leading_coefficient (kb)
  51. 0051specialize prime_field_polynomial_convolution_leading_coefficient (kc)
  52. 0052specialize prime_field_polynomial_convolution_leading_coefficient (0)
  53. 0053specialize prime_field_polynomial_convolution_leading_coefficient (db)
  54. 0054specialize prime_field_polynomial_convolution_leading_coefficient (dc)
  55. 0055specialize prime_field_polynomial_convolution_leading_coefficient (d)
  56. 0056specialize prime_field_polynomial_convolution_leading_coefficient (pb)
  57. 0057specialize prime_field_polynomial_convolution_leading_coefficient (pc)
  58. 0058specialize prime_field_polynomial_convolution_leading_coefficient (S d)
  59. 0059specialize prime_field_polynomial_convolution_leading_coefficient (x)
  60. 0060specialize prime_field_polynomial_convolution_leading_coefficient (1)
  61. 0061specialize prime_field_polynomial_convolution_leading_coefficient (1)
  62. 0062apply prime_field_polynomial_convolution_leading_coefficient
  63. 0063exact hc
  64. 0064exact hk_witness
  65. 0065exact hd_right_right
  66. 0066exact hpa
  67. 0067have hone : x=1
  68. 0068specialize prime_field_multiply_functional (p)
  69. 0069specialize prime_field_multiply_functional (x)
  70. 0070specialize prime_field_multiply_functional (1)
  71. 0071specialize prime_field_multiply_functional (x)
  72. 0072specialize prime_field_multiply_functional (1)
  73. 0073apply prime_field_multiply_functional
  74. 0074specialize prime_field_multiply_one_right (p)
  75. 0075specialize prime_field_multiply_one_right (x)
  76. 0076apply prime_field_multiply_one_right
  77. 0077exact hp
  78. 0078cases hm
  79. 0079exact hm_left
  80. 0080exact hm
  81. 0081have 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))
  82. 0082have 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))
  83. 0083exact hk_witness
  84. 0084rewrite hone at hcopy
  85. 0085rewrite hone at hcopy
  86. 0086exact hcopy
  87. 0087specialize prime_field_polynomial_equivalent_transitive (db)
  88. 0088specialize prime_field_polynomial_equivalent_transitive (dc)
  89. 0089specialize prime_field_polynomial_equivalent_transitive (S d)
  90. 0090specialize prime_field_polynomial_equivalent_transitive (pb)
  91. 0091specialize prime_field_polynomial_equivalent_transitive (pc)
  92. 0092specialize prime_field_polynomial_equivalent_transitive (S d)
  93. 0093specialize prime_field_polynomial_equivalent_transitive (ab)
  94. 0094specialize prime_field_polynomial_equivalent_transitive (ac)
  95. 0095specialize prime_field_polynomial_equivalent_transitive (S d)
  96. 0096apply prime_field_polynomial_equivalent_transitive
  97. 0097specialize prime_field_polynomial_equivalent_symmetric (pb)
  98. 0098specialize prime_field_polynomial_equivalent_symmetric (pc)
  99. 0099specialize prime_field_polynomial_equivalent_symmetric (S d)
  100. 0100specialize prime_field_polynomial_equivalent_symmetric (db)
  101. 0101specialize prime_field_polynomial_equivalent_symmetric (dc)
  102. 0102specialize prime_field_polynomial_equivalent_symmetric (S d)
  103. 0103apply prime_field_polynomial_equivalent_symmetric
  104. 0104specialize prime_field_polynomial_convolution_left_unit_equivalent (p)
  105. 0105specialize prime_field_polynomial_convolution_left_unit_equivalent (kb)
  106. 0106specialize prime_field_polynomial_convolution_left_unit_equivalent (kc)
  107. 0107specialize prime_field_polynomial_convolution_left_unit_equivalent (db)
  108. 0108specialize prime_field_polynomial_convolution_left_unit_equivalent (dc)
  109. 0109specialize prime_field_polynomial_convolution_left_unit_equivalent (S d)
  110. 0110specialize prime_field_polynomial_convolution_left_unit_equivalent (pb)
  111. 0111specialize prime_field_polynomial_convolution_left_unit_equivalent (pc)
  112. 0112apply prime_field_polynomial_convolution_left_unit_equivalent
  113. 0113exact hkone
  114. 0114exact hc
  115. 0115exact he