Exact expanded first-order arithmetic statement
forall p a b c x y u v. (((exists pfa_gap_multiplyassoc_firstleft. pfa_gap_multiplyassoc_firstleft + S (a) = (p)) /\ (((exists pfa_gap_multiplyassoc_firstright. pfa_gap_multiplyassoc_firstright + S (b) = (p)) /\ ((((exists pfa_gap_multiplyassoc_firstresultbound. pfa_gap_multiplyassoc_firstresultbound + S (x) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_firstresultcongruence pfa_offset_right_multiplyassoc_firstresultcongruence. ((a) * (b)) + (p) * pfa_offset_left_multiplyassoc_firstresultcongruence = (x) + (p) * pfa_offset_right_multiplyassoc_firstresultcongruence))))))))) -> (((exists pfa_gap_multiplyassoc_leftleft. pfa_gap_multiplyassoc_leftleft + S (x) = (p)) /\ (((exists pfa_gap_multiplyassoc_leftright. pfa_gap_multiplyassoc_leftright + S (c) = (p)) /\ ((((exists pfa_gap_multiplyassoc_leftresultbound. pfa_gap_multiplyassoc_leftresultbound + S (u) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_leftresultcongruence pfa_offset_right_multiplyassoc_leftresultcongruence. ((x) * (c)) + (p) * pfa_offset_left_multiplyassoc_leftresultcongruence = (u) + (p) * pfa_offset_right_multiplyassoc_leftresultcongruence))))))))) -> (((exists pfa_gap_multiplyassoc_secondleft. pfa_gap_multiplyassoc_secondleft + S (b) = (p)) /\ (((exists pfa_gap_multiplyassoc_secondright. pfa_gap_multiplyassoc_secondright + S (c) = (p)) /\ ((((exists pfa_gap_multiplyassoc_secondresultbound. pfa_gap_multiplyassoc_secondresultbound + S (y) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_secondresultcongruence pfa_offset_right_multiplyassoc_secondresultcongruence. ((b) * (c)) + (p) * pfa_offset_left_multiplyassoc_secondresultcongruence = (y) + (p) * pfa_offset_right_multiplyassoc_secondresultcongruence))))))))) -> (((exists pfa_gap_multiplyassoc_rightleft. pfa_gap_multiplyassoc_rightleft + S (a) = (p)) /\ (((exists pfa_gap_multiplyassoc_rightright. pfa_gap_multiplyassoc_rightright + S (y) = (p)) /\ ((((exists pfa_gap_multiplyassoc_rightresultbound. pfa_gap_multiplyassoc_rightresultbound + S (v) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_rightresultcongruence pfa_offset_right_multiplyassoc_rightresultcongruence. ((a) * (y)) + (p) * pfa_offset_left_multiplyassoc_rightresultcongruence = (v) + (p) * pfa_offset_right_multiplyassoc_rightresultcongruence))))))))) -> u = vConstructive proof overview
Generated structural guide
Both bracketings of three canonical multiply operands give the same actual result.
The unchanged tactic script uses 6 declared prerequisites and contains 78 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
mod_eq_mul Alpha theorem; checked-use authorized mod_eq_refl Alpha theorem; checked-use authorized mod_eq_trans Alpha theorem; checked-use authorized mul_assoc Alpha theorem; checked-use authorized binary_canonical_residue_functional Alpha theorem; checked-use authorized FP0004 prime_field_residue_input_equalDirect 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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–12
03Separate the logical casesL13–22
04Separate the logical casesL23–24
05Establish hlL25–25
Establish this local claim before using it. It is not an additional assumption.
- L25
have hl : ((exists pfa_gap_multiplyassoc_raw_leftbound. pfa_gap_multiplyassoc_raw_leftbound + S (u) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_raw_leftcongruence pfa_offset_right_multiplyassoc_raw_leftcongruence. ((a * b) * c) + (p) * pfa_offset_left_multiplyassoc_raw_leftcongruence = (u) + (p) * pfa_offset_right_multiplyassoc_raw_leftcongruence)))
06Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
split
07Use earlier factsL27–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L27
exact hleft_right_right_left - L28
specialize mod_eq_trans (p) - L29
specialize mod_eq_trans ((a * b) * c) - L30
specialize mod_eq_trans (x * c) - L31
specialize mod_eq_trans (u) - L32
apply mod_eq_trans - L33
specialize mod_eq_mul (p) - L34
specialize mod_eq_mul (a * b) - L35
specialize mod_eq_mul (x) - L36
specialize mod_eq_mul (c)
08Use earlier factsL37–43
09Establish hrL44–44
Establish this local claim before using it. It is not an additional assumption.
- L44
have hr : ((exists pfa_gap_multiplyassoc_raw_rightbound. pfa_gap_multiplyassoc_raw_rightbound + S (v) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_raw_rightcongruence pfa_offset_right_multiplyassoc_raw_rightcongruence. (a * (b * c)) + (p) * pfa_offset_left_multiplyassoc_raw_rightcongruence = (v) + (p) * pfa_offset_right_multiplyassoc_raw_rightcongruence)))
10Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
split
11Use earlier factsL46–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L46
exact hright_right_right_left - L47
specialize mod_eq_trans (p) - L48
specialize mod_eq_trans (a * (b * c)) - L49
specialize mod_eq_trans (a * y) - L50
specialize mod_eq_trans (v) - L51
apply mod_eq_trans - L52
specialize mod_eq_mul (p) - L53
specialize mod_eq_mul (a) - L54
specialize mod_eq_mul (a) - L55
specialize mod_eq_mul (b * c)
12Use earlier factsL56–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
specialize mod_eq_mul (y) - L57
apply mod_eq_mul - L58
specialize mod_eq_refl (p) - L59
specialize mod_eq_refl (a) - L60
apply mod_eq_refl - L61
exact hsecond_right_right_right - L62
exact hright_right_right_right - L63
specialize binary_canonical_residue_functional (p) - L64
specialize binary_canonical_residue_functional ((a * b) * c) - L65
specialize binary_canonical_residue_functional (u)
13Use earlier factsL66–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L66
specialize binary_canonical_residue_functional (v) - L67
apply binary_canonical_residue_functional - L68
exact hl - L69
specialize prime_field_residue_input_equal (p) - L70
specialize prime_field_residue_input_equal ((a * b) * c) - L71
specialize prime_field_residue_input_equal (a * (b * c)) - L72
specialize prime_field_residue_input_equal (v) - L73
apply prime_field_residue_input_equal - L74
specialize mul_assoc (a) - L75
specialize mul_assoc (b)
Original exact command ledger · 78 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro c - 0005
intro x - 0006
intro y - 0007
intro u - 0008
intro v - 0009
intro hfirst - 0010
intro hleft - 0011
intro hsecond - 0012
intro hright - 0013
cases hfirst - 0014
cases hfirst_right - 0015
cases hfirst_right_right - 0016
cases hleft - 0017
cases hleft_right - 0018
cases hleft_right_right - 0019
cases hsecond - 0020
cases hsecond_right - 0021
cases hsecond_right_right - 0022
cases hright - 0023
cases hright_right - 0024
cases hright_right_right - 0025
have hl : ((exists pfa_gap_multiplyassoc_raw_leftbound. pfa_gap_multiplyassoc_raw_leftbound + S (u) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_raw_leftcongruence pfa_offset_right_multiplyassoc_raw_leftcongruence. ((a * b) * c) + (p) * pfa_offset_left_multiplyassoc_raw_leftcongruence = (u) + (p) * pfa_offset_right_multiplyassoc_raw_leftcongruence))) - 0026
split - 0027
exact hleft_right_right_left - 0028
specialize mod_eq_trans (p) - 0029
specialize mod_eq_trans ((a * b) * c) - 0030
specialize mod_eq_trans (x * c) - 0031
specialize mod_eq_trans (u) - 0032
apply mod_eq_trans - 0033
specialize mod_eq_mul (p) - 0034
specialize mod_eq_mul (a * b) - 0035
specialize mod_eq_mul (x) - 0036
specialize mod_eq_mul (c) - 0037
specialize mod_eq_mul (c) - 0038
apply mod_eq_mul - 0039
exact hfirst_right_right_right - 0040
specialize mod_eq_refl (p) - 0041
specialize mod_eq_refl (c) - 0042
apply mod_eq_refl - 0043
exact hleft_right_right_right - 0044
have hr : ((exists pfa_gap_multiplyassoc_raw_rightbound. pfa_gap_multiplyassoc_raw_rightbound + S (v) = (p)) /\ ((exists pfa_offset_left_multiplyassoc_raw_rightcongruence pfa_offset_right_multiplyassoc_raw_rightcongruence. (a * (b * c)) + (p) * pfa_offset_left_multiplyassoc_raw_rightcongruence = (v) + (p) * pfa_offset_right_multiplyassoc_raw_rightcongruence))) - 0045
split - 0046
exact hright_right_right_left - 0047
specialize mod_eq_trans (p) - 0048
specialize mod_eq_trans (a * (b * c)) - 0049
specialize mod_eq_trans (a * y) - 0050
specialize mod_eq_trans (v) - 0051
apply mod_eq_trans - 0052
specialize mod_eq_mul (p) - 0053
specialize mod_eq_mul (a) - 0054
specialize mod_eq_mul (a) - 0055
specialize mod_eq_mul (b * c) - 0056
specialize mod_eq_mul (y) - 0057
apply mod_eq_mul - 0058
specialize mod_eq_refl (p) - 0059
specialize mod_eq_refl (a) - 0060
apply mod_eq_refl - 0061
exact hsecond_right_right_right - 0062
exact hright_right_right_right - 0063
specialize binary_canonical_residue_functional (p) - 0064
specialize binary_canonical_residue_functional ((a * b) * c) - 0065
specialize binary_canonical_residue_functional (u) - 0066
specialize binary_canonical_residue_functional (v) - 0067
apply binary_canonical_residue_functional - 0068
exact hl - 0069
specialize prime_field_residue_input_equal (p) - 0070
specialize prime_field_residue_input_equal ((a * b) * c) - 0071
specialize prime_field_residue_input_equal (a * (b * c)) - 0072
specialize prime_field_residue_input_equal (v) - 0073
apply prime_field_residue_input_equal - 0074
specialize mul_assoc (a) - 0075
specialize mul_assoc (b) - 0076
specialize mul_assoc (c) - 0077
apply mul_assoc - 0078
exact hr