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 ab ac l. (~((p) = 1) /\ forall pfa_factor_left_negate_exists_prime pfa_factor_right_negate_exists_prime. (p) = pfa_factor_left_negate_exists_prime * pfa_factor_right_negate_exists_prime -> pfa_factor_left_negate_exists_prime = 1 \/ pfa_factor_right_negate_exists_prime = 1) -> (forall fom_index_pfp_negate_exists_ab. (exists fom_gap_pfp_negate_exists_ab_index_bound. fom_gap_pfp_negate_exists_ab_index_bound + S (fom_index_pfp_negate_exists_ab) = l) -> exists fom_value_pfp_negate_exists_ab. ((((exists fom_beta_height_pfp_negate_exists_ab_entry. fom_beta_height_pfp_negate_exists_ab_entry + S (fom_value_pfp_negate_exists_ab) = S ((S (fom_index_pfp_negate_exists_ab)) * ac)) /\ exists fom_beta_quotient_pfp_negate_exists_ab_entry. ab = fom_beta_quotient_pfp_negate_exists_ab_entry * S ((S (fom_index_pfp_negate_exists_ab)) * ac) + (fom_value_pfp_negate_exists_ab))) /\ (exists fom_gap_pfp_negate_exists_ab_value_bound. fom_gap_pfp_negate_exists_ab_value_bound + S (fom_value_pfp_negate_exists_ab) = p))) -> exists rb rc. (forall pfs_index_negate_exists_result. (exists pfa_gap_negate_exists_resultindex. pfa_gap_negate_exists_resultindex + S (pfs_index_negate_exists_result) = (l)) -> exists pfs_source_negate_exists_result pfs_result_negate_exists_result. ((((exists ff_h_pfp_negate_exists_resultsource. ff_h_pfp_negate_exists_resultsource + S (pfs_source_negate_exists_result) = S ((S (pfs_index_negate_exists_result)) * ac)) /\ exists ff_q_pfp_negate_exists_resultsource. ab = ff_q_pfp_negate_exists_resultsource * S ((S (pfs_index_negate_exists_result)) * ac) + (pfs_source_negate_exists_result))) /\ (((((exists ff_h_pfp_negate_exists_resultresult. ff_h_pfp_negate_exists_resultresult + S (pfs_result_negate_exists_result) = S ((S (pfs_index_negate_exists_result)) * rc)) /\ exists ff_q_pfp_negate_exists_resultresult. rb = ff_q_pfp_negate_exists_resultresult * S ((S (pfs_index_negate_exists_result)) * rc) + (pfs_result_negate_exists_result))) /\ ((((exists pfa_gap_negate_exists_resultoperationadditionleft. pfa_gap_negate_exists_resultoperationadditionleft + S (pfs_source_negate_exists_result) = (p)) /\ (((exists pfa_gap_negate_exists_resultoperationadditionright. pfa_gap_negate_exists_resultoperationadditionright + S (pfs_result_negate_exists_result) = (p)) /\ ((((exists pfa_gap_negate_exists_resultoperationadditionresultbound. pfa_gap_negate_exists_resultoperationadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negate_exists_resultoperationadditionresultcongruence pfa_offset_right_negate_exists_resultoperationadditionresultcongruence. ((pfs_source_negate_exists_result) + (pfs_result_negate_exists_result)) + (p) * pfa_offset_left_negate_exists_resultoperationadditionresultcongruence = (0) + (p) * pfa_offset_right_negate_exists_resultoperationadditionresultcongruence))))))))))))))Constructive proof overview
Generated structural guide
Construct the entire actual canonical coefficient output by ordinary induction and beta-prefix extension; no output table is assumed.
The unchanged tactic script uses 6 declared prerequisites and contains 91 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PQ0003 prime_field_polynomial_negate_empty le_succ Stable theorem; checked-use authorized zero_add Stable theorem; checked-use authorized prime_field_negate_exists Alpha theorem; checked-use authorized beta_prefix_extend Stable theorem; checked-use authorized finite_lt_succ_eq_or_lt Stable theorem; checked-use authorizedDirect 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–5
02Induction on lL6–7
03Construct an explicit witnessL8–9
04Use earlier factsL10–15
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L10
specialize prime_field_polynomial_negate_empty (p) - L11
specialize prime_field_polynomial_negate_empty (ab) - L12
specialize prime_field_polynomial_negate_empty (ac) - L13
specialize prime_field_polynomial_negate_empty (0) - L14
specialize prime_field_polynomial_negate_empty (0) - L15
apply prime_field_polynomial_negate_empty
05Fix variables and assumptionsL16–16
Work with arbitrary variables or the premises of the current implication.
- L16
intro ha
06Establish holdL17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
07Separate the logical casesL27–28
08Establish hsource0L29–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply ha.
- L29
have hsource0 : exists a. ((((exists ff_h_pfp_negate_last_source0. ff_h_pfp_negate_last_source0 + S (a) = S ((S (l)) * ac)) /\ exists ff_q_pfp_negate_last_source0. ab = ff_q_pfp_negate_last_source0 * S ((S (l)) * ac) + (a))) /\ ((exists pfa_gap_negate_last_bound0. pfa_gap_negate_last_bound0 + S (a) = (p)))) - L30
specialize ha (l) - L31
apply ha
09Construct an explicit witnessL32–32
Supply the displayed value, then prove that it has the required property.
- L32
exists 0
10Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
apply zero_add
11Separate the logical casesL34–35
12Establish hvalueL36–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field negate exists.
13Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
cases hvalue
14Establish hnewL43–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
15Separate the logical casesL49–51
16Construct an explicit witnessL52–53
17Fix variables and assumptionsL54–55
18Establish hcaseL56–60
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
19Separate the logical casesL61–61
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L61
cases hcase
20Construct an explicit witnessL62–63
21Separate the logical casesL64–64
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L64
split
22Calculate and transport equalitiesL65–66
23Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact hsource0_witness_left
24Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
25Calculate and transport equalitiesL69–70
26Use earlier factsL71–72
27Establish hpreviousL73–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hold witness witness.
28Separate the logical casesL77–80
29Construct an explicit witnessL81–82
30Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
split
31Use earlier factsL84–84
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L84
exact hprevious_witness_witness_left
32Separate the logical casesL85–85
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L85
split
33Use earlier factsL86–91
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 91 lines
- 0001
intro p - 0002
intro ab - 0003
intro ac - 0004
intro l - 0005
intro hp - 0006
induction l - 0007
intro ha - 0008
exists 0 - 0009
exists 0 - 0010
specialize prime_field_polynomial_negate_empty (p) - 0011
specialize prime_field_polynomial_negate_empty (ab) - 0012
specialize prime_field_polynomial_negate_empty (ac) - 0013
specialize prime_field_polynomial_negate_empty (0) - 0014
specialize prime_field_polynomial_negate_empty (0) - 0015
apply prime_field_polynomial_negate_empty - 0016
intro ha - 0017
have hold : exists rb rc. (forall pfs_index_negate_old. (exists pfa_gap_negate_oldindex. pfa_gap_negate_oldindex + S (pfs_index_negate_old) = (l)) -> exists pfs_source_negate_old pfs_result_negate_old. ((((exists ff_h_pfp_negate_oldsource. ff_h_pfp_negate_oldsource + S (pfs_source_negate_old) = S ((S (pfs_index_negate_old)) * ac)) /\ exists ff_q_pfp_negate_oldsource. ab = ff_q_pfp_negate_oldsource * S ((S (pfs_index_negate_old)) * ac) + (pfs_source_negate_old))) /\ (((((exists ff_h_pfp_negate_oldresult. ff_h_pfp_negate_oldresult + S (pfs_result_negate_old) = S ((S (pfs_index_negate_old)) * rc)) /\ exists ff_q_pfp_negate_oldresult. rb = ff_q_pfp_negate_oldresult * S ((S (pfs_index_negate_old)) * rc) + (pfs_result_negate_old))) /\ ((((exists pfa_gap_negate_oldoperationadditionleft. pfa_gap_negate_oldoperationadditionleft + S (pfs_source_negate_old) = (p)) /\ (((exists pfa_gap_negate_oldoperationadditionright. pfa_gap_negate_oldoperationadditionright + S (pfs_result_negate_old) = (p)) /\ ((((exists pfa_gap_negate_oldoperationadditionresultbound. pfa_gap_negate_oldoperationadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negate_oldoperationadditionresultcongruence pfa_offset_right_negate_oldoperationadditionresultcongruence. ((pfs_source_negate_old) + (pfs_result_negate_old)) + (p) * pfa_offset_left_negate_oldoperationadditionresultcongruence = (0) + (p) * pfa_offset_right_negate_oldoperationadditionresultcongruence)))))))))))))) - 0018
apply IH - 0019
intro j - 0020
intro hj - 0021
specialize ha (j) - 0022
apply ha - 0023
specialize le_succ (S j) - 0024
specialize le_succ (l) - 0025
apply le_succ - 0026
exact hj - 0027
cases hold - 0028
cases hold_witness - 0029
have hsource0 : exists a. ((((exists ff_h_pfp_negate_last_source0. ff_h_pfp_negate_last_source0 + S (a) = S ((S (l)) * ac)) /\ exists ff_q_pfp_negate_last_source0. ab = ff_q_pfp_negate_last_source0 * S ((S (l)) * ac) + (a))) /\ ((exists pfa_gap_negate_last_bound0. pfa_gap_negate_last_bound0 + S (a) = (p)))) - 0030
specialize ha (l) - 0031
apply ha - 0032
exists 0 - 0033
apply zero_add - 0034
cases hsource0 - 0035
cases hsource0_witness - 0036
have hvalue : exists r. (((exists pfa_gap_negate_last_valueadditionleft. pfa_gap_negate_last_valueadditionleft + S (x2) = (p)) /\ (((exists pfa_gap_negate_last_valueadditionright. pfa_gap_negate_last_valueadditionright + S (r) = (p)) /\ ((((exists pfa_gap_negate_last_valueadditionresultbound. pfa_gap_negate_last_valueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negate_last_valueadditionresultcongruence pfa_offset_right_negate_last_valueadditionresultcongruence. ((x2) + (r)) + (p) * pfa_offset_left_negate_last_valueadditionresultcongruence = (0) + (p) * pfa_offset_right_negate_last_valueadditionresultcongruence))))))))) - 0037
specialize prime_field_negate_exists (p) - 0038
specialize prime_field_negate_exists (x2) - 0039
apply prime_field_negate_exists - 0040
exact hp - 0041
exact hsource0_witness_right - 0042
cases hvalue - 0043
have hnew : exists db dc. (((((exists ff_h_pfp_negate_append. ff_h_pfp_negate_append + S (x3) = S ((S (l)) * dc)) /\ exists ff_q_pfp_negate_append. db = ff_q_pfp_negate_append * S ((S (l)) * dc) + (x3))) /\ ((forall mdr_i_pfp_negate_preserve mdr_a_pfp_negate_preserve. (exists mdr_gap_pfp_negate_preserveb. mdr_gap_pfp_negate_preserveb + S (mdr_i_pfp_negate_preserve) = (l)) -> (((exists ff_h_mdr_pfp_negate_preserveo. ff_h_mdr_pfp_negate_preserveo + S (mdr_a_pfp_negate_preserve) = S ((S (mdr_i_pfp_negate_preserve)) * x1)) /\ exists ff_q_mdr_pfp_negate_preserveo. x = ff_q_mdr_pfp_negate_preserveo * S ((S (mdr_i_pfp_negate_preserve)) * x1) + (mdr_a_pfp_negate_preserve))) -> (((exists ff_h_mdr_pfp_negate_preserven. ff_h_mdr_pfp_negate_preserven + S (mdr_a_pfp_negate_preserve) = S ((S (mdr_i_pfp_negate_preserve)) * dc)) /\ exists ff_q_mdr_pfp_negate_preserven. db = ff_q_mdr_pfp_negate_preserven * S ((S (mdr_i_pfp_negate_preserve)) * dc) + (mdr_a_pfp_negate_preserve))))))) - 0044
specialize beta_prefix_extend (l) - 0045
specialize beta_prefix_extend (x) - 0046
specialize beta_prefix_extend (x1) - 0047
specialize beta_prefix_extend (x3) - 0048
apply beta_prefix_extend - 0049
cases hnew - 0050
cases hnew_witness - 0051
cases hnew_witness_witness - 0052
exists x4 - 0053
exists x5 - 0054
intro j - 0055
intro hj - 0056
have hcase : j=l \/ (exists pfa_gap_negate_index_case. pfa_gap_negate_index_case + S (j) = (l)) - 0057
specialize finite_lt_succ_eq_or_lt (l) - 0058
specialize finite_lt_succ_eq_or_lt (j) - 0059
apply finite_lt_succ_eq_or_lt - 0060
exact hj - 0061
cases hcase - 0062
exists x2 - 0063
exists x3 - 0064
split - 0065
rewrite hcase_left - 0066
rewrite hcase_left - 0067
exact hsource0_witness_left - 0068
split - 0069
rewrite hcase_left - 0070
rewrite hcase_left - 0071
exact hnew_witness_witness_left - 0072
exact hvalue_witness - 0073
have hprevious : exists v0 v1. (((((exists ff_h_pfp_negate_previous0. ff_h_pfp_negate_previous0 + S (v0) = S ((S (j)) * ac)) /\ exists ff_q_pfp_negate_previous0. ab = ff_q_pfp_negate_previous0 * S ((S (j)) * ac) + (v0))) /\ (((((exists ff_h_pfp_negate_previous1. ff_h_pfp_negate_previous1 + S (v1) = S ((S (j)) * x1)) /\ exists ff_q_pfp_negate_previous1. x = ff_q_pfp_negate_previous1 * S ((S (j)) * x1) + (v1))) /\ ((((exists pfa_gap_negate_previousoperationadditionleft. pfa_gap_negate_previousoperationadditionleft + S (v0) = (p)) /\ (((exists pfa_gap_negate_previousoperationadditionright. pfa_gap_negate_previousoperationadditionright + S (v1) = (p)) /\ ((((exists pfa_gap_negate_previousoperationadditionresultbound. pfa_gap_negate_previousoperationadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negate_previousoperationadditionresultcongruence pfa_offset_right_negate_previousoperationadditionresultcongruence. ((v0) + (v1)) + (p) * pfa_offset_left_negate_previousoperationadditionresultcongruence = (0) + (p) * pfa_offset_right_negate_previousoperationadditionresultcongruence)))))))))))))) - 0074
specialize hold_witness_witness (j) - 0075
apply hold_witness_witness - 0076
exact hcase_right - 0077
cases hprevious - 0078
cases hprevious_witness - 0079
cases hprevious_witness_witness - 0080
cases hprevious_witness_witness_right - 0081
exists x6 - 0082
exists x7 - 0083
split - 0084
exact hprevious_witness_witness_left - 0085
split - 0086
specialize hnew_witness_witness_right (j) - 0087
specialize hnew_witness_witness_right (x7) - 0088
apply hnew_witness_witness_right - 0089
exact hcase_right - 0090
exact hprevious_witness_witness_right_left - 0091
exact hprevious_witness_witness_right_right