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 ab cb out. (exists sto_ap_weighted_commute_first sto_an_weighted_commute_first sto_bp_weighted_commute_first sto_bn_weighted_commute_first sto_cp_weighted_commute_first sto_cn_weighted_commute_first. (((((a) = 2 * (sto_ap_weighted_commute_first) /\ (sto_an_weighted_commute_first) = 0) \/ exists ge_signed_half_weighted_commute_firstleft. (((a) = 2 * ge_signed_half_weighted_commute_firstleft + 1 /\ (sto_ap_weighted_commute_first) = 0) /\ (sto_an_weighted_commute_first) = S ge_signed_half_weighted_commute_firstleft))) /\ ((((((b) = 2 * (sto_bp_weighted_commute_first) /\ (sto_bn_weighted_commute_first) = 0) \/ exists ge_signed_half_weighted_commute_firstright. (((b) = 2 * ge_signed_half_weighted_commute_firstright + 1 /\ (sto_bp_weighted_commute_first) = 0) /\ (sto_bn_weighted_commute_first) = S ge_signed_half_weighted_commute_firstright))) /\ ((((((ab) = 2 * (sto_cp_weighted_commute_first) /\ (sto_cn_weighted_commute_first) = 0) \/ exists ge_signed_half_weighted_commute_firstoutput. (((ab) = 2 * ge_signed_half_weighted_commute_firstoutput + 1 /\ (sto_cp_weighted_commute_first) = 0) /\ (sto_cn_weighted_commute_first) = S ge_signed_half_weighted_commute_firstoutput))) /\ ((sto_ap_weighted_commute_first * sto_bp_weighted_commute_first + sto_an_weighted_commute_first * sto_bn_weighted_commute_first) + sto_cn_weighted_commute_first = (sto_ap_weighted_commute_first * sto_bn_weighted_commute_first + sto_an_weighted_commute_first * sto_bp_weighted_commute_first) + sto_cp_weighted_commute_first))))))) -> (exists sto_ap_weighted_commute_second sto_an_weighted_commute_second sto_bp_weighted_commute_second sto_bn_weighted_commute_second sto_cp_weighted_commute_second sto_cn_weighted_commute_second. (((((c) = 2 * (sto_ap_weighted_commute_second) /\ (sto_an_weighted_commute_second) = 0) \/ exists ge_signed_half_weighted_commute_secondleft. (((c) = 2 * ge_signed_half_weighted_commute_secondleft + 1 /\ (sto_ap_weighted_commute_second) = 0) /\ (sto_an_weighted_commute_second) = S ge_signed_half_weighted_commute_secondleft))) /\ ((((((b) = 2 * (sto_bp_weighted_commute_second) /\ (sto_bn_weighted_commute_second) = 0) \/ exists ge_signed_half_weighted_commute_secondright. (((b) = 2 * ge_signed_half_weighted_commute_secondright + 1 /\ (sto_bp_weighted_commute_second) = 0) /\ (sto_bn_weighted_commute_second) = S ge_signed_half_weighted_commute_secondright))) /\ ((((((cb) = 2 * (sto_cp_weighted_commute_second) /\ (sto_cn_weighted_commute_second) = 0) \/ exists ge_signed_half_weighted_commute_secondoutput. (((cb) = 2 * ge_signed_half_weighted_commute_secondoutput + 1 /\ (sto_cp_weighted_commute_second) = 0) /\ (sto_cn_weighted_commute_second) = S ge_signed_half_weighted_commute_secondoutput))) /\ ((sto_ap_weighted_commute_second * sto_bp_weighted_commute_second + sto_an_weighted_commute_second * sto_bn_weighted_commute_second) + sto_cn_weighted_commute_second = (sto_ap_weighted_commute_second * sto_bn_weighted_commute_second + sto_an_weighted_commute_second * sto_bp_weighted_commute_second) + sto_cp_weighted_commute_second))))))) -> (exists sto_ap_weighted_commute_output sto_an_weighted_commute_output sto_bp_weighted_commute_output sto_bn_weighted_commute_output sto_cp_weighted_commute_output sto_cn_weighted_commute_output. (((((c) = 2 * (sto_ap_weighted_commute_output) /\ (sto_an_weighted_commute_output) = 0) \/ exists ge_signed_half_weighted_commute_outputleft. (((c) = 2 * ge_signed_half_weighted_commute_outputleft + 1 /\ (sto_ap_weighted_commute_output) = 0) /\ (sto_an_weighted_commute_output) = S ge_signed_half_weighted_commute_outputleft))) /\ ((((((ab) = 2 * (sto_bp_weighted_commute_output) /\ (sto_bn_weighted_commute_output) = 0) \/ exists ge_signed_half_weighted_commute_outputright. (((ab) = 2 * ge_signed_half_weighted_commute_outputright + 1 /\ (sto_bp_weighted_commute_output) = 0) /\ (sto_bn_weighted_commute_output) = S ge_signed_half_weighted_commute_outputright))) /\ ((((((out) = 2 * (sto_cp_weighted_commute_output) /\ (sto_cn_weighted_commute_output) = 0) \/ exists ge_signed_half_weighted_commute_outputoutput. (((out) = 2 * ge_signed_half_weighted_commute_outputoutput + 1 /\ (sto_cp_weighted_commute_output) = 0) /\ (sto_cn_weighted_commute_output) = S ge_signed_half_weighted_commute_outputoutput))) /\ ((sto_ap_weighted_commute_output * sto_bp_weighted_commute_output + sto_an_weighted_commute_output * sto_bn_weighted_commute_output) + sto_cn_weighted_commute_output = (sto_ap_weighted_commute_output * sto_bn_weighted_commute_output + sto_an_weighted_commute_output * sto_bp_weighted_commute_output) + sto_cp_weighted_commute_output))))))) -> (exists sto_ap_weighted_commute_target sto_an_weighted_commute_target sto_bp_weighted_commute_target sto_bn_weighted_commute_target sto_cp_weighted_commute_target sto_cn_weighted_commute_target. (((((a) = 2 * (sto_ap_weighted_commute_target) /\ (sto_an_weighted_commute_target) = 0) \/ exists ge_signed_half_weighted_commute_targetleft. (((a) = 2 * ge_signed_half_weighted_commute_targetleft + 1 /\ (sto_ap_weighted_commute_target) = 0) /\ (sto_an_weighted_commute_target) = S ge_signed_half_weighted_commute_targetleft))) /\ ((((((cb) = 2 * (sto_bp_weighted_commute_target) /\ (sto_bn_weighted_commute_target) = 0) \/ exists ge_signed_half_weighted_commute_targetright. (((cb) = 2 * ge_signed_half_weighted_commute_targetright + 1 /\ (sto_bp_weighted_commute_target) = 0) /\ (sto_bn_weighted_commute_target) = S ge_signed_half_weighted_commute_targetright))) /\ ((((((out) = 2 * (sto_cp_weighted_commute_target) /\ (sto_cn_weighted_commute_target) = 0) \/ exists ge_signed_half_weighted_commute_targetoutput. (((out) = 2 * ge_signed_half_weighted_commute_targetoutput + 1 /\ (sto_cp_weighted_commute_target) = 0) /\ (sto_cn_weighted_commute_target) = S ge_signed_half_weighted_commute_targetoutput))) /\ ((sto_ap_weighted_commute_target * sto_bp_weighted_commute_target + sto_an_weighted_commute_target * sto_bn_weighted_commute_target) + sto_cn_weighted_commute_target = (sto_ap_weighted_commute_target * sto_bn_weighted_commute_target + sto_an_weighted_commute_target * sto_bp_weighted_commute_target) + sto_cp_weighted_commute_target)))))))Constructive proof overview
Generated structural guide
Construct the reordered product and identify its canonical value by signed multiplication associativity, commutativity and functionality.
The unchanged tactic script uses 4 declared prerequisites and contains 42 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_functional Alpha theorem; checked-use authorized signed_mul_associative Alpha theorem; checked-use authorized signed_mul_commutative 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–9
02Establish hwL10–13
03Separate the logical casesL14–14
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L14
cases hw
04Establish heqL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed mul functional.
- L15
have heq : x = out - L16
specialize signed_mul_functional (c) - L17
specialize signed_mul_functional (ab) - L18
specialize signed_mul_functional (x) - L19
specialize signed_mul_functional (out) - L20
apply signed_mul_functional - L21
specialize signed_mul_associative (c) - L22
specialize signed_mul_associative (b) - L23
specialize signed_mul_associative (a) - L24
specialize signed_mul_associative (cb)
05Use earlier factsL25–34
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L25
specialize signed_mul_associative (ab) - L26
specialize signed_mul_associative (x) - L27
apply signed_mul_associative - L28
exact hcb - L29
specialize signed_mul_commutative (a) - L30
specialize signed_mul_commutative (cb) - L31
specialize signed_mul_commutative (x) - L32
apply signed_mul_commutative - L33
exact hw_witness - L34
specialize signed_mul_commutative (a)
06Use earlier factsL35–39
07Calculate and transport equalitiesL40–41
08Use earlier factsL42–42
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L42
exact hw_witness
Original exact command ledger · 42 lines
- 0001
intro a - 0002
intro b - 0003
intro c - 0004
intro ab - 0005
intro cb - 0006
intro out - 0007
intro hab - 0008
intro hcb - 0009
intro hout - 0010
have hw : exists w. (exists sto_ap_scalar_commute_construct sto_an_scalar_commute_construct sto_bp_scalar_commute_construct sto_bn_scalar_commute_construct sto_cp_scalar_commute_construct sto_cn_scalar_commute_construct. (((((a) = 2 * (sto_ap_scalar_commute_construct) /\ (sto_an_scalar_commute_construct) = 0) \/ exists ge_signed_half_scalar_commute_constructleft. (((a) = 2 * ge_signed_half_scalar_commute_constructleft + 1 /\ (sto_ap_scalar_commute_construct) = 0) /\ (sto_an_scalar_commute_construct) = S ge_signed_half_scalar_commute_constructleft))) /\ ((((((cb) = 2 * (sto_bp_scalar_commute_construct) /\ (sto_bn_scalar_commute_construct) = 0) \/ exists ge_signed_half_scalar_commute_constructright. (((cb) = 2 * ge_signed_half_scalar_commute_constructright + 1 /\ (sto_bp_scalar_commute_construct) = 0) /\ (sto_bn_scalar_commute_construct) = S ge_signed_half_scalar_commute_constructright))) /\ ((((((w) = 2 * (sto_cp_scalar_commute_construct) /\ (sto_cn_scalar_commute_construct) = 0) \/ exists ge_signed_half_scalar_commute_constructoutput. (((w) = 2 * ge_signed_half_scalar_commute_constructoutput + 1 /\ (sto_cp_scalar_commute_construct) = 0) /\ (sto_cn_scalar_commute_construct) = S ge_signed_half_scalar_commute_constructoutput))) /\ ((sto_ap_scalar_commute_construct * sto_bp_scalar_commute_construct + sto_an_scalar_commute_construct * sto_bn_scalar_commute_construct) + sto_cn_scalar_commute_construct = (sto_ap_scalar_commute_construct * sto_bn_scalar_commute_construct + sto_an_scalar_commute_construct * sto_bp_scalar_commute_construct) + sto_cp_scalar_commute_construct))))))) - 0011
specialize signed_mul_total (a) - 0012
specialize signed_mul_total (cb) - 0013
apply signed_mul_total - 0014
cases hw - 0015
have heq : x = out - 0016
specialize signed_mul_functional (c) - 0017
specialize signed_mul_functional (ab) - 0018
specialize signed_mul_functional (x) - 0019
specialize signed_mul_functional (out) - 0020
apply signed_mul_functional - 0021
specialize signed_mul_associative (c) - 0022
specialize signed_mul_associative (b) - 0023
specialize signed_mul_associative (a) - 0024
specialize signed_mul_associative (cb) - 0025
specialize signed_mul_associative (ab) - 0026
specialize signed_mul_associative (x) - 0027
apply signed_mul_associative - 0028
exact hcb - 0029
specialize signed_mul_commutative (a) - 0030
specialize signed_mul_commutative (cb) - 0031
specialize signed_mul_commutative (x) - 0032
apply signed_mul_commutative - 0033
exact hw_witness - 0034
specialize signed_mul_commutative (a) - 0035
specialize signed_mul_commutative (b) - 0036
specialize signed_mul_commutative (ab) - 0037
apply signed_mul_commutative - 0038
exact hab - 0039
exact hout - 0040
rewrite heq at hw_witness - 0041
rewrite heq at hw_witness - 0042
exact hw_witness