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 a b. (forall dm_index_source_equal dm_first_value_source_equal dm_second_value_source_equal. ~(dm_index_source_equal=0) -> (exists pvs_le_gap_source_equaldomain. pvs_le_gap_source_equaldomain + (dm_index_source_equal) = (n)) -> (exists dst_positive_code_source_equalfirst dst_positive_scale_source_equalfirst dst_negative_code_source_equalfirst dst_negative_scale_source_equalfirst dst_positive_source_equalfirst dst_negative_source_equalfirst. (((F) = (((((dst_positive_code_source_equalfirst) + (dst_positive_scale_source_equalfirst)) * S ((dst_positive_code_source_equalfirst) + (dst_positive_scale_source_equalfirst)) + ((dst_positive_scale_source_equalfirst) + (dst_positive_scale_source_equalfirst))) + (((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) * S ((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) + ((dst_negative_scale_source_equalfirst) + (dst_negative_scale_source_equalfirst)))) * S ((((dst_positive_code_source_equalfirst) + (dst_positive_scale_source_equalfirst)) * S ((dst_positive_code_source_equalfirst) + (dst_positive_scale_source_equalfirst)) + ((dst_positive_scale_source_equalfirst) + (dst_positive_scale_source_equalfirst))) + (((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) * S ((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) + ((dst_negative_scale_source_equalfirst) + (dst_negative_scale_source_equalfirst)))) + ((((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) * S ((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) + ((dst_negative_scale_source_equalfirst) + (dst_negative_scale_source_equalfirst))) + (((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) * S ((dst_negative_code_source_equalfirst) + (dst_negative_scale_source_equalfirst)) + ((dst_negative_scale_source_equalfirst) + (dst_negative_scale_source_equalfirst)))))) /\ (((((exists ff_h_pvs_source_equalfirstpositive. ff_h_pvs_source_equalfirstpositive + S (dst_positive_source_equalfirst) = S ((S (dm_index_source_equal)) * dst_positive_scale_source_equalfirst)) /\ exists ff_q_pvs_source_equalfirstpositive. dst_positive_code_source_equalfirst = ff_q_pvs_source_equalfirstpositive * S ((S (dm_index_source_equal)) * dst_positive_scale_source_equalfirst) + (dst_positive_source_equalfirst))) /\ (((((exists ff_h_pvs_source_equalfirstnegative. ff_h_pvs_source_equalfirstnegative + S (dst_negative_source_equalfirst) = S ((S (dm_index_source_equal)) * dst_negative_scale_source_equalfirst)) /\ exists ff_q_pvs_source_equalfirstnegative. dst_negative_code_source_equalfirst = ff_q_pvs_source_equalfirstnegative * S ((S (dm_index_source_equal)) * dst_negative_scale_source_equalfirst) + (dst_negative_source_equalfirst))) /\ (exists ge_balance_positive_source_equalfirstvalue ge_balance_negative_source_equalfirstvalue. (((((dm_first_value_source_equal) = 2 * (ge_balance_positive_source_equalfirstvalue) /\ (ge_balance_negative_source_equalfirstvalue) = 0) \/ exists ge_signed_half_source_equalfirstvaluedecode. (((dm_first_value_source_equal) = 2 * ge_signed_half_source_equalfirstvaluedecode + 1 /\ (ge_balance_positive_source_equalfirstvalue) = 0) /\ (ge_balance_negative_source_equalfirstvalue) = S ge_signed_half_source_equalfirstvaluedecode))) /\ ((dst_positive_source_equalfirst) + ge_balance_negative_source_equalfirstvalue = (dst_negative_source_equalfirst) + ge_balance_positive_source_equalfirstvalue))))))))) -> (exists dst_positive_code_source_equalsecond dst_positive_scale_source_equalsecond dst_negative_code_source_equalsecond dst_negative_scale_source_equalsecond dst_positive_source_equalsecond dst_negative_source_equalsecond. (((G) = (((((dst_positive_code_source_equalsecond) + (dst_positive_scale_source_equalsecond)) * S ((dst_positive_code_source_equalsecond) + (dst_positive_scale_source_equalsecond)) + ((dst_positive_scale_source_equalsecond) + (dst_positive_scale_source_equalsecond))) + (((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) * S ((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) + ((dst_negative_scale_source_equalsecond) + (dst_negative_scale_source_equalsecond)))) * S ((((dst_positive_code_source_equalsecond) + (dst_positive_scale_source_equalsecond)) * S ((dst_positive_code_source_equalsecond) + (dst_positive_scale_source_equalsecond)) + ((dst_positive_scale_source_equalsecond) + (dst_positive_scale_source_equalsecond))) + (((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) * S ((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) + ((dst_negative_scale_source_equalsecond) + (dst_negative_scale_source_equalsecond)))) + ((((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) * S ((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) + ((dst_negative_scale_source_equalsecond) + (dst_negative_scale_source_equalsecond))) + (((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) * S ((dst_negative_code_source_equalsecond) + (dst_negative_scale_source_equalsecond)) + ((dst_negative_scale_source_equalsecond) + (dst_negative_scale_source_equalsecond)))))) /\ (((((exists ff_h_pvs_source_equalsecondpositive. ff_h_pvs_source_equalsecondpositive + S (dst_positive_source_equalsecond) = S ((S (dm_index_source_equal)) * dst_positive_scale_source_equalsecond)) /\ exists ff_q_pvs_source_equalsecondpositive. dst_positive_code_source_equalsecond = ff_q_pvs_source_equalsecondpositive * S ((S (dm_index_source_equal)) * dst_positive_scale_source_equalsecond) + (dst_positive_source_equalsecond))) /\ (((((exists ff_h_pvs_source_equalsecondnegative. ff_h_pvs_source_equalsecondnegative + S (dst_negative_source_equalsecond) = S ((S (dm_index_source_equal)) * dst_negative_scale_source_equalsecond)) /\ exists ff_q_pvs_source_equalsecondnegative. dst_negative_code_source_equalsecond = ff_q_pvs_source_equalsecondnegative * S ((S (dm_index_source_equal)) * dst_negative_scale_source_equalsecond) + (dst_negative_source_equalsecond))) /\ (exists ge_balance_positive_source_equalsecondvalue ge_balance_negative_source_equalsecondvalue. (((((dm_second_value_source_equal) = 2 * (ge_balance_positive_source_equalsecondvalue) /\ (ge_balance_negative_source_equalsecondvalue) = 0) \/ exists ge_signed_half_source_equalsecondvaluedecode. (((dm_second_value_source_equal) = 2 * ge_signed_half_source_equalsecondvaluedecode + 1 /\ (ge_balance_positive_source_equalsecondvalue) = 0) /\ (ge_balance_negative_source_equalsecondvalue) = S ge_signed_half_source_equalsecondvaluedecode))) /\ ((dst_positive_source_equalsecond) + ge_balance_negative_source_equalsecondvalue = (dst_negative_source_equalsecond) + ge_balance_positive_source_equalsecondvalue))))))))) -> dm_first_value_source_equal=dm_second_value_source_equal) -> (exists pvs_le_gap_source_bound. pvs_le_gap_source_bound + (d) = (n)) -> ((((~((d)=0)) /\ (exists dm_quotient_source_first. (((n)=(d)*dm_quotient_source_first) /\ (exists dst_positive_code_source_firstinput dst_positive_scale_source_firstinput dst_negative_code_source_firstinput dst_negative_scale_source_firstinput dst_positive_source_firstinput dst_negative_source_firstinput. (((F) = (((((dst_positive_code_source_firstinput) + (dst_positive_scale_source_firstinput)) * S ((dst_positive_code_source_firstinput) + (dst_positive_scale_source_firstinput)) + ((dst_positive_scale_source_firstinput) + (dst_positive_scale_source_firstinput))) + (((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) * S ((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) + ((dst_negative_scale_source_firstinput) + (dst_negative_scale_source_firstinput)))) * S ((((dst_positive_code_source_firstinput) + (dst_positive_scale_source_firstinput)) * S ((dst_positive_code_source_firstinput) + (dst_positive_scale_source_firstinput)) + ((dst_positive_scale_source_firstinput) + (dst_positive_scale_source_firstinput))) + (((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) * S ((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) + ((dst_negative_scale_source_firstinput) + (dst_negative_scale_source_firstinput)))) + ((((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) * S ((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) + ((dst_negative_scale_source_firstinput) + (dst_negative_scale_source_firstinput))) + (((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) * S ((dst_negative_code_source_firstinput) + (dst_negative_scale_source_firstinput)) + ((dst_negative_scale_source_firstinput) + (dst_negative_scale_source_firstinput)))))) /\ (((((exists ff_h_pvs_source_firstinputpositive. ff_h_pvs_source_firstinputpositive + S (dst_positive_source_firstinput) = S ((S (d)) * dst_positive_scale_source_firstinput)) /\ exists ff_q_pvs_source_firstinputpositive. dst_positive_code_source_firstinput = ff_q_pvs_source_firstinputpositive * S ((S (d)) * dst_positive_scale_source_firstinput) + (dst_positive_source_firstinput))) /\ (((((exists ff_h_pvs_source_firstinputnegative. ff_h_pvs_source_firstinputnegative + S (dst_negative_source_firstinput) = S ((S (d)) * dst_negative_scale_source_firstinput)) /\ exists ff_q_pvs_source_firstinputnegative. dst_negative_code_source_firstinput = ff_q_pvs_source_firstinputnegative * S ((S (d)) * dst_negative_scale_source_firstinput) + (dst_negative_source_firstinput))) /\ (exists ge_balance_positive_source_firstinputvalue ge_balance_negative_source_firstinputvalue. (((((a) = 2 * (ge_balance_positive_source_firstinputvalue) /\ (ge_balance_negative_source_firstinputvalue) = 0) \/ exists ge_signed_half_source_firstinputvaluedecode. (((a) = 2 * ge_signed_half_source_firstinputvaluedecode + 1 /\ (ge_balance_positive_source_firstinputvalue) = 0) /\ (ge_balance_negative_source_firstinputvalue) = S ge_signed_half_source_firstinputvaluedecode))) /\ ((dst_positive_source_firstinput) + ge_balance_negative_source_firstinputvalue = (dst_negative_source_firstinput) + ge_balance_positive_source_firstinputvalue))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_source_firstnondivisor. (n) = (d) * pvs_factor_source_firstnondivisor)) /\ ((a)=0)))) -> ((((~((d)=0)) /\ (exists dm_quotient_source_second. (((n)=(d)*dm_quotient_source_second) /\ (exists dst_positive_code_source_secondinput dst_positive_scale_source_secondinput dst_negative_code_source_secondinput dst_negative_scale_source_secondinput dst_positive_source_secondinput dst_negative_source_secondinput. (((G) = (((((dst_positive_code_source_secondinput) + (dst_positive_scale_source_secondinput)) * S ((dst_positive_code_source_secondinput) + (dst_positive_scale_source_secondinput)) + ((dst_positive_scale_source_secondinput) + (dst_positive_scale_source_secondinput))) + (((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) * S ((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) + ((dst_negative_scale_source_secondinput) + (dst_negative_scale_source_secondinput)))) * S ((((dst_positive_code_source_secondinput) + (dst_positive_scale_source_secondinput)) * S ((dst_positive_code_source_secondinput) + (dst_positive_scale_source_secondinput)) + ((dst_positive_scale_source_secondinput) + (dst_positive_scale_source_secondinput))) + (((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) * S ((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) + ((dst_negative_scale_source_secondinput) + (dst_negative_scale_source_secondinput)))) + ((((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) * S ((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) + ((dst_negative_scale_source_secondinput) + (dst_negative_scale_source_secondinput))) + (((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) * S ((dst_negative_code_source_secondinput) + (dst_negative_scale_source_secondinput)) + ((dst_negative_scale_source_secondinput) + (dst_negative_scale_source_secondinput)))))) /\ (((((exists ff_h_pvs_source_secondinputpositive. ff_h_pvs_source_secondinputpositive + S (dst_positive_source_secondinput) = S ((S (d)) * dst_positive_scale_source_secondinput)) /\ exists ff_q_pvs_source_secondinputpositive. dst_positive_code_source_secondinput = ff_q_pvs_source_secondinputpositive * S ((S (d)) * dst_positive_scale_source_secondinput) + (dst_positive_source_secondinput))) /\ (((((exists ff_h_pvs_source_secondinputnegative. ff_h_pvs_source_secondinputnegative + S (dst_negative_source_secondinput) = S ((S (d)) * dst_negative_scale_source_secondinput)) /\ exists ff_q_pvs_source_secondinputnegative. dst_negative_code_source_secondinput = ff_q_pvs_source_secondinputnegative * S ((S (d)) * dst_negative_scale_source_secondinput) + (dst_negative_source_secondinput))) /\ (exists ge_balance_positive_source_secondinputvalue ge_balance_negative_source_secondinputvalue. (((((b) = 2 * (ge_balance_positive_source_secondinputvalue) /\ (ge_balance_negative_source_secondinputvalue) = 0) \/ exists ge_signed_half_source_secondinputvaluedecode. (((b) = 2 * ge_signed_half_source_secondinputvaluedecode + 1 /\ (ge_balance_positive_source_secondinputvalue) = 0) /\ (ge_balance_negative_source_secondinputvalue) = S ge_signed_half_source_secondinputvaluedecode))) /\ ((dst_positive_source_secondinput) + ge_balance_negative_source_secondinputvalue = (dst_negative_source_secondinput) + ge_balance_positive_source_secondinputvalue))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_source_secondnondivisor. (n) = (d) * pvs_factor_source_secondnondivisor)) /\ ((b)=0)))) -> a=bConstructive proof overview
Generated structural guide
Mask values depend only on positive input values: zero branches ignore F(0), while kept branches supply the positivity and quotient data needed for actual source equality.
The unchanged tactic script uses 0 declared prerequisites and contains 51 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
Direct 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
02Separate the logical casesL11–18
03Use earlier factsL19–26
04Separate the logical casesL27–29
05Use earlier factsL30–32
06Construct an explicit witnessL33–33
Supply the displayed value, then prove that it has the required property.
- L33
exists x
07Use earlier factsL34–34
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L34
exact ha_left_right_witness_left
08Separate the logical casesL35–41
09Use earlier factsL42–44
10Construct an explicit witnessL45–45
Supply the displayed value, then prove that it has the required property.
- L45
exists x
11Use earlier factsL46–46
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L46
exact hb_left_right_witness_left
12Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hb_right
13Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
trans 0
14Use earlier factsL49–49
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
exact ha_right_right
15Calculate and transport equalitiesL50–50
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L50
symm
16Use earlier factsL51–51
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L51
exact hb_right_right
Original exact command ledger · 51 lines
- 0001
intro F - 0002
intro G - 0003
intro n - 0004
intro d - 0005
intro a - 0006
intro b - 0007
intro he - 0008
intro hdn - 0009
intro ha - 0010
intro hb - 0011
cases ha - 0012
cases ha_left - 0013
cases ha_left_right - 0014
cases ha_left_right_witness - 0015
cases hb - 0016
cases hb_left - 0017
cases hb_left_right - 0018
cases hb_left_right_witness - 0019
specialize he (d) - 0020
specialize he (a) - 0021
specialize he (b) - 0022
apply he - 0023
exact ha_left_left - 0024
exact hdn - 0025
exact ha_left_right_witness_right - 0026
exact hb_left_right_witness_right - 0027
cases hb_right - 0028
exfalso - 0029
cases hb_right_left - 0030
apply ha_left_left - 0031
exact hb_right_left_left - 0032
apply hb_right_left_right - 0033
exists x - 0034
exact ha_left_right_witness_left - 0035
cases ha_right - 0036
cases hb - 0037
cases hb_left - 0038
cases hb_left_right - 0039
cases hb_left_right_witness - 0040
exfalso - 0041
cases ha_right_left - 0042
apply hb_left_left - 0043
exact ha_right_left_left - 0044
apply ha_right_left_right - 0045
exists x - 0046
exact hb_left_right_witness_left - 0047
cases hb_right - 0048
trans 0 - 0049
exact ha_right_right - 0050
symm - 0051
exact hb_right_right