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 kb kc ab ac hb hc L. (~((p) = 1) /\ forall pfa_factor_left_left_constant_recover_prime pfa_factor_right_left_constant_recover_prime. (p) = pfa_factor_left_left_constant_recover_prime * pfa_factor_right_left_constant_recover_prime -> pfa_factor_left_left_constant_recover_prime = 1 \/ pfa_factor_right_left_constant_recover_prime = 1) -> (forall fom_index_pfp_left_constant_recover_K. (exists fom_gap_pfp_left_constant_recover_K_index_bound. fom_gap_pfp_left_constant_recover_K_index_bound + S (fom_index_pfp_left_constant_recover_K) = 1) -> exists fom_value_pfp_left_constant_recover_K. ((((exists fom_beta_height_pfp_left_constant_recover_K_entry. fom_beta_height_pfp_left_constant_recover_K_entry + S (fom_value_pfp_left_constant_recover_K) = S ((S (fom_index_pfp_left_constant_recover_K)) * kc)) /\ exists fom_beta_quotient_pfp_left_constant_recover_K_entry. kb = fom_beta_quotient_pfp_left_constant_recover_K_entry * S ((S (fom_index_pfp_left_constant_recover_K)) * kc) + (fom_value_pfp_left_constant_recover_K))) /\ (exists fom_gap_pfp_left_constant_recover_K_value_bound. fom_gap_pfp_left_constant_recover_K_value_bound + S (fom_value_pfp_left_constant_recover_K) = p))) -> (((exists ff_h_pfp_left_constant_recover_value. ff_h_pfp_left_constant_recover_value + S (k) = S ((S (0)) * kc)) /\ exists ff_q_pfp_left_constant_recover_value. kb = ff_q_pfp_left_constant_recover_value * S ((S (0)) * kc) + (k))) -> (((exists pfa_gap_left_constant_recover_scalescalar. pfa_gap_left_constant_recover_scalescalar + S (k) = (p)) /\ ((forall pfp_index_left_constant_recover_scale. (exists pfa_gap_left_constant_recover_scaleindex. pfa_gap_left_constant_recover_scaleindex + S (pfp_index_left_constant_recover_scale) = (L)) -> exists pfp_source_left_constant_recover_scale pfp_value_left_constant_recover_scale. ((((exists ff_h_pfp_left_constant_recover_scalesource. ff_h_pfp_left_constant_recover_scalesource + S (pfp_source_left_constant_recover_scale) = S ((S (pfp_index_left_constant_recover_scale)) * ac)) /\ exists ff_q_pfp_left_constant_recover_scalesource. ab = ff_q_pfp_left_constant_recover_scalesource * S ((S (pfp_index_left_constant_recover_scale)) * ac) + (pfp_source_left_constant_recover_scale))) /\ (((((exists ff_h_pfp_left_constant_recover_scaletarget. ff_h_pfp_left_constant_recover_scaletarget + S (pfp_value_left_constant_recover_scale) = S ((S (pfp_index_left_constant_recover_scale)) * hc)) /\ exists ff_q_pfp_left_constant_recover_scaletarget. hb = ff_q_pfp_left_constant_recover_scaletarget * S ((S (pfp_index_left_constant_recover_scale)) * hc) + (pfp_value_left_constant_recover_scale))) /\ ((((exists pfa_gap_left_constant_recover_scaleoperationleft. pfa_gap_left_constant_recover_scaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_left_constant_recover_scaleoperationright. pfa_gap_left_constant_recover_scaleoperationright + S (pfp_source_left_constant_recover_scale) = (p)) /\ ((((exists pfa_gap_left_constant_recover_scaleoperationresultbound. pfa_gap_left_constant_recover_scaleoperationresultbound + S (pfp_value_left_constant_recover_scale) = (p)) /\ ((exists pfa_offset_left_left_constant_recover_scaleoperationresultcongruence pfa_offset_right_left_constant_recover_scaleoperationresultcongruence. ((k) * (pfp_source_left_constant_recover_scale)) + (p) * pfa_offset_left_left_constant_recover_scaleoperationresultcongruence = (pfp_value_left_constant_recover_scale) + (p) * pfa_offset_right_left_constant_recover_scaleoperationresultcongruence))))))))))))))))) -> (((forall fom_index_pfp_left_constant_recover_productleft. (exists fom_gap_pfp_left_constant_recover_productleft_index_bound. fom_gap_pfp_left_constant_recover_productleft_index_bound + S (fom_index_pfp_left_constant_recover_productleft) = 1) -> exists fom_value_pfp_left_constant_recover_productleft. ((((exists fom_beta_height_pfp_left_constant_recover_productleft_entry. fom_beta_height_pfp_left_constant_recover_productleft_entry + S (fom_value_pfp_left_constant_recover_productleft) = S ((S (fom_index_pfp_left_constant_recover_productleft)) * kc)) /\ exists fom_beta_quotient_pfp_left_constant_recover_productleft_entry. kb = fom_beta_quotient_pfp_left_constant_recover_productleft_entry * S ((S (fom_index_pfp_left_constant_recover_productleft)) * kc) + (fom_value_pfp_left_constant_recover_productleft))) /\ (exists fom_gap_pfp_left_constant_recover_productleft_value_bound. fom_gap_pfp_left_constant_recover_productleft_value_bound + S (fom_value_pfp_left_constant_recover_productleft) = p))) /\ (((forall fom_index_pfp_left_constant_recover_productright. (exists fom_gap_pfp_left_constant_recover_productright_index_bound. fom_gap_pfp_left_constant_recover_productright_index_bound + S (fom_index_pfp_left_constant_recover_productright) = L) -> exists fom_value_pfp_left_constant_recover_productright. ((((exists fom_beta_height_pfp_left_constant_recover_productright_entry. fom_beta_height_pfp_left_constant_recover_productright_entry + S (fom_value_pfp_left_constant_recover_productright) = S ((S (fom_index_pfp_left_constant_recover_productright)) * ac)) /\ exists fom_beta_quotient_pfp_left_constant_recover_productright_entry. ab = fom_beta_quotient_pfp_left_constant_recover_productright_entry * S ((S (fom_index_pfp_left_constant_recover_productright)) * ac) + (fom_value_pfp_left_constant_recover_productright))) /\ (exists fom_gap_pfp_left_constant_recover_productright_value_bound. fom_gap_pfp_left_constant_recover_productright_value_bound + S (fom_value_pfp_left_constant_recover_productright) = p))) /\ (((((((1)=0 \/ (L)=0) /\ (((L)=0)))) \/ (((~((1)=0)) /\ (((~((L)=0)) /\ (((1)+(L)=S (L)))))))) /\ ((forall pfc_index_left_constant_recover_productcoefficients. (exists pfa_gap_left_constant_recover_productcoefficientsbound. pfa_gap_left_constant_recover_productcoefficientsbound + S (pfc_index_left_constant_recover_productcoefficients) = (L)) -> exists pfc_value_left_constant_recover_productcoefficients. ((((exists ff_h_pfp_left_constant_recover_productcoefficientsentry. ff_h_pfp_left_constant_recover_productcoefficientsentry + S (pfc_value_left_constant_recover_productcoefficients) = S ((S (pfc_index_left_constant_recover_productcoefficients)) * hc)) /\ exists ff_q_pfp_left_constant_recover_productcoefficientsentry. hb = ff_q_pfp_left_constant_recover_productcoefficientsentry * S ((S (pfc_index_left_constant_recover_productcoefficients)) * hc) + (pfc_value_left_constant_recover_productcoefficients))) /\ ((exists pfc_terms_code_left_constant_recover_productcoefficientscoefficient pfc_terms_scale_left_constant_recover_productcoefficientscoefficient pfc_natural_sum_left_constant_recover_productcoefficientscoefficient. ((forall pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal. (exists pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonalbound. pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonalbound + S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal) = (S (pfc_index_left_constant_recover_productcoefficients))) -> exists pfc_value_left_constant_recover_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonalentry. ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonalentry + S (pfc_value_left_constant_recover_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_left_constant_recover_productcoefficientscoefficient)) /\ exists ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonalentry. pfc_terms_code_left_constant_recover_productcoefficientscoefficient = ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_left_constant_recover_productcoefficientscoefficient) + (pfc_value_left_constant_recover_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm pfc_left_left_constant_recover_productcoefficientscoefficientdiagonalterm pfc_right_left_constant_recover_productcoefficientscoefficientdiagonalterm. (((pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)+pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm=(pfc_index_left_constant_recover_productcoefficients)) /\ ((((((exists pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal) = (1)) /\ ((((exists ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_left_constant_recover_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)) * kc)) /\ exists ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermleftentry. kb = ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)) * kc) + (pfc_left_left_constant_recover_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermleftoutside+(1)=(pfc_index_left_constant_recover_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_left_constant_recover_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_left_constant_recover_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm)) * ac)) /\ exists ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermrightentry. ab = ff_q_pfp_left_constant_recover_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm)) * ac) + (pfc_right_left_constant_recover_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_left_constant_recover_productcoefficientscoefficientdiagonaltermrightoutside+(L)=(pfc_complement_left_constant_recover_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_left_constant_recover_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_left_constant_recover_productcoefficientscoefficientdiagonal)=pfc_left_left_constant_recover_productcoefficientscoefficientdiagonalterm*pfc_right_left_constant_recover_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_left_constant_recover_productcoefficientscoefficientsum fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum. ((((exists fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_start. fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_start. fs_u_pfc_left_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_left_constant_recover_productcoefficientscoefficient) = S ((S (S (pfc_index_left_constant_recover_productcoefficients))) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_left_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_left_constant_recover_productcoefficients))) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum) + (pfc_natural_sum_left_constant_recover_productcoefficientscoefficient))) /\ forall fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps = S (pfc_index_left_constant_recover_productcoefficients)) -> exists fs_a_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps fs_r_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps fs_s_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_left_constant_recover_productcoefficientscoefficient)) /\ exists fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_left_constant_recover_productcoefficientscoefficient = fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_left_constant_recover_productcoefficientscoefficient) + (fs_a_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_left_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum) + (fs_r_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_left_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_left_constant_recover_productcoefficientscoefficientsum) + (fs_s_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps = fs_r_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps + fs_a_pfc_left_constant_recover_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_left_constant_recover_productcoefficientscoefficientresiduebound. pfa_gap_left_constant_recover_productcoefficientscoefficientresiduebound + S (pfc_value_left_constant_recover_productcoefficients) = (p)) /\ ((exists pfa_offset_left_left_constant_recover_productcoefficientscoefficientresiduecongruence pfa_offset_right_left_constant_recover_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_left_constant_recover_productcoefficientscoefficient) + (p) * pfa_offset_left_left_constant_recover_productcoefficientscoefficientresiduecongruence = (pfc_value_left_constant_recover_productcoefficients) + (p) * pfa_offset_right_left_constant_recover_productcoefficientscoefficientresiduecongruence)))))))))))))))))))Constructive proof overview
Generated structural guide
Recover the genuine LEFT-constant convolution on the supplied scalar-output codes. Every needed antidiagonal sum is actually constructed and its residue identified; the empty proper-length branch is separate, including scalar zero and characteristic two.
The unchanged tactic script uses 9 declared prerequisites and contains 110 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_scale_bounded Alpha theorem; checked-use authorized eq_decidable Alpha theorem; checked-use authorized succ_ne_zero Alpha theorem; checked-use authorized add_succ_left Alpha theorem; checked-use authorized zero_add Alpha theorem; checked-use authorized prime_field_convolution_coefficient_exists Alpha theorem; checked-use authorized prime_nonzero Alpha theorem; checked-use authorized prime_field_multiply_functional Alpha theorem; checked-use authorized PG004F prime_field_convolution_coefficient_left_constantDirect 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–13
03Establish hboundsL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial scale bounded.
- L14
have hbounds : BetaPrefixInto(ab,ac,L,p) ∧ BetaPrefixInto(hb,hc,L,p)Definitions: BetaPrefixInto - L15
specialize prime_field_polynomial_scale_bounded (p) - L16
specialize prime_field_polynomial_scale_bounded (k) - L17
specialize prime_field_polynomial_scale_bounded (ab) - L18
specialize prime_field_polynomial_scale_bounded (ac) - L19
specialize prime_field_polynomial_scale_bounded (hb) - L20
specialize prime_field_polynomial_scale_bounded (hc) - L21
specialize prime_field_polynomial_scale_bounded (L) - L22
apply prime_field_polynomial_scale_bounded - L23
exact hs
04Separate the logical casesL24–25
05Use earlier factsL26–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
exact hK
06Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
split
07Use earlier factsL28–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L28
exact hbounds_left
08Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
split
09Establish hzL30–33
10Separate the logical casesL34–37
11Use earlier factsL38–39
12Separate the logical casesL40–41
13Fix variables and assumptionsL42–42
Work with arbitrary variables or the premises of the current implication.
- L42
intro hbad
14Use earlier factsL43–45
15Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
split
16Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact hz_right
17Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
simp [add_succ_left,zero_add]
18Fix variables and assumptionsL49–50
19Establish hvL51–51
20Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hs
21Use earlier factsL53–55
22Separate the logical casesL56–59
23Establish hmL60–61
24Separate the logical casesL62–63
25Establish hcoefficientL64–73
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field convolution coefficient exists.
- L64
have hcoefficient : ∃ r. FpConvolutionCoefficient(p,kb,kc,1,ab,ac,L,i,r)Definitions: FpConvolutionCoefficient - L65
specialize prime_field_convolution_coefficient_exists (p) - L66
specialize prime_field_convolution_coefficient_exists (kb) - L67
specialize prime_field_convolution_coefficient_exists (kc) - L68
specialize prime_field_convolution_coefficient_exists (1) - L69
specialize prime_field_convolution_coefficient_exists (ab) - L70
specialize prime_field_convolution_coefficient_exists (ac) - L71
specialize prime_field_convolution_coefficient_exists (L) - L72
specialize prime_field_convolution_coefficient_exists (i) - L73
apply prime_field_convolution_coefficient_exists
26Fix variables and assumptionsL74–74
Work with arbitrary variables or the premises of the current implication.
- L74
intro hpzero
27Use earlier factsL75–78
28Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
cases hcoefficient
29Establish heqL80–89
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply functional.
- L80
have heq : x2=x1 - L81
specialize prime_field_multiply_functional (p) - L82
specialize prime_field_multiply_functional (k) - L83
specialize prime_field_multiply_functional (x) - L84
specialize prime_field_multiply_functional (x2) - L85
specialize prime_field_multiply_functional (x1) - L86
apply prime_field_multiply_functional - L87
specialize prime_field_convolution_coefficient_left_constant (p) - L88
specialize prime_field_convolution_coefficient_left_constant (k) - L89
specialize prime_field_convolution_coefficient_left_constant (kb)
30Use earlier factsL90–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
specialize prime_field_convolution_coefficient_left_constant (kc) - L91
specialize prime_field_convolution_coefficient_left_constant (ab) - L92
specialize prime_field_convolution_coefficient_left_constant (ac) - L93
specialize prime_field_convolution_coefficient_left_constant (L) - L94
specialize prime_field_convolution_coefficient_left_constant (i) - L95
specialize prime_field_convolution_coefficient_left_constant (x) - L96
specialize prime_field_convolution_coefficient_left_constant (x2) - L97
apply prime_field_convolution_coefficient_left_constant - L98
exact hk - L99
exact hi
31Use earlier factsL100–104
32Construct an explicit witnessL105–105
Supply the displayed value, then prove that it has the required property.
- L105
exists x1
33Separate the logical casesL106–106
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L106
split
34Use earlier factsL107–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L107
exact hv_witness_witness_right_left
35Calculate and transport equalitiesL108–109
36Use earlier factsL110–110
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L110
exact hcoefficient_witness
Original exact command ledger · 110 lines
- 0001
intro p - 0002
intro k - 0003
intro kb - 0004
intro kc - 0005
intro ab - 0006
intro ac - 0007
intro hb - 0008
intro hc - 0009
intro L - 0010
intro hp - 0011
intro hK - 0012
intro hk - 0013
intro hs - 0014
have hbounds : ((forall fom_index_pfp_left_constant_recover_A. (exists fom_gap_pfp_left_constant_recover_A_index_bound. fom_gap_pfp_left_constant_recover_A_index_bound + S (fom_index_pfp_left_constant_recover_A) = L) -> exists fom_value_pfp_left_constant_recover_A. ((((exists fom_beta_height_pfp_left_constant_recover_A_entry. fom_beta_height_pfp_left_constant_recover_A_entry + S (fom_value_pfp_left_constant_recover_A) = S ((S (fom_index_pfp_left_constant_recover_A)) * ac)) /\ exists fom_beta_quotient_pfp_left_constant_recover_A_entry. ab = fom_beta_quotient_pfp_left_constant_recover_A_entry * S ((S (fom_index_pfp_left_constant_recover_A)) * ac) + (fom_value_pfp_left_constant_recover_A))) /\ (exists fom_gap_pfp_left_constant_recover_A_value_bound. fom_gap_pfp_left_constant_recover_A_value_bound + S (fom_value_pfp_left_constant_recover_A) = p))) /\ ((forall fom_index_pfp_left_constant_recover_H. (exists fom_gap_pfp_left_constant_recover_H_index_bound. fom_gap_pfp_left_constant_recover_H_index_bound + S (fom_index_pfp_left_constant_recover_H) = L) -> exists fom_value_pfp_left_constant_recover_H. ((((exists fom_beta_height_pfp_left_constant_recover_H_entry. fom_beta_height_pfp_left_constant_recover_H_entry + S (fom_value_pfp_left_constant_recover_H) = S ((S (fom_index_pfp_left_constant_recover_H)) * hc)) /\ exists fom_beta_quotient_pfp_left_constant_recover_H_entry. hb = fom_beta_quotient_pfp_left_constant_recover_H_entry * S ((S (fom_index_pfp_left_constant_recover_H)) * hc) + (fom_value_pfp_left_constant_recover_H))) /\ (exists fom_gap_pfp_left_constant_recover_H_value_bound. fom_gap_pfp_left_constant_recover_H_value_bound + S (fom_value_pfp_left_constant_recover_H) = p))))) - 0015
specialize prime_field_polynomial_scale_bounded (p) - 0016
specialize prime_field_polynomial_scale_bounded (k) - 0017
specialize prime_field_polynomial_scale_bounded (ab) - 0018
specialize prime_field_polynomial_scale_bounded (ac) - 0019
specialize prime_field_polynomial_scale_bounded (hb) - 0020
specialize prime_field_polynomial_scale_bounded (hc) - 0021
specialize prime_field_polynomial_scale_bounded (L) - 0022
apply prime_field_polynomial_scale_bounded - 0023
exact hs - 0024
cases hbounds - 0025
split - 0026
exact hK - 0027
split - 0028
exact hbounds_left - 0029
split - 0030
have hz : L=0 \/ ~(L=0) - 0031
specialize eq_decidable (L) - 0032
specialize eq_decidable (0) - 0033
apply eq_decidable - 0034
cases hz - 0035
left - 0036
split - 0037
right - 0038
exact hz_left - 0039
exact hz_left - 0040
right - 0041
split - 0042
intro hbad - 0043
specialize succ_ne_zero (0) - 0044
apply succ_ne_zero - 0045
exact hbad - 0046
split - 0047
exact hz_right - 0048
simp [add_succ_left,zero_add] - 0049
intro i - 0050
intro hi - 0051
have hv : exists a r. ((((exists ff_h_pfp_left_constant_recover_source. ff_h_pfp_left_constant_recover_source + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_left_constant_recover_source. ab = ff_q_pfp_left_constant_recover_source * S ((S (i)) * ac) + (a))) /\ (((((exists ff_h_pfp_left_constant_recover_target. ff_h_pfp_left_constant_recover_target + S (r) = S ((S (i)) * hc)) /\ exists ff_q_pfp_left_constant_recover_target. hb = ff_q_pfp_left_constant_recover_target * S ((S (i)) * hc) + (r))) /\ ((((exists pfa_gap_left_constant_recover_multiplyleft. pfa_gap_left_constant_recover_multiplyleft + S (k) = (p)) /\ (((exists pfa_gap_left_constant_recover_multiplyright. pfa_gap_left_constant_recover_multiplyright + S (a) = (p)) /\ ((((exists pfa_gap_left_constant_recover_multiplyresultbound. pfa_gap_left_constant_recover_multiplyresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_left_constant_recover_multiplyresultcongruence pfa_offset_right_left_constant_recover_multiplyresultcongruence. ((k) * (a)) + (p) * pfa_offset_left_left_constant_recover_multiplyresultcongruence = (r) + (p) * pfa_offset_right_left_constant_recover_multiplyresultcongruence))))))))))))) - 0052
cases hs - 0053
specialize hs_right (i) - 0054
apply hs_right - 0055
exact hi - 0056
cases hv - 0057
cases hv_witness - 0058
cases hv_witness_witness - 0059
cases hv_witness_witness_right - 0060
have hm : ((exists pfa_gap_left_constant_recover_boundsleft. pfa_gap_left_constant_recover_boundsleft + S (k) = (p)) /\ (((exists pfa_gap_left_constant_recover_boundsright. pfa_gap_left_constant_recover_boundsright + S (x) = (p)) /\ ((((exists pfa_gap_left_constant_recover_boundsresultbound. pfa_gap_left_constant_recover_boundsresultbound + S (x1) = (p)) /\ ((exists pfa_offset_left_left_constant_recover_boundsresultcongruence pfa_offset_right_left_constant_recover_boundsresultcongruence. ((k) * (x)) + (p) * pfa_offset_left_left_constant_recover_boundsresultcongruence = (x1) + (p) * pfa_offset_right_left_constant_recover_boundsresultcongruence)))))))) - 0061
exact hv_witness_witness_right_right - 0062
cases hm - 0063
cases hm_right - 0064
have hcoefficient : exists r. exists pfc_terms_code_left_constant_recover_actual pfc_terms_scale_left_constant_recover_actual pfc_natural_sum_left_constant_recover_actual. ((forall pfc_index_left_constant_recover_actualdiagonal. (exists pfa_gap_left_constant_recover_actualdiagonalbound. pfa_gap_left_constant_recover_actualdiagonalbound + S (pfc_index_left_constant_recover_actualdiagonal) = (S (i))) -> exists pfc_value_left_constant_recover_actualdiagonal. ((((exists ff_h_pfp_left_constant_recover_actualdiagonalentry. ff_h_pfp_left_constant_recover_actualdiagonalentry + S (pfc_value_left_constant_recover_actualdiagonal) = S ((S (pfc_index_left_constant_recover_actualdiagonal)) * pfc_terms_scale_left_constant_recover_actual)) /\ exists ff_q_pfp_left_constant_recover_actualdiagonalentry. pfc_terms_code_left_constant_recover_actual = ff_q_pfp_left_constant_recover_actualdiagonalentry * S ((S (pfc_index_left_constant_recover_actualdiagonal)) * pfc_terms_scale_left_constant_recover_actual) + (pfc_value_left_constant_recover_actualdiagonal))) /\ ((exists pfc_complement_left_constant_recover_actualdiagonalterm pfc_left_left_constant_recover_actualdiagonalterm pfc_right_left_constant_recover_actualdiagonalterm. (((pfc_index_left_constant_recover_actualdiagonal)+pfc_complement_left_constant_recover_actualdiagonalterm=(i)) /\ ((((((exists pfa_gap_left_constant_recover_actualdiagonaltermleftinside. pfa_gap_left_constant_recover_actualdiagonaltermleftinside + S (pfc_index_left_constant_recover_actualdiagonal) = (1)) /\ ((((exists ff_h_pfp_left_constant_recover_actualdiagonaltermleftentry. ff_h_pfp_left_constant_recover_actualdiagonaltermleftentry + S (pfc_left_left_constant_recover_actualdiagonalterm) = S ((S (pfc_index_left_constant_recover_actualdiagonal)) * kc)) /\ exists ff_q_pfp_left_constant_recover_actualdiagonaltermleftentry. kb = ff_q_pfp_left_constant_recover_actualdiagonaltermleftentry * S ((S (pfc_index_left_constant_recover_actualdiagonal)) * kc) + (pfc_left_left_constant_recover_actualdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_recover_actualdiagonaltermleftoutside. pfc_gap_left_constant_recover_actualdiagonaltermleftoutside+(1)=(pfc_index_left_constant_recover_actualdiagonal)) /\ (((pfc_left_left_constant_recover_actualdiagonalterm)=0))))) /\ ((((((exists pfa_gap_left_constant_recover_actualdiagonaltermrightinside. pfa_gap_left_constant_recover_actualdiagonaltermrightinside + S (pfc_complement_left_constant_recover_actualdiagonalterm) = (L)) /\ ((((exists ff_h_pfp_left_constant_recover_actualdiagonaltermrightentry. ff_h_pfp_left_constant_recover_actualdiagonaltermrightentry + S (pfc_right_left_constant_recover_actualdiagonalterm) = S ((S (pfc_complement_left_constant_recover_actualdiagonalterm)) * ac)) /\ exists ff_q_pfp_left_constant_recover_actualdiagonaltermrightentry. ab = ff_q_pfp_left_constant_recover_actualdiagonaltermrightentry * S ((S (pfc_complement_left_constant_recover_actualdiagonalterm)) * ac) + (pfc_right_left_constant_recover_actualdiagonalterm)))))) \/ (((exists pfc_gap_left_constant_recover_actualdiagonaltermrightoutside. pfc_gap_left_constant_recover_actualdiagonaltermrightoutside+(L)=(pfc_complement_left_constant_recover_actualdiagonalterm)) /\ (((pfc_right_left_constant_recover_actualdiagonalterm)=0))))) /\ (((pfc_value_left_constant_recover_actualdiagonal)=pfc_left_left_constant_recover_actualdiagonalterm*pfc_right_left_constant_recover_actualdiagonalterm))))))))))) /\ (((exists fs_u_pfc_left_constant_recover_actualsum fs_v_pfc_left_constant_recover_actualsum. ((((exists fs_h_pfc_left_constant_recover_actualsum_body_start. fs_h_pfc_left_constant_recover_actualsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_left_constant_recover_actualsum)) /\ exists fs_q_pfc_left_constant_recover_actualsum_body_start. fs_u_pfc_left_constant_recover_actualsum = fs_q_pfc_left_constant_recover_actualsum_body_start * S ((S (0)) * fs_v_pfc_left_constant_recover_actualsum) + (0))) /\ ((((exists fs_h_pfc_left_constant_recover_actualsum_body_terminal. fs_h_pfc_left_constant_recover_actualsum_body_terminal + S (pfc_natural_sum_left_constant_recover_actual) = S ((S (S (i))) * fs_v_pfc_left_constant_recover_actualsum)) /\ exists fs_q_pfc_left_constant_recover_actualsum_body_terminal. fs_u_pfc_left_constant_recover_actualsum = fs_q_pfc_left_constant_recover_actualsum_body_terminal * S ((S (S (i))) * fs_v_pfc_left_constant_recover_actualsum) + (pfc_natural_sum_left_constant_recover_actual))) /\ forall fs_i_pfc_left_constant_recover_actualsum_body_steps. (exists fs_lt_pfc_left_constant_recover_actualsum_body_steps_bound. fs_lt_pfc_left_constant_recover_actualsum_body_steps_bound + S fs_i_pfc_left_constant_recover_actualsum_body_steps = S (i)) -> exists fs_a_pfc_left_constant_recover_actualsum_body_steps fs_r_pfc_left_constant_recover_actualsum_body_steps fs_s_pfc_left_constant_recover_actualsum_body_steps. ((((exists fs_h_pfc_left_constant_recover_actualsum_body_steps_summand. fs_h_pfc_left_constant_recover_actualsum_body_steps_summand + S (fs_a_pfc_left_constant_recover_actualsum_body_steps) = S ((S (fs_i_pfc_left_constant_recover_actualsum_body_steps)) * pfc_terms_scale_left_constant_recover_actual)) /\ exists fs_q_pfc_left_constant_recover_actualsum_body_steps_summand. pfc_terms_code_left_constant_recover_actual = fs_q_pfc_left_constant_recover_actualsum_body_steps_summand * S ((S (fs_i_pfc_left_constant_recover_actualsum_body_steps)) * pfc_terms_scale_left_constant_recover_actual) + (fs_a_pfc_left_constant_recover_actualsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_recover_actualsum_body_steps_partial. fs_h_pfc_left_constant_recover_actualsum_body_steps_partial + S (fs_r_pfc_left_constant_recover_actualsum_body_steps) = S ((S (fs_i_pfc_left_constant_recover_actualsum_body_steps)) * fs_v_pfc_left_constant_recover_actualsum)) /\ exists fs_q_pfc_left_constant_recover_actualsum_body_steps_partial. fs_u_pfc_left_constant_recover_actualsum = fs_q_pfc_left_constant_recover_actualsum_body_steps_partial * S ((S (fs_i_pfc_left_constant_recover_actualsum_body_steps)) * fs_v_pfc_left_constant_recover_actualsum) + (fs_r_pfc_left_constant_recover_actualsum_body_steps))) /\ ((((exists fs_h_pfc_left_constant_recover_actualsum_body_steps_successor. fs_h_pfc_left_constant_recover_actualsum_body_steps_successor + S (fs_s_pfc_left_constant_recover_actualsum_body_steps) = S ((S (S fs_i_pfc_left_constant_recover_actualsum_body_steps)) * fs_v_pfc_left_constant_recover_actualsum)) /\ exists fs_q_pfc_left_constant_recover_actualsum_body_steps_successor. fs_u_pfc_left_constant_recover_actualsum = fs_q_pfc_left_constant_recover_actualsum_body_steps_successor * S ((S (S fs_i_pfc_left_constant_recover_actualsum_body_steps)) * fs_v_pfc_left_constant_recover_actualsum) + (fs_s_pfc_left_constant_recover_actualsum_body_steps))) /\ fs_s_pfc_left_constant_recover_actualsum_body_steps = fs_r_pfc_left_constant_recover_actualsum_body_steps + fs_a_pfc_left_constant_recover_actualsum_body_steps)))))) /\ ((((exists pfa_gap_left_constant_recover_actualresiduebound. pfa_gap_left_constant_recover_actualresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_left_constant_recover_actualresiduecongruence pfa_offset_right_left_constant_recover_actualresiduecongruence. (pfc_natural_sum_left_constant_recover_actual) + (p) * pfa_offset_left_left_constant_recover_actualresiduecongruence = (r) + (p) * pfa_offset_right_left_constant_recover_actualresiduecongruence)))))))) - 0065
specialize prime_field_convolution_coefficient_exists (p) - 0066
specialize prime_field_convolution_coefficient_exists (kb) - 0067
specialize prime_field_convolution_coefficient_exists (kc) - 0068
specialize prime_field_convolution_coefficient_exists (1) - 0069
specialize prime_field_convolution_coefficient_exists (ab) - 0070
specialize prime_field_convolution_coefficient_exists (ac) - 0071
specialize prime_field_convolution_coefficient_exists (L) - 0072
specialize prime_field_convolution_coefficient_exists (i) - 0073
apply prime_field_convolution_coefficient_exists - 0074
intro hpzero - 0075
specialize prime_nonzero (p) - 0076
apply prime_nonzero - 0077
exact hp - 0078
exact hpzero - 0079
cases hcoefficient - 0080
have heq : x2=x1 - 0081
specialize prime_field_multiply_functional (p) - 0082
specialize prime_field_multiply_functional (k) - 0083
specialize prime_field_multiply_functional (x) - 0084
specialize prime_field_multiply_functional (x2) - 0085
specialize prime_field_multiply_functional (x1) - 0086
apply prime_field_multiply_functional - 0087
specialize prime_field_convolution_coefficient_left_constant (p) - 0088
specialize prime_field_convolution_coefficient_left_constant (k) - 0089
specialize prime_field_convolution_coefficient_left_constant (kb) - 0090
specialize prime_field_convolution_coefficient_left_constant (kc) - 0091
specialize prime_field_convolution_coefficient_left_constant (ab) - 0092
specialize prime_field_convolution_coefficient_left_constant (ac) - 0093
specialize prime_field_convolution_coefficient_left_constant (L) - 0094
specialize prime_field_convolution_coefficient_left_constant (i) - 0095
specialize prime_field_convolution_coefficient_left_constant (x) - 0096
specialize prime_field_convolution_coefficient_left_constant (x2) - 0097
apply prime_field_convolution_coefficient_left_constant - 0098
exact hk - 0099
exact hi - 0100
exact hv_witness_witness_left - 0101
exact hm_left - 0102
exact hm_right_left - 0103
exact hcoefficient_witness - 0104
exact hv_witness_witness_right_right - 0105
exists x1 - 0106
split - 0107
exact hv_witness_witness_right_left - 0108
rewrite heq at hcoefficient_witness - 0109
rewrite heq at hcoefficient_witness - 0110
exact hcoefficient_witness