PG0052

prime_field_polynomial_left_constant_product_exists

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

Construct the canonical singleton and actual scalar output, then prove their genuine left-factor product using those same output codes. Empty source prefixes still require a canonical scalar and singleton; no beta-code uniqueness or gcd endpoint is claimed.

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 k ab ac L. (~((p) = 1) /\ forall pfa_factor_left_left_constant_exists_prime pfa_factor_right_left_constant_exists_prime. (p) = pfa_factor_left_left_constant_exists_prime * pfa_factor_right_left_constant_exists_prime -> pfa_factor_left_left_constant_exists_prime = 1 \/ pfa_factor_right_left_constant_exists_prime = 1) -> (exists pfa_gap_left_constant_exists_scalar. pfa_gap_left_constant_exists_scalar + S (k) = (p)) -> (forall fom_index_pfp_left_constant_exists_input. (exists fom_gap_pfp_left_constant_exists_input_index_bound. fom_gap_pfp_left_constant_exists_input_index_bound + S (fom_index_pfp_left_constant_exists_input) = L) -> exists fom_value_pfp_left_constant_exists_input. ((((exists fom_beta_height_pfp_left_constant_exists_input_entry. fom_beta_height_pfp_left_constant_exists_input_entry + S (fom_value_pfp_left_constant_exists_input) = S ((S (fom_index_pfp_left_constant_exists_input)) * ac)) /\ exists fom_beta_quotient_pfp_left_constant_exists_input_entry. ab = fom_beta_quotient_pfp_left_constant_exists_input_entry * S ((S (fom_index_pfp_left_constant_exists_input)) * ac) + (fom_value_pfp_left_constant_exists_input))) /\ (exists fom_gap_pfp_left_constant_exists_input_value_bound. fom_gap_pfp_left_constant_exists_input_value_bound + S (fom_value_pfp_left_constant_exists_input) = p))) -> (exists kb kc hb hc. ((forall fom_index_pfp_left_constant_exists_result_K. (exists fom_gap_pfp_left_constant_exists_result_K_index_bound. fom_gap_pfp_left_constant_exists_result_K_index_bound + S (fom_index_pfp_left_constant_exists_result_K) = 1) -> exists fom_value_pfp_left_constant_exists_result_K. ((((exists fom_beta_height_pfp_left_constant_exists_result_K_entry. fom_beta_height_pfp_left_constant_exists_result_K_entry + S (fom_value_pfp_left_constant_exists_result_K) = S ((S (fom_index_pfp_left_constant_exists_result_K)) * kc)) /\ exists fom_beta_quotient_pfp_left_constant_exists_result_K_entry. kb = fom_beta_quotient_pfp_left_constant_exists_result_K_entry * S ((S (fom_index_pfp_left_constant_exists_result_K)) * kc) + (fom_value_pfp_left_constant_exists_result_K))) /\ (exists fom_gap_pfp_left_constant_exists_result_K_value_bound. fom_gap_pfp_left_constant_exists_result_K_value_bound + S (fom_value_pfp_left_constant_exists_result_K) = p))) /\ (((((exists ff_h_pfp_left_constant_exists_result_head. ff_h_pfp_left_constant_exists_result_head + S (k) = S ((S (0)) * kc)) /\ exists ff_q_pfp_left_constant_exists_result_head. kb = ff_q_pfp_left_constant_exists_result_head * S ((S (0)) * kc) + (k))) /\ (((((exists pfa_gap_left_constant_exists_result_scalescalar. pfa_gap_left_constant_exists_result_scalescalar + S (k) = (p)) /\ ((forall pfp_index_left_constant_exists_result_scale. (exists pfa_gap_left_constant_exists_result_scaleindex. pfa_gap_left_constant_exists_result_scaleindex + S (pfp_index_left_constant_exists_result_scale) = (L)) -> exists pfp_source_left_constant_exists_result_scale pfp_value_left_constant_exists_result_scale. ((((exists ff_h_pfp_left_constant_exists_result_scalesource. ff_h_pfp_left_constant_exists_result_scalesource + S (pfp_source_left_constant_exists_result_scale) = S ((S (pfp_index_left_constant_exists_result_scale)) * ac)) /\ exists ff_q_pfp_left_constant_exists_result_scalesource. ab = ff_q_pfp_left_constant_exists_result_scalesource * S ((S (pfp_index_left_constant_exists_result_scale)) * ac) + (pfp_source_left_constant_exists_result_scale))) /\ (((((exists ff_h_pfp_left_constant_exists_result_scaletarget. ff_h_pfp_left_constant_exists_result_scaletarget + S (pfp_value_left_constant_exists_result_scale) = S ((S (pfp_index_left_constant_exists_result_scale)) * hc)) /\ exists ff_q_pfp_left_constant_exists_result_scaletarget. hb = ff_q_pfp_left_constant_exists_result_scaletarget * S ((S (pfp_index_left_constant_exists_result_scale)) * hc) + (pfp_value_left_constant_exists_result_scale))) /\ ((((exists pfa_gap_left_constant_exists_result_scaleoperationleft. pfa_gap_left_constant_exists_result_scaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_left_constant_exists_result_scaleoperationright. pfa_gap_left_constant_exists_result_scaleoperationright + S (pfp_source_left_constant_exists_result_scale) = (p)) /\ ((((exists pfa_gap_left_constant_exists_result_scaleoperationresultbound. pfa_gap_left_constant_exists_result_scaleoperationresultbound + S (pfp_value_left_constant_exists_result_scale) = (p)) /\ ((exists pfa_offset_left_left_constant_exists_result_scaleoperationresultcongruence pfa_offset_right_left_constant_exists_result_scaleoperationresultcongruence. ((k) * (pfp_source_left_constant_exists_result_scale)) + (p) * pfa_offset_left_left_constant_exists_result_scaleoperationresultcongruence = (pfp_value_left_constant_exists_result_scale) + (p) * pfa_offset_right_left_constant_exists_result_scaleoperationresultcongruence))))))))))))))))) /\ ((((forall fom_index_pfp_left_constant_exists_result_productleft. (exists fom_gap_pfp_left_constant_exists_result_productleft_index_bound. fom_gap_pfp_left_constant_exists_result_productleft_index_bound + S (fom_index_pfp_left_constant_exists_result_productleft) = 1) -> exists fom_value_pfp_left_constant_exists_result_productleft. ((((exists fom_beta_height_pfp_left_constant_exists_result_productleft_entry. fom_beta_height_pfp_left_constant_exists_result_productleft_entry + S (fom_value_pfp_left_constant_exists_result_productleft) = S ((S (fom_index_pfp_left_constant_exists_result_productleft)) * kc)) /\ exists fom_beta_quotient_pfp_left_constant_exists_result_productleft_entry. kb = fom_beta_quotient_pfp_left_constant_exists_result_productleft_entry * S ((S (fom_index_pfp_left_constant_exists_result_productleft)) * kc) + (fom_value_pfp_left_constant_exists_result_productleft))) /\ (exists fom_gap_pfp_left_constant_exists_result_productleft_value_bound. fom_gap_pfp_left_constant_exists_result_productleft_value_bound + S (fom_value_pfp_left_constant_exists_result_productleft) = p))) /\ (((forall fom_index_pfp_left_constant_exists_result_productright. (exists fom_gap_pfp_left_constant_exists_result_productright_index_bound. fom_gap_pfp_left_constant_exists_result_productright_index_bound + S (fom_index_pfp_left_constant_exists_result_productright) = L) -> exists fom_value_pfp_left_constant_exists_result_productright. ((((exists fom_beta_height_pfp_left_constant_exists_result_productright_entry. fom_beta_height_pfp_left_constant_exists_result_productright_entry + S (fom_value_pfp_left_constant_exists_result_productright) = S ((S (fom_index_pfp_left_constant_exists_result_productright)) * ac)) /\ exists fom_beta_quotient_pfp_left_constant_exists_result_productright_entry. ab = fom_beta_quotient_pfp_left_constant_exists_result_productright_entry * S ((S (fom_index_pfp_left_constant_exists_result_productright)) * ac) + (fom_value_pfp_left_constant_exists_result_productright))) /\ (exists fom_gap_pfp_left_constant_exists_result_productright_value_bound. fom_gap_pfp_left_constant_exists_result_productright_value_bound + S (fom_value_pfp_left_constant_exists_result_productright) = p))) /\ (((((((1)=0 \/ (L)=0) /\ (((L)=0)))) \/ (((~((1)=0)) /\ (((~((L)=0)) /\ (((1)+(L)=S (L)))))))) /\ ((forall pfc_index_left_constant_exists_result_productcoefficients. (exists pfa_gap_left_constant_exists_result_productcoefficientsbound. pfa_gap_left_constant_exists_result_productcoefficientsbound + S (pfc_index_left_constant_exists_result_productcoefficients) = (L)) -> exists pfc_value_left_constant_exists_result_productcoefficients. ((((exists ff_h_pfp_left_constant_exists_result_productcoefficientsentry. ff_h_pfp_left_constant_exists_result_productcoefficientsentry + S (pfc_value_left_constant_exists_result_productcoefficients) = S ((S (pfc_index_left_constant_exists_result_productcoefficients)) * hc)) /\ exists ff_q_pfp_left_constant_exists_result_productcoefficientsentry. hb = ff_q_pfp_left_constant_exists_result_productcoefficientsentry * S ((S (pfc_index_left_constant_exists_result_productcoefficients)) * hc) + (pfc_value_left_constant_exists_result_productcoefficients))) /\ ((exists pfc_terms_code_left_constant_exists_result_productcoefficientscoefficient pfc_terms_scale_left_constant_exists_result_productcoefficientscoefficient pfc_natural_sum_left_constant_exists_result_productcoefficientscoefficient. ((forall pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal. (exists pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonalbound. pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonalbound + S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal) = (S (pfc_index_left_constant_exists_result_productcoefficients))) -> exists pfc_value_left_constant_exists_result_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonalentry. ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonalentry + S (pfc_value_left_constant_exists_result_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_left_constant_exists_result_productcoefficientscoefficient)) /\ exists ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonalentry. pfc_terms_code_left_constant_exists_result_productcoefficientscoefficient = ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_left_constant_exists_result_productcoefficientscoefficient) + (pfc_value_left_constant_exists_result_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm pfc_left_left_constant_exists_result_productcoefficientscoefficientdiagonalterm pfc_right_left_constant_exists_result_productcoefficientscoefficientdiagonalterm. (((pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)+pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm=(pfc_index_left_constant_exists_result_productcoefficients)) /\ ((((((exists pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal) = (1)) /\ ((((exists ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_left_constant_exists_result_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)) * kc)) /\ exists ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftentry. kb = ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)) * kc) + (pfc_left_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermleftoutside+(1)=(pfc_index_left_constant_exists_result_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_left_constant_exists_result_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)) * ac)) /\ exists ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightentry. ab = ff_q_pfp_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)) * ac) + (pfc_right_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_left_constant_exists_result_productcoefficientscoefficientdiagonaltermrightoutside+(L)=(pfc_complement_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_left_constant_exists_result_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_left_constant_exists_result_productcoefficientscoefficientdiagonal)=pfc_left_left_constant_exists_result_productcoefficientscoefficientdiagonalterm*pfc_right_left_constant_exists_result_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_left_constant_exists_result_productcoefficientscoefficientsum fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum. ((((exists fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_start. fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_start. fs_u_pfc_left_constant_exists_result_productcoefficientscoefficientsum = fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_left_constant_exists_result_productcoefficientscoefficient) = S ((S (S (pfc_index_left_constant_exists_result_productcoefficients))) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_left_constant_exists_result_productcoefficientscoefficientsum = fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_left_constant_exists_result_productcoefficients))) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum) + (pfc_natural_sum_left_constant_exists_result_productcoefficientscoefficient))) /\ forall fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps = S (pfc_index_left_constant_exists_result_productcoefficients)) -> exists fs_a_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps fs_r_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps fs_s_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_left_constant_exists_result_productcoefficientscoefficient)) /\ exists fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_left_constant_exists_result_productcoefficientscoefficient = fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_left_constant_exists_result_productcoefficientscoefficient) + (fs_a_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_left_constant_exists_result_productcoefficientscoefficientsum = fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum) + (fs_r_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_left_constant_exists_result_productcoefficientscoefficientsum = fs_q_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_exists_result_productcoefficientscoefficientsum) + (fs_s_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps = fs_r_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps + fs_a_pfc_left_constant_exists_result_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_left_constant_exists_result_productcoefficientscoefficientresiduebound. pfa_gap_left_constant_exists_result_productcoefficientscoefficientresiduebound + S (pfc_value_left_constant_exists_result_productcoefficients) = (p)) /\ ((exists pfa_offset_left_left_constant_exists_result_productcoefficientscoefficientresiduecongruence pfa_offset_right_left_constant_exists_result_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_left_constant_exists_result_productcoefficientscoefficient) + (p) * pfa_offset_left_left_constant_exists_result_productcoefficientscoefficientresiduecongruence = (pfc_value_left_constant_exists_result_productcoefficients) + (p) * pfa_offset_right_left_constant_exists_result_productcoefficientscoefficientresiduecongruence))))))))))))))))))))))))))

Constructive proof overview

Generated structural guide

Construct the canonical singleton and actual scalar output, then prove their genuine left-factor product using those same output codes. Empty source prefixes still require a canonical scalar and singleton; no beta-code uniqueness or gcd endpoint is claimed.

The unchanged tactic script uses 5 declared prerequisites and contains 62 exact native proof lines.

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

Proof neighborhood

Direct dependencies

prime_field_polynomial_repeat_exists Alpha theorem; checked-use authorized prime_field_polynomial_scale_exists Alpha theorem; checked-use authorized prime_nonzero Alpha theorem; checked-use authorized zero_add Alpha theorem; checked-use authorized PG0051 prime_field_polynomial_scale_to_left_constant_product

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

62 script commands · 17 reading checkpoints · 3 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–8

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

  1. L1
    intro p
  2. L2
    intro k
  3. L3
    intro ab
  4. L4
    intro ac
  5. L5
    intro L
  6. L6
    intro hp
  7. L7
    intro hk
  8. L8
    intro ha
02Establish hKL9–14

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

  1. L9
    have hK : ∃ kb. ∃ kc. BetaPrefixInto(kb,kc,1,p) ∧ Repeat(kb,kc,k,1)Definitions: BetaPrefixIntoRepeat
  2. L10
    specialize prime_field_polynomial_repeat_exists (p)
  3. L11
    specialize prime_field_polynomial_repeat_exists (k)
  4. L12
    specialize prime_field_polynomial_repeat_exists (1)
  5. L13
    apply prime_field_polynomial_repeat_exists
  6. L14
    exact hk
03Separate the logical casesL15–17

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

  1. L15
    cases hK
  2. L16
    cases hK_witness
  3. L17
    cases hK_witness_witness
04Establish hsL18–27

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

  1. L18
    have hs : ∃ hb. ∃ hc. FpPolyScale(p,k,ab,ac,hb,hc,L)Definitions: FpPolyScale
  2. L19
    specialize prime_field_polynomial_scale_exists (p)
  3. L20
    specialize prime_field_polynomial_scale_exists (k)
  4. L21
    specialize prime_field_polynomial_scale_exists (ab)
  5. L22
    specialize prime_field_polynomial_scale_exists (ac)
  6. L23
    specialize prime_field_polynomial_scale_exists (L)
  7. L24
    apply prime_field_polynomial_scale_exists
  8. L25
    intro hz
  9. L26
    specialize prime_nonzero (p)
  10. L27
    apply prime_nonzero
05Use earlier factsL28–31

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

  1. L28
    exact hp
  2. L29
    exact hz
  3. L30
    exact hk
  4. L31
    exact ha
06Separate the logical casesL32–33

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

  1. L32
    cases hs
  2. L33
    cases hs_witness
07Establish hentryL34–36

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hK witness witness right.

  1. L34
    have hentry : ((exists ff_h_pfp_left_constant_exists_head. ff_h_pfp_left_constant_exists_head + S (k) = S ((S (0)) * x1)) /\ exists ff_q_pfp_left_constant_exists_head. x = ff_q_pfp_left_constant_exists_head * S ((S (0)) * x1) + (k))
  2. L35
    specialize hK_witness_witness_right (0)
  3. L36
    apply hK_witness_witness_right
08Construct an explicit witnessL37–37

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

  1. L37
    exists 0
09Use earlier factsL38–38

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

  1. L38
    apply zero_add
10Construct an explicit witnessL39–42

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

  1. L39
    exists x
  2. L40
    exists x1
  3. L41
    exists x2
  4. L42
    exists x3
11Separate the logical casesL43–43

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

  1. L43
    split
12Use earlier factsL44–44

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

  1. L44
    exact hK_witness_witness_left
13Separate the logical casesL45–45

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

  1. L45
    split
14Use earlier factsL46–46

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

  1. L46
    exact hentry
15Separate the logical casesL47–47

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

  1. L47
    split
16Use earlier factsL48–57

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

  1. L48
    exact hs_witness_witness
  2. L49
    specialize prime_field_polynomial_scale_to_left_constant_product (p)
  3. L50
    specialize prime_field_polynomial_scale_to_left_constant_product (k)
  4. L51
    specialize prime_field_polynomial_scale_to_left_constant_product (x)
  5. L52
    specialize prime_field_polynomial_scale_to_left_constant_product (x1)
  6. L53
    specialize prime_field_polynomial_scale_to_left_constant_product (ab)
  7. L54
    specialize prime_field_polynomial_scale_to_left_constant_product (ac)
  8. L55
    specialize prime_field_polynomial_scale_to_left_constant_product (x2)
  9. L56
    specialize prime_field_polynomial_scale_to_left_constant_product (x3)
  10. L57
    specialize prime_field_polynomial_scale_to_left_constant_product (L)
17Use earlier factsL58–62

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

  1. L58
    apply prime_field_polynomial_scale_to_left_constant_product
  2. L59
    exact hp
  3. L60
    exact hK_witness_witness_left
  4. L61
    exact hentry
  5. L62
    exact hs_witness_witness

Library-wide reading audit

Original exact command ledger · 62 lines
  1. 0001intro p
  2. 0002intro k
  3. 0003intro ab
  4. 0004intro ac
  5. 0005intro L
  6. 0006intro hp
  7. 0007intro hk
  8. 0008intro ha
  9. 0009have hK : exists kb kc. ((forall fom_index_pfp_left_constant_exists_K. (exists fom_gap_pfp_left_constant_exists_K_index_bound. fom_gap_pfp_left_constant_exists_K_index_bound + S (fom_index_pfp_left_constant_exists_K) = 1) -> exists fom_value_pfp_left_constant_exists_K. ((((exists fom_beta_height_pfp_left_constant_exists_K_entry. fom_beta_height_pfp_left_constant_exists_K_entry + S (fom_value_pfp_left_constant_exists_K) = S ((S (fom_index_pfp_left_constant_exists_K)) * kc)) /\ exists fom_beta_quotient_pfp_left_constant_exists_K_entry. kb = fom_beta_quotient_pfp_left_constant_exists_K_entry * S ((S (fom_index_pfp_left_constant_exists_K)) * kc) + (fom_value_pfp_left_constant_exists_K))) /\ (exists fom_gap_pfp_left_constant_exists_K_value_bound. fom_gap_pfp_left_constant_exists_K_value_bound + S (fom_value_pfp_left_constant_exists_K) = p))) /\ ((forall pfp_repeat_index_left_constant_exists_repeat. (exists pfa_gap_left_constant_exists_repeatindex. pfa_gap_left_constant_exists_repeatindex + S (pfp_repeat_index_left_constant_exists_repeat) = (1)) -> (((exists ff_h_pfp_left_constant_exists_repeatentry. ff_h_pfp_left_constant_exists_repeatentry + S (k) = S ((S (pfp_repeat_index_left_constant_exists_repeat)) * kc)) /\ exists ff_q_pfp_left_constant_exists_repeatentry. kb = ff_q_pfp_left_constant_exists_repeatentry * S ((S (pfp_repeat_index_left_constant_exists_repeat)) * kc) + (k))))))
  10. 0010specialize prime_field_polynomial_repeat_exists (p)
  11. 0011specialize prime_field_polynomial_repeat_exists (k)
  12. 0012specialize prime_field_polynomial_repeat_exists (1)
  13. 0013apply prime_field_polynomial_repeat_exists
  14. 0014exact hk
  15. 0015cases hK
  16. 0016cases hK_witness
  17. 0017cases hK_witness_witness
  18. 0018have hs : exists hb hc. ((exists pfa_gap_left_constant_exists_scalescalar. pfa_gap_left_constant_exists_scalescalar + S (k) = (p)) /\ ((forall pfp_index_left_constant_exists_scale. (exists pfa_gap_left_constant_exists_scaleindex. pfa_gap_left_constant_exists_scaleindex + S (pfp_index_left_constant_exists_scale) = (L)) -> exists pfp_source_left_constant_exists_scale pfp_value_left_constant_exists_scale. ((((exists ff_h_pfp_left_constant_exists_scalesource. ff_h_pfp_left_constant_exists_scalesource + S (pfp_source_left_constant_exists_scale) = S ((S (pfp_index_left_constant_exists_scale)) * ac)) /\ exists ff_q_pfp_left_constant_exists_scalesource. ab = ff_q_pfp_left_constant_exists_scalesource * S ((S (pfp_index_left_constant_exists_scale)) * ac) + (pfp_source_left_constant_exists_scale))) /\ (((((exists ff_h_pfp_left_constant_exists_scaletarget. ff_h_pfp_left_constant_exists_scaletarget + S (pfp_value_left_constant_exists_scale) = S ((S (pfp_index_left_constant_exists_scale)) * hc)) /\ exists ff_q_pfp_left_constant_exists_scaletarget. hb = ff_q_pfp_left_constant_exists_scaletarget * S ((S (pfp_index_left_constant_exists_scale)) * hc) + (pfp_value_left_constant_exists_scale))) /\ ((((exists pfa_gap_left_constant_exists_scaleoperationleft. pfa_gap_left_constant_exists_scaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_left_constant_exists_scaleoperationright. pfa_gap_left_constant_exists_scaleoperationright + S (pfp_source_left_constant_exists_scale) = (p)) /\ ((((exists pfa_gap_left_constant_exists_scaleoperationresultbound. pfa_gap_left_constant_exists_scaleoperationresultbound + S (pfp_value_left_constant_exists_scale) = (p)) /\ ((exists pfa_offset_left_left_constant_exists_scaleoperationresultcongruence pfa_offset_right_left_constant_exists_scaleoperationresultcongruence. ((k) * (pfp_source_left_constant_exists_scale)) + (p) * pfa_offset_left_left_constant_exists_scaleoperationresultcongruence = (pfp_value_left_constant_exists_scale) + (p) * pfa_offset_right_left_constant_exists_scaleoperationresultcongruence))))))))))))))))
  19. 0019specialize prime_field_polynomial_scale_exists (p)
  20. 0020specialize prime_field_polynomial_scale_exists (k)
  21. 0021specialize prime_field_polynomial_scale_exists (ab)
  22. 0022specialize prime_field_polynomial_scale_exists (ac)
  23. 0023specialize prime_field_polynomial_scale_exists (L)
  24. 0024apply prime_field_polynomial_scale_exists
  25. 0025intro hz
  26. 0026specialize prime_nonzero (p)
  27. 0027apply prime_nonzero
  28. 0028exact hp
  29. 0029exact hz
  30. 0030exact hk
  31. 0031exact ha
  32. 0032cases hs
  33. 0033cases hs_witness
  34. 0034have hentry : ((exists ff_h_pfp_left_constant_exists_head. ff_h_pfp_left_constant_exists_head + S (k) = S ((S (0)) * x1)) /\ exists ff_q_pfp_left_constant_exists_head. x = ff_q_pfp_left_constant_exists_head * S ((S (0)) * x1) + (k))
  35. 0035specialize hK_witness_witness_right (0)
  36. 0036apply hK_witness_witness_right
  37. 0037exists 0
  38. 0038apply zero_add
  39. 0039exists x
  40. 0040exists x1
  41. 0041exists x2
  42. 0042exists x3
  43. 0043split
  44. 0044exact hK_witness_witness_left
  45. 0045split
  46. 0046exact hentry
  47. 0047split
  48. 0048exact hs_witness_witness
  49. 0049specialize prime_field_polynomial_scale_to_left_constant_product (p)
  50. 0050specialize prime_field_polynomial_scale_to_left_constant_product (k)
  51. 0051specialize prime_field_polynomial_scale_to_left_constant_product (x)
  52. 0052specialize prime_field_polynomial_scale_to_left_constant_product (x1)
  53. 0053specialize prime_field_polynomial_scale_to_left_constant_product (ab)
  54. 0054specialize prime_field_polynomial_scale_to_left_constant_product (ac)
  55. 0055specialize prime_field_polynomial_scale_to_left_constant_product (x2)
  56. 0056specialize prime_field_polynomial_scale_to_left_constant_product (x3)
  57. 0057specialize prime_field_polynomial_scale_to_left_constant_product (L)
  58. 0058apply prime_field_polynomial_scale_to_left_constant_product
  59. 0059exact hp
  60. 0060exact hK_witness_witness_left
  61. 0061exact hentry
  62. 0062exact hs_witness_witness