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 F G pb pc nb nc qb qc mb mc l. ((F) = (((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) * S ((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) + ((((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))))) -> ((G) = (((((qb) + (qc)) * S ((qb) + (qc)) + ((qc) + (qc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))) * S ((((qb) + (qc)) * S ((qb) + (qc)) + ((qc) + (qc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))) + ((((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc))) + (((mb) + (mc)) * S ((mb) + (mc)) + ((mc) + (mc)))))) -> (forall dst_index_equal_codes dst_first_equal_codes dst_second_equal_codes. (exists pvs_gap_equal_codesbound. pvs_gap_equal_codesbound + S (dst_index_equal_codes) = (l)) -> (exists dst_positive_code_equal_codesfirst dst_positive_scale_equal_codesfirst dst_negative_code_equal_codesfirst dst_negative_scale_equal_codesfirst dst_positive_equal_codesfirst dst_negative_equal_codesfirst. (((F) = (((((dst_positive_code_equal_codesfirst) + (dst_positive_scale_equal_codesfirst)) * S ((dst_positive_code_equal_codesfirst) + (dst_positive_scale_equal_codesfirst)) + ((dst_positive_scale_equal_codesfirst) + (dst_positive_scale_equal_codesfirst))) + (((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) * S ((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) + ((dst_negative_scale_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)))) * S ((((dst_positive_code_equal_codesfirst) + (dst_positive_scale_equal_codesfirst)) * S ((dst_positive_code_equal_codesfirst) + (dst_positive_scale_equal_codesfirst)) + ((dst_positive_scale_equal_codesfirst) + (dst_positive_scale_equal_codesfirst))) + (((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) * S ((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) + ((dst_negative_scale_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)))) + ((((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) * S ((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) + ((dst_negative_scale_equal_codesfirst) + (dst_negative_scale_equal_codesfirst))) + (((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) * S ((dst_negative_code_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)) + ((dst_negative_scale_equal_codesfirst) + (dst_negative_scale_equal_codesfirst)))))) /\ (((((exists ff_h_pvs_equal_codesfirstpositive. ff_h_pvs_equal_codesfirstpositive + S (dst_positive_equal_codesfirst) = S ((S (dst_index_equal_codes)) * dst_positive_scale_equal_codesfirst)) /\ exists ff_q_pvs_equal_codesfirstpositive. dst_positive_code_equal_codesfirst = ff_q_pvs_equal_codesfirstpositive * S ((S (dst_index_equal_codes)) * dst_positive_scale_equal_codesfirst) + (dst_positive_equal_codesfirst))) /\ (((((exists ff_h_pvs_equal_codesfirstnegative. ff_h_pvs_equal_codesfirstnegative + S (dst_negative_equal_codesfirst) = S ((S (dst_index_equal_codes)) * dst_negative_scale_equal_codesfirst)) /\ exists ff_q_pvs_equal_codesfirstnegative. dst_negative_code_equal_codesfirst = ff_q_pvs_equal_codesfirstnegative * S ((S (dst_index_equal_codes)) * dst_negative_scale_equal_codesfirst) + (dst_negative_equal_codesfirst))) /\ (exists ge_balance_positive_equal_codesfirstvalue ge_balance_negative_equal_codesfirstvalue. (((((dst_first_equal_codes) = 2 * (ge_balance_positive_equal_codesfirstvalue) /\ (ge_balance_negative_equal_codesfirstvalue) = 0) \/ exists ge_signed_half_equal_codesfirstvaluedecode. (((dst_first_equal_codes) = 2 * ge_signed_half_equal_codesfirstvaluedecode + 1 /\ (ge_balance_positive_equal_codesfirstvalue) = 0) /\ (ge_balance_negative_equal_codesfirstvalue) = S ge_signed_half_equal_codesfirstvaluedecode))) /\ ((dst_positive_equal_codesfirst) + ge_balance_negative_equal_codesfirstvalue = (dst_negative_equal_codesfirst) + ge_balance_positive_equal_codesfirstvalue))))))))) -> (exists dst_positive_code_equal_codessecond dst_positive_scale_equal_codessecond dst_negative_code_equal_codessecond dst_negative_scale_equal_codessecond dst_positive_equal_codessecond dst_negative_equal_codessecond. (((G) = (((((dst_positive_code_equal_codessecond) + (dst_positive_scale_equal_codessecond)) * S ((dst_positive_code_equal_codessecond) + (dst_positive_scale_equal_codessecond)) + ((dst_positive_scale_equal_codessecond) + (dst_positive_scale_equal_codessecond))) + (((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) * S ((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) + ((dst_negative_scale_equal_codessecond) + (dst_negative_scale_equal_codessecond)))) * S ((((dst_positive_code_equal_codessecond) + (dst_positive_scale_equal_codessecond)) * S ((dst_positive_code_equal_codessecond) + (dst_positive_scale_equal_codessecond)) + ((dst_positive_scale_equal_codessecond) + (dst_positive_scale_equal_codessecond))) + (((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) * S ((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) + ((dst_negative_scale_equal_codessecond) + (dst_negative_scale_equal_codessecond)))) + ((((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) * S ((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) + ((dst_negative_scale_equal_codessecond) + (dst_negative_scale_equal_codessecond))) + (((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) * S ((dst_negative_code_equal_codessecond) + (dst_negative_scale_equal_codessecond)) + ((dst_negative_scale_equal_codessecond) + (dst_negative_scale_equal_codessecond)))))) /\ (((((exists ff_h_pvs_equal_codessecondpositive. ff_h_pvs_equal_codessecondpositive + S (dst_positive_equal_codessecond) = S ((S (dst_index_equal_codes)) * dst_positive_scale_equal_codessecond)) /\ exists ff_q_pvs_equal_codessecondpositive. dst_positive_code_equal_codessecond = ff_q_pvs_equal_codessecondpositive * S ((S (dst_index_equal_codes)) * dst_positive_scale_equal_codessecond) + (dst_positive_equal_codessecond))) /\ (((((exists ff_h_pvs_equal_codessecondnegative. ff_h_pvs_equal_codessecondnegative + S (dst_negative_equal_codessecond) = S ((S (dst_index_equal_codes)) * dst_negative_scale_equal_codessecond)) /\ exists ff_q_pvs_equal_codessecondnegative. dst_negative_code_equal_codessecond = ff_q_pvs_equal_codessecondnegative * S ((S (dst_index_equal_codes)) * dst_negative_scale_equal_codessecond) + (dst_negative_equal_codessecond))) /\ (exists ge_balance_positive_equal_codessecondvalue ge_balance_negative_equal_codessecondvalue. (((((dst_second_equal_codes) = 2 * (ge_balance_positive_equal_codessecondvalue) /\ (ge_balance_negative_equal_codessecondvalue) = 0) \/ exists ge_signed_half_equal_codessecondvaluedecode. (((dst_second_equal_codes) = 2 * ge_signed_half_equal_codessecondvaluedecode + 1 /\ (ge_balance_positive_equal_codessecondvalue) = 0) /\ (ge_balance_negative_equal_codessecondvalue) = S ge_signed_half_equal_codessecondvaluedecode))) /\ ((dst_positive_equal_codessecond) + ge_balance_negative_equal_codessecondvalue = (dst_negative_equal_codessecond) + ge_balance_positive_equal_codessecondvalue))))))))) -> dst_first_equal_codes = dst_second_equal_codes) -> (forall ics_index_equal_components ics_value0_equal_components ics_value1_equal_components ics_value2_equal_components ics_value3_equal_components. (exists ics_gap_equal_components_bound. ics_gap_equal_components_bound + S (ics_index_equal_components) = (l)) -> (((exists fs_h_ics_equal_components_at0. fs_h_ics_equal_components_at0 + S (ics_value0_equal_components) = S ((S (ics_index_equal_components)) * pc)) /\ exists fs_q_ics_equal_components_at0. pb = fs_q_ics_equal_components_at0 * S ((S (ics_index_equal_components)) * pc) + (ics_value0_equal_components))) -> (((exists fs_h_ics_equal_components_at1. fs_h_ics_equal_components_at1 + S (ics_value1_equal_components) = S ((S (ics_index_equal_components)) * nc)) /\ exists fs_q_ics_equal_components_at1. nb = fs_q_ics_equal_components_at1 * S ((S (ics_index_equal_components)) * nc) + (ics_value1_equal_components))) -> (((exists fs_h_ics_equal_components_at2. fs_h_ics_equal_components_at2 + S (ics_value2_equal_components) = S ((S (ics_index_equal_components)) * qc)) /\ exists fs_q_ics_equal_components_at2. qb = fs_q_ics_equal_components_at2 * S ((S (ics_index_equal_components)) * qc) + (ics_value2_equal_components))) -> (((exists fs_h_ics_equal_components_at3. fs_h_ics_equal_components_at3 + S (ics_value3_equal_components) = S ((S (ics_index_equal_components)) * mc)) /\ exists fs_q_ics_equal_components_at3. mb = fs_q_ics_equal_components_at3 * S ((S (ics_index_equal_components)) * mc) + (ics_value3_equal_components))) -> ics_value0_equal_components + ics_value3_equal_components = ics_value2_equal_components + ics_value1_equal_components)Constructive proof overview
Generated structural guide
Pointwise equality of canonical lookup values implies balanced integer equality of arbitrary component streams, without equating the components themselves.
The unchanged tactic script uses 3 declared prerequisites and contains 78 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
signed_balance_total Alpha theorem; checked-use authorized SS0001 divisor_signed_table_at_from_components gaussian_signed_balance_same_code 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.
Named ingredients (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–24
04Establish hxL25–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed balance total.
- L25
have hx : exists x. (exists ge_balance_positive_equal_first_value ge_balance_negative_equal_first_value. (((((x) = 2 * (ge_balance_positive_equal_first_value) /\ (ge_balance_negative_equal_first_value) = 0) \/ exists ge_signed_half_equal_first_valuedecode. (((x) = 2 * ge_signed_half_equal_first_valuedecode + 1 /\ (ge_balance_positive_equal_first_value) = 0) /\ (ge_balance_negative_equal_first_value) = S ge_signed_half_equal_first_valuedecode))) /\ ((p) + ge_balance_negative_equal_first_value = (n) + ge_balance_positive_equal_first_value))) - L26
specialize signed_balance_total (p) - L27
specialize signed_balance_total (n) - L28
apply signed_balance_total
05Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hx
06Establish hyL30–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed balance total.
- L30
have hy : exists y. (exists ge_balance_positive_equal_second_value ge_balance_negative_equal_second_value. (((((y) = 2 * (ge_balance_positive_equal_second_value) /\ (ge_balance_negative_equal_second_value) = 0) \/ exists ge_signed_half_equal_second_valuedecode. (((y) = 2 * ge_signed_half_equal_second_valuedecode + 1 /\ (ge_balance_positive_equal_second_value) = 0) /\ (ge_balance_negative_equal_second_value) = S ge_signed_half_equal_second_valuedecode))) /\ ((q) + ge_balance_negative_equal_second_value = (m) + ge_balance_positive_equal_second_value))) - L31
specialize signed_balance_total (q) - L32
specialize signed_balance_total (m) - L33
apply signed_balance_total
07Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
cases hy
08Establish heqL35–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hequal.
- L35
have heq : x = x1 - L36
specialize hequal (i) - L37
specialize hequal (x) - L38
specialize hequal (x1) - L39
apply hequal - L40
exact hi - L41
specialize divisor_signed_table_at_from_components (F) - L42
specialize divisor_signed_table_at_from_components (pb) - L43
specialize divisor_signed_table_at_from_components (pc) - L44
specialize divisor_signed_table_at_from_components (nb)
09Use earlier factsL45–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
specialize divisor_signed_table_at_from_components (nc) - L46
specialize divisor_signed_table_at_from_components (i) - L47
specialize divisor_signed_table_at_from_components (p) - L48
specialize divisor_signed_table_at_from_components (n) - L49
specialize divisor_signed_table_at_from_components (x) - L50
apply divisor_signed_table_at_from_components - L51
exact hF - L52
exact hp - L53
exact hn - L54
exact hx_witness
10Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize divisor_signed_table_at_from_components (G) - L56
specialize divisor_signed_table_at_from_components (qb) - L57
specialize divisor_signed_table_at_from_components (qc) - L58
specialize divisor_signed_table_at_from_components (mb) - L59
specialize divisor_signed_table_at_from_components (mc) - L60
specialize divisor_signed_table_at_from_components (i) - L61
specialize divisor_signed_table_at_from_components (q) - L62
specialize divisor_signed_table_at_from_components (m) - L63
specialize divisor_signed_table_at_from_components (x1) - L64
apply divisor_signed_table_at_from_components
11Use earlier factsL65–68
12Calculate and transport equalitiesL69–70
13Use earlier factsL71–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
specialize gaussian_signed_balance_same_code (x1) - L72
specialize gaussian_signed_balance_same_code (p) - L73
specialize gaussian_signed_balance_same_code (n) - L74
specialize gaussian_signed_balance_same_code (q) - L75
specialize gaussian_signed_balance_same_code (m) - L76
apply gaussian_signed_balance_same_code - L77
exact hx_witness - L78
exact hy_witness
Original exact command ledger · 78 lines
- 0001
intro F - 0002
intro G - 0003
intro pb - 0004
intro pc - 0005
intro nb - 0006
intro nc - 0007
intro qb - 0008
intro qc - 0009
intro mb - 0010
intro mc - 0011
intro l - 0012
intro hF - 0013
intro hG - 0014
intro hequal - 0015
intro i - 0016
intro p - 0017
intro n - 0018
intro q - 0019
intro m - 0020
intro hi - 0021
intro hp - 0022
intro hn - 0023
intro hq - 0024
intro hm - 0025
have hx : exists x. (exists ge_balance_positive_equal_first_value ge_balance_negative_equal_first_value. (((((x) = 2 * (ge_balance_positive_equal_first_value) /\ (ge_balance_negative_equal_first_value) = 0) \/ exists ge_signed_half_equal_first_valuedecode. (((x) = 2 * ge_signed_half_equal_first_valuedecode + 1 /\ (ge_balance_positive_equal_first_value) = 0) /\ (ge_balance_negative_equal_first_value) = S ge_signed_half_equal_first_valuedecode))) /\ ((p) + ge_balance_negative_equal_first_value = (n) + ge_balance_positive_equal_first_value))) - 0026
specialize signed_balance_total (p) - 0027
specialize signed_balance_total (n) - 0028
apply signed_balance_total - 0029
cases hx - 0030
have hy : exists y. (exists ge_balance_positive_equal_second_value ge_balance_negative_equal_second_value. (((((y) = 2 * (ge_balance_positive_equal_second_value) /\ (ge_balance_negative_equal_second_value) = 0) \/ exists ge_signed_half_equal_second_valuedecode. (((y) = 2 * ge_signed_half_equal_second_valuedecode + 1 /\ (ge_balance_positive_equal_second_value) = 0) /\ (ge_balance_negative_equal_second_value) = S ge_signed_half_equal_second_valuedecode))) /\ ((q) + ge_balance_negative_equal_second_value = (m) + ge_balance_positive_equal_second_value))) - 0031
specialize signed_balance_total (q) - 0032
specialize signed_balance_total (m) - 0033
apply signed_balance_total - 0034
cases hy - 0035
have heq : x = x1 - 0036
specialize hequal (i) - 0037
specialize hequal (x) - 0038
specialize hequal (x1) - 0039
apply hequal - 0040
exact hi - 0041
specialize divisor_signed_table_at_from_components (F) - 0042
specialize divisor_signed_table_at_from_components (pb) - 0043
specialize divisor_signed_table_at_from_components (pc) - 0044
specialize divisor_signed_table_at_from_components (nb) - 0045
specialize divisor_signed_table_at_from_components (nc) - 0046
specialize divisor_signed_table_at_from_components (i) - 0047
specialize divisor_signed_table_at_from_components (p) - 0048
specialize divisor_signed_table_at_from_components (n) - 0049
specialize divisor_signed_table_at_from_components (x) - 0050
apply divisor_signed_table_at_from_components - 0051
exact hF - 0052
exact hp - 0053
exact hn - 0054
exact hx_witness - 0055
specialize divisor_signed_table_at_from_components (G) - 0056
specialize divisor_signed_table_at_from_components (qb) - 0057
specialize divisor_signed_table_at_from_components (qc) - 0058
specialize divisor_signed_table_at_from_components (mb) - 0059
specialize divisor_signed_table_at_from_components (mc) - 0060
specialize divisor_signed_table_at_from_components (i) - 0061
specialize divisor_signed_table_at_from_components (q) - 0062
specialize divisor_signed_table_at_from_components (m) - 0063
specialize divisor_signed_table_at_from_components (x1) - 0064
apply divisor_signed_table_at_from_components - 0065
exact hG - 0066
exact hq - 0067
exact hm - 0068
exact hy_witness - 0069
rewrite heq at hx_witness - 0070
rewrite heq at hx_witness - 0071
specialize gaussian_signed_balance_same_code (x1) - 0072
specialize gaussian_signed_balance_same_code (p) - 0073
specialize gaussian_signed_balance_same_code (n) - 0074
specialize gaussian_signed_balance_same_code (q) - 0075
specialize gaussian_signed_balance_same_code (m) - 0076
apply gaussian_signed_balance_same_code - 0077
exact hx_witness - 0078
exact hy_witness