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 a b c bc ab ac out. (exists dsa_ap_scalar_intro_sum dsa_an_scalar_intro_sum dsa_bp_scalar_intro_sum dsa_bn_scalar_intro_sum dsa_cp_scalar_intro_sum dsa_cn_scalar_intro_sum. (((((b) = 2 * (dsa_ap_scalar_intro_sum) /\ (dsa_an_scalar_intro_sum) = 0) \/ exists ge_signed_half_scalar_intro_sumleft. (((b) = 2 * ge_signed_half_scalar_intro_sumleft + 1 /\ (dsa_ap_scalar_intro_sum) = 0) /\ (dsa_an_scalar_intro_sum) = S ge_signed_half_scalar_intro_sumleft))) /\ ((((((c) = 2 * (dsa_bp_scalar_intro_sum) /\ (dsa_bn_scalar_intro_sum) = 0) \/ exists ge_signed_half_scalar_intro_sumright. (((c) = 2 * ge_signed_half_scalar_intro_sumright + 1 /\ (dsa_bp_scalar_intro_sum) = 0) /\ (dsa_bn_scalar_intro_sum) = S ge_signed_half_scalar_intro_sumright))) /\ ((((((bc) = 2 * (dsa_cp_scalar_intro_sum) /\ (dsa_cn_scalar_intro_sum) = 0) \/ exists ge_signed_half_scalar_intro_sumoutput. (((bc) = 2 * ge_signed_half_scalar_intro_sumoutput + 1 /\ (dsa_cp_scalar_intro_sum) = 0) /\ (dsa_cn_scalar_intro_sum) = S ge_signed_half_scalar_intro_sumoutput))) /\ ((dsa_ap_scalar_intro_sum + dsa_bp_scalar_intro_sum) + dsa_cn_scalar_intro_sum = (dsa_an_scalar_intro_sum + dsa_bn_scalar_intro_sum) + dsa_cp_scalar_intro_sum))))))) -> (exists sto_ap_scalar_intro_left sto_an_scalar_intro_left sto_bp_scalar_intro_left sto_bn_scalar_intro_left sto_cp_scalar_intro_left sto_cn_scalar_intro_left. (((((a) = 2 * (sto_ap_scalar_intro_left) /\ (sto_an_scalar_intro_left) = 0) \/ exists ge_signed_half_scalar_intro_leftleft. (((a) = 2 * ge_signed_half_scalar_intro_leftleft + 1 /\ (sto_ap_scalar_intro_left) = 0) /\ (sto_an_scalar_intro_left) = S ge_signed_half_scalar_intro_leftleft))) /\ ((((((b) = 2 * (sto_bp_scalar_intro_left) /\ (sto_bn_scalar_intro_left) = 0) \/ exists ge_signed_half_scalar_intro_leftright. (((b) = 2 * ge_signed_half_scalar_intro_leftright + 1 /\ (sto_bp_scalar_intro_left) = 0) /\ (sto_bn_scalar_intro_left) = S ge_signed_half_scalar_intro_leftright))) /\ ((((((ab) = 2 * (sto_cp_scalar_intro_left) /\ (sto_cn_scalar_intro_left) = 0) \/ exists ge_signed_half_scalar_intro_leftoutput. (((ab) = 2 * ge_signed_half_scalar_intro_leftoutput + 1 /\ (sto_cp_scalar_intro_left) = 0) /\ (sto_cn_scalar_intro_left) = S ge_signed_half_scalar_intro_leftoutput))) /\ ((sto_ap_scalar_intro_left * sto_bp_scalar_intro_left + sto_an_scalar_intro_left * sto_bn_scalar_intro_left) + sto_cn_scalar_intro_left = (sto_ap_scalar_intro_left * sto_bn_scalar_intro_left + sto_an_scalar_intro_left * sto_bp_scalar_intro_left) + sto_cp_scalar_intro_left))))))) -> (exists sto_ap_scalar_intro_right sto_an_scalar_intro_right sto_bp_scalar_intro_right sto_bn_scalar_intro_right sto_cp_scalar_intro_right sto_cn_scalar_intro_right. (((((a) = 2 * (sto_ap_scalar_intro_right) /\ (sto_an_scalar_intro_right) = 0) \/ exists ge_signed_half_scalar_intro_rightleft. (((a) = 2 * ge_signed_half_scalar_intro_rightleft + 1 /\ (sto_ap_scalar_intro_right) = 0) /\ (sto_an_scalar_intro_right) = S ge_signed_half_scalar_intro_rightleft))) /\ ((((((c) = 2 * (sto_bp_scalar_intro_right) /\ (sto_bn_scalar_intro_right) = 0) \/ exists ge_signed_half_scalar_intro_rightright. (((c) = 2 * ge_signed_half_scalar_intro_rightright + 1 /\ (sto_bp_scalar_intro_right) = 0) /\ (sto_bn_scalar_intro_right) = S ge_signed_half_scalar_intro_rightright))) /\ ((((((ac) = 2 * (sto_cp_scalar_intro_right) /\ (sto_cn_scalar_intro_right) = 0) \/ exists ge_signed_half_scalar_intro_rightoutput. (((ac) = 2 * ge_signed_half_scalar_intro_rightoutput + 1 /\ (sto_cp_scalar_intro_right) = 0) /\ (sto_cn_scalar_intro_right) = S ge_signed_half_scalar_intro_rightoutput))) /\ ((sto_ap_scalar_intro_right * sto_bp_scalar_intro_right + sto_an_scalar_intro_right * sto_bn_scalar_intro_right) + sto_cn_scalar_intro_right = (sto_ap_scalar_intro_right * sto_bn_scalar_intro_right + sto_an_scalar_intro_right * sto_bp_scalar_intro_right) + sto_cp_scalar_intro_right))))))) -> (exists dsa_ap_scalar_intro_result dsa_an_scalar_intro_result dsa_bp_scalar_intro_result dsa_bn_scalar_intro_result dsa_cp_scalar_intro_result dsa_cn_scalar_intro_result. (((((ab) = 2 * (dsa_ap_scalar_intro_result) /\ (dsa_an_scalar_intro_result) = 0) \/ exists ge_signed_half_scalar_intro_resultleft. (((ab) = 2 * ge_signed_half_scalar_intro_resultleft + 1 /\ (dsa_ap_scalar_intro_result) = 0) /\ (dsa_an_scalar_intro_result) = S ge_signed_half_scalar_intro_resultleft))) /\ ((((((ac) = 2 * (dsa_bp_scalar_intro_result) /\ (dsa_bn_scalar_intro_result) = 0) \/ exists ge_signed_half_scalar_intro_resultright. (((ac) = 2 * ge_signed_half_scalar_intro_resultright + 1 /\ (dsa_bp_scalar_intro_result) = 0) /\ (dsa_bn_scalar_intro_result) = S ge_signed_half_scalar_intro_resultright))) /\ ((((((out) = 2 * (dsa_cp_scalar_intro_result) /\ (dsa_cn_scalar_intro_result) = 0) \/ exists ge_signed_half_scalar_intro_resultoutput. (((out) = 2 * ge_signed_half_scalar_intro_resultoutput + 1 /\ (dsa_cp_scalar_intro_result) = 0) /\ (dsa_cn_scalar_intro_result) = S ge_signed_half_scalar_intro_resultoutput))) /\ ((dsa_ap_scalar_intro_result + dsa_bp_scalar_intro_result) + dsa_cn_scalar_intro_result = (dsa_an_scalar_intro_result + dsa_bn_scalar_intro_result) + dsa_cp_scalar_intro_result))))))) -> (exists sto_ap_scalar_intro_target sto_an_scalar_intro_target sto_bp_scalar_intro_target sto_bn_scalar_intro_target sto_cp_scalar_intro_target sto_cn_scalar_intro_target. (((((a) = 2 * (sto_ap_scalar_intro_target) /\ (sto_an_scalar_intro_target) = 0) \/ exists ge_signed_half_scalar_intro_targetleft. (((a) = 2 * ge_signed_half_scalar_intro_targetleft + 1 /\ (sto_ap_scalar_intro_target) = 0) /\ (sto_an_scalar_intro_target) = S ge_signed_half_scalar_intro_targetleft))) /\ ((((((bc) = 2 * (sto_bp_scalar_intro_target) /\ (sto_bn_scalar_intro_target) = 0) \/ exists ge_signed_half_scalar_intro_targetright. (((bc) = 2 * ge_signed_half_scalar_intro_targetright + 1 /\ (sto_bp_scalar_intro_target) = 0) /\ (sto_bn_scalar_intro_target) = S ge_signed_half_scalar_intro_targetright))) /\ ((((((out) = 2 * (sto_cp_scalar_intro_target) /\ (sto_cn_scalar_intro_target) = 0) \/ exists ge_signed_half_scalar_intro_targetoutput. (((out) = 2 * ge_signed_half_scalar_intro_targetoutput + 1 /\ (sto_cp_scalar_intro_target) = 0) /\ (sto_cn_scalar_intro_target) = S ge_signed_half_scalar_intro_targetoutput))) /\ ((sto_ap_scalar_intro_target * sto_bp_scalar_intro_target + sto_an_scalar_intro_target * sto_bn_scalar_intro_target) + sto_cn_scalar_intro_target = (sto_ap_scalar_intro_target * sto_bn_scalar_intro_target + sto_an_scalar_intro_target * sto_bp_scalar_intro_target) + sto_cp_scalar_intro_target)))))))Constructive proof overview
Generated structural guide
An actual sum of the two scalar products is the actual scalar multiple of the sum; no product witness or distributivity oracle is assumed.
The unchanged tactic script uses 3 declared prerequisites and contains 38 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
signed_mul_total Alpha theorem; checked-use authorized signed_mul_left_distributive Alpha theorem; checked-use authorized signed_add_functional 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 hout
03Establish hwL12–15
04Separate the logical casesL16–16
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
cases hw
05Establish heqL17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed add functional.
- L17
have heq : x = out - L18
specialize signed_add_functional (ab) - L19
specialize signed_add_functional (ac) - L20
specialize signed_add_functional (x) - L21
specialize signed_add_functional (out) - L22
apply signed_add_functional - L23
specialize signed_mul_left_distributive (a) - L24
specialize signed_mul_left_distributive (b) - L25
specialize signed_mul_left_distributive (c) - L26
specialize signed_mul_left_distributive (bc)
06Use earlier factsL27–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
07Calculate and transport equalitiesL36–37
08Use earlier factsL38–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L38
exact hw_witness
Original exact command ledger · 38 lines
- 0001
intro a - 0002
intro b - 0003
intro c - 0004
intro bc - 0005
intro ab - 0006
intro ac - 0007
intro out - 0008
intro hbc - 0009
intro hab - 0010
intro hac - 0011
intro hout - 0012
have hw : exists w. (exists sto_ap_distributive_construct sto_an_distributive_construct sto_bp_distributive_construct sto_bn_distributive_construct sto_cp_distributive_construct sto_cn_distributive_construct. (((((a) = 2 * (sto_ap_distributive_construct) /\ (sto_an_distributive_construct) = 0) \/ exists ge_signed_half_distributive_constructleft. (((a) = 2 * ge_signed_half_distributive_constructleft + 1 /\ (sto_ap_distributive_construct) = 0) /\ (sto_an_distributive_construct) = S ge_signed_half_distributive_constructleft))) /\ ((((((bc) = 2 * (sto_bp_distributive_construct) /\ (sto_bn_distributive_construct) = 0) \/ exists ge_signed_half_distributive_constructright. (((bc) = 2 * ge_signed_half_distributive_constructright + 1 /\ (sto_bp_distributive_construct) = 0) /\ (sto_bn_distributive_construct) = S ge_signed_half_distributive_constructright))) /\ ((((((w) = 2 * (sto_cp_distributive_construct) /\ (sto_cn_distributive_construct) = 0) \/ exists ge_signed_half_distributive_constructoutput. (((w) = 2 * ge_signed_half_distributive_constructoutput + 1 /\ (sto_cp_distributive_construct) = 0) /\ (sto_cn_distributive_construct) = S ge_signed_half_distributive_constructoutput))) /\ ((sto_ap_distributive_construct * sto_bp_distributive_construct + sto_an_distributive_construct * sto_bn_distributive_construct) + sto_cn_distributive_construct = (sto_ap_distributive_construct * sto_bn_distributive_construct + sto_an_distributive_construct * sto_bp_distributive_construct) + sto_cp_distributive_construct))))))) - 0013
specialize signed_mul_total (a) - 0014
specialize signed_mul_total (bc) - 0015
apply signed_mul_total - 0016
cases hw - 0017
have heq : x = out - 0018
specialize signed_add_functional (ab) - 0019
specialize signed_add_functional (ac) - 0020
specialize signed_add_functional (x) - 0021
specialize signed_add_functional (out) - 0022
apply signed_add_functional - 0023
specialize signed_mul_left_distributive (a) - 0024
specialize signed_mul_left_distributive (b) - 0025
specialize signed_mul_left_distributive (c) - 0026
specialize signed_mul_left_distributive (bc) - 0027
specialize signed_mul_left_distributive (ab) - 0028
specialize signed_mul_left_distributive (ac) - 0029
specialize signed_mul_left_distributive (x) - 0030
apply signed_mul_left_distributive - 0031
exact hbc - 0032
exact hab - 0033
exact hac - 0034
exact hw_witness - 0035
exact hout - 0036
rewrite heq at hw_witness - 0037
rewrite heq at hw_witness - 0038
exact hw_witness