Exact expanded first-order arithmetic statement
forall p A D M E a b c s x y u v. (forall pft_index_righttable_distributive_add. (exists pfa_gap_righttable_distributive_addprefix. pfa_gap_righttable_distributive_addprefix + S (pft_index_righttable_distributive_add) = ((p) * (p))) -> exists pft_value_righttable_distributive_add. (((((exists ff_h_pft_righttable_distributive_addpointentry. ff_h_pft_righttable_distributive_addpointentry + S (pft_value_righttable_distributive_add) = S ((S (pft_index_righttable_distributive_add)) * D)) /\ exists ff_q_pft_righttable_distributive_addpointentry. A = ff_q_pft_righttable_distributive_addpointentry * S ((S (pft_index_righttable_distributive_add)) * D) + (pft_value_righttable_distributive_add))) /\ ((exists pft_row_righttable_distributive_addpointvalue pft_column_righttable_distributive_addpointvalue. (((pft_index_righttable_distributive_add) = pft_row_righttable_distributive_addpointvalue * (p) + pft_column_righttable_distributive_addpointvalue) /\ ((((exists pfa_gap_righttable_distributive_addpointvalueoperationleft. pfa_gap_righttable_distributive_addpointvalueoperationleft + S (pft_row_righttable_distributive_addpointvalue) = (p)) /\ (((exists pfa_gap_righttable_distributive_addpointvalueoperationright. pfa_gap_righttable_distributive_addpointvalueoperationright + S (pft_column_righttable_distributive_addpointvalue) = (p)) /\ ((((exists pfa_gap_righttable_distributive_addpointvalueoperationresultbound. pfa_gap_righttable_distributive_addpointvalueoperationresultbound + S (pft_value_righttable_distributive_add) = (p)) /\ ((exists pfa_offset_left_righttable_distributive_addpointvalueoperationresultcongruence pfa_offset_right_righttable_distributive_addpointvalueoperationresultcongruence. ((pft_row_righttable_distributive_addpointvalue) + (pft_column_righttable_distributive_addpointvalue)) + (p) * pfa_offset_left_righttable_distributive_addpointvalueoperationresultcongruence = (pft_value_righttable_distributive_add) + (p) * pfa_offset_right_righttable_distributive_addpointvalueoperationresultcongruence)))))))))))))))) -> (forall pft_index_righttable_distributive_mul. (exists pfa_gap_righttable_distributive_mulprefix. pfa_gap_righttable_distributive_mulprefix + S (pft_index_righttable_distributive_mul) = ((p) * (p))) -> exists pft_value_righttable_distributive_mul. (((((exists ff_h_pft_righttable_distributive_mulpointentry. ff_h_pft_righttable_distributive_mulpointentry + S (pft_value_righttable_distributive_mul) = S ((S (pft_index_righttable_distributive_mul)) * E)) /\ exists ff_q_pft_righttable_distributive_mulpointentry. M = ff_q_pft_righttable_distributive_mulpointentry * S ((S (pft_index_righttable_distributive_mul)) * E) + (pft_value_righttable_distributive_mul))) /\ ((exists pft_row_righttable_distributive_mulpointvalue pft_column_righttable_distributive_mulpointvalue. (((pft_index_righttable_distributive_mul) = pft_row_righttable_distributive_mulpointvalue * (p) + pft_column_righttable_distributive_mulpointvalue) /\ ((((exists pfa_gap_righttable_distributive_mulpointvalueoperationleft. pfa_gap_righttable_distributive_mulpointvalueoperationleft + S (pft_row_righttable_distributive_mulpointvalue) = (p)) /\ (((exists pfa_gap_righttable_distributive_mulpointvalueoperationright. pfa_gap_righttable_distributive_mulpointvalueoperationright + S (pft_column_righttable_distributive_mulpointvalue) = (p)) /\ ((((exists pfa_gap_righttable_distributive_mulpointvalueoperationresultbound. pfa_gap_righttable_distributive_mulpointvalueoperationresultbound + S (pft_value_righttable_distributive_mul) = (p)) /\ ((exists pfa_offset_left_righttable_distributive_mulpointvalueoperationresultcongruence pfa_offset_right_righttable_distributive_mulpointvalueoperationresultcongruence. ((pft_row_righttable_distributive_mulpointvalue) * (pft_column_righttable_distributive_mulpointvalue)) + (p) * pfa_offset_left_righttable_distributive_mulpointvalueoperationresultcongruence = (pft_value_righttable_distributive_mul) + (p) * pfa_offset_right_righttable_distributive_mulpointvalueoperationresultcongruence)))))))))))))))) -> (exists pfa_gap_righttable_distributive_a. pfa_gap_righttable_distributive_a + S (a) = (p)) -> (exists pfa_gap_righttable_distributive_b. pfa_gap_righttable_distributive_b + S (b) = (p)) -> (exists pfa_gap_righttable_distributive_c. pfa_gap_righttable_distributive_c + S (c) = (p)) -> (((exists ff_h_pft_righttable_distributive_sum. ff_h_pft_righttable_distributive_sum + S (s) = S ((S (b*p+c)) * D)) /\ exists ff_q_pft_righttable_distributive_sum. A = ff_q_pft_righttable_distributive_sum * S ((S (b*p+c)) * D) + (s))) -> (((exists ff_h_pft_righttable_distributive_left. ff_h_pft_righttable_distributive_left + S (u) = S ((S (s*p+a)) * E)) /\ exists ff_q_pft_righttable_distributive_left. M = ff_q_pft_righttable_distributive_left * S ((S (s*p+a)) * E) + (u))) -> (((exists ff_h_pft_righttable_distributive_first. ff_h_pft_righttable_distributive_first + S (x) = S ((S (b*p+a)) * E)) /\ exists ff_q_pft_righttable_distributive_first. M = ff_q_pft_righttable_distributive_first * S ((S (b*p+a)) * E) + (x))) -> (((exists ff_h_pft_righttable_distributive_second. ff_h_pft_righttable_distributive_second + S (y) = S ((S (c*p+a)) * E)) /\ exists ff_q_pft_righttable_distributive_second. M = ff_q_pft_righttable_distributive_second * S ((S (c*p+a)) * E) + (y))) -> (((exists ff_h_pft_righttable_distributive_right. ff_h_pft_righttable_distributive_right + S (v) = S ((S (x*p+y)) * D)) /\ exists ff_q_pft_righttable_distributive_right. A = ff_q_pft_righttable_distributive_right * S ((S (x*p+y)) * D) + (v))) -> u = vConstructive proof overview
Generated structural guide
Actual finite addition and multiplication table entries satisfy right 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 FP0013 prime_field_right_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_righttable_sum_graphleft. pfa_gap_righttable_sum_graphleft + S (b) = (p)) /\ (((exists pfa_gap_righttable_sum_graphright. pfa_gap_righttable_sum_graphright + S (c) = (p)) /\ ((((exists pfa_gap_righttable_sum_graphresultbound. pfa_gap_righttable_sum_graphresultbound + S (s) = (p)) /\ ((exists pfa_offset_left_righttable_sum_graphresultcongruence pfa_offset_right_righttable_sum_graphresultcongruence. ((b) + (c)) + (p) * pfa_offset_left_righttable_sum_graphresultcongruence = (s) + (p) * pfa_offset_right_righttable_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_righthfirstgraphleft. pfa_gap_righthfirstgraphleft + S (b) = (p)) /\ (((exists pfa_gap_righthfirstgraphright. pfa_gap_righthfirstgraphright + S (a) = (p)) /\ ((((exists pfa_gap_righthfirstgraphresultbound. pfa_gap_righthfirstgraphresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_righthfirstgraphresultcongruence pfa_offset_right_righthfirstgraphresultcongruence. ((b) * (a)) + (p) * pfa_offset_left_righthfirstgraphresultcongruence = (x) + (p) * pfa_offset_right_righthfirstgraphresultcongruence)))))))) - 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 (b) - L44
specialize prime_field_multiply_table_lookup (a) - L45
specialize prime_field_multiply_table_lookup (x) - L46
apply prime_field_multiply_table_lookup - L47
exact hmultable - L48
exact hb
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_righthsecondgraphleft. pfa_gap_righthsecondgraphleft + S (c) = (p)) /\ (((exists pfa_gap_righthsecondgraphright. pfa_gap_righthsecondgraphright + S (a) = (p)) /\ ((((exists pfa_gap_righthsecondgraphresultbound. pfa_gap_righthsecondgraphresultbound + S (y) = (p)) /\ ((exists pfa_offset_left_righthsecondgraphresultcongruence pfa_offset_right_righthsecondgraphresultcongruence. ((c) * (a)) + (p) * pfa_offset_left_righthsecondgraphresultcongruence = (y) + (p) * pfa_offset_right_righthsecondgraphresultcongruence)))))))) - 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 (c) - L59
specialize prime_field_multiply_table_lookup (a) - L60
specialize prime_field_multiply_table_lookup (y) - L61
apply prime_field_multiply_table_lookup - L62
exact hmultable - L63
exact hc
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_right_distributive (p) - L70
specialize prime_field_right_distributive (a) - L71
specialize prime_field_right_distributive (b) - L72
specialize prime_field_right_distributive (c) - L73
specialize prime_field_right_distributive (s) - L74
specialize prime_field_right_distributive (x) - L75
specialize prime_field_right_distributive (y) - L76
specialize prime_field_right_distributive (u) - L77
specialize prime_field_right_distributive (v) - L78
apply prime_field_right_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 (s) - L84
specialize prime_field_multiply_table_lookup (a) - L85
specialize prime_field_multiply_table_lookup (u) - L86
apply prime_field_multiply_table_lookup - L87
exact hmultable - L88
exact hsum_right_right_left
15Use earlier factsL89–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact ha - 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_righttable_sum_graphleft. pfa_gap_righttable_sum_graphleft + S (b) = (p)) /\ (((exists pfa_gap_righttable_sum_graphright. pfa_gap_righttable_sum_graphright + S (c) = (p)) /\ ((((exists pfa_gap_righttable_sum_graphresultbound. pfa_gap_righttable_sum_graphresultbound + S (s) = (p)) /\ ((exists pfa_offset_left_righttable_sum_graphresultcongruence pfa_offset_right_righttable_sum_graphresultcongruence. ((b) + (c)) + (p) * pfa_offset_left_righttable_sum_graphresultcongruence = (s) + (p) * pfa_offset_right_righttable_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_righthfirstgraphleft. pfa_gap_righthfirstgraphleft + S (b) = (p)) /\ (((exists pfa_gap_righthfirstgraphright. pfa_gap_righthfirstgraphright + S (a) = (p)) /\ ((((exists pfa_gap_righthfirstgraphresultbound. pfa_gap_righthfirstgraphresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_righthfirstgraphresultcongruence pfa_offset_right_righthfirstgraphresultcongruence. ((b) * (a)) + (p) * pfa_offset_left_righthfirstgraphresultcongruence = (x) + (p) * pfa_offset_right_righthfirstgraphresultcongruence)))))))) - 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 (b) - 0044
specialize prime_field_multiply_table_lookup (a) - 0045
specialize prime_field_multiply_table_lookup (x) - 0046
apply prime_field_multiply_table_lookup - 0047
exact hmultable - 0048
exact hb - 0049
exact ha - 0050
exact hatfirst - 0051
cases hfirst - 0052
cases hfirst_right - 0053
cases hfirst_right_right - 0054
have hsecond : ((exists pfa_gap_righthsecondgraphleft. pfa_gap_righthsecondgraphleft + S (c) = (p)) /\ (((exists pfa_gap_righthsecondgraphright. pfa_gap_righthsecondgraphright + S (a) = (p)) /\ ((((exists pfa_gap_righthsecondgraphresultbound. pfa_gap_righthsecondgraphresultbound + S (y) = (p)) /\ ((exists pfa_offset_left_righthsecondgraphresultcongruence pfa_offset_right_righthsecondgraphresultcongruence. ((c) * (a)) + (p) * pfa_offset_left_righthsecondgraphresultcongruence = (y) + (p) * pfa_offset_right_righthsecondgraphresultcongruence)))))))) - 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 (c) - 0059
specialize prime_field_multiply_table_lookup (a) - 0060
specialize prime_field_multiply_table_lookup (y) - 0061
apply prime_field_multiply_table_lookup - 0062
exact hmultable - 0063
exact hc - 0064
exact ha - 0065
exact hatsecond - 0066
cases hsecond - 0067
cases hsecond_right - 0068
cases hsecond_right_right - 0069
specialize prime_field_right_distributive (p) - 0070
specialize prime_field_right_distributive (a) - 0071
specialize prime_field_right_distributive (b) - 0072
specialize prime_field_right_distributive (c) - 0073
specialize prime_field_right_distributive (s) - 0074
specialize prime_field_right_distributive (x) - 0075
specialize prime_field_right_distributive (y) - 0076
specialize prime_field_right_distributive (u) - 0077
specialize prime_field_right_distributive (v) - 0078
apply prime_field_right_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 (s) - 0084
specialize prime_field_multiply_table_lookup (a) - 0085
specialize prime_field_multiply_table_lookup (u) - 0086
apply prime_field_multiply_table_lookup - 0087
exact hmultable - 0088
exact hsum_right_right_left - 0089
exact ha - 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