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 r u e. (((u) = 2 \/ (u) = 1)) -> exists x y. ((exists sto_ap_affine_product sto_an_affine_product sto_bp_affine_product sto_bn_affine_product sto_cp_affine_product sto_cn_affine_product. (((((x) = 2 * (sto_ap_affine_product) /\ (sto_an_affine_product) = 0) \/ exists ge_signed_half_affine_productleft. (((x) = 2 * ge_signed_half_affine_productleft + 1 /\ (sto_ap_affine_product) = 0) /\ (sto_an_affine_product) = S ge_signed_half_affine_productleft))) /\ ((((((u) = 2 * (sto_bp_affine_product) /\ (sto_bn_affine_product) = 0) \/ exists ge_signed_half_affine_productright. (((u) = 2 * ge_signed_half_affine_productright + 1 /\ (sto_bp_affine_product) = 0) /\ (sto_bn_affine_product) = S ge_signed_half_affine_productright))) /\ ((((((y) = 2 * (sto_cp_affine_product) /\ (sto_cn_affine_product) = 0) \/ exists ge_signed_half_affine_productoutput. (((y) = 2 * ge_signed_half_affine_productoutput + 1 /\ (sto_cp_affine_product) = 0) /\ (sto_cn_affine_product) = S ge_signed_half_affine_productoutput))) /\ ((sto_ap_affine_product * sto_bp_affine_product + sto_an_affine_product * sto_bn_affine_product) + sto_cn_affine_product = (sto_ap_affine_product * sto_bn_affine_product + sto_an_affine_product * sto_bp_affine_product) + sto_cp_affine_product))))))) /\ (exists dsa_ap_affine_result dsa_an_affine_result dsa_bp_affine_result dsa_bn_affine_result dsa_cp_affine_result dsa_cn_affine_result. (((((r) = 2 * (dsa_ap_affine_result) /\ (dsa_an_affine_result) = 0) \/ exists ge_signed_half_affine_resultleft. (((r) = 2 * ge_signed_half_affine_resultleft + 1 /\ (dsa_ap_affine_result) = 0) /\ (dsa_an_affine_result) = S ge_signed_half_affine_resultleft))) /\ ((((((y) = 2 * (dsa_bp_affine_result) /\ (dsa_bn_affine_result) = 0) \/ exists ge_signed_half_affine_resultright. (((y) = 2 * ge_signed_half_affine_resultright + 1 /\ (dsa_bp_affine_result) = 0) /\ (dsa_bn_affine_result) = S ge_signed_half_affine_resultright))) /\ ((((((e) = 2 * (dsa_cp_affine_result) /\ (dsa_cn_affine_result) = 0) \/ exists ge_signed_half_affine_resultoutput. (((e) = 2 * ge_signed_half_affine_resultoutput + 1 /\ (dsa_cp_affine_result) = 0) /\ (dsa_cn_affine_result) = S ge_signed_half_affine_resultoutput))) /\ ((dsa_ap_affine_result + dsa_bp_affine_result) + dsa_cn_affine_result = (dsa_an_affine_result + dsa_bn_affine_result) + dsa_cp_affine_result))))))))Constructive proof overview
Generated structural guide
Given either actual signed unit, construct both x and its actual product y with r+y=e; no difference, product or solution witness is supplied.
The unchanged tactic script uses 3 declared prerequisites and contains 24 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
ZU0005 dirichlet_signed_add_solve signed_mul_total Alpha theorem; checked-use authorized ZU0006 dirichlet_signed_unit_multiply_involutionDirect 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 (2)
01Fix variables and assumptionsL1–4
02Establish hyL5–8
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet signed add solve.
03Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases hy
04Establish hxL10–13
05Separate the logical casesL14–14
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L14
cases hx
06Construct an explicit witnessL15–16
07Separate the logical casesL17–17
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L17
split
08Use earlier factsL18–24
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 24 lines
- 0001
intro r - 0002
intro u - 0003
intro e - 0004
intro hu - 0005
have hy : exists y. (exists dsa_ap_affine_addend dsa_an_affine_addend dsa_bp_affine_addend dsa_bn_affine_addend dsa_cp_affine_addend dsa_cn_affine_addend. (((((r) = 2 * (dsa_ap_affine_addend) /\ (dsa_an_affine_addend) = 0) \/ exists ge_signed_half_affine_addendleft. (((r) = 2 * ge_signed_half_affine_addendleft + 1 /\ (dsa_ap_affine_addend) = 0) /\ (dsa_an_affine_addend) = S ge_signed_half_affine_addendleft))) /\ ((((((y) = 2 * (dsa_bp_affine_addend) /\ (dsa_bn_affine_addend) = 0) \/ exists ge_signed_half_affine_addendright. (((y) = 2 * ge_signed_half_affine_addendright + 1 /\ (dsa_bp_affine_addend) = 0) /\ (dsa_bn_affine_addend) = S ge_signed_half_affine_addendright))) /\ ((((((e) = 2 * (dsa_cp_affine_addend) /\ (dsa_cn_affine_addend) = 0) \/ exists ge_signed_half_affine_addendoutput. (((e) = 2 * ge_signed_half_affine_addendoutput + 1 /\ (dsa_cp_affine_addend) = 0) /\ (dsa_cn_affine_addend) = S ge_signed_half_affine_addendoutput))) /\ ((dsa_ap_affine_addend + dsa_bp_affine_addend) + dsa_cn_affine_addend = (dsa_an_affine_addend + dsa_bn_affine_addend) + dsa_cp_affine_addend))))))) - 0006
specialize dirichlet_signed_add_solve (r) - 0007
specialize dirichlet_signed_add_solve (e) - 0008
apply dirichlet_signed_add_solve - 0009
cases hy - 0010
have hx : exists a. (exists sto_ap_affine_preimage sto_an_affine_preimage sto_bp_affine_preimage sto_bn_affine_preimage sto_cp_affine_preimage sto_cn_affine_preimage. (((((x) = 2 * (sto_ap_affine_preimage) /\ (sto_an_affine_preimage) = 0) \/ exists ge_signed_half_affine_preimageleft. (((x) = 2 * ge_signed_half_affine_preimageleft + 1 /\ (sto_ap_affine_preimage) = 0) /\ (sto_an_affine_preimage) = S ge_signed_half_affine_preimageleft))) /\ ((((((u) = 2 * (sto_bp_affine_preimage) /\ (sto_bn_affine_preimage) = 0) \/ exists ge_signed_half_affine_preimageright. (((u) = 2 * ge_signed_half_affine_preimageright + 1 /\ (sto_bp_affine_preimage) = 0) /\ (sto_bn_affine_preimage) = S ge_signed_half_affine_preimageright))) /\ ((((((a) = 2 * (sto_cp_affine_preimage) /\ (sto_cn_affine_preimage) = 0) \/ exists ge_signed_half_affine_preimageoutput. (((a) = 2 * ge_signed_half_affine_preimageoutput + 1 /\ (sto_cp_affine_preimage) = 0) /\ (sto_cn_affine_preimage) = S ge_signed_half_affine_preimageoutput))) /\ ((sto_ap_affine_preimage * sto_bp_affine_preimage + sto_an_affine_preimage * sto_bn_affine_preimage) + sto_cn_affine_preimage = (sto_ap_affine_preimage * sto_bn_affine_preimage + sto_an_affine_preimage * sto_bp_affine_preimage) + sto_cp_affine_preimage))))))) - 0011
specialize signed_mul_total (x) - 0012
specialize signed_mul_total (u) - 0013
apply signed_mul_total - 0014
cases hx - 0015
exists x1 - 0016
exists x - 0017
split - 0018
specialize dirichlet_signed_unit_multiply_involution (u) - 0019
specialize dirichlet_signed_unit_multiply_involution (x) - 0020
specialize dirichlet_signed_unit_multiply_involution (x1) - 0021
apply dirichlet_signed_unit_multiply_involution - 0022
exact hu - 0023
exact hx_witness - 0024
exact hy_witness