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 k ab ac bb bc L. (~((p) = 1) /\ forall pfa_factor_left_inverse_scale_prime pfa_factor_right_inverse_scale_prime. (p) = pfa_factor_left_inverse_scale_prime * pfa_factor_right_inverse_scale_prime -> pfa_factor_left_inverse_scale_prime = 1 \/ pfa_factor_right_inverse_scale_prime = 1) -> (((~((a) = 0)) /\ ((((exists pfa_gap_inverse_scale_inversemultiplicationleft. pfa_gap_inverse_scale_inversemultiplicationleft + S (a) = (p)) /\ (((exists pfa_gap_inverse_scale_inversemultiplicationright. pfa_gap_inverse_scale_inversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_inverse_scale_inversemultiplicationresultbound. pfa_gap_inverse_scale_inversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverse_scale_inversemultiplicationresultcongruence pfa_offset_right_inverse_scale_inversemultiplicationresultcongruence. ((a) * (k)) + (p) * pfa_offset_left_inverse_scale_inversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_inverse_scale_inversemultiplicationresultcongruence)))))))))))) -> (((exists pfa_gap_inverse_scale_forwardscalar. pfa_gap_inverse_scale_forwardscalar + S (k) = (p)) /\ ((forall pfp_index_inverse_scale_forward. (exists pfa_gap_inverse_scale_forwardindex. pfa_gap_inverse_scale_forwardindex + S (pfp_index_inverse_scale_forward) = (L)) -> exists pfp_source_inverse_scale_forward pfp_value_inverse_scale_forward. ((((exists ff_h_pfp_inverse_scale_forwardsource. ff_h_pfp_inverse_scale_forwardsource + S (pfp_source_inverse_scale_forward) = S ((S (pfp_index_inverse_scale_forward)) * ac)) /\ exists ff_q_pfp_inverse_scale_forwardsource. ab = ff_q_pfp_inverse_scale_forwardsource * S ((S (pfp_index_inverse_scale_forward)) * ac) + (pfp_source_inverse_scale_forward))) /\ (((((exists ff_h_pfp_inverse_scale_forwardtarget. ff_h_pfp_inverse_scale_forwardtarget + S (pfp_value_inverse_scale_forward) = S ((S (pfp_index_inverse_scale_forward)) * bc)) /\ exists ff_q_pfp_inverse_scale_forwardtarget. bb = ff_q_pfp_inverse_scale_forwardtarget * S ((S (pfp_index_inverse_scale_forward)) * bc) + (pfp_value_inverse_scale_forward))) /\ ((((exists pfa_gap_inverse_scale_forwardoperationleft. pfa_gap_inverse_scale_forwardoperationleft + S (k) = (p)) /\ (((exists pfa_gap_inverse_scale_forwardoperationright. pfa_gap_inverse_scale_forwardoperationright + S (pfp_source_inverse_scale_forward) = (p)) /\ ((((exists pfa_gap_inverse_scale_forwardoperationresultbound. pfa_gap_inverse_scale_forwardoperationresultbound + S (pfp_value_inverse_scale_forward) = (p)) /\ ((exists pfa_offset_left_inverse_scale_forwardoperationresultcongruence pfa_offset_right_inverse_scale_forwardoperationresultcongruence. ((k) * (pfp_source_inverse_scale_forward)) + (p) * pfa_offset_left_inverse_scale_forwardoperationresultcongruence = (pfp_value_inverse_scale_forward) + (p) * pfa_offset_right_inverse_scale_forwardoperationresultcongruence))))))))))))))))) -> (((exists pfa_gap_inverse_scale_backwardscalar. pfa_gap_inverse_scale_backwardscalar + S (a) = (p)) /\ ((forall pfp_index_inverse_scale_backward. (exists pfa_gap_inverse_scale_backwardindex. pfa_gap_inverse_scale_backwardindex + S (pfp_index_inverse_scale_backward) = (L)) -> exists pfp_source_inverse_scale_backward pfp_value_inverse_scale_backward. ((((exists ff_h_pfp_inverse_scale_backwardsource. ff_h_pfp_inverse_scale_backwardsource + S (pfp_source_inverse_scale_backward) = S ((S (pfp_index_inverse_scale_backward)) * bc)) /\ exists ff_q_pfp_inverse_scale_backwardsource. bb = ff_q_pfp_inverse_scale_backwardsource * S ((S (pfp_index_inverse_scale_backward)) * bc) + (pfp_source_inverse_scale_backward))) /\ (((((exists ff_h_pfp_inverse_scale_backwardtarget. ff_h_pfp_inverse_scale_backwardtarget + S (pfp_value_inverse_scale_backward) = S ((S (pfp_index_inverse_scale_backward)) * ac)) /\ exists ff_q_pfp_inverse_scale_backwardtarget. ab = ff_q_pfp_inverse_scale_backwardtarget * S ((S (pfp_index_inverse_scale_backward)) * ac) + (pfp_value_inverse_scale_backward))) /\ ((((exists pfa_gap_inverse_scale_backwardoperationleft. pfa_gap_inverse_scale_backwardoperationleft + S (a) = (p)) /\ (((exists pfa_gap_inverse_scale_backwardoperationright. pfa_gap_inverse_scale_backwardoperationright + S (pfp_source_inverse_scale_backward) = (p)) /\ ((((exists pfa_gap_inverse_scale_backwardoperationresultbound. pfa_gap_inverse_scale_backwardoperationresultbound + S (pfp_value_inverse_scale_backward) = (p)) /\ ((exists pfa_offset_left_inverse_scale_backwardoperationresultcongruence pfa_offset_right_inverse_scale_backwardoperationresultcongruence. ((a) * (pfp_source_inverse_scale_backward)) + (p) * pfa_offset_left_inverse_scale_backwardoperationresultcongruence = (pfp_value_inverse_scale_backward) + (p) * pfa_offset_right_inverse_scale_backwardoperationresultcongruence)))))))))))))))))Constructive proof overview
Generated structural guide
An actual inverse scalar gives the reverse coefficient action, with a constructed intermediate table and exact decoded transport; no unit-associate law is assumed.
The unchanged tactic script uses 6 declared prerequisites and contains 88 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 prime_field_polynomial_scale_exists Alpha theorem; checked-use authorized prime_nonzero Alpha theorem; checked-use authorized prime_field_polynomial_scale_associative Alpha theorem; checked-use authorized prime_field_polynomial_scale_one Alpha theorem; checked-use authorized prime_field_polynomial_scale_transport Alpha 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.
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hs
03Establish hboundL12–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial scale bounded.
- L12
have hbound : BetaPrefixInto(ab,ac,L,p) ∧ BetaPrefixInto(bb,bc,L,p)Definitions: BetaPrefixInto - L13
specialize prime_field_polynomial_scale_bounded (p) - L14
specialize prime_field_polynomial_scale_bounded (k) - L15
specialize prime_field_polynomial_scale_bounded (ab) - L16
specialize prime_field_polynomial_scale_bounded (ac) - L17
specialize prime_field_polynomial_scale_bounded (bb) - L18
specialize prime_field_polynomial_scale_bounded (bc) - L19
specialize prime_field_polynomial_scale_bounded (L) - L20
apply prime_field_polynomial_scale_bounded - L21
exact hs
04Separate the logical casesL22–23
05Establish hmL24–25
Establish this local claim before using it. It is not an additional assumption.
- L24
have hm : ((exists pfa_gap_inverse_scale_productleft. pfa_gap_inverse_scale_productleft + S (a) = (p)) /\ (((exists pfa_gap_inverse_scale_productright. pfa_gap_inverse_scale_productright + S (k) = (p)) /\ ((((exists pfa_gap_inverse_scale_productresultbound. pfa_gap_inverse_scale_productresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverse_scale_productresultcongruence pfa_offset_right_inverse_scale_productresultcongruence. ((a) * (k)) + (p) * pfa_offset_left_inverse_scale_productresultcongruence = (1) + (p) * pfa_offset_right_inverse_scale_productresultcongruence)))))))) - L25
exact hinv_right
06Separate the logical casesL26–28
07Establish hrL29–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial scale exists.
- L29
have hr : ∃ cb. ∃ cc. FpPolyScale(p,a,bb,bc,cb,cc,L)Definitions: FpPolyScale - L30
specialize prime_field_polynomial_scale_exists (p) - L31
specialize prime_field_polynomial_scale_exists (a) - L32
specialize prime_field_polynomial_scale_exists (bb) - L33
specialize prime_field_polynomial_scale_exists (bc) - L34
specialize prime_field_polynomial_scale_exists (L) - L35
apply prime_field_polynomial_scale_exists - L36
intro hpzero - L37
specialize prime_nonzero (p) - L38
apply prime_nonzero
08Use earlier factsL39–42
09Separate the logical casesL43–44
10Establish heL45–54
Establish this local claim before using it. It is not an additional assumption.
- L45
have he : BetaPrefixEqual(x,x1,ab,ac,L)Definitions: BetaPrefixEqual - L46
specialize prime_field_polynomial_scale_associative (p) - L47
specialize prime_field_polynomial_scale_associative (a) - L48
specialize prime_field_polynomial_scale_associative (k) - L49
specialize prime_field_polynomial_scale_associative (1) - L50
specialize prime_field_polynomial_scale_associative (ab) - L51
specialize prime_field_polynomial_scale_associative (ac) - L52
specialize prime_field_polynomial_scale_associative (bb) - L53
specialize prime_field_polynomial_scale_associative (bc) - L54
specialize prime_field_polynomial_scale_associative (x)
11Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize prime_field_polynomial_scale_associative (x1) - L56
specialize prime_field_polynomial_scale_associative (ab) - L57
specialize prime_field_polynomial_scale_associative (ac) - L58
specialize prime_field_polynomial_scale_associative (L) - L59
apply prime_field_polynomial_scale_associative - L60
exact hm - L61
exact hs - L62
exact hr_witness_witness - L63
specialize prime_field_polynomial_scale_one (p) - L64
specialize prime_field_polynomial_scale_one (ab)
12Use earlier factsL65–74
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
specialize prime_field_polynomial_scale_one (ac) - L66
specialize prime_field_polynomial_scale_one (L) - L67
apply prime_field_polynomial_scale_one - L68
exact hp - L69
exact hbound_left - L70
specialize prime_field_polynomial_scale_transport (p) - L71
specialize prime_field_polynomial_scale_transport (a) - L72
specialize prime_field_polynomial_scale_transport (bb) - L73
specialize prime_field_polynomial_scale_transport (bc) - L74
specialize prime_field_polynomial_scale_transport (x)
13Use earlier factsL75–81
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
specialize prime_field_polynomial_scale_transport (x1) - L76
specialize prime_field_polynomial_scale_transport (bb) - L77
specialize prime_field_polynomial_scale_transport (bc) - L78
specialize prime_field_polynomial_scale_transport (ab) - L79
specialize prime_field_polynomial_scale_transport (ac) - L80
specialize prime_field_polynomial_scale_transport (L) - L81
apply prime_field_polynomial_scale_transport
14Fix variables and assumptionsL82–85
Original exact command ledger · 88 lines
- 0001
intro p - 0002
intro a - 0003
intro k - 0004
intro ab - 0005
intro ac - 0006
intro bb - 0007
intro bc - 0008
intro L - 0009
intro hp - 0010
intro hinv - 0011
intro hs - 0012
have hbound : ((forall fom_index_pfp_inverse_scale_A. (exists fom_gap_pfp_inverse_scale_A_index_bound. fom_gap_pfp_inverse_scale_A_index_bound + S (fom_index_pfp_inverse_scale_A) = L) -> exists fom_value_pfp_inverse_scale_A. ((((exists fom_beta_height_pfp_inverse_scale_A_entry. fom_beta_height_pfp_inverse_scale_A_entry + S (fom_value_pfp_inverse_scale_A) = S ((S (fom_index_pfp_inverse_scale_A)) * ac)) /\ exists fom_beta_quotient_pfp_inverse_scale_A_entry. ab = fom_beta_quotient_pfp_inverse_scale_A_entry * S ((S (fom_index_pfp_inverse_scale_A)) * ac) + (fom_value_pfp_inverse_scale_A))) /\ (exists fom_gap_pfp_inverse_scale_A_value_bound. fom_gap_pfp_inverse_scale_A_value_bound + S (fom_value_pfp_inverse_scale_A) = p))) /\ ((forall fom_index_pfp_inverse_scale_B. (exists fom_gap_pfp_inverse_scale_B_index_bound. fom_gap_pfp_inverse_scale_B_index_bound + S (fom_index_pfp_inverse_scale_B) = L) -> exists fom_value_pfp_inverse_scale_B. ((((exists fom_beta_height_pfp_inverse_scale_B_entry. fom_beta_height_pfp_inverse_scale_B_entry + S (fom_value_pfp_inverse_scale_B) = S ((S (fom_index_pfp_inverse_scale_B)) * bc)) /\ exists fom_beta_quotient_pfp_inverse_scale_B_entry. bb = fom_beta_quotient_pfp_inverse_scale_B_entry * S ((S (fom_index_pfp_inverse_scale_B)) * bc) + (fom_value_pfp_inverse_scale_B))) /\ (exists fom_gap_pfp_inverse_scale_B_value_bound. fom_gap_pfp_inverse_scale_B_value_bound + S (fom_value_pfp_inverse_scale_B) = p))))) - 0013
specialize prime_field_polynomial_scale_bounded (p) - 0014
specialize prime_field_polynomial_scale_bounded (k) - 0015
specialize prime_field_polynomial_scale_bounded (ab) - 0016
specialize prime_field_polynomial_scale_bounded (ac) - 0017
specialize prime_field_polynomial_scale_bounded (bb) - 0018
specialize prime_field_polynomial_scale_bounded (bc) - 0019
specialize prime_field_polynomial_scale_bounded (L) - 0020
apply prime_field_polynomial_scale_bounded - 0021
exact hs - 0022
cases hbound - 0023
cases hinv - 0024
have hm : ((exists pfa_gap_inverse_scale_productleft. pfa_gap_inverse_scale_productleft + S (a) = (p)) /\ (((exists pfa_gap_inverse_scale_productright. pfa_gap_inverse_scale_productright + S (k) = (p)) /\ ((((exists pfa_gap_inverse_scale_productresultbound. pfa_gap_inverse_scale_productresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverse_scale_productresultcongruence pfa_offset_right_inverse_scale_productresultcongruence. ((a) * (k)) + (p) * pfa_offset_left_inverse_scale_productresultcongruence = (1) + (p) * pfa_offset_right_inverse_scale_productresultcongruence)))))))) - 0025
exact hinv_right - 0026
cases hinv_right - 0027
cases hinv_right_right - 0028
cases hinv_right_right_right - 0029
have hr : exists cb cc. (((exists pfa_gap_inverse_scale_actualscalar. pfa_gap_inverse_scale_actualscalar + S (a) = (p)) /\ ((forall pfp_index_inverse_scale_actual. (exists pfa_gap_inverse_scale_actualindex. pfa_gap_inverse_scale_actualindex + S (pfp_index_inverse_scale_actual) = (L)) -> exists pfp_source_inverse_scale_actual pfp_value_inverse_scale_actual. ((((exists ff_h_pfp_inverse_scale_actualsource. ff_h_pfp_inverse_scale_actualsource + S (pfp_source_inverse_scale_actual) = S ((S (pfp_index_inverse_scale_actual)) * bc)) /\ exists ff_q_pfp_inverse_scale_actualsource. bb = ff_q_pfp_inverse_scale_actualsource * S ((S (pfp_index_inverse_scale_actual)) * bc) + (pfp_source_inverse_scale_actual))) /\ (((((exists ff_h_pfp_inverse_scale_actualtarget. ff_h_pfp_inverse_scale_actualtarget + S (pfp_value_inverse_scale_actual) = S ((S (pfp_index_inverse_scale_actual)) * cc)) /\ exists ff_q_pfp_inverse_scale_actualtarget. cb = ff_q_pfp_inverse_scale_actualtarget * S ((S (pfp_index_inverse_scale_actual)) * cc) + (pfp_value_inverse_scale_actual))) /\ ((((exists pfa_gap_inverse_scale_actualoperationleft. pfa_gap_inverse_scale_actualoperationleft + S (a) = (p)) /\ (((exists pfa_gap_inverse_scale_actualoperationright. pfa_gap_inverse_scale_actualoperationright + S (pfp_source_inverse_scale_actual) = (p)) /\ ((((exists pfa_gap_inverse_scale_actualoperationresultbound. pfa_gap_inverse_scale_actualoperationresultbound + S (pfp_value_inverse_scale_actual) = (p)) /\ ((exists pfa_offset_left_inverse_scale_actualoperationresultcongruence pfa_offset_right_inverse_scale_actualoperationresultcongruence. ((a) * (pfp_source_inverse_scale_actual)) + (p) * pfa_offset_left_inverse_scale_actualoperationresultcongruence = (pfp_value_inverse_scale_actual) + (p) * pfa_offset_right_inverse_scale_actualoperationresultcongruence))))))))))))))))) - 0030
specialize prime_field_polynomial_scale_exists (p) - 0031
specialize prime_field_polynomial_scale_exists (a) - 0032
specialize prime_field_polynomial_scale_exists (bb) - 0033
specialize prime_field_polynomial_scale_exists (bc) - 0034
specialize prime_field_polynomial_scale_exists (L) - 0035
apply prime_field_polynomial_scale_exists - 0036
intro hpzero - 0037
specialize prime_nonzero (p) - 0038
apply prime_nonzero - 0039
exact hp - 0040
exact hpzero - 0041
exact hinv_right_left - 0042
exact hbound_right - 0043
cases hr - 0044
cases hr_witness - 0045
have he : forall mdr_i_pfp_inverse_scale_result_equal mdr_a_pfp_inverse_scale_result_equal. (exists mdr_gap_pfp_inverse_scale_result_equalb. mdr_gap_pfp_inverse_scale_result_equalb + S (mdr_i_pfp_inverse_scale_result_equal) = (L)) -> (((exists ff_h_mdr_pfp_inverse_scale_result_equalo. ff_h_mdr_pfp_inverse_scale_result_equalo + S (mdr_a_pfp_inverse_scale_result_equal) = S ((S (mdr_i_pfp_inverse_scale_result_equal)) * x1)) /\ exists ff_q_mdr_pfp_inverse_scale_result_equalo. x = ff_q_mdr_pfp_inverse_scale_result_equalo * S ((S (mdr_i_pfp_inverse_scale_result_equal)) * x1) + (mdr_a_pfp_inverse_scale_result_equal))) -> (((exists ff_h_mdr_pfp_inverse_scale_result_equaln. ff_h_mdr_pfp_inverse_scale_result_equaln + S (mdr_a_pfp_inverse_scale_result_equal) = S ((S (mdr_i_pfp_inverse_scale_result_equal)) * ac)) /\ exists ff_q_mdr_pfp_inverse_scale_result_equaln. ab = ff_q_mdr_pfp_inverse_scale_result_equaln * S ((S (mdr_i_pfp_inverse_scale_result_equal)) * ac) + (mdr_a_pfp_inverse_scale_result_equal))) - 0046
specialize prime_field_polynomial_scale_associative (p) - 0047
specialize prime_field_polynomial_scale_associative (a) - 0048
specialize prime_field_polynomial_scale_associative (k) - 0049
specialize prime_field_polynomial_scale_associative (1) - 0050
specialize prime_field_polynomial_scale_associative (ab) - 0051
specialize prime_field_polynomial_scale_associative (ac) - 0052
specialize prime_field_polynomial_scale_associative (bb) - 0053
specialize prime_field_polynomial_scale_associative (bc) - 0054
specialize prime_field_polynomial_scale_associative (x) - 0055
specialize prime_field_polynomial_scale_associative (x1) - 0056
specialize prime_field_polynomial_scale_associative (ab) - 0057
specialize prime_field_polynomial_scale_associative (ac) - 0058
specialize prime_field_polynomial_scale_associative (L) - 0059
apply prime_field_polynomial_scale_associative - 0060
exact hm - 0061
exact hs - 0062
exact hr_witness_witness - 0063
specialize prime_field_polynomial_scale_one (p) - 0064
specialize prime_field_polynomial_scale_one (ab) - 0065
specialize prime_field_polynomial_scale_one (ac) - 0066
specialize prime_field_polynomial_scale_one (L) - 0067
apply prime_field_polynomial_scale_one - 0068
exact hp - 0069
exact hbound_left - 0070
specialize prime_field_polynomial_scale_transport (p) - 0071
specialize prime_field_polynomial_scale_transport (a) - 0072
specialize prime_field_polynomial_scale_transport (bb) - 0073
specialize prime_field_polynomial_scale_transport (bc) - 0074
specialize prime_field_polynomial_scale_transport (x) - 0075
specialize prime_field_polynomial_scale_transport (x1) - 0076
specialize prime_field_polynomial_scale_transport (bb) - 0077
specialize prime_field_polynomial_scale_transport (bc) - 0078
specialize prime_field_polynomial_scale_transport (ab) - 0079
specialize prime_field_polynomial_scale_transport (ac) - 0080
specialize prime_field_polynomial_scale_transport (L) - 0081
apply prime_field_polynomial_scale_transport - 0082
intro i - 0083
intro r - 0084
intro hi - 0085
intro hat - 0086
exact hat - 0087
exact he - 0088
exact hr_witness_witness