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 bb bc cb cc L. (~((p) = 1) /\ forall pfa_factor_left_constant_recover_prime pfa_factor_right_constant_recover_prime. (p) = pfa_factor_left_constant_recover_prime * pfa_factor_right_constant_recover_prime -> pfa_factor_left_constant_recover_prime = 1 \/ pfa_factor_right_constant_recover_prime = 1) -> (forall fom_index_pfp_constant_recover_constant. (exists fom_gap_pfp_constant_recover_constant_index_bound. fom_gap_pfp_constant_recover_constant_index_bound + S (fom_index_pfp_constant_recover_constant) = 1) -> exists fom_value_pfp_constant_recover_constant. ((((exists fom_beta_height_pfp_constant_recover_constant_entry. fom_beta_height_pfp_constant_recover_constant_entry + S (fom_value_pfp_constant_recover_constant) = S ((S (fom_index_pfp_constant_recover_constant)) * bc)) /\ exists fom_beta_quotient_pfp_constant_recover_constant_entry. bb = fom_beta_quotient_pfp_constant_recover_constant_entry * S ((S (fom_index_pfp_constant_recover_constant)) * bc) + (fom_value_pfp_constant_recover_constant))) /\ (exists fom_gap_pfp_constant_recover_constant_value_bound. fom_gap_pfp_constant_recover_constant_value_bound + S (fom_value_pfp_constant_recover_constant) = p))) -> (((exists ff_h_pfp_constant_recover_value. ff_h_pfp_constant_recover_value + S (k) = S ((S (0)) * bc)) /\ exists ff_q_pfp_constant_recover_value. bb = ff_q_pfp_constant_recover_value * S ((S (0)) * bc) + (k))) -> (((exists pfa_gap_constant_recover_scalescalar. pfa_gap_constant_recover_scalescalar + S (k) = (p)) /\ ((forall pfp_index_constant_recover_scale. (exists pfa_gap_constant_recover_scaleindex. pfa_gap_constant_recover_scaleindex + S (pfp_index_constant_recover_scale) = (L)) -> exists pfp_source_constant_recover_scale pfp_value_constant_recover_scale. ((((exists ff_h_pfp_constant_recover_scalesource. ff_h_pfp_constant_recover_scalesource + S (pfp_source_constant_recover_scale) = S ((S (pfp_index_constant_recover_scale)) * ac)) /\ exists ff_q_pfp_constant_recover_scalesource. ab = ff_q_pfp_constant_recover_scalesource * S ((S (pfp_index_constant_recover_scale)) * ac) + (pfp_source_constant_recover_scale))) /\ (((((exists ff_h_pfp_constant_recover_scaletarget. ff_h_pfp_constant_recover_scaletarget + S (pfp_value_constant_recover_scale) = S ((S (pfp_index_constant_recover_scale)) * cc)) /\ exists ff_q_pfp_constant_recover_scaletarget. cb = ff_q_pfp_constant_recover_scaletarget * S ((S (pfp_index_constant_recover_scale)) * cc) + (pfp_value_constant_recover_scale))) /\ ((((exists pfa_gap_constant_recover_scaleoperationleft. pfa_gap_constant_recover_scaleoperationleft + S (k) = (p)) /\ (((exists pfa_gap_constant_recover_scaleoperationright. pfa_gap_constant_recover_scaleoperationright + S (pfp_source_constant_recover_scale) = (p)) /\ ((((exists pfa_gap_constant_recover_scaleoperationresultbound. pfa_gap_constant_recover_scaleoperationresultbound + S (pfp_value_constant_recover_scale) = (p)) /\ ((exists pfa_offset_left_constant_recover_scaleoperationresultcongruence pfa_offset_right_constant_recover_scaleoperationresultcongruence. ((k) * (pfp_source_constant_recover_scale)) + (p) * pfa_offset_left_constant_recover_scaleoperationresultcongruence = (pfp_value_constant_recover_scale) + (p) * pfa_offset_right_constant_recover_scaleoperationresultcongruence))))))))))))))))) -> (((forall fom_index_pfp_constant_recover_productleft. (exists fom_gap_pfp_constant_recover_productleft_index_bound. fom_gap_pfp_constant_recover_productleft_index_bound + S (fom_index_pfp_constant_recover_productleft) = L) -> exists fom_value_pfp_constant_recover_productleft. ((((exists fom_beta_height_pfp_constant_recover_productleft_entry. fom_beta_height_pfp_constant_recover_productleft_entry + S (fom_value_pfp_constant_recover_productleft) = S ((S (fom_index_pfp_constant_recover_productleft)) * ac)) /\ exists fom_beta_quotient_pfp_constant_recover_productleft_entry. ab = fom_beta_quotient_pfp_constant_recover_productleft_entry * S ((S (fom_index_pfp_constant_recover_productleft)) * ac) + (fom_value_pfp_constant_recover_productleft))) /\ (exists fom_gap_pfp_constant_recover_productleft_value_bound. fom_gap_pfp_constant_recover_productleft_value_bound + S (fom_value_pfp_constant_recover_productleft) = p))) /\ (((forall fom_index_pfp_constant_recover_productright. (exists fom_gap_pfp_constant_recover_productright_index_bound. fom_gap_pfp_constant_recover_productright_index_bound + S (fom_index_pfp_constant_recover_productright) = 1) -> exists fom_value_pfp_constant_recover_productright. ((((exists fom_beta_height_pfp_constant_recover_productright_entry. fom_beta_height_pfp_constant_recover_productright_entry + S (fom_value_pfp_constant_recover_productright) = S ((S (fom_index_pfp_constant_recover_productright)) * bc)) /\ exists fom_beta_quotient_pfp_constant_recover_productright_entry. bb = fom_beta_quotient_pfp_constant_recover_productright_entry * S ((S (fom_index_pfp_constant_recover_productright)) * bc) + (fom_value_pfp_constant_recover_productright))) /\ (exists fom_gap_pfp_constant_recover_productright_value_bound. fom_gap_pfp_constant_recover_productright_value_bound + S (fom_value_pfp_constant_recover_productright) = p))) /\ (((((((L)=0 \/ (1)=0) /\ (((L)=0)))) \/ (((~((L)=0)) /\ (((~((1)=0)) /\ (((L)+(1)=S (L)))))))) /\ ((forall pfc_index_constant_recover_productcoefficients. (exists pfa_gap_constant_recover_productcoefficientsbound. pfa_gap_constant_recover_productcoefficientsbound + S (pfc_index_constant_recover_productcoefficients) = (L)) -> exists pfc_value_constant_recover_productcoefficients. ((((exists ff_h_pfp_constant_recover_productcoefficientsentry. ff_h_pfp_constant_recover_productcoefficientsentry + S (pfc_value_constant_recover_productcoefficients) = S ((S (pfc_index_constant_recover_productcoefficients)) * cc)) /\ exists ff_q_pfp_constant_recover_productcoefficientsentry. cb = ff_q_pfp_constant_recover_productcoefficientsentry * S ((S (pfc_index_constant_recover_productcoefficients)) * cc) + (pfc_value_constant_recover_productcoefficients))) /\ ((exists pfc_terms_code_constant_recover_productcoefficientscoefficient pfc_terms_scale_constant_recover_productcoefficientscoefficient pfc_natural_sum_constant_recover_productcoefficientscoefficient. ((forall pfc_index_constant_recover_productcoefficientscoefficientdiagonal. (exists pfa_gap_constant_recover_productcoefficientscoefficientdiagonalbound. pfa_gap_constant_recover_productcoefficientscoefficientdiagonalbound + S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal) = (S (pfc_index_constant_recover_productcoefficients))) -> exists pfc_value_constant_recover_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonalentry. ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonalentry + S (pfc_value_constant_recover_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_constant_recover_productcoefficientscoefficient)) /\ exists ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonalentry. pfc_terms_code_constant_recover_productcoefficientscoefficient = ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_constant_recover_productcoefficientscoefficient) + (pfc_value_constant_recover_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm pfc_left_constant_recover_productcoefficientscoefficientdiagonalterm pfc_right_constant_recover_productcoefficientscoefficientdiagonalterm. (((pfc_index_constant_recover_productcoefficientscoefficientdiagonal)+pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm=(pfc_index_constant_recover_productcoefficients)) /\ ((((((exists pfa_gap_constant_recover_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_constant_recover_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal) = (L)) /\ ((((exists ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_constant_recover_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal)) * ac)) /\ exists ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonaltermleftentry. ab = ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_constant_recover_productcoefficientscoefficientdiagonal)) * ac) + (pfc_left_constant_recover_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_constant_recover_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_constant_recover_productcoefficientscoefficientdiagonaltermleftoutside+(L)=(pfc_index_constant_recover_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_constant_recover_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_constant_recover_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_constant_recover_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm) = (1)) /\ ((((exists ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_constant_recover_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_constant_recover_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm)) * bc)) /\ exists ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonaltermrightentry. bb = ff_q_pfp_constant_recover_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm)) * bc) + (pfc_right_constant_recover_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_constant_recover_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_constant_recover_productcoefficientscoefficientdiagonaltermrightoutside+(1)=(pfc_complement_constant_recover_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_constant_recover_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_constant_recover_productcoefficientscoefficientdiagonal)=pfc_left_constant_recover_productcoefficientscoefficientdiagonalterm*pfc_right_constant_recover_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_constant_recover_productcoefficientscoefficientsum fs_v_pfc_constant_recover_productcoefficientscoefficientsum. ((((exists fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_start. fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_start. fs_u_pfc_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_constant_recover_productcoefficientscoefficient) = S ((S (S (pfc_index_constant_recover_productcoefficients))) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_constant_recover_productcoefficients))) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum) + (pfc_natural_sum_constant_recover_productcoefficientscoefficient))) /\ forall fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps = S (pfc_index_constant_recover_productcoefficients)) -> exists fs_a_pfc_constant_recover_productcoefficientscoefficientsum_body_steps fs_r_pfc_constant_recover_productcoefficientscoefficientsum_body_steps fs_s_pfc_constant_recover_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_constant_recover_productcoefficientscoefficient)) /\ exists fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_constant_recover_productcoefficientscoefficient = fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_constant_recover_productcoefficientscoefficient) + (fs_a_pfc_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum) + (fs_r_pfc_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_constant_recover_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_constant_recover_productcoefficientscoefficientsum = fs_q_pfc_constant_recover_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_constant_recover_productcoefficientscoefficientsum) + (fs_s_pfc_constant_recover_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_constant_recover_productcoefficientscoefficientsum_body_steps = fs_r_pfc_constant_recover_productcoefficientscoefficientsum_body_steps + fs_a_pfc_constant_recover_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_constant_recover_productcoefficientscoefficientresiduebound. pfa_gap_constant_recover_productcoefficientscoefficientresiduebound + S (pfc_value_constant_recover_productcoefficients) = (p)) /\ ((exists pfa_offset_left_constant_recover_productcoefficientscoefficientresiduecongruence pfa_offset_right_constant_recover_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_constant_recover_productcoefficientscoefficient) + (p) * pfa_offset_left_constant_recover_productcoefficientscoefficientresiduecongruence = (pfc_value_constant_recover_productcoefficients) + (p) * pfa_offset_right_constant_recover_productcoefficientscoefficientresiduecongruence)))))))))))))))))))Constructive proof overview
Generated structural guide
Recover a genuine convolution from scalar action by constructing every antidiagonal sum and identifying its residue, including the empty product case.
The unchanged tactic script uses 7 declared prerequisites and contains 107 exact native proof lines.
Alpha v34 checked-use · first admitted v33 · 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 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 PX0023 prime_field_polynomial_constant_right_coefficientDirect 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 hbL14–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 hb : BetaPrefixInto(ab,ac,L,p) ∧ BetaPrefixInto(cb,cc,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 (cb) - L20
specialize prime_field_polynomial_scale_bounded (cc) - 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 hb_left
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 hB
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
13Use earlier factsL42–42
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L42
exact hz_right
14Separate the logical casesL43–43
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L43
split
15Fix variables and assumptionsL44–44
Work with arbitrary variables or the premises of the current implication.
- L44
intro hbad
16Use earlier factsL45–47
17Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
simp
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 hcL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field convolution coefficient exists.
- L60
have hc : ∃ r. FpConvolutionCoefficient(p,ab,ac,L,bb,bc,1,i,r)Definitions: FpConvolutionCoefficient - L61
specialize prime_field_convolution_coefficient_exists (p) - L62
specialize prime_field_convolution_coefficient_exists (ab) - L63
specialize prime_field_convolution_coefficient_exists (ac) - L64
specialize prime_field_convolution_coefficient_exists (L) - L65
specialize prime_field_convolution_coefficient_exists (bb) - L66
specialize prime_field_convolution_coefficient_exists (bc) - L67
specialize prime_field_convolution_coefficient_exists (1) - L68
specialize prime_field_convolution_coefficient_exists (i) - L69
apply prime_field_convolution_coefficient_exists
24Fix variables and assumptionsL70–70
Work with arbitrary variables or the premises of the current implication.
- L70
intro hpzero
25Use earlier factsL71–74
26Separate the logical casesL75–75
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L75
cases hc
27Establish heqL76–85
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply functional.
- L76
have heq : x2=x1 - L77
specialize prime_field_multiply_functional (p) - L78
specialize prime_field_multiply_functional (k) - L79
specialize prime_field_multiply_functional (x) - L80
specialize prime_field_multiply_functional (x2) - L81
specialize prime_field_multiply_functional (x1) - L82
apply prime_field_multiply_functional - L83
specialize prime_field_polynomial_constant_right_coefficient (p) - L84
specialize prime_field_polynomial_constant_right_coefficient (ab) - L85
specialize prime_field_polynomial_constant_right_coefficient (ac)
28Use earlier factsL86–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
specialize prime_field_polynomial_constant_right_coefficient (L) - L87
specialize prime_field_polynomial_constant_right_coefficient (bb) - L88
specialize prime_field_polynomial_constant_right_coefficient (bc) - L89
specialize prime_field_polynomial_constant_right_coefficient (k) - L90
specialize prime_field_polynomial_constant_right_coefficient (i) - L91
specialize prime_field_polynomial_constant_right_coefficient (x) - L92
specialize prime_field_polynomial_constant_right_coefficient (x2) - L93
apply prime_field_polynomial_constant_right_coefficient - L94
exact hp - L95
exact hb_left
29Use earlier factsL96–101
30Construct an explicit witnessL102–102
Supply the displayed value, then prove that it has the required property.
- L102
exists x1
31Separate the logical casesL103–103
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L103
split
32Use earlier factsL104–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
exact hv_witness_witness_right_left
33Calculate and transport equalitiesL105–106
34Use earlier factsL107–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L107
exact hc_witness
Original exact command ledger · 107 lines
- 0001
intro p - 0002
intro k - 0003
intro ab - 0004
intro ac - 0005
intro bb - 0006
intro bc - 0007
intro cb - 0008
intro cc - 0009
intro L - 0010
intro hp - 0011
intro hB - 0012
intro hk - 0013
intro hs - 0014
have hb : ((forall fom_index_pfp_constant_recover_A. (exists fom_gap_pfp_constant_recover_A_index_bound. fom_gap_pfp_constant_recover_A_index_bound + S (fom_index_pfp_constant_recover_A) = L) -> exists fom_value_pfp_constant_recover_A. ((((exists fom_beta_height_pfp_constant_recover_A_entry. fom_beta_height_pfp_constant_recover_A_entry + S (fom_value_pfp_constant_recover_A) = S ((S (fom_index_pfp_constant_recover_A)) * ac)) /\ exists fom_beta_quotient_pfp_constant_recover_A_entry. ab = fom_beta_quotient_pfp_constant_recover_A_entry * S ((S (fom_index_pfp_constant_recover_A)) * ac) + (fom_value_pfp_constant_recover_A))) /\ (exists fom_gap_pfp_constant_recover_A_value_bound. fom_gap_pfp_constant_recover_A_value_bound + S (fom_value_pfp_constant_recover_A) = p))) /\ ((forall fom_index_pfp_constant_recover_C. (exists fom_gap_pfp_constant_recover_C_index_bound. fom_gap_pfp_constant_recover_C_index_bound + S (fom_index_pfp_constant_recover_C) = L) -> exists fom_value_pfp_constant_recover_C. ((((exists fom_beta_height_pfp_constant_recover_C_entry. fom_beta_height_pfp_constant_recover_C_entry + S (fom_value_pfp_constant_recover_C) = S ((S (fom_index_pfp_constant_recover_C)) * cc)) /\ exists fom_beta_quotient_pfp_constant_recover_C_entry. cb = fom_beta_quotient_pfp_constant_recover_C_entry * S ((S (fom_index_pfp_constant_recover_C)) * cc) + (fom_value_pfp_constant_recover_C))) /\ (exists fom_gap_pfp_constant_recover_C_value_bound. fom_gap_pfp_constant_recover_C_value_bound + S (fom_value_pfp_constant_recover_C) = 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 (cb) - 0020
specialize prime_field_polynomial_scale_bounded (cc) - 0021
specialize prime_field_polynomial_scale_bounded (L) - 0022
apply prime_field_polynomial_scale_bounded - 0023
exact hs - 0024
cases hb - 0025
split - 0026
exact hb_left - 0027
split - 0028
exact hB - 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
left - 0038
exact hz_left - 0039
exact hz_left - 0040
right - 0041
split - 0042
exact hz_right - 0043
split - 0044
intro hbad - 0045
specialize succ_ne_zero (0) - 0046
apply succ_ne_zero - 0047
exact hbad - 0048
simp - 0049
intro i - 0050
intro hi - 0051
have hv : exists a r. (((((exists ff_h_pfp_constant_recover_source. ff_h_pfp_constant_recover_source + S (a) = S ((S (i)) * ac)) /\ exists ff_q_pfp_constant_recover_source. ab = ff_q_pfp_constant_recover_source * S ((S (i)) * ac) + (a))) /\ (((((exists ff_h_pfp_constant_recover_target. ff_h_pfp_constant_recover_target + S (r) = S ((S (i)) * cc)) /\ exists ff_q_pfp_constant_recover_target. cb = ff_q_pfp_constant_recover_target * S ((S (i)) * cc) + (r))) /\ ((((exists pfa_gap_constant_recover_mulleft. pfa_gap_constant_recover_mulleft + S (k) = (p)) /\ (((exists pfa_gap_constant_recover_mulright. pfa_gap_constant_recover_mulright + S (a) = (p)) /\ ((((exists pfa_gap_constant_recover_mulresultbound. pfa_gap_constant_recover_mulresultbound + S (r) = (p)) /\ ((exists pfa_offset_left_constant_recover_mulresultcongruence pfa_offset_right_constant_recover_mulresultcongruence. ((k) * (a)) + (p) * pfa_offset_left_constant_recover_mulresultcongruence = (r) + (p) * pfa_offset_right_constant_recover_mulresultcongruence)))))))))))))) - 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 hc : exists r. (exists pfc_terms_code_constant_recover_actual pfc_terms_scale_constant_recover_actual pfc_natural_sum_constant_recover_actual. ((forall pfc_index_constant_recover_actualdiagonal. (exists pfa_gap_constant_recover_actualdiagonalbound. pfa_gap_constant_recover_actualdiagonalbound + S (pfc_index_constant_recover_actualdiagonal) = (S (i))) -> exists pfc_value_constant_recover_actualdiagonal. ((((exists ff_h_pfp_constant_recover_actualdiagonalentry. ff_h_pfp_constant_recover_actualdiagonalentry + S (pfc_value_constant_recover_actualdiagonal) = S ((S (pfc_index_constant_recover_actualdiagonal)) * pfc_terms_scale_constant_recover_actual)) /\ exists ff_q_pfp_constant_recover_actualdiagonalentry. pfc_terms_code_constant_recover_actual = ff_q_pfp_constant_recover_actualdiagonalentry * S ((S (pfc_index_constant_recover_actualdiagonal)) * pfc_terms_scale_constant_recover_actual) + (pfc_value_constant_recover_actualdiagonal))) /\ ((exists pfc_complement_constant_recover_actualdiagonalterm pfc_left_constant_recover_actualdiagonalterm pfc_right_constant_recover_actualdiagonalterm. (((pfc_index_constant_recover_actualdiagonal)+pfc_complement_constant_recover_actualdiagonalterm=(i)) /\ ((((((exists pfa_gap_constant_recover_actualdiagonaltermleftinside. pfa_gap_constant_recover_actualdiagonaltermleftinside + S (pfc_index_constant_recover_actualdiagonal) = (L)) /\ ((((exists ff_h_pfp_constant_recover_actualdiagonaltermleftentry. ff_h_pfp_constant_recover_actualdiagonaltermleftentry + S (pfc_left_constant_recover_actualdiagonalterm) = S ((S (pfc_index_constant_recover_actualdiagonal)) * ac)) /\ exists ff_q_pfp_constant_recover_actualdiagonaltermleftentry. ab = ff_q_pfp_constant_recover_actualdiagonaltermleftentry * S ((S (pfc_index_constant_recover_actualdiagonal)) * ac) + (pfc_left_constant_recover_actualdiagonalterm)))))) \/ (((exists pfc_gap_constant_recover_actualdiagonaltermleftoutside. pfc_gap_constant_recover_actualdiagonaltermleftoutside+(L)=(pfc_index_constant_recover_actualdiagonal)) /\ (((pfc_left_constant_recover_actualdiagonalterm)=0))))) /\ ((((((exists pfa_gap_constant_recover_actualdiagonaltermrightinside. pfa_gap_constant_recover_actualdiagonaltermrightinside + S (pfc_complement_constant_recover_actualdiagonalterm) = (1)) /\ ((((exists ff_h_pfp_constant_recover_actualdiagonaltermrightentry. ff_h_pfp_constant_recover_actualdiagonaltermrightentry + S (pfc_right_constant_recover_actualdiagonalterm) = S ((S (pfc_complement_constant_recover_actualdiagonalterm)) * bc)) /\ exists ff_q_pfp_constant_recover_actualdiagonaltermrightentry. bb = ff_q_pfp_constant_recover_actualdiagonaltermrightentry * S ((S (pfc_complement_constant_recover_actualdiagonalterm)) * bc) + (pfc_right_constant_recover_actualdiagonalterm)))))) \/ (((exists pfc_gap_constant_recover_actualdiagonaltermrightoutside. pfc_gap_constant_recover_actualdiagonaltermrightoutside+(1)=(pfc_complement_constant_recover_actualdiagonalterm)) /\ (((pfc_right_constant_recover_actualdiagonalterm)=0))))) /\ (((pfc_value_constant_recover_actualdiagonal)=pfc_left_constant_recover_actualdiagonalterm*pfc_right_constant_recover_actualdiagonalterm))))))))))) /\ (((exists fs_u_pfc_constant_recover_actualsum fs_v_pfc_constant_recover_actualsum. ((((exists fs_h_pfc_constant_recover_actualsum_body_start. fs_h_pfc_constant_recover_actualsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_constant_recover_actualsum)) /\ exists fs_q_pfc_constant_recover_actualsum_body_start. fs_u_pfc_constant_recover_actualsum = fs_q_pfc_constant_recover_actualsum_body_start * S ((S (0)) * fs_v_pfc_constant_recover_actualsum) + (0))) /\ ((((exists fs_h_pfc_constant_recover_actualsum_body_terminal. fs_h_pfc_constant_recover_actualsum_body_terminal + S (pfc_natural_sum_constant_recover_actual) = S ((S (S (i))) * fs_v_pfc_constant_recover_actualsum)) /\ exists fs_q_pfc_constant_recover_actualsum_body_terminal. fs_u_pfc_constant_recover_actualsum = fs_q_pfc_constant_recover_actualsum_body_terminal * S ((S (S (i))) * fs_v_pfc_constant_recover_actualsum) + (pfc_natural_sum_constant_recover_actual))) /\ forall fs_i_pfc_constant_recover_actualsum_body_steps. (exists fs_lt_pfc_constant_recover_actualsum_body_steps_bound. fs_lt_pfc_constant_recover_actualsum_body_steps_bound + S fs_i_pfc_constant_recover_actualsum_body_steps = S (i)) -> exists fs_a_pfc_constant_recover_actualsum_body_steps fs_r_pfc_constant_recover_actualsum_body_steps fs_s_pfc_constant_recover_actualsum_body_steps. ((((exists fs_h_pfc_constant_recover_actualsum_body_steps_summand. fs_h_pfc_constant_recover_actualsum_body_steps_summand + S (fs_a_pfc_constant_recover_actualsum_body_steps) = S ((S (fs_i_pfc_constant_recover_actualsum_body_steps)) * pfc_terms_scale_constant_recover_actual)) /\ exists fs_q_pfc_constant_recover_actualsum_body_steps_summand. pfc_terms_code_constant_recover_actual = fs_q_pfc_constant_recover_actualsum_body_steps_summand * S ((S (fs_i_pfc_constant_recover_actualsum_body_steps)) * pfc_terms_scale_constant_recover_actual) + (fs_a_pfc_constant_recover_actualsum_body_steps))) /\ ((((exists fs_h_pfc_constant_recover_actualsum_body_steps_partial. fs_h_pfc_constant_recover_actualsum_body_steps_partial + S (fs_r_pfc_constant_recover_actualsum_body_steps) = S ((S (fs_i_pfc_constant_recover_actualsum_body_steps)) * fs_v_pfc_constant_recover_actualsum)) /\ exists fs_q_pfc_constant_recover_actualsum_body_steps_partial. fs_u_pfc_constant_recover_actualsum = fs_q_pfc_constant_recover_actualsum_body_steps_partial * S ((S (fs_i_pfc_constant_recover_actualsum_body_steps)) * fs_v_pfc_constant_recover_actualsum) + (fs_r_pfc_constant_recover_actualsum_body_steps))) /\ ((((exists fs_h_pfc_constant_recover_actualsum_body_steps_successor. fs_h_pfc_constant_recover_actualsum_body_steps_successor + S (fs_s_pfc_constant_recover_actualsum_body_steps) = S ((S (S fs_i_pfc_constant_recover_actualsum_body_steps)) * fs_v_pfc_constant_recover_actualsum)) /\ exists fs_q_pfc_constant_recover_actualsum_body_steps_successor. fs_u_pfc_constant_recover_actualsum = fs_q_pfc_constant_recover_actualsum_body_steps_successor * S ((S (S fs_i_pfc_constant_recover_actualsum_body_steps)) * fs_v_pfc_constant_recover_actualsum) + (fs_s_pfc_constant_recover_actualsum_body_steps))) /\ fs_s_pfc_constant_recover_actualsum_body_steps = fs_r_pfc_constant_recover_actualsum_body_steps + fs_a_pfc_constant_recover_actualsum_body_steps)))))) /\ ((((exists pfa_gap_constant_recover_actualresiduebound. pfa_gap_constant_recover_actualresiduebound + S (r) = (p)) /\ ((exists pfa_offset_left_constant_recover_actualresiduecongruence pfa_offset_right_constant_recover_actualresiduecongruence. (pfc_natural_sum_constant_recover_actual) + (p) * pfa_offset_left_constant_recover_actualresiduecongruence = (r) + (p) * pfa_offset_right_constant_recover_actualresiduecongruence))))))))) - 0061
specialize prime_field_convolution_coefficient_exists (p) - 0062
specialize prime_field_convolution_coefficient_exists (ab) - 0063
specialize prime_field_convolution_coefficient_exists (ac) - 0064
specialize prime_field_convolution_coefficient_exists (L) - 0065
specialize prime_field_convolution_coefficient_exists (bb) - 0066
specialize prime_field_convolution_coefficient_exists (bc) - 0067
specialize prime_field_convolution_coefficient_exists (1) - 0068
specialize prime_field_convolution_coefficient_exists (i) - 0069
apply prime_field_convolution_coefficient_exists - 0070
intro hpzero - 0071
specialize prime_nonzero (p) - 0072
apply prime_nonzero - 0073
exact hp - 0074
exact hpzero - 0075
cases hc - 0076
have heq : x2=x1 - 0077
specialize prime_field_multiply_functional (p) - 0078
specialize prime_field_multiply_functional (k) - 0079
specialize prime_field_multiply_functional (x) - 0080
specialize prime_field_multiply_functional (x2) - 0081
specialize prime_field_multiply_functional (x1) - 0082
apply prime_field_multiply_functional - 0083
specialize prime_field_polynomial_constant_right_coefficient (p) - 0084
specialize prime_field_polynomial_constant_right_coefficient (ab) - 0085
specialize prime_field_polynomial_constant_right_coefficient (ac) - 0086
specialize prime_field_polynomial_constant_right_coefficient (L) - 0087
specialize prime_field_polynomial_constant_right_coefficient (bb) - 0088
specialize prime_field_polynomial_constant_right_coefficient (bc) - 0089
specialize prime_field_polynomial_constant_right_coefficient (k) - 0090
specialize prime_field_polynomial_constant_right_coefficient (i) - 0091
specialize prime_field_polynomial_constant_right_coefficient (x) - 0092
specialize prime_field_polynomial_constant_right_coefficient (x2) - 0093
apply prime_field_polynomial_constant_right_coefficient - 0094
exact hp - 0095
exact hb_left - 0096
exact hB - 0097
exact hk - 0098
exact hi - 0099
exact hv_witness_witness_left - 0100
exact hc_witness - 0101
exact hv_witness_witness_right_right - 0102
exists x1 - 0103
split - 0104
exact hv_witness_witness_right_left - 0105
rewrite heq at hc_witness - 0106
rewrite heq at hc_witness - 0107
exact hc_witness