Exact expanded first-order arithmetic statement
forall p A D M E a b c s x y u v. (forall pft_index_lefttable_distributive_add. (exists pfa_gap_lefttable_distributive_addprefix. pfa_gap_lefttable_distributive_addprefix + S (pft_index_lefttable_distributive_add) = ((p) * (p))) -> exists pft_value_lefttable_distributive_add. (((((exists ff_h_pft_lefttable_distributive_addpointentry. ff_h_pft_lefttable_distributive_addpointentry + S (pft_value_lefttable_distributive_add) = S ((S (pft_index_lefttable_distributive_add)) * D)) /\ exists ff_q_pft_lefttable_distributive_addpointentry. A = ff_q_pft_lefttable_distributive_addpointentry * S ((S (pft_index_lefttable_distributive_add)) * D) + (pft_value_lefttable_distributive_add))) /\ ((exists pft_row_lefttable_distributive_addpointvalue pft_column_lefttable_distributive_addpointvalue. (((pft_index_lefttable_distributive_add) = pft_row_lefttable_distributive_addpointvalue * (p) + pft_column_lefttable_distributive_addpointvalue) /\ ((((exists pfa_gap_lefttable_distributive_addpointvalueoperationleft. pfa_gap_lefttable_distributive_addpointvalueoperationleft + S (pft_row_lefttable_distributive_addpointvalue) = (p)) /\ (((exists pfa_gap_lefttable_distributive_addpointvalueoperationright. pfa_gap_lefttable_distributive_addpointvalueoperationright + S (pft_column_lefttable_distributive_addpointvalue) = (p)) /\ ((((exists pfa_gap_lefttable_distributive_addpointvalueoperationresultbound. pfa_gap_lefttable_distributive_addpointvalueoperationresultbound + S (pft_value_lefttable_distributive_add) = (p)) /\ ((exists pfa_offset_left_lefttable_distributive_addpointvalueoperationresultcongruence pfa_offset_right_lefttable_distributive_addpointvalueoperationresultcongruence. ((pft_row_lefttable_distributive_addpointvalue) + (pft_column_lefttable_distributive_addpointvalue)) + (p) * pfa_offset_left_lefttable_distributive_addpointvalueoperationresultcongruence = (pft_value_lefttable_distributive_add) + (p) * pfa_offset_right_lefttable_distributive_addpointvalueoperationresultcongruence)))))))))))))))) -> (forall pft_index_lefttable_distributive_mul. (exists pfa_gap_lefttable_distributive_mulprefix. pfa_gap_lefttable_distributive_mulprefix + S (pft_index_lefttable_distributive_mul) = ((p) * (p))) -> exists pft_value_lefttable_distributive_mul. (((((exists ff_h_pft_lefttable_distributive_mulpointentry. ff_h_pft_lefttable_distributive_mulpointentry + S (pft_value_lefttable_distributive_mul) = S ((S (pft_index_lefttable_distributive_mul)) * E)) /\ exists ff_q_pft_lefttable_distributive_mulpointentry. M = ff_q_pft_lefttable_distributive_mulpointentry * S ((S (pft_index_lefttable_distributive_mul)) * E) + (pft_value_lefttable_distributive_mul))) /\ ((exists pft_row_lefttable_distributive_mulpointvalue pft_column_lefttable_distributive_mulpointvalue. (((pft_index_lefttable_distributive_mul) = pft_row_lefttable_distributive_mulpointvalue * (p) + pft_column_lefttable_distributive_mulpointvalue) /\ ((((exists pfa_gap_lefttable_distributive_mulpointvalueoperationleft. pfa_gap_lefttable_distributive_mulpointvalueoperationleft + S (pft_row_lefttable_distributive_mulpointvalue) = (p)) /\ (((exists pfa_gap_lefttable_distributive_mulpointvalueoperationright. pfa_gap_lefttable_distributive_mulpointvalueoperationright + S (pft_column_lefttable_distributive_mulpointvalue) = (p)) /\ ((((exists pfa_gap_lefttable_distributive_mulpointvalueoperationresultbound. pfa_gap_lefttable_distributive_mulpointvalueoperationresultbound + S (pft_value_lefttable_distributive_mul) = (p)) /\ ((exists pfa_offset_left_lefttable_distributive_mulpointvalueoperationresultcongruence pfa_offset_right_lefttable_distributive_mulpointvalueoperationresultcongruence. ((pft_row_lefttable_distributive_mulpointvalue) * (pft_column_lefttable_distributive_mulpointvalue)) + (p) * pfa_offset_left_lefttable_distributive_mulpointvalueoperationresultcongruence = (pft_value_lefttable_distributive_mul) + (p) * pfa_offset_right_lefttable_distributive_mulpointvalueoperationresultcongruence)))))))))))))))) -> (exists pfa_gap_lefttable_distributive_a. pfa_gap_lefttable_distributive_a + S (a) = (p)) -> (exists pfa_gap_lefttable_distributive_b. pfa_gap_lefttable_distributive_b + S (b) = (p)) -> (exists pfa_gap_lefttable_distributive_c. pfa_gap_lefttable_distributive_c + S (c) = (p)) -> (((exists ff_h_pft_lefttable_distributive_sum. ff_h_pft_lefttable_distributive_sum + S (s) = S ((S (b*p+c)) * D)) /\ exists ff_q_pft_lefttable_distributive_sum. A = ff_q_pft_lefttable_distributive_sum * S ((S (b*p+c)) * D) + (s))) -> (((exists ff_h_pft_lefttable_distributive_left. ff_h_pft_lefttable_distributive_left + S (u) = S ((S (a*p+s)) * E)) /\ exists ff_q_pft_lefttable_distributive_left. M = ff_q_pft_lefttable_distributive_left * S ((S (a*p+s)) * E) + (u))) -> (((exists ff_h_pft_lefttable_distributive_first. ff_h_pft_lefttable_distributive_first + S (x) = S ((S (a*p+b)) * E)) /\ exists ff_q_pft_lefttable_distributive_first. M = ff_q_pft_lefttable_distributive_first * S ((S (a*p+b)) * E) + (x))) -> (((exists ff_h_pft_lefttable_distributive_second. ff_h_pft_lefttable_distributive_second + S (y) = S ((S (a*p+c)) * E)) /\ exists ff_q_pft_lefttable_distributive_second. M = ff_q_pft_lefttable_distributive_second * S ((S (a*p+c)) * E) + (y))) -> (((exists ff_h_pft_lefttable_distributive_right. ff_h_pft_lefttable_distributive_right + S (v) = S ((S (x*p+y)) * D)) /\ exists ff_q_pft_lefttable_distributive_right. A = ff_q_pft_lefttable_distributive_right * S ((S (x*p+y)) * D) + (v))) -> u = vConstructive proof overview
Generated structural guide
Actual finite addition and multiplication table entries satisfy left distributivity, with all intermediate bounds derived.
The unchanged tactic script uses 3 declared prerequisites and contains 103 exact native proof lines.
Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable
Proof neighborhood
Direct dependencies
FP0039 prime_field_add_table_lookup FP003C prime_field_multiply_table_lookup FP0012 prime_field_left_distributiveDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or 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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–23
04Establish hsumL24–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field add table lookup.
- L24
have hsum : ((exists pfa_gap_lefttable_sum_graphleft. pfa_gap_lefttable_sum_graphleft + S (b) = (p)) /\ (((exists pfa_gap_lefttable_sum_graphright. pfa_gap_lefttable_sum_graphright + S (c) = (p)) /\ ((((exists pfa_gap_lefttable_sum_graphresultbound. pfa_gap_lefttable_sum_graphresultbound + S (s) = (p)) /\ ((exists pfa_offset_left_lefttable_sum_graphresultcongruence pfa_offset_right_lefttable_sum_graphresultcongruence. ((b) + (c)) + (p) * pfa_offset_left_lefttable_sum_graphresultcongruence = (s) + (p) * pfa_offset_right_lefttable_sum_graphresultcongruence)))))))) - L25
specialize prime_field_add_table_lookup (p) - L26
specialize prime_field_add_table_lookup (A) - L27
specialize prime_field_add_table_lookup (D) - L28
specialize prime_field_add_table_lookup (b) - L29
specialize prime_field_add_table_lookup (c) - L30
specialize prime_field_add_table_lookup (s) - L31
apply prime_field_add_table_lookup - L32
exact haddtable - L33
exact hb
05Use earlier factsL34–35
06Separate the logical casesL36–38
07Establish hfirstL39–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply table lookup.
- L39
have hfirst : ((exists pfa_gap_lefthfirstgraphleft. pfa_gap_lefthfirstgraphleft + S (a) = (p)) /\ (((exists pfa_gap_lefthfirstgraphright. pfa_gap_lefthfirstgraphright + S (b) = (p)) /\ ((((exists pfa_gap_lefthfirstgraphresultbound. pfa_gap_lefthfirstgraphresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_lefthfirstgraphresultcongruence pfa_offset_right_lefthfirstgraphresultcongruence. ((a) * (b)) + (p) * pfa_offset_left_lefthfirstgraphresultcongruence = (x) + (p) * pfa_offset_right_lefthfirstgraphresultcongruence)))))))) - L40
specialize prime_field_multiply_table_lookup (p) - L41
specialize prime_field_multiply_table_lookup (M) - L42
specialize prime_field_multiply_table_lookup (E) - L43
specialize prime_field_multiply_table_lookup (a) - L44
specialize prime_field_multiply_table_lookup (b) - L45
specialize prime_field_multiply_table_lookup (x) - L46
apply prime_field_multiply_table_lookup - L47
exact hmultable - L48
exact ha
08Use earlier factsL49–50
09Separate the logical casesL51–53
10Establish hsecondL54–63
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply table lookup.
- L54
have hsecond : ((exists pfa_gap_lefthsecondgraphleft. pfa_gap_lefthsecondgraphleft + S (a) = (p)) /\ (((exists pfa_gap_lefthsecondgraphright. pfa_gap_lefthsecondgraphright + S (c) = (p)) /\ ((((exists pfa_gap_lefthsecondgraphresultbound. pfa_gap_lefthsecondgraphresultbound + S (y) = (p)) /\ ((exists pfa_offset_left_lefthsecondgraphresultcongruence pfa_offset_right_lefthsecondgraphresultcongruence. ((a) * (c)) + (p) * pfa_offset_left_lefthsecondgraphresultcongruence = (y) + (p) * pfa_offset_right_lefthsecondgraphresultcongruence)))))))) - L55
specialize prime_field_multiply_table_lookup (p) - L56
specialize prime_field_multiply_table_lookup (M) - L57
specialize prime_field_multiply_table_lookup (E) - L58
specialize prime_field_multiply_table_lookup (a) - L59
specialize prime_field_multiply_table_lookup (c) - L60
specialize prime_field_multiply_table_lookup (y) - L61
apply prime_field_multiply_table_lookup - L62
exact hmultable - L63
exact ha
11Use earlier factsL64–65
12Separate the logical casesL66–68
13Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
specialize prime_field_left_distributive (p) - L70
specialize prime_field_left_distributive (a) - L71
specialize prime_field_left_distributive (b) - L72
specialize prime_field_left_distributive (c) - L73
specialize prime_field_left_distributive (s) - L74
specialize prime_field_left_distributive (x) - L75
specialize prime_field_left_distributive (y) - L76
specialize prime_field_left_distributive (u) - L77
specialize prime_field_left_distributive (v) - L78
apply prime_field_left_distributive
14Use earlier factsL79–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L79
exact hsum - L80
specialize prime_field_multiply_table_lookup (p) - L81
specialize prime_field_multiply_table_lookup (M) - L82
specialize prime_field_multiply_table_lookup (E) - L83
specialize prime_field_multiply_table_lookup (a) - L84
specialize prime_field_multiply_table_lookup (s) - L85
specialize prime_field_multiply_table_lookup (u) - L86
apply prime_field_multiply_table_lookup - L87
exact hmultable - L88
exact ha
15Use earlier factsL89–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact hsum_right_right_left - L90
exact hatleft - L91
exact hfirst - L92
exact hsecond - L93
specialize prime_field_add_table_lookup (p) - L94
specialize prime_field_add_table_lookup (A) - L95
specialize prime_field_add_table_lookup (D) - L96
specialize prime_field_add_table_lookup (x) - L97
specialize prime_field_add_table_lookup (y) - L98
specialize prime_field_add_table_lookup (v)
Original exact command ledger · 103 lines
- 0001
intro p - 0002
intro A - 0003
intro D - 0004
intro M - 0005
intro E - 0006
intro a - 0007
intro b - 0008
intro c - 0009
intro s - 0010
intro x - 0011
intro y - 0012
intro u - 0013
intro v - 0014
intro haddtable - 0015
intro hmultable - 0016
intro ha - 0017
intro hb - 0018
intro hc - 0019
intro hatsum - 0020
intro hatleft - 0021
intro hatfirst - 0022
intro hatsecond - 0023
intro hatright - 0024
have hsum : ((exists pfa_gap_lefttable_sum_graphleft. pfa_gap_lefttable_sum_graphleft + S (b) = (p)) /\ (((exists pfa_gap_lefttable_sum_graphright. pfa_gap_lefttable_sum_graphright + S (c) = (p)) /\ ((((exists pfa_gap_lefttable_sum_graphresultbound. pfa_gap_lefttable_sum_graphresultbound + S (s) = (p)) /\ ((exists pfa_offset_left_lefttable_sum_graphresultcongruence pfa_offset_right_lefttable_sum_graphresultcongruence. ((b) + (c)) + (p) * pfa_offset_left_lefttable_sum_graphresultcongruence = (s) + (p) * pfa_offset_right_lefttable_sum_graphresultcongruence)))))))) - 0025
specialize prime_field_add_table_lookup (p) - 0026
specialize prime_field_add_table_lookup (A) - 0027
specialize prime_field_add_table_lookup (D) - 0028
specialize prime_field_add_table_lookup (b) - 0029
specialize prime_field_add_table_lookup (c) - 0030
specialize prime_field_add_table_lookup (s) - 0031
apply prime_field_add_table_lookup - 0032
exact haddtable - 0033
exact hb - 0034
exact hc - 0035
exact hatsum - 0036
cases hsum - 0037
cases hsum_right - 0038
cases hsum_right_right - 0039
have hfirst : ((exists pfa_gap_lefthfirstgraphleft. pfa_gap_lefthfirstgraphleft + S (a) = (p)) /\ (((exists pfa_gap_lefthfirstgraphright. pfa_gap_lefthfirstgraphright + S (b) = (p)) /\ ((((exists pfa_gap_lefthfirstgraphresultbound. pfa_gap_lefthfirstgraphresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_lefthfirstgraphresultcongruence pfa_offset_right_lefthfirstgraphresultcongruence. ((a) * (b)) + (p) * pfa_offset_left_lefthfirstgraphresultcongruence = (x) + (p) * pfa_offset_right_lefthfirstgraphresultcongruence)))))))) - 0040
specialize prime_field_multiply_table_lookup (p) - 0041
specialize prime_field_multiply_table_lookup (M) - 0042
specialize prime_field_multiply_table_lookup (E) - 0043
specialize prime_field_multiply_table_lookup (a) - 0044
specialize prime_field_multiply_table_lookup (b) - 0045
specialize prime_field_multiply_table_lookup (x) - 0046
apply prime_field_multiply_table_lookup - 0047
exact hmultable - 0048
exact ha - 0049
exact hb - 0050
exact hatfirst - 0051
cases hfirst - 0052
cases hfirst_right - 0053
cases hfirst_right_right - 0054
have hsecond : ((exists pfa_gap_lefthsecondgraphleft. pfa_gap_lefthsecondgraphleft + S (a) = (p)) /\ (((exists pfa_gap_lefthsecondgraphright. pfa_gap_lefthsecondgraphright + S (c) = (p)) /\ ((((exists pfa_gap_lefthsecondgraphresultbound. pfa_gap_lefthsecondgraphresultbound + S (y) = (p)) /\ ((exists pfa_offset_left_lefthsecondgraphresultcongruence pfa_offset_right_lefthsecondgraphresultcongruence. ((a) * (c)) + (p) * pfa_offset_left_lefthsecondgraphresultcongruence = (y) + (p) * pfa_offset_right_lefthsecondgraphresultcongruence)))))))) - 0055
specialize prime_field_multiply_table_lookup (p) - 0056
specialize prime_field_multiply_table_lookup (M) - 0057
specialize prime_field_multiply_table_lookup (E) - 0058
specialize prime_field_multiply_table_lookup (a) - 0059
specialize prime_field_multiply_table_lookup (c) - 0060
specialize prime_field_multiply_table_lookup (y) - 0061
apply prime_field_multiply_table_lookup - 0062
exact hmultable - 0063
exact ha - 0064
exact hc - 0065
exact hatsecond - 0066
cases hsecond - 0067
cases hsecond_right - 0068
cases hsecond_right_right - 0069
specialize prime_field_left_distributive (p) - 0070
specialize prime_field_left_distributive (a) - 0071
specialize prime_field_left_distributive (b) - 0072
specialize prime_field_left_distributive (c) - 0073
specialize prime_field_left_distributive (s) - 0074
specialize prime_field_left_distributive (x) - 0075
specialize prime_field_left_distributive (y) - 0076
specialize prime_field_left_distributive (u) - 0077
specialize prime_field_left_distributive (v) - 0078
apply prime_field_left_distributive - 0079
exact hsum - 0080
specialize prime_field_multiply_table_lookup (p) - 0081
specialize prime_field_multiply_table_lookup (M) - 0082
specialize prime_field_multiply_table_lookup (E) - 0083
specialize prime_field_multiply_table_lookup (a) - 0084
specialize prime_field_multiply_table_lookup (s) - 0085
specialize prime_field_multiply_table_lookup (u) - 0086
apply prime_field_multiply_table_lookup - 0087
exact hmultable - 0088
exact ha - 0089
exact hsum_right_right_left - 0090
exact hatleft - 0091
exact hfirst - 0092
exact hsecond - 0093
specialize prime_field_add_table_lookup (p) - 0094
specialize prime_field_add_table_lookup (A) - 0095
specialize prime_field_add_table_lookup (D) - 0096
specialize prime_field_add_table_lookup (x) - 0097
specialize prime_field_add_table_lookup (y) - 0098
specialize prime_field_add_table_lookup (v) - 0099
apply prime_field_add_table_lookup - 0100
exact haddtable - 0101
exact hfirst_right_right_left - 0102
exact hsecond_right_right_left - 0103
exact hatright