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 a b k ab ac bb bc ub uc vb vc l. (((exists pfa_gap_scale_assoc_scalarsleft. pfa_gap_scale_assoc_scalarsleft + S (a) = (p)) /\ (((exists pfa_gap_scale_assoc_scalarsright. pfa_gap_scale_assoc_scalarsright + S (b) = (p)) /\ ((((exists pfa_gap_scale_assoc_scalarsresultbound. pfa_gap_scale_assoc_scalarsresultbound + S (k) = (p)) /\ ((exists pfa_offset_left_scale_assoc_scalarsresultcongruence pfa_offset_right_scale_assoc_scalarsresultcongruence. ((a) * (b)) + (p) * pfa_offset_left_scale_assoc_scalarsresultcongruence = (k) + (p) * pfa_offset_right_scale_assoc_scalarsresultcongruence))))))))) -> (((exists pfa_gap_scale_assoc_firstscalar. pfa_gap_scale_assoc_firstscalar + S (b) = (p)) /\ ((forall pfp_index_scale_assoc_first. (exists pfa_gap_scale_assoc_firstindex. pfa_gap_scale_assoc_firstindex + S (pfp_index_scale_assoc_first) = (l)) -> exists pfp_source_scale_assoc_first pfp_value_scale_assoc_first. ((((exists ff_h_pfp_scale_assoc_firstsource. ff_h_pfp_scale_assoc_firstsource + S (pfp_source_scale_assoc_first) = S ((S (pfp_index_scale_assoc_first)) * ac)) /\ exists ff_q_pfp_scale_assoc_firstsource. ab = ff_q_pfp_scale_assoc_firstsource * S ((S (pfp_index_scale_assoc_first)) * ac) + (pfp_source_scale_assoc_first))) /\ (((((exists ff_h_pfp_scale_assoc_firsttarget. ff_h_pfp_scale_assoc_firsttarget + S (pfp_value_scale_assoc_first) = S ((S (pfp_index_scale_assoc_first)) * bc)) /\ exists ff_q_pfp_scale_assoc_firsttarget. bb = ff_q_pfp_scale_assoc_firsttarget * S ((S (pfp_index_scale_assoc_first)) * bc) + (pfp_value_scale_assoc_first))) /\ ((((exists pfa_gap_scale_assoc_firstoperationleft. pfa_gap_scale_assoc_firstoperationleft + S (b) = (p)) /\ (((exists pfa_gap_scale_assoc_firstoperationright. pfa_gap_scale_assoc_firstoperationright + S (pfp_source_scale_assoc_first) = (p)) /\ ((((exists pfa_gap_scale_assoc_firstoperationresultbound. pfa_gap_scale_assoc_firstoperationresultbound + S (pfp_value_scale_assoc_first) = (p)) /\ ((exists pfa_offset_left_scale_assoc_firstoperationresultcongruence pfa_offset_right_scale_assoc_firstoperationresultcongruence. ((b) * (pfp_source_scale_assoc_first)) + (p) * pfa_offset_left_scale_assoc_firstoperationresultcongruence = (pfp_value_scale_assoc_first) + (p) * pfa_offset_right_scale_assoc_firstoperationresultcongruence))))))))))))))))) -> (((exists pfa_gap_scale_assoc_secondscalar. pfa_gap_scale_assoc_secondscalar + S (a) = (p)) /\ ((forall pfp_index_scale_assoc_second. (exists pfa_gap_scale_assoc_secondindex. pfa_gap_scale_assoc_secondindex + S (pfp_index_scale_assoc_second) = (l)) -> exists pfp_source_scale_assoc_second pfp_value_scale_assoc_second. ((((exists ff_h_pfp_scale_assoc_secondsource. ff_h_pfp_scale_assoc_secondsource + S (pfp_source_scale_assoc_second) = S ((S (pfp_index_scale_assoc_second)) * bc)) /\ exists ff_q_pfp_scale_assoc_secondsource. bb = ff_q_pfp_scale_assoc_secondsource * S ((S (pfp_index_scale_assoc_second)) * bc) + (pfp_source_scale_assoc_second))) /\ (((((exists ff_h_pfp_scale_assoc_secondtarget. ff_h_pfp_scale_assoc_secondtarget + S (pfp_value_scale_assoc_second) = S ((S (pfp_index_scale_assoc_second)) * uc)) /\ exists ff_q_pfp_scale_assoc_secondtarget. ub = ff_q_pfp_scale_assoc_secondtarget * S ((S (pfp_index_scale_assoc_second)) * uc) + (pfp_value_scale_assoc_second))) /\ ((((exists pfa_gap_scale_assoc_secondoperationleft. pfa_gap_scale_assoc_secondoperationleft + S (a) = (p)) /\ (((exists pfa_gap_scale_assoc_secondoperationright. pfa_gap_scale_assoc_secondoperationright + S (pfp_source_scale_assoc_second) = (p)) /\ ((((exists pfa_gap_scale_assoc_secondoperationresultbound. pfa_gap_scale_assoc_secondoperationresultbound + S (pfp_value_scale_assoc_second) = (p)) /\ ((exists pfa_offset_left_scale_assoc_secondoperationresultcongruence pfa_offset_right_scale_assoc_secondoperationresultcongruence. ((a) * (pfp_source_scale_assoc_second)) + (p) * pfa_offset_left_scale_assoc_secondoperationresultcongruence = (pfp_value_scale_assoc_second) + (p) * pfa_offset_right_scale_assoc_secondoperationresultcongruence))))))))))))))))) -> (((exists pfa_gap_scale_assoc_productscalar. pfa_gap_scale_assoc_productscalar + S (k) = (p)) /\ ((forall pfp_index_scale_assoc_product. (exists pfa_gap_scale_assoc_productindex. pfa_gap_scale_assoc_productindex + S (pfp_index_scale_assoc_product) = (l)) -> exists pfp_source_scale_assoc_product pfp_value_scale_assoc_product. ((((exists ff_h_pfp_scale_assoc_productsource. ff_h_pfp_scale_assoc_productsource + S (pfp_source_scale_assoc_product) = S ((S (pfp_index_scale_assoc_product)) * ac)) /\ exists ff_q_pfp_scale_assoc_productsource. ab = ff_q_pfp_scale_assoc_productsource * S ((S (pfp_index_scale_assoc_product)) * ac) + (pfp_source_scale_assoc_product))) /\ (((((exists ff_h_pfp_scale_assoc_producttarget. ff_h_pfp_scale_assoc_producttarget + S (pfp_value_scale_assoc_product) = S ((S (pfp_index_scale_assoc_product)) * vc)) /\ exists ff_q_pfp_scale_assoc_producttarget. vb = ff_q_pfp_scale_assoc_producttarget * S ((S (pfp_index_scale_assoc_product)) * vc) + (pfp_value_scale_assoc_product))) /\ ((((exists pfa_gap_scale_assoc_productoperationleft. pfa_gap_scale_assoc_productoperationleft + S (k) = (p)) /\ (((exists pfa_gap_scale_assoc_productoperationright. pfa_gap_scale_assoc_productoperationright + S (pfp_source_scale_assoc_product) = (p)) /\ ((((exists pfa_gap_scale_assoc_productoperationresultbound. pfa_gap_scale_assoc_productoperationresultbound + S (pfp_value_scale_assoc_product) = (p)) /\ ((exists pfa_offset_left_scale_assoc_productoperationresultcongruence pfa_offset_right_scale_assoc_productoperationresultcongruence. ((k) * (pfp_source_scale_assoc_product)) + (p) * pfa_offset_left_scale_assoc_productoperationresultcongruence = (pfp_value_scale_assoc_product) + (p) * pfa_offset_right_scale_assoc_productoperationresultcongruence))))))))))))))))) -> (forall mdr_i_pfp_scale_assoc_result mdr_a_pfp_scale_assoc_result. (exists mdr_gap_pfp_scale_assoc_resultb. mdr_gap_pfp_scale_assoc_resultb + S (mdr_i_pfp_scale_assoc_result) = (l)) -> (((exists ff_h_mdr_pfp_scale_assoc_resulto. ff_h_mdr_pfp_scale_assoc_resulto + S (mdr_a_pfp_scale_assoc_result) = S ((S (mdr_i_pfp_scale_assoc_result)) * uc)) /\ exists ff_q_mdr_pfp_scale_assoc_resulto. ub = ff_q_mdr_pfp_scale_assoc_resulto * S ((S (mdr_i_pfp_scale_assoc_result)) * uc) + (mdr_a_pfp_scale_assoc_result))) -> (((exists ff_h_mdr_pfp_scale_assoc_resultn. ff_h_mdr_pfp_scale_assoc_resultn + S (mdr_a_pfp_scale_assoc_result) = S ((S (mdr_i_pfp_scale_assoc_result)) * vc)) /\ exists ff_q_mdr_pfp_scale_assoc_resultn. vb = ff_q_mdr_pfp_scale_assoc_resultn * S ((S (mdr_i_pfp_scale_assoc_result)) * vc) + (mdr_a_pfp_scale_assoc_result))))Constructive proof overview
Generated structural guide
Two successive canonical scalar actions agree coefficientwise with the actual canonical product scalar.
The unchanged tactic script uses 3 declared prerequisites and contains 99 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_at_exists Stable theorem; checked-use authorized prime_field_multiply_associative Alpha theorem; checked-use authorized PP0016 prime_field_polynomial_scale_entryDirect 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–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro hr
04Establish entry_aL22–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L22
have entry_a : exists z. (((exists ff_h_pfp_scale_assoc_choicea. ff_h_pfp_scale_assoc_choicea + S (z) = S ((S (i)) * ac)) /\ exists ff_q_pfp_scale_assoc_choicea. ab = ff_q_pfp_scale_assoc_choicea * S ((S (i)) * ac) + (z))) - L23
specialize beta_at_exists (ab) - L24
specialize beta_at_exists (ac) - L25
specialize beta_at_exists (i) - L26
apply beta_at_exists
05Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
cases entry_a
06Establish entry_bL28–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L28
have entry_b : exists z. (((exists ff_h_pfp_scale_assoc_choiceb. ff_h_pfp_scale_assoc_choiceb + S (z) = S ((S (i)) * bc)) /\ exists ff_q_pfp_scale_assoc_choiceb. bb = ff_q_pfp_scale_assoc_choiceb * S ((S (i)) * bc) + (z))) - L29
specialize beta_at_exists (bb) - L30
specialize beta_at_exists (bc) - L31
specialize beta_at_exists (i) - L32
apply beta_at_exists
07Separate the logical casesL33–33
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L33
cases entry_b
08Establish entry_vL34–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L34
have entry_v : exists z. (((exists ff_h_pfp_scale_assoc_choicev. ff_h_pfp_scale_assoc_choicev + S (z) = S ((S (i)) * vc)) /\ exists ff_q_pfp_scale_assoc_choicev. vb = ff_q_pfp_scale_assoc_choicev * S ((S (i)) * vc) + (z))) - L35
specialize beta_at_exists (vb) - L36
specialize beta_at_exists (vc) - L37
specialize beta_at_exists (i) - L38
apply beta_at_exists
09Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
cases entry_v
10Establish heqL40–49
Establish this local claim before using it. It is not an additional assumption.
- L40
have heq : r=x2 - L41
symm - L42
specialize prime_field_multiply_associative (p) - L43
specialize prime_field_multiply_associative (a) - L44
specialize prime_field_multiply_associative (b) - L45
specialize prime_field_multiply_associative (x) - L46
specialize prime_field_multiply_associative (k) - L47
specialize prime_field_multiply_associative (x1) - L48
specialize prime_field_multiply_associative (x2) - L49
specialize prime_field_multiply_associative (r)
11Use earlier factsL50–59
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply prime_field_multiply_associative - L51
exact hk - L52
specialize prime_field_polynomial_scale_entry (p) - L53
specialize prime_field_polynomial_scale_entry (k) - L54
specialize prime_field_polynomial_scale_entry (ab) - L55
specialize prime_field_polynomial_scale_entry (ac) - L56
specialize prime_field_polynomial_scale_entry (vb) - L57
specialize prime_field_polynomial_scale_entry (vc) - L58
specialize prime_field_polynomial_scale_entry (l) - L59
specialize prime_field_polynomial_scale_entry (i)
12Use earlier factsL60–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L60
specialize prime_field_polynomial_scale_entry (x) - L61
specialize prime_field_polynomial_scale_entry (x2) - L62
apply prime_field_polynomial_scale_entry - L63
exact hproduct - L64
exact hi - L65
exact entry_a_witness - L66
exact entry_v_witness - L67
specialize prime_field_polynomial_scale_entry (p) - L68
specialize prime_field_polynomial_scale_entry (b) - L69
specialize prime_field_polynomial_scale_entry (ab)
13Use earlier factsL70–79
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
specialize prime_field_polynomial_scale_entry (ac) - L71
specialize prime_field_polynomial_scale_entry (bb) - L72
specialize prime_field_polynomial_scale_entry (bc) - L73
specialize prime_field_polynomial_scale_entry (l) - L74
specialize prime_field_polynomial_scale_entry (i) - L75
specialize prime_field_polynomial_scale_entry (x) - L76
specialize prime_field_polynomial_scale_entry (x1) - L77
apply prime_field_polynomial_scale_entry - L78
exact hfirst - L79
exact hi
14Use earlier factsL80–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact entry_a_witness - L81
exact entry_b_witness - L82
specialize prime_field_polynomial_scale_entry (p) - L83
specialize prime_field_polynomial_scale_entry (a) - L84
specialize prime_field_polynomial_scale_entry (bb) - L85
specialize prime_field_polynomial_scale_entry (bc) - L86
specialize prime_field_polynomial_scale_entry (ub) - L87
specialize prime_field_polynomial_scale_entry (uc) - L88
specialize prime_field_polynomial_scale_entry (l) - L89
specialize prime_field_polynomial_scale_entry (i)
15Use earlier factsL90–96
16Calculate and transport equalitiesL97–98
17Use earlier factsL99–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
exact entry_v_witness
Original exact command ledger · 99 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro k - 0005
intro ab - 0006
intro ac - 0007
intro bb - 0008
intro bc - 0009
intro ub - 0010
intro uc - 0011
intro vb - 0012
intro vc - 0013
intro l - 0014
intro hk - 0015
intro hfirst - 0016
intro hsecond - 0017
intro hproduct - 0018
intro i - 0019
intro r - 0020
intro hi - 0021
intro hr - 0022
have entry_a : exists z. (((exists ff_h_pfp_scale_assoc_choicea. ff_h_pfp_scale_assoc_choicea + S (z) = S ((S (i)) * ac)) /\ exists ff_q_pfp_scale_assoc_choicea. ab = ff_q_pfp_scale_assoc_choicea * S ((S (i)) * ac) + (z))) - 0023
specialize beta_at_exists (ab) - 0024
specialize beta_at_exists (ac) - 0025
specialize beta_at_exists (i) - 0026
apply beta_at_exists - 0027
cases entry_a - 0028
have entry_b : exists z. (((exists ff_h_pfp_scale_assoc_choiceb. ff_h_pfp_scale_assoc_choiceb + S (z) = S ((S (i)) * bc)) /\ exists ff_q_pfp_scale_assoc_choiceb. bb = ff_q_pfp_scale_assoc_choiceb * S ((S (i)) * bc) + (z))) - 0029
specialize beta_at_exists (bb) - 0030
specialize beta_at_exists (bc) - 0031
specialize beta_at_exists (i) - 0032
apply beta_at_exists - 0033
cases entry_b - 0034
have entry_v : exists z. (((exists ff_h_pfp_scale_assoc_choicev. ff_h_pfp_scale_assoc_choicev + S (z) = S ((S (i)) * vc)) /\ exists ff_q_pfp_scale_assoc_choicev. vb = ff_q_pfp_scale_assoc_choicev * S ((S (i)) * vc) + (z))) - 0035
specialize beta_at_exists (vb) - 0036
specialize beta_at_exists (vc) - 0037
specialize beta_at_exists (i) - 0038
apply beta_at_exists - 0039
cases entry_v - 0040
have heq : r=x2 - 0041
symm - 0042
specialize prime_field_multiply_associative (p) - 0043
specialize prime_field_multiply_associative (a) - 0044
specialize prime_field_multiply_associative (b) - 0045
specialize prime_field_multiply_associative (x) - 0046
specialize prime_field_multiply_associative (k) - 0047
specialize prime_field_multiply_associative (x1) - 0048
specialize prime_field_multiply_associative (x2) - 0049
specialize prime_field_multiply_associative (r) - 0050
apply prime_field_multiply_associative - 0051
exact hk - 0052
specialize prime_field_polynomial_scale_entry (p) - 0053
specialize prime_field_polynomial_scale_entry (k) - 0054
specialize prime_field_polynomial_scale_entry (ab) - 0055
specialize prime_field_polynomial_scale_entry (ac) - 0056
specialize prime_field_polynomial_scale_entry (vb) - 0057
specialize prime_field_polynomial_scale_entry (vc) - 0058
specialize prime_field_polynomial_scale_entry (l) - 0059
specialize prime_field_polynomial_scale_entry (i) - 0060
specialize prime_field_polynomial_scale_entry (x) - 0061
specialize prime_field_polynomial_scale_entry (x2) - 0062
apply prime_field_polynomial_scale_entry - 0063
exact hproduct - 0064
exact hi - 0065
exact entry_a_witness - 0066
exact entry_v_witness - 0067
specialize prime_field_polynomial_scale_entry (p) - 0068
specialize prime_field_polynomial_scale_entry (b) - 0069
specialize prime_field_polynomial_scale_entry (ab) - 0070
specialize prime_field_polynomial_scale_entry (ac) - 0071
specialize prime_field_polynomial_scale_entry (bb) - 0072
specialize prime_field_polynomial_scale_entry (bc) - 0073
specialize prime_field_polynomial_scale_entry (l) - 0074
specialize prime_field_polynomial_scale_entry (i) - 0075
specialize prime_field_polynomial_scale_entry (x) - 0076
specialize prime_field_polynomial_scale_entry (x1) - 0077
apply prime_field_polynomial_scale_entry - 0078
exact hfirst - 0079
exact hi - 0080
exact entry_a_witness - 0081
exact entry_b_witness - 0082
specialize prime_field_polynomial_scale_entry (p) - 0083
specialize prime_field_polynomial_scale_entry (a) - 0084
specialize prime_field_polynomial_scale_entry (bb) - 0085
specialize prime_field_polynomial_scale_entry (bc) - 0086
specialize prime_field_polynomial_scale_entry (ub) - 0087
specialize prime_field_polynomial_scale_entry (uc) - 0088
specialize prime_field_polynomial_scale_entry (l) - 0089
specialize prime_field_polynomial_scale_entry (i) - 0090
specialize prime_field_polynomial_scale_entry (x1) - 0091
specialize prime_field_polynomial_scale_entry (r) - 0092
apply prime_field_polynomial_scale_entry - 0093
exact hsecond - 0094
exact hi - 0095
exact entry_b_witness - 0096
exact hr - 0097
rewrite heq - 0098
rewrite heq - 0099
exact entry_v_witness