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 b c L. (forall fom_index_pfp_unique_input. (exists fom_gap_pfp_unique_input_index_bound. fom_gap_pfp_unique_input_index_bound + S (fom_index_pfp_unique_input) = L) -> exists fom_value_pfp_unique_input. ((((exists fom_beta_height_pfp_unique_input_entry. fom_beta_height_pfp_unique_input_entry + S (fom_value_pfp_unique_input) = S ((S (fom_index_pfp_unique_input)) * c)) /\ exists fom_beta_quotient_pfp_unique_input_entry. b = fom_beta_quotient_pfp_unique_input_entry * S ((S (fom_index_pfp_unique_input)) * c) + (fom_value_pfp_unique_input))) /\ (exists fom_gap_pfp_unique_input_value_bound. fom_gap_pfp_unique_input_value_bound + S (fom_value_pfp_unique_input) = p))) -> exists t d e M. (((((L)=(t)+(M)) /\ (((forall fom_index_pfp_unique_constructedinput. (exists fom_gap_pfp_unique_constructedinput_index_bound. fom_gap_pfp_unique_constructedinput_index_bound + S (fom_index_pfp_unique_constructedinput) = L) -> exists fom_value_pfp_unique_constructedinput. ((((exists fom_beta_height_pfp_unique_constructedinput_entry. fom_beta_height_pfp_unique_constructedinput_entry + S (fom_value_pfp_unique_constructedinput) = S ((S (fom_index_pfp_unique_constructedinput)) * c)) /\ exists fom_beta_quotient_pfp_unique_constructedinput_entry. b = fom_beta_quotient_pfp_unique_constructedinput_entry * S ((S (fom_index_pfp_unique_constructedinput)) * c) + (fom_value_pfp_unique_constructedinput))) /\ (exists fom_gap_pfp_unique_constructedinput_value_bound. fom_gap_pfp_unique_constructedinput_value_bound + S (fom_value_pfp_unique_constructedinput) = p))) /\ (((forall pfp_repeat_index_unique_constructedremoved. (exists pfa_gap_unique_constructedremovedindex. pfa_gap_unique_constructedremovedindex + S (pfp_repeat_index_unique_constructedremoved) = (t)) -> (((exists ff_h_pfp_unique_constructedremovedentry. ff_h_pfp_unique_constructedremovedentry + S (0) = S ((S (pfp_repeat_index_unique_constructedremoved)) * c)) /\ exists ff_q_pfp_unique_constructedremovedentry. b = ff_q_pfp_unique_constructedremovedentry * S ((S (pfp_repeat_index_unique_constructedremoved)) * c) + (0)))) /\ (((forall pftrim_index_unique_constructedsuffix pftrim_value_unique_constructedsuffix. (exists pfa_gap_unique_constructedsuffixbound. pfa_gap_unique_constructedsuffixbound + S (pftrim_index_unique_constructedsuffix) = (M)) -> (((exists ff_h_pfp_unique_constructedsuffixsource. ff_h_pfp_unique_constructedsuffixsource + S (pftrim_value_unique_constructedsuffix) = S ((S ((t)+pftrim_index_unique_constructedsuffix)) * c)) /\ exists ff_q_pfp_unique_constructedsuffixsource. b = ff_q_pfp_unique_constructedsuffixsource * S ((S ((t)+pftrim_index_unique_constructedsuffix)) * c) + (pftrim_value_unique_constructedsuffix))) -> (((exists ff_h_pfp_unique_constructedsuffixoutput. ff_h_pfp_unique_constructedsuffixoutput + S (pftrim_value_unique_constructedsuffix) = S ((S (pftrim_index_unique_constructedsuffix)) * e)) /\ exists ff_q_pfp_unique_constructedsuffixoutput. d = ff_q_pfp_unique_constructedsuffixoutput * S ((S (pftrim_index_unique_constructedsuffix)) * e) + (pftrim_value_unique_constructedsuffix)))) /\ (((M)=0 \/ (exists pftrim_leading_unique_constructednormal. ((((exists ff_h_pfp_unique_constructednormalentry. ff_h_pfp_unique_constructednormalentry + S (pftrim_leading_unique_constructednormal) = S ((S (0)) * e)) /\ exists ff_q_pfp_unique_constructednormalentry. d = ff_q_pfp_unique_constructednormalentry * S ((S (0)) * e) + (pftrim_leading_unique_constructednormal))) /\ ((~(pftrim_leading_unique_constructednormal=0))))))))))))))) /\ ((forall u f g N. ((((L)=(u)+(N)) /\ (((forall fom_index_pfp_unique_comparisoninput. (exists fom_gap_pfp_unique_comparisoninput_index_bound. fom_gap_pfp_unique_comparisoninput_index_bound + S (fom_index_pfp_unique_comparisoninput) = L) -> exists fom_value_pfp_unique_comparisoninput. ((((exists fom_beta_height_pfp_unique_comparisoninput_entry. fom_beta_height_pfp_unique_comparisoninput_entry + S (fom_value_pfp_unique_comparisoninput) = S ((S (fom_index_pfp_unique_comparisoninput)) * c)) /\ exists fom_beta_quotient_pfp_unique_comparisoninput_entry. b = fom_beta_quotient_pfp_unique_comparisoninput_entry * S ((S (fom_index_pfp_unique_comparisoninput)) * c) + (fom_value_pfp_unique_comparisoninput))) /\ (exists fom_gap_pfp_unique_comparisoninput_value_bound. fom_gap_pfp_unique_comparisoninput_value_bound + S (fom_value_pfp_unique_comparisoninput) = p))) /\ (((forall pfp_repeat_index_unique_comparisonremoved. (exists pfa_gap_unique_comparisonremovedindex. pfa_gap_unique_comparisonremovedindex + S (pfp_repeat_index_unique_comparisonremoved) = (u)) -> (((exists ff_h_pfp_unique_comparisonremovedentry. ff_h_pfp_unique_comparisonremovedentry + S (0) = S ((S (pfp_repeat_index_unique_comparisonremoved)) * c)) /\ exists ff_q_pfp_unique_comparisonremovedentry. b = ff_q_pfp_unique_comparisonremovedentry * S ((S (pfp_repeat_index_unique_comparisonremoved)) * c) + (0)))) /\ (((forall pftrim_index_unique_comparisonsuffix pftrim_value_unique_comparisonsuffix. (exists pfa_gap_unique_comparisonsuffixbound. pfa_gap_unique_comparisonsuffixbound + S (pftrim_index_unique_comparisonsuffix) = (N)) -> (((exists ff_h_pfp_unique_comparisonsuffixsource. ff_h_pfp_unique_comparisonsuffixsource + S (pftrim_value_unique_comparisonsuffix) = S ((S ((u)+pftrim_index_unique_comparisonsuffix)) * c)) /\ exists ff_q_pfp_unique_comparisonsuffixsource. b = ff_q_pfp_unique_comparisonsuffixsource * S ((S ((u)+pftrim_index_unique_comparisonsuffix)) * c) + (pftrim_value_unique_comparisonsuffix))) -> (((exists ff_h_pfp_unique_comparisonsuffixoutput. ff_h_pfp_unique_comparisonsuffixoutput + S (pftrim_value_unique_comparisonsuffix) = S ((S (pftrim_index_unique_comparisonsuffix)) * g)) /\ exists ff_q_pfp_unique_comparisonsuffixoutput. f = ff_q_pfp_unique_comparisonsuffixoutput * S ((S (pftrim_index_unique_comparisonsuffix)) * g) + (pftrim_value_unique_comparisonsuffix)))) /\ (((N)=0 \/ (exists pftrim_leading_unique_comparisonnormal. ((((exists ff_h_pfp_unique_comparisonnormalentry. ff_h_pfp_unique_comparisonnormalentry + S (pftrim_leading_unique_comparisonnormal) = S ((S (0)) * g)) /\ exists ff_q_pfp_unique_comparisonnormalentry. f = ff_q_pfp_unique_comparisonnormalentry * S ((S (0)) * g) + (pftrim_leading_unique_comparisonnormal))) /\ ((~(pftrim_leading_unique_comparisonnormal=0))))))))))))))) -> (((t=u) /\ (((M=N) /\ ((forall mdr_i_pfp_exists_unique_values mdr_a_pfp_exists_unique_values. (exists mdr_gap_pfp_exists_unique_valuesb. mdr_gap_pfp_exists_unique_valuesb + S (mdr_i_pfp_exists_unique_values) = (M)) -> (((exists ff_h_mdr_pfp_exists_unique_valueso. ff_h_mdr_pfp_exists_unique_valueso + S (mdr_a_pfp_exists_unique_values) = S ((S (mdr_i_pfp_exists_unique_values)) * e)) /\ exists ff_q_mdr_pfp_exists_unique_valueso. d = ff_q_mdr_pfp_exists_unique_valueso * S ((S (mdr_i_pfp_exists_unique_values)) * e) + (mdr_a_pfp_exists_unique_values))) -> (((exists ff_h_mdr_pfp_exists_unique_valuesn. ff_h_mdr_pfp_exists_unique_valuesn + S (mdr_a_pfp_exists_unique_values) = S ((S (mdr_i_pfp_exists_unique_values)) * g)) /\ exists ff_q_mdr_pfp_exists_unique_valuesn. f = ff_q_mdr_pfp_exists_unique_valuesn * S ((S (mdr_i_pfp_exists_unique_values)) * g) + (mdr_a_pfp_exists_unique_values))))))))))))Constructive proof overview
Generated structural guide
Construct an actual trim and prove unique removed count, retained length and decoded coefficients against every other actual trim.
The unchanged tactic script uses 4 declared prerequisites and contains 74 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
PQ0021 prime_field_polynomial_trim_exists PQ002A prime_field_polynomial_trim_removed_count_unique PQ002B prime_field_polynomial_trim_retained_length_unique PQ002C prime_field_polynomial_trim_output_equalDirect 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 (4)
01Fix variables and assumptionsL1–5
02Establish htL6–12
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial trim exists.
- L6
have ht : ∃ t. ∃ d. ∃ e. ∃ M. FpPolynomialTrim(p,b,c,L,t,d,e,M)Definitions: FpPolynomialTrim - L7
specialize prime_field_polynomial_trim_exists (p) - L8
specialize prime_field_polynomial_trim_exists (b) - L9
specialize prime_field_polynomial_trim_exists (c) - L10
specialize prime_field_polynomial_trim_exists (L) - L11
apply prime_field_polynomial_trim_exists - L12
exact hc
03Separate the logical casesL13–16
04Construct an explicit witnessL17–20
05Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
split
06Use earlier factsL22–22
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L22
exact ht_witness_witness_witness_witness
07Fix variables and assumptionsL23–27
08Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
split
09Use earlier factsL29–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L29
specialize prime_field_polynomial_trim_removed_count_unique (p) - L30
specialize prime_field_polynomial_trim_removed_count_unique (b) - L31
specialize prime_field_polynomial_trim_removed_count_unique (c) - L32
specialize prime_field_polynomial_trim_removed_count_unique (L) - L33
specialize prime_field_polynomial_trim_removed_count_unique (x) - L34
specialize prime_field_polynomial_trim_removed_count_unique (x1) - L35
specialize prime_field_polynomial_trim_removed_count_unique (x2) - L36
specialize prime_field_polynomial_trim_removed_count_unique (x3) - L37
specialize prime_field_polynomial_trim_removed_count_unique (u) - L38
specialize prime_field_polynomial_trim_removed_count_unique (f)
10Use earlier factsL39–43
Instantiate or apply named facts and discharge the corresponding proof obligations.
11Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
split
12Use earlier factsL45–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
specialize prime_field_polynomial_trim_retained_length_unique (p) - L46
specialize prime_field_polynomial_trim_retained_length_unique (b) - L47
specialize prime_field_polynomial_trim_retained_length_unique (c) - L48
specialize prime_field_polynomial_trim_retained_length_unique (L) - L49
specialize prime_field_polynomial_trim_retained_length_unique (x) - L50
specialize prime_field_polynomial_trim_retained_length_unique (x1) - L51
specialize prime_field_polynomial_trim_retained_length_unique (x2) - L52
specialize prime_field_polynomial_trim_retained_length_unique (x3) - L53
specialize prime_field_polynomial_trim_retained_length_unique (u) - L54
specialize prime_field_polynomial_trim_retained_length_unique (f)
13Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize prime_field_polynomial_trim_retained_length_unique (g) - L56
specialize prime_field_polynomial_trim_retained_length_unique (N) - L57
apply prime_field_polynomial_trim_retained_length_unique - L58
exact ht_witness_witness_witness_witness - L59
exact hk - L60
specialize prime_field_polynomial_trim_output_equal (p) - L61
specialize prime_field_polynomial_trim_output_equal (b) - L62
specialize prime_field_polynomial_trim_output_equal (c) - L63
specialize prime_field_polynomial_trim_output_equal (L) - L64
specialize prime_field_polynomial_trim_output_equal (x)
14Use earlier factsL65–74
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
specialize prime_field_polynomial_trim_output_equal (x1) - L66
specialize prime_field_polynomial_trim_output_equal (x2) - L67
specialize prime_field_polynomial_trim_output_equal (x3) - L68
specialize prime_field_polynomial_trim_output_equal (u) - L69
specialize prime_field_polynomial_trim_output_equal (f) - L70
specialize prime_field_polynomial_trim_output_equal (g) - L71
specialize prime_field_polynomial_trim_output_equal (N) - L72
apply prime_field_polynomial_trim_output_equal - L73
exact ht_witness_witness_witness_witness - L74
exact hk
Original exact command ledger · 74 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
intro L - 0005
intro hc - 0006
have ht : exists t d e M. ((((L)=(t)+(M)) /\ (((forall fom_index_pfp_exists_unique_choseninput. (exists fom_gap_pfp_exists_unique_choseninput_index_bound. fom_gap_pfp_exists_unique_choseninput_index_bound + S (fom_index_pfp_exists_unique_choseninput) = L) -> exists fom_value_pfp_exists_unique_choseninput. ((((exists fom_beta_height_pfp_exists_unique_choseninput_entry. fom_beta_height_pfp_exists_unique_choseninput_entry + S (fom_value_pfp_exists_unique_choseninput) = S ((S (fom_index_pfp_exists_unique_choseninput)) * c)) /\ exists fom_beta_quotient_pfp_exists_unique_choseninput_entry. b = fom_beta_quotient_pfp_exists_unique_choseninput_entry * S ((S (fom_index_pfp_exists_unique_choseninput)) * c) + (fom_value_pfp_exists_unique_choseninput))) /\ (exists fom_gap_pfp_exists_unique_choseninput_value_bound. fom_gap_pfp_exists_unique_choseninput_value_bound + S (fom_value_pfp_exists_unique_choseninput) = p))) /\ (((forall pfp_repeat_index_exists_unique_chosenremoved. (exists pfa_gap_exists_unique_chosenremovedindex. pfa_gap_exists_unique_chosenremovedindex + S (pfp_repeat_index_exists_unique_chosenremoved) = (t)) -> (((exists ff_h_pfp_exists_unique_chosenremovedentry. ff_h_pfp_exists_unique_chosenremovedentry + S (0) = S ((S (pfp_repeat_index_exists_unique_chosenremoved)) * c)) /\ exists ff_q_pfp_exists_unique_chosenremovedentry. b = ff_q_pfp_exists_unique_chosenremovedentry * S ((S (pfp_repeat_index_exists_unique_chosenremoved)) * c) + (0)))) /\ (((forall pftrim_index_exists_unique_chosensuffix pftrim_value_exists_unique_chosensuffix. (exists pfa_gap_exists_unique_chosensuffixbound. pfa_gap_exists_unique_chosensuffixbound + S (pftrim_index_exists_unique_chosensuffix) = (M)) -> (((exists ff_h_pfp_exists_unique_chosensuffixsource. ff_h_pfp_exists_unique_chosensuffixsource + S (pftrim_value_exists_unique_chosensuffix) = S ((S ((t)+pftrim_index_exists_unique_chosensuffix)) * c)) /\ exists ff_q_pfp_exists_unique_chosensuffixsource. b = ff_q_pfp_exists_unique_chosensuffixsource * S ((S ((t)+pftrim_index_exists_unique_chosensuffix)) * c) + (pftrim_value_exists_unique_chosensuffix))) -> (((exists ff_h_pfp_exists_unique_chosensuffixoutput. ff_h_pfp_exists_unique_chosensuffixoutput + S (pftrim_value_exists_unique_chosensuffix) = S ((S (pftrim_index_exists_unique_chosensuffix)) * e)) /\ exists ff_q_pfp_exists_unique_chosensuffixoutput. d = ff_q_pfp_exists_unique_chosensuffixoutput * S ((S (pftrim_index_exists_unique_chosensuffix)) * e) + (pftrim_value_exists_unique_chosensuffix)))) /\ (((M)=0 \/ (exists pftrim_leading_exists_unique_chosennormal. ((((exists ff_h_pfp_exists_unique_chosennormalentry. ff_h_pfp_exists_unique_chosennormalentry + S (pftrim_leading_exists_unique_chosennormal) = S ((S (0)) * e)) /\ exists ff_q_pfp_exists_unique_chosennormalentry. d = ff_q_pfp_exists_unique_chosennormalentry * S ((S (0)) * e) + (pftrim_leading_exists_unique_chosennormal))) /\ ((~(pftrim_leading_exists_unique_chosennormal=0))))))))))))))) - 0007
specialize prime_field_polynomial_trim_exists (p) - 0008
specialize prime_field_polynomial_trim_exists (b) - 0009
specialize prime_field_polynomial_trim_exists (c) - 0010
specialize prime_field_polynomial_trim_exists (L) - 0011
apply prime_field_polynomial_trim_exists - 0012
exact hc - 0013
cases ht - 0014
cases ht_witness - 0015
cases ht_witness_witness - 0016
cases ht_witness_witness_witness - 0017
exists x - 0018
exists x1 - 0019
exists x2 - 0020
exists x3 - 0021
split - 0022
exact ht_witness_witness_witness_witness - 0023
intro u - 0024
intro f - 0025
intro g - 0026
intro N - 0027
intro hk - 0028
split - 0029
specialize prime_field_polynomial_trim_removed_count_unique (p) - 0030
specialize prime_field_polynomial_trim_removed_count_unique (b) - 0031
specialize prime_field_polynomial_trim_removed_count_unique (c) - 0032
specialize prime_field_polynomial_trim_removed_count_unique (L) - 0033
specialize prime_field_polynomial_trim_removed_count_unique (x) - 0034
specialize prime_field_polynomial_trim_removed_count_unique (x1) - 0035
specialize prime_field_polynomial_trim_removed_count_unique (x2) - 0036
specialize prime_field_polynomial_trim_removed_count_unique (x3) - 0037
specialize prime_field_polynomial_trim_removed_count_unique (u) - 0038
specialize prime_field_polynomial_trim_removed_count_unique (f) - 0039
specialize prime_field_polynomial_trim_removed_count_unique (g) - 0040
specialize prime_field_polynomial_trim_removed_count_unique (N) - 0041
apply prime_field_polynomial_trim_removed_count_unique - 0042
exact ht_witness_witness_witness_witness - 0043
exact hk - 0044
split - 0045
specialize prime_field_polynomial_trim_retained_length_unique (p) - 0046
specialize prime_field_polynomial_trim_retained_length_unique (b) - 0047
specialize prime_field_polynomial_trim_retained_length_unique (c) - 0048
specialize prime_field_polynomial_trim_retained_length_unique (L) - 0049
specialize prime_field_polynomial_trim_retained_length_unique (x) - 0050
specialize prime_field_polynomial_trim_retained_length_unique (x1) - 0051
specialize prime_field_polynomial_trim_retained_length_unique (x2) - 0052
specialize prime_field_polynomial_trim_retained_length_unique (x3) - 0053
specialize prime_field_polynomial_trim_retained_length_unique (u) - 0054
specialize prime_field_polynomial_trim_retained_length_unique (f) - 0055
specialize prime_field_polynomial_trim_retained_length_unique (g) - 0056
specialize prime_field_polynomial_trim_retained_length_unique (N) - 0057
apply prime_field_polynomial_trim_retained_length_unique - 0058
exact ht_witness_witness_witness_witness - 0059
exact hk - 0060
specialize prime_field_polynomial_trim_output_equal (p) - 0061
specialize prime_field_polynomial_trim_output_equal (b) - 0062
specialize prime_field_polynomial_trim_output_equal (c) - 0063
specialize prime_field_polynomial_trim_output_equal (L) - 0064
specialize prime_field_polynomial_trim_output_equal (x) - 0065
specialize prime_field_polynomial_trim_output_equal (x1) - 0066
specialize prime_field_polynomial_trim_output_equal (x2) - 0067
specialize prime_field_polynomial_trim_output_equal (x3) - 0068
specialize prime_field_polynomial_trim_output_equal (u) - 0069
specialize prime_field_polynomial_trim_output_equal (f) - 0070
specialize prime_field_polynomial_trim_output_equal (g) - 0071
specialize prime_field_polynomial_trim_output_equal (N) - 0072
apply prime_field_polynomial_trim_output_equal - 0073
exact ht_witness_witness_witness_witness - 0074
exact hk