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 n d q a b z. ~(d=0) -> n=d*q -> (exists dst_positive_code_read_left dst_positive_scale_read_left dst_negative_code_read_left dst_negative_scale_read_left dst_positive_read_left dst_negative_read_left. (((F) = (((((dst_positive_code_read_left) + (dst_positive_scale_read_left)) * S ((dst_positive_code_read_left) + (dst_positive_scale_read_left)) + ((dst_positive_scale_read_left) + (dst_positive_scale_read_left))) + (((dst_negative_code_read_left) + (dst_negative_scale_read_left)) * S ((dst_negative_code_read_left) + (dst_negative_scale_read_left)) + ((dst_negative_scale_read_left) + (dst_negative_scale_read_left)))) * S ((((dst_positive_code_read_left) + (dst_positive_scale_read_left)) * S ((dst_positive_code_read_left) + (dst_positive_scale_read_left)) + ((dst_positive_scale_read_left) + (dst_positive_scale_read_left))) + (((dst_negative_code_read_left) + (dst_negative_scale_read_left)) * S ((dst_negative_code_read_left) + (dst_negative_scale_read_left)) + ((dst_negative_scale_read_left) + (dst_negative_scale_read_left)))) + ((((dst_negative_code_read_left) + (dst_negative_scale_read_left)) * S ((dst_negative_code_read_left) + (dst_negative_scale_read_left)) + ((dst_negative_scale_read_left) + (dst_negative_scale_read_left))) + (((dst_negative_code_read_left) + (dst_negative_scale_read_left)) * S ((dst_negative_code_read_left) + (dst_negative_scale_read_left)) + ((dst_negative_scale_read_left) + (dst_negative_scale_read_left)))))) /\ (((((exists ff_h_pvs_read_leftpositive. ff_h_pvs_read_leftpositive + S (dst_positive_read_left) = S ((S (d)) * dst_positive_scale_read_left)) /\ exists ff_q_pvs_read_leftpositive. dst_positive_code_read_left = ff_q_pvs_read_leftpositive * S ((S (d)) * dst_positive_scale_read_left) + (dst_positive_read_left))) /\ (((((exists ff_h_pvs_read_leftnegative. ff_h_pvs_read_leftnegative + S (dst_negative_read_left) = S ((S (d)) * dst_negative_scale_read_left)) /\ exists ff_q_pvs_read_leftnegative. dst_negative_code_read_left = ff_q_pvs_read_leftnegative * S ((S (d)) * dst_negative_scale_read_left) + (dst_negative_read_left))) /\ (exists ge_balance_positive_read_leftvalue ge_balance_negative_read_leftvalue. (((((a) = 2 * (ge_balance_positive_read_leftvalue) /\ (ge_balance_negative_read_leftvalue) = 0) \/ exists ge_signed_half_read_leftvaluedecode. (((a) = 2 * ge_signed_half_read_leftvaluedecode + 1 /\ (ge_balance_positive_read_leftvalue) = 0) /\ (ge_balance_negative_read_leftvalue) = S ge_signed_half_read_leftvaluedecode))) /\ ((dst_positive_read_left) + ge_balance_negative_read_leftvalue = (dst_negative_read_left) + ge_balance_positive_read_leftvalue))))))))) -> (exists dst_positive_code_read_right dst_positive_scale_read_right dst_negative_code_read_right dst_negative_scale_read_right dst_positive_read_right dst_negative_read_right. (((G) = (((((dst_positive_code_read_right) + (dst_positive_scale_read_right)) * S ((dst_positive_code_read_right) + (dst_positive_scale_read_right)) + ((dst_positive_scale_read_right) + (dst_positive_scale_read_right))) + (((dst_negative_code_read_right) + (dst_negative_scale_read_right)) * S ((dst_negative_code_read_right) + (dst_negative_scale_read_right)) + ((dst_negative_scale_read_right) + (dst_negative_scale_read_right)))) * S ((((dst_positive_code_read_right) + (dst_positive_scale_read_right)) * S ((dst_positive_code_read_right) + (dst_positive_scale_read_right)) + ((dst_positive_scale_read_right) + (dst_positive_scale_read_right))) + (((dst_negative_code_read_right) + (dst_negative_scale_read_right)) * S ((dst_negative_code_read_right) + (dst_negative_scale_read_right)) + ((dst_negative_scale_read_right) + (dst_negative_scale_read_right)))) + ((((dst_negative_code_read_right) + (dst_negative_scale_read_right)) * S ((dst_negative_code_read_right) + (dst_negative_scale_read_right)) + ((dst_negative_scale_read_right) + (dst_negative_scale_read_right))) + (((dst_negative_code_read_right) + (dst_negative_scale_read_right)) * S ((dst_negative_code_read_right) + (dst_negative_scale_read_right)) + ((dst_negative_scale_read_right) + (dst_negative_scale_read_right)))))) /\ (((((exists ff_h_pvs_read_rightpositive. ff_h_pvs_read_rightpositive + S (dst_positive_read_right) = S ((S (q)) * dst_positive_scale_read_right)) /\ exists ff_q_pvs_read_rightpositive. dst_positive_code_read_right = ff_q_pvs_read_rightpositive * S ((S (q)) * dst_positive_scale_read_right) + (dst_positive_read_right))) /\ (((((exists ff_h_pvs_read_rightnegative. ff_h_pvs_read_rightnegative + S (dst_negative_read_right) = S ((S (q)) * dst_negative_scale_read_right)) /\ exists ff_q_pvs_read_rightnegative. dst_negative_code_read_right = ff_q_pvs_read_rightnegative * S ((S (q)) * dst_negative_scale_read_right) + (dst_negative_read_right))) /\ (exists ge_balance_positive_read_rightvalue ge_balance_negative_read_rightvalue. (((((b) = 2 * (ge_balance_positive_read_rightvalue) /\ (ge_balance_negative_read_rightvalue) = 0) \/ exists ge_signed_half_read_rightvaluedecode. (((b) = 2 * ge_signed_half_read_rightvaluedecode + 1 /\ (ge_balance_positive_read_rightvalue) = 0) /\ (ge_balance_negative_read_rightvalue) = S ge_signed_half_read_rightvaluedecode))) /\ ((dst_positive_read_right) + ge_balance_negative_read_rightvalue = (dst_negative_read_right) + ge_balance_positive_read_rightvalue))))))))) -> ((((~((d)=0)) /\ (exists dc_quotient_read_entry dc_left_read_entry dc_right_read_entry. (((n)=(d)*dc_quotient_read_entry) /\ (((exists dst_positive_code_read_entryleft dst_positive_scale_read_entryleft dst_negative_code_read_entryleft dst_negative_scale_read_entryleft dst_positive_read_entryleft dst_negative_read_entryleft. (((F) = (((((dst_positive_code_read_entryleft) + (dst_positive_scale_read_entryleft)) * S ((dst_positive_code_read_entryleft) + (dst_positive_scale_read_entryleft)) + ((dst_positive_scale_read_entryleft) + (dst_positive_scale_read_entryleft))) + (((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) * S ((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) + ((dst_negative_scale_read_entryleft) + (dst_negative_scale_read_entryleft)))) * S ((((dst_positive_code_read_entryleft) + (dst_positive_scale_read_entryleft)) * S ((dst_positive_code_read_entryleft) + (dst_positive_scale_read_entryleft)) + ((dst_positive_scale_read_entryleft) + (dst_positive_scale_read_entryleft))) + (((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) * S ((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) + ((dst_negative_scale_read_entryleft) + (dst_negative_scale_read_entryleft)))) + ((((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) * S ((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) + ((dst_negative_scale_read_entryleft) + (dst_negative_scale_read_entryleft))) + (((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) * S ((dst_negative_code_read_entryleft) + (dst_negative_scale_read_entryleft)) + ((dst_negative_scale_read_entryleft) + (dst_negative_scale_read_entryleft)))))) /\ (((((exists ff_h_pvs_read_entryleftpositive. ff_h_pvs_read_entryleftpositive + S (dst_positive_read_entryleft) = S ((S (d)) * dst_positive_scale_read_entryleft)) /\ exists ff_q_pvs_read_entryleftpositive. dst_positive_code_read_entryleft = ff_q_pvs_read_entryleftpositive * S ((S (d)) * dst_positive_scale_read_entryleft) + (dst_positive_read_entryleft))) /\ (((((exists ff_h_pvs_read_entryleftnegative. ff_h_pvs_read_entryleftnegative + S (dst_negative_read_entryleft) = S ((S (d)) * dst_negative_scale_read_entryleft)) /\ exists ff_q_pvs_read_entryleftnegative. dst_negative_code_read_entryleft = ff_q_pvs_read_entryleftnegative * S ((S (d)) * dst_negative_scale_read_entryleft) + (dst_negative_read_entryleft))) /\ (exists ge_balance_positive_read_entryleftvalue ge_balance_negative_read_entryleftvalue. (((((dc_left_read_entry) = 2 * (ge_balance_positive_read_entryleftvalue) /\ (ge_balance_negative_read_entryleftvalue) = 0) \/ exists ge_signed_half_read_entryleftvaluedecode. (((dc_left_read_entry) = 2 * ge_signed_half_read_entryleftvaluedecode + 1 /\ (ge_balance_positive_read_entryleftvalue) = 0) /\ (ge_balance_negative_read_entryleftvalue) = S ge_signed_half_read_entryleftvaluedecode))) /\ ((dst_positive_read_entryleft) + ge_balance_negative_read_entryleftvalue = (dst_negative_read_entryleft) + ge_balance_positive_read_entryleftvalue))))))))) /\ (((exists dst_positive_code_read_entryright dst_positive_scale_read_entryright dst_negative_code_read_entryright dst_negative_scale_read_entryright dst_positive_read_entryright dst_negative_read_entryright. (((G) = (((((dst_positive_code_read_entryright) + (dst_positive_scale_read_entryright)) * S ((dst_positive_code_read_entryright) + (dst_positive_scale_read_entryright)) + ((dst_positive_scale_read_entryright) + (dst_positive_scale_read_entryright))) + (((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) * S ((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) + ((dst_negative_scale_read_entryright) + (dst_negative_scale_read_entryright)))) * S ((((dst_positive_code_read_entryright) + (dst_positive_scale_read_entryright)) * S ((dst_positive_code_read_entryright) + (dst_positive_scale_read_entryright)) + ((dst_positive_scale_read_entryright) + (dst_positive_scale_read_entryright))) + (((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) * S ((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) + ((dst_negative_scale_read_entryright) + (dst_negative_scale_read_entryright)))) + ((((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) * S ((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) + ((dst_negative_scale_read_entryright) + (dst_negative_scale_read_entryright))) + (((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) * S ((dst_negative_code_read_entryright) + (dst_negative_scale_read_entryright)) + ((dst_negative_scale_read_entryright) + (dst_negative_scale_read_entryright)))))) /\ (((((exists ff_h_pvs_read_entryrightpositive. ff_h_pvs_read_entryrightpositive + S (dst_positive_read_entryright) = S ((S (dc_quotient_read_entry)) * dst_positive_scale_read_entryright)) /\ exists ff_q_pvs_read_entryrightpositive. dst_positive_code_read_entryright = ff_q_pvs_read_entryrightpositive * S ((S (dc_quotient_read_entry)) * dst_positive_scale_read_entryright) + (dst_positive_read_entryright))) /\ (((((exists ff_h_pvs_read_entryrightnegative. ff_h_pvs_read_entryrightnegative + S (dst_negative_read_entryright) = S ((S (dc_quotient_read_entry)) * dst_negative_scale_read_entryright)) /\ exists ff_q_pvs_read_entryrightnegative. dst_negative_code_read_entryright = ff_q_pvs_read_entryrightnegative * S ((S (dc_quotient_read_entry)) * dst_negative_scale_read_entryright) + (dst_negative_read_entryright))) /\ (exists ge_balance_positive_read_entryrightvalue ge_balance_negative_read_entryrightvalue. (((((dc_right_read_entry) = 2 * (ge_balance_positive_read_entryrightvalue) /\ (ge_balance_negative_read_entryrightvalue) = 0) \/ exists ge_signed_half_read_entryrightvaluedecode. (((dc_right_read_entry) = 2 * ge_signed_half_read_entryrightvaluedecode + 1 /\ (ge_balance_positive_read_entryrightvalue) = 0) /\ (ge_balance_negative_read_entryrightvalue) = S ge_signed_half_read_entryrightvaluedecode))) /\ ((dst_positive_read_entryright) + ge_balance_negative_read_entryrightvalue = (dst_negative_read_entryright) + ge_balance_positive_read_entryrightvalue))))))))) /\ (exists sto_ap_read_entryproduct sto_an_read_entryproduct sto_bp_read_entryproduct sto_bn_read_entryproduct sto_cp_read_entryproduct sto_cn_read_entryproduct. (((((dc_left_read_entry) = 2 * (sto_ap_read_entryproduct) /\ (sto_an_read_entryproduct) = 0) \/ exists ge_signed_half_read_entryproductleft. (((dc_left_read_entry) = 2 * ge_signed_half_read_entryproductleft + 1 /\ (sto_ap_read_entryproduct) = 0) /\ (sto_an_read_entryproduct) = S ge_signed_half_read_entryproductleft))) /\ ((((((dc_right_read_entry) = 2 * (sto_bp_read_entryproduct) /\ (sto_bn_read_entryproduct) = 0) \/ exists ge_signed_half_read_entryproductright. (((dc_right_read_entry) = 2 * ge_signed_half_read_entryproductright + 1 /\ (sto_bp_read_entryproduct) = 0) /\ (sto_bn_read_entryproduct) = S ge_signed_half_read_entryproductright))) /\ ((((((z) = 2 * (sto_cp_read_entryproduct) /\ (sto_cn_read_entryproduct) = 0) \/ exists ge_signed_half_read_entryproductoutput. (((z) = 2 * ge_signed_half_read_entryproductoutput + 1 /\ (sto_cp_read_entryproduct) = 0) /\ (sto_cn_read_entryproduct) = S ge_signed_half_read_entryproductoutput))) /\ ((sto_ap_read_entryproduct * sto_bp_read_entryproduct + sto_an_read_entryproduct * sto_bn_read_entryproduct) + sto_cn_read_entryproduct = (sto_ap_read_entryproduct * sto_bn_read_entryproduct + sto_an_read_entryproduct * sto_bp_read_entryproduct) + sto_cp_read_entryproduct))))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_read_entrynondivisor. (n) = (d) * pvs_factor_read_entrynondivisor)) /\ ((z)=0)))) -> (exists sto_ap_read_product sto_an_read_product sto_bp_read_product sto_bn_read_product sto_cp_read_product sto_cn_read_product. (((((a) = 2 * (sto_ap_read_product) /\ (sto_an_read_product) = 0) \/ exists ge_signed_half_read_productleft. (((a) = 2 * ge_signed_half_read_productleft + 1 /\ (sto_ap_read_product) = 0) /\ (sto_an_read_product) = S ge_signed_half_read_productleft))) /\ ((((((b) = 2 * (sto_bp_read_product) /\ (sto_bn_read_product) = 0) \/ exists ge_signed_half_read_productright. (((b) = 2 * ge_signed_half_read_productright + 1 /\ (sto_bp_read_product) = 0) /\ (sto_bn_read_product) = S ge_signed_half_read_productright))) /\ ((((((z) = 2 * (sto_cp_read_product) /\ (sto_cn_read_product) = 0) \/ exists ge_signed_half_read_productoutput. (((z) = 2 * ge_signed_half_read_productoutput + 1 /\ (sto_cp_read_product) = 0) /\ (sto_cn_read_product) = S ge_signed_half_read_productoutput))) /\ ((sto_ap_read_product * sto_bp_read_product + sto_an_read_product * sto_bn_read_product) + sto_cn_read_product = (sto_ap_read_product * sto_bn_read_product + sto_an_read_product * sto_bp_read_product) + sto_cp_read_product)))))))Constructive proof overview
Generated structural guide
A retained entry is the product at the specified actual quotient; nonzero multiplication cancellation identifies every quotient witness.
The unchanged tactic script uses 2 declared prerequisites and contains 64 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
mul_left_cancel_nonzero Stable theorem; checked-use authorized divisor_signed_table_at_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–13
03Separate the logical casesL14–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
04Establish heqqL22–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul left cancel nonzero.
05Calculate and transport equalitiesL32–35
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
06Establish heqaL36–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table at functional.
- L36
have heqa : x1=a - L37
specialize divisor_signed_table_at_functional (F) - L38
specialize divisor_signed_table_at_functional (d) - L39
specialize divisor_signed_table_at_functional (x1) - L40
specialize divisor_signed_table_at_functional (a) - L41
apply divisor_signed_table_at_functional - L42
exact he_left_right_witness_witness_witness_right_left - L43
exact ha
07Establish heqbL44–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table at functional.
- L44
have heqb : x2=b - L45
specialize divisor_signed_table_at_functional (G) - L46
specialize divisor_signed_table_at_functional (q) - L47
specialize divisor_signed_table_at_functional (x2) - L48
specialize divisor_signed_table_at_functional (b) - L49
apply divisor_signed_table_at_functional - L50
exact he_left_right_witness_witness_witness_right_right_left - L51
exact hb - L52
rewrite heqa at he_left_right_witness_witness_witness_right_right_right - L53
rewrite heqa at he_left_right_witness_witness_witness_right_right_right
08Calculate and transport equalitiesL54–55
09Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact he_left_right_witness_witness_witness_right_right_right
10Separate the logical casesL57–59
11Use earlier factsL60–62
12Construct an explicit witnessL63–63
Supply the displayed value, then prove that it has the required property.
- L63
exists q
13Use earlier factsL64–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L64
exact hq
Original exact command ledger · 64 lines
- 0001
intro F - 0002
intro G - 0003
intro n - 0004
intro d - 0005
intro q - 0006
intro a - 0007
intro b - 0008
intro z - 0009
intro hd - 0010
intro hq - 0011
intro ha - 0012
intro hb - 0013
intro he - 0014
cases he - 0015
cases he_left - 0016
cases he_left_right - 0017
cases he_left_right_witness - 0018
cases he_left_right_witness_witness - 0019
cases he_left_right_witness_witness_witness - 0020
cases he_left_right_witness_witness_witness_right - 0021
cases he_left_right_witness_witness_witness_right_right - 0022
have heqq : x=q - 0023
specialize mul_left_cancel_nonzero (d) - 0024
specialize mul_left_cancel_nonzero (x) - 0025
specialize mul_left_cancel_nonzero (q) - 0026
apply mul_left_cancel_nonzero - 0027
exact hd - 0028
trans n - 0029
symm - 0030
exact he_left_right_witness_witness_witness_left - 0031
exact hq - 0032
rewrite heqq at he_left_right_witness_witness_witness_right_right_left - 0033
rewrite heqq at he_left_right_witness_witness_witness_right_right_left - 0034
rewrite heqq at he_left_right_witness_witness_witness_right_right_left - 0035
rewrite heqq at he_left_right_witness_witness_witness_right_right_left - 0036
have heqa : x1=a - 0037
specialize divisor_signed_table_at_functional (F) - 0038
specialize divisor_signed_table_at_functional (d) - 0039
specialize divisor_signed_table_at_functional (x1) - 0040
specialize divisor_signed_table_at_functional (a) - 0041
apply divisor_signed_table_at_functional - 0042
exact he_left_right_witness_witness_witness_right_left - 0043
exact ha - 0044
have heqb : x2=b - 0045
specialize divisor_signed_table_at_functional (G) - 0046
specialize divisor_signed_table_at_functional (q) - 0047
specialize divisor_signed_table_at_functional (x2) - 0048
specialize divisor_signed_table_at_functional (b) - 0049
apply divisor_signed_table_at_functional - 0050
exact he_left_right_witness_witness_witness_right_right_left - 0051
exact hb - 0052
rewrite heqa at he_left_right_witness_witness_witness_right_right_right - 0053
rewrite heqa at he_left_right_witness_witness_witness_right_right_right - 0054
rewrite heqb at he_left_right_witness_witness_witness_right_right_right - 0055
rewrite heqb at he_left_right_witness_witness_witness_right_right_right - 0056
exact he_left_right_witness_witness_witness_right_right_right - 0057
cases he_right - 0058
exfalso - 0059
cases he_right_left - 0060
apply hd - 0061
exact he_right_left_left - 0062
apply he_right_left_right - 0063
exists q - 0064
exact hq