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 bb bc l. (~((p) = 1) /\ forall pfa_factor_left_subtract_exists_prime pfa_factor_right_subtract_exists_prime. (p) = pfa_factor_left_subtract_exists_prime * pfa_factor_right_subtract_exists_prime -> pfa_factor_left_subtract_exists_prime = 1 \/ pfa_factor_right_subtract_exists_prime = 1) -> (forall fom_index_pfp_subtract_exists_ab. (exists fom_gap_pfp_subtract_exists_ab_index_bound. fom_gap_pfp_subtract_exists_ab_index_bound + S (fom_index_pfp_subtract_exists_ab) = l) -> exists fom_value_pfp_subtract_exists_ab. ((((exists fom_beta_height_pfp_subtract_exists_ab_entry. fom_beta_height_pfp_subtract_exists_ab_entry + S (fom_value_pfp_subtract_exists_ab) = S ((S (fom_index_pfp_subtract_exists_ab)) * ac)) /\ exists fom_beta_quotient_pfp_subtract_exists_ab_entry. ab = fom_beta_quotient_pfp_subtract_exists_ab_entry * S ((S (fom_index_pfp_subtract_exists_ab)) * ac) + (fom_value_pfp_subtract_exists_ab))) /\ (exists fom_gap_pfp_subtract_exists_ab_value_bound. fom_gap_pfp_subtract_exists_ab_value_bound + S (fom_value_pfp_subtract_exists_ab) = p))) -> (forall fom_index_pfp_subtract_exists_bb. (exists fom_gap_pfp_subtract_exists_bb_index_bound. fom_gap_pfp_subtract_exists_bb_index_bound + S (fom_index_pfp_subtract_exists_bb) = l) -> exists fom_value_pfp_subtract_exists_bb. ((((exists fom_beta_height_pfp_subtract_exists_bb_entry. fom_beta_height_pfp_subtract_exists_bb_entry + S (fom_value_pfp_subtract_exists_bb) = S ((S (fom_index_pfp_subtract_exists_bb)) * bc)) /\ exists fom_beta_quotient_pfp_subtract_exists_bb_entry. bb = fom_beta_quotient_pfp_subtract_exists_bb_entry * S ((S (fom_index_pfp_subtract_exists_bb)) * bc) + (fom_value_pfp_subtract_exists_bb))) /\ (exists fom_gap_pfp_subtract_exists_bb_value_bound. fom_gap_pfp_subtract_exists_bb_value_bound + S (fom_value_pfp_subtract_exists_bb) = p))) -> exists rb rc. (forall pfs_index_subtract_exists_result. (exists pfa_gap_subtract_exists_resultindex. pfa_gap_subtract_exists_resultindex + S (pfs_index_subtract_exists_result) = (l)) -> exists pfs_left_subtract_exists_result pfs_right_subtract_exists_result pfs_result_subtract_exists_result. ((((exists ff_h_pfp_subtract_exists_resultleft. ff_h_pfp_subtract_exists_resultleft + S (pfs_left_subtract_exists_result) = S ((S (pfs_index_subtract_exists_result)) * ac)) /\ exists ff_q_pfp_subtract_exists_resultleft. ab = ff_q_pfp_subtract_exists_resultleft * S ((S (pfs_index_subtract_exists_result)) * ac) + (pfs_left_subtract_exists_result))) /\ (((((exists ff_h_pfp_subtract_exists_resultright. ff_h_pfp_subtract_exists_resultright + S (pfs_right_subtract_exists_result) = S ((S (pfs_index_subtract_exists_result)) * bc)) /\ exists ff_q_pfp_subtract_exists_resultright. bb = ff_q_pfp_subtract_exists_resultright * S ((S (pfs_index_subtract_exists_result)) * bc) + (pfs_right_subtract_exists_result))) /\ (((((exists ff_h_pfp_subtract_exists_resultresult. ff_h_pfp_subtract_exists_resultresult + S (pfs_result_subtract_exists_result) = S ((S (pfs_index_subtract_exists_result)) * rc)) /\ exists ff_q_pfp_subtract_exists_resultresult. rb = ff_q_pfp_subtract_exists_resultresult * S ((S (pfs_index_subtract_exists_result)) * rc) + (pfs_result_subtract_exists_result))) /\ ((((exists pfa_gap_subtract_exists_resultoperationleft. pfa_gap_subtract_exists_resultoperationleft + S (pfs_right_subtract_exists_result) = (p)) /\ (((exists pfa_gap_subtract_exists_resultoperationright. pfa_gap_subtract_exists_resultoperationright + S (pfs_result_subtract_exists_result) = (p)) /\ ((((exists pfa_gap_subtract_exists_resultoperationresultbound. pfa_gap_subtract_exists_resultoperationresultbound + S (pfs_left_subtract_exists_result) = (p)) /\ ((exists pfa_offset_left_subtract_exists_resultoperationresultcongruence pfa_offset_right_subtract_exists_resultoperationresultcongruence. ((pfs_right_subtract_exists_result) + (pfs_result_subtract_exists_result)) + (p) * pfa_offset_left_subtract_exists_resultoperationresultcongruence = (pfs_left_subtract_exists_result) + (p) * pfa_offset_right_subtract_exists_resultoperationresultcongruence))))))))))))))))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 124 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PQ000C prime_field_polynomial_subtract_empty le_succ Stable theorem; checked-use authorized zero_add Stable theorem; checked-use authorized PQ0001 prime_field_subtract_exists 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 (2)
01Fix variables and assumptionsL1–7
02Induction on lL8–10
03Construct an explicit witnessL11–12
04Use earlier factsL13–20
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L13
specialize prime_field_polynomial_subtract_empty (p) - L14
specialize prime_field_polynomial_subtract_empty (ab) - L15
specialize prime_field_polynomial_subtract_empty (ac) - L16
specialize prime_field_polynomial_subtract_empty (bb) - L17
specialize prime_field_polynomial_subtract_empty (bc) - L18
specialize prime_field_polynomial_subtract_empty (0) - L19
specialize prime_field_polynomial_subtract_empty (0) - L20
apply prime_field_polynomial_subtract_empty
05Fix variables and assumptionsL21–22
06Establish holdL23–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
07Fix variables and assumptionsL33–34
08Use earlier factsL35–40
09Separate the logical casesL41–42
10Establish hsource0L43–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply ha.
- L43
have hsource0 : exists a. ((((exists ff_h_pfp_subtract_last_source0. ff_h_pfp_subtract_last_source0 + S (a) = S ((S (l)) * ac)) /\ exists ff_q_pfp_subtract_last_source0. ab = ff_q_pfp_subtract_last_source0 * S ((S (l)) * ac) + (a))) /\ ((exists pfa_gap_subtract_last_bound0. pfa_gap_subtract_last_bound0 + S (a) = (p)))) - L44
specialize ha (l) - L45
apply ha
11Construct an explicit witnessL46–46
Supply the displayed value, then prove that it has the required property.
- L46
exists 0
12Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
apply zero_add
13Separate the logical casesL48–49
14Establish hsource1L50–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hb.
- L50
have hsource1 : exists a. ((((exists ff_h_pfp_subtract_last_source1. ff_h_pfp_subtract_last_source1 + S (a) = S ((S (l)) * bc)) /\ exists ff_q_pfp_subtract_last_source1. bb = ff_q_pfp_subtract_last_source1 * S ((S (l)) * bc) + (a))) /\ ((exists pfa_gap_subtract_last_bound1. pfa_gap_subtract_last_bound1 + S (a) = (p)))) - L51
specialize hb (l) - L52
apply hb
15Construct an explicit witnessL53–53
Supply the displayed value, then prove that it has the required property.
- L53
exists 0
16Use earlier factsL54–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
apply zero_add
17Separate the logical casesL55–56
18Establish hvalueL57–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field subtract exists.
- L57
have hvalue : exists r. (((exists pfa_gap_subtract_last_valueleft. pfa_gap_subtract_last_valueleft + S (x3) = (p)) /\ (((exists pfa_gap_subtract_last_valueright. pfa_gap_subtract_last_valueright + S (r) = (p)) /\ ((((exists pfa_gap_subtract_last_valueresultbound. pfa_gap_subtract_last_valueresultbound + S (x2) = (p)) /\ ((exists pfa_offset_left_subtract_last_valueresultcongruence pfa_offset_right_subtract_last_valueresultcongruence. ((x3) + (r)) + (p) * pfa_offset_left_subtract_last_valueresultcongruence = (x2) + (p) * pfa_offset_right_subtract_last_valueresultcongruence))))))))) - L58
specialize prime_field_subtract_exists (p) - L59
specialize prime_field_subtract_exists (x2) - L60
specialize prime_field_subtract_exists (x3) - L61
apply prime_field_subtract_exists - L62
exact hp - L63
exact hsource0_witness_right - L64
exact hsource1_witness_right
19Separate the logical casesL65–65
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L65
cases hvalue
20Establish hnewL66–71
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
21Separate the logical casesL72–74
22Construct an explicit witnessL75–76
23Fix variables and assumptionsL77–78
24Establish hcaseL79–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
25Separate the logical casesL84–84
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L84
cases hcase
26Construct an explicit witnessL85–87
27Separate the logical casesL88–88
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L88
split
28Calculate and transport equalitiesL89–90
29Use earlier factsL91–91
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L91
exact hsource0_witness_left
30Separate the logical casesL92–92
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L92
split
31Calculate and transport equalitiesL93–94
32Use earlier factsL95–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L95
exact hsource1_witness_left
33Separate the logical casesL96–96
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L96
split
34Calculate and transport equalitiesL97–98
35Use earlier factsL99–100
36Establish hpreviousL101–104
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hold witness witness.
37Separate the logical casesL105–110
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
38Construct an explicit witnessL111–113
39Separate the logical casesL114–114
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L114
split
40Use earlier factsL115–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L115
exact hprevious_witness_witness_witness_left
41Separate the logical casesL116–116
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L116
split
42Use earlier factsL117–117
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L117
exact hprevious_witness_witness_witness_right_left
43Separate the logical casesL118–118
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L118
split
44Use earlier factsL119–124
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 124 lines
- 0001
intro p - 0002
intro ab - 0003
intro ac - 0004
intro bb - 0005
intro bc - 0006
intro l - 0007
intro hp - 0008
induction l - 0009
intro ha - 0010
intro hb - 0011
exists 0 - 0012
exists 0 - 0013
specialize prime_field_polynomial_subtract_empty (p) - 0014
specialize prime_field_polynomial_subtract_empty (ab) - 0015
specialize prime_field_polynomial_subtract_empty (ac) - 0016
specialize prime_field_polynomial_subtract_empty (bb) - 0017
specialize prime_field_polynomial_subtract_empty (bc) - 0018
specialize prime_field_polynomial_subtract_empty (0) - 0019
specialize prime_field_polynomial_subtract_empty (0) - 0020
apply prime_field_polynomial_subtract_empty - 0021
intro ha - 0022
intro hb - 0023
have hold : exists rb rc. (forall pfs_index_subtract_old. (exists pfa_gap_subtract_oldindex. pfa_gap_subtract_oldindex + S (pfs_index_subtract_old) = (l)) -> exists pfs_left_subtract_old pfs_right_subtract_old pfs_result_subtract_old. ((((exists ff_h_pfp_subtract_oldleft. ff_h_pfp_subtract_oldleft + S (pfs_left_subtract_old) = S ((S (pfs_index_subtract_old)) * ac)) /\ exists ff_q_pfp_subtract_oldleft. ab = ff_q_pfp_subtract_oldleft * S ((S (pfs_index_subtract_old)) * ac) + (pfs_left_subtract_old))) /\ (((((exists ff_h_pfp_subtract_oldright. ff_h_pfp_subtract_oldright + S (pfs_right_subtract_old) = S ((S (pfs_index_subtract_old)) * bc)) /\ exists ff_q_pfp_subtract_oldright. bb = ff_q_pfp_subtract_oldright * S ((S (pfs_index_subtract_old)) * bc) + (pfs_right_subtract_old))) /\ (((((exists ff_h_pfp_subtract_oldresult. ff_h_pfp_subtract_oldresult + S (pfs_result_subtract_old) = S ((S (pfs_index_subtract_old)) * rc)) /\ exists ff_q_pfp_subtract_oldresult. rb = ff_q_pfp_subtract_oldresult * S ((S (pfs_index_subtract_old)) * rc) + (pfs_result_subtract_old))) /\ ((((exists pfa_gap_subtract_oldoperationleft. pfa_gap_subtract_oldoperationleft + S (pfs_right_subtract_old) = (p)) /\ (((exists pfa_gap_subtract_oldoperationright. pfa_gap_subtract_oldoperationright + S (pfs_result_subtract_old) = (p)) /\ ((((exists pfa_gap_subtract_oldoperationresultbound. pfa_gap_subtract_oldoperationresultbound + S (pfs_left_subtract_old) = (p)) /\ ((exists pfa_offset_left_subtract_oldoperationresultcongruence pfa_offset_right_subtract_oldoperationresultcongruence. ((pfs_right_subtract_old) + (pfs_result_subtract_old)) + (p) * pfa_offset_left_subtract_oldoperationresultcongruence = (pfs_left_subtract_old) + (p) * pfa_offset_right_subtract_oldoperationresultcongruence)))))))))))))))) - 0024
apply IH - 0025
intro j - 0026
intro hj - 0027
specialize ha (j) - 0028
apply ha - 0029
specialize le_succ (S j) - 0030
specialize le_succ (l) - 0031
apply le_succ - 0032
exact hj - 0033
intro j - 0034
intro hj - 0035
specialize hb (j) - 0036
apply hb - 0037
specialize le_succ (S j) - 0038
specialize le_succ (l) - 0039
apply le_succ - 0040
exact hj - 0041
cases hold - 0042
cases hold_witness - 0043
have hsource0 : exists a. ((((exists ff_h_pfp_subtract_last_source0. ff_h_pfp_subtract_last_source0 + S (a) = S ((S (l)) * ac)) /\ exists ff_q_pfp_subtract_last_source0. ab = ff_q_pfp_subtract_last_source0 * S ((S (l)) * ac) + (a))) /\ ((exists pfa_gap_subtract_last_bound0. pfa_gap_subtract_last_bound0 + S (a) = (p)))) - 0044
specialize ha (l) - 0045
apply ha - 0046
exists 0 - 0047
apply zero_add - 0048
cases hsource0 - 0049
cases hsource0_witness - 0050
have hsource1 : exists a. ((((exists ff_h_pfp_subtract_last_source1. ff_h_pfp_subtract_last_source1 + S (a) = S ((S (l)) * bc)) /\ exists ff_q_pfp_subtract_last_source1. bb = ff_q_pfp_subtract_last_source1 * S ((S (l)) * bc) + (a))) /\ ((exists pfa_gap_subtract_last_bound1. pfa_gap_subtract_last_bound1 + S (a) = (p)))) - 0051
specialize hb (l) - 0052
apply hb - 0053
exists 0 - 0054
apply zero_add - 0055
cases hsource1 - 0056
cases hsource1_witness - 0057
have hvalue : exists r. (((exists pfa_gap_subtract_last_valueleft. pfa_gap_subtract_last_valueleft + S (x3) = (p)) /\ (((exists pfa_gap_subtract_last_valueright. pfa_gap_subtract_last_valueright + S (r) = (p)) /\ ((((exists pfa_gap_subtract_last_valueresultbound. pfa_gap_subtract_last_valueresultbound + S (x2) = (p)) /\ ((exists pfa_offset_left_subtract_last_valueresultcongruence pfa_offset_right_subtract_last_valueresultcongruence. ((x3) + (r)) + (p) * pfa_offset_left_subtract_last_valueresultcongruence = (x2) + (p) * pfa_offset_right_subtract_last_valueresultcongruence))))))))) - 0058
specialize prime_field_subtract_exists (p) - 0059
specialize prime_field_subtract_exists (x2) - 0060
specialize prime_field_subtract_exists (x3) - 0061
apply prime_field_subtract_exists - 0062
exact hp - 0063
exact hsource0_witness_right - 0064
exact hsource1_witness_right - 0065
cases hvalue - 0066
have hnew : exists db dc. (((((exists ff_h_pfp_subtract_append. ff_h_pfp_subtract_append + S (x4) = S ((S (l)) * dc)) /\ exists ff_q_pfp_subtract_append. db = ff_q_pfp_subtract_append * S ((S (l)) * dc) + (x4))) /\ ((forall mdr_i_pfp_subtract_preserve mdr_a_pfp_subtract_preserve. (exists mdr_gap_pfp_subtract_preserveb. mdr_gap_pfp_subtract_preserveb + S (mdr_i_pfp_subtract_preserve) = (l)) -> (((exists ff_h_mdr_pfp_subtract_preserveo. ff_h_mdr_pfp_subtract_preserveo + S (mdr_a_pfp_subtract_preserve) = S ((S (mdr_i_pfp_subtract_preserve)) * x1)) /\ exists ff_q_mdr_pfp_subtract_preserveo. x = ff_q_mdr_pfp_subtract_preserveo * S ((S (mdr_i_pfp_subtract_preserve)) * x1) + (mdr_a_pfp_subtract_preserve))) -> (((exists ff_h_mdr_pfp_subtract_preserven. ff_h_mdr_pfp_subtract_preserven + S (mdr_a_pfp_subtract_preserve) = S ((S (mdr_i_pfp_subtract_preserve)) * dc)) /\ exists ff_q_mdr_pfp_subtract_preserven. db = ff_q_mdr_pfp_subtract_preserven * S ((S (mdr_i_pfp_subtract_preserve)) * dc) + (mdr_a_pfp_subtract_preserve))))))) - 0067
specialize beta_prefix_extend (l) - 0068
specialize beta_prefix_extend (x) - 0069
specialize beta_prefix_extend (x1) - 0070
specialize beta_prefix_extend (x4) - 0071
apply beta_prefix_extend - 0072
cases hnew - 0073
cases hnew_witness - 0074
cases hnew_witness_witness - 0075
exists x5 - 0076
exists x6 - 0077
intro j - 0078
intro hj - 0079
have hcase : j=l \/ (exists pfa_gap_subtract_index_case. pfa_gap_subtract_index_case + S (j) = (l)) - 0080
specialize finite_lt_succ_eq_or_lt (l) - 0081
specialize finite_lt_succ_eq_or_lt (j) - 0082
apply finite_lt_succ_eq_or_lt - 0083
exact hj - 0084
cases hcase - 0085
exists x2 - 0086
exists x3 - 0087
exists x4 - 0088
split - 0089
rewrite hcase_left - 0090
rewrite hcase_left - 0091
exact hsource0_witness_left - 0092
split - 0093
rewrite hcase_left - 0094
rewrite hcase_left - 0095
exact hsource1_witness_left - 0096
split - 0097
rewrite hcase_left - 0098
rewrite hcase_left - 0099
exact hnew_witness_witness_left - 0100
exact hvalue_witness - 0101
have hprevious : exists v0 v1 v2. (((((exists ff_h_pfp_subtract_previous0. ff_h_pfp_subtract_previous0 + S (v0) = S ((S (j)) * ac)) /\ exists ff_q_pfp_subtract_previous0. ab = ff_q_pfp_subtract_previous0 * S ((S (j)) * ac) + (v0))) /\ (((((exists ff_h_pfp_subtract_previous1. ff_h_pfp_subtract_previous1 + S (v1) = S ((S (j)) * bc)) /\ exists ff_q_pfp_subtract_previous1. bb = ff_q_pfp_subtract_previous1 * S ((S (j)) * bc) + (v1))) /\ (((((exists ff_h_pfp_subtract_previous2. ff_h_pfp_subtract_previous2 + S (v2) = S ((S (j)) * x1)) /\ exists ff_q_pfp_subtract_previous2. x = ff_q_pfp_subtract_previous2 * S ((S (j)) * x1) + (v2))) /\ ((((exists pfa_gap_subtract_previousoperationleft. pfa_gap_subtract_previousoperationleft + S (v1) = (p)) /\ (((exists pfa_gap_subtract_previousoperationright. pfa_gap_subtract_previousoperationright + S (v2) = (p)) /\ ((((exists pfa_gap_subtract_previousoperationresultbound. pfa_gap_subtract_previousoperationresultbound + S (v0) = (p)) /\ ((exists pfa_offset_left_subtract_previousoperationresultcongruence pfa_offset_right_subtract_previousoperationresultcongruence. ((v1) + (v2)) + (p) * pfa_offset_left_subtract_previousoperationresultcongruence = (v0) + (p) * pfa_offset_right_subtract_previousoperationresultcongruence)))))))))))))))) - 0102
specialize hold_witness_witness (j) - 0103
apply hold_witness_witness - 0104
exact hcase_right - 0105
cases hprevious - 0106
cases hprevious_witness - 0107
cases hprevious_witness_witness - 0108
cases hprevious_witness_witness_witness - 0109
cases hprevious_witness_witness_witness_right - 0110
cases hprevious_witness_witness_witness_right_right - 0111
exists x7 - 0112
exists x8 - 0113
exists x9 - 0114
split - 0115
exact hprevious_witness_witness_witness_left - 0116
split - 0117
exact hprevious_witness_witness_witness_right_left - 0118
split - 0119
specialize hnew_witness_witness_right (j) - 0120
specialize hnew_witness_witness_right (x9) - 0121
apply hnew_witness_witness_right - 0122
exact hcase_right - 0123
exact hprevious_witness_witness_witness_right_right_left - 0124
exact hprevious_witness_witness_witness_right_right_right