Exact expanded first-order arithmetic statement
forall a. (exists mps_positive_fixed_negation mps_negative_fixed_negation. (((((a) = 2 * (mps_positive_fixed_negation) /\ (mps_negative_fixed_negation) = 0) \/ exists ge_signed_half_fixed_negationsource. (((a) = 2 * ge_signed_half_fixed_negationsource + 1 /\ (mps_positive_fixed_negation) = 0) /\ (mps_negative_fixed_negation) = S ge_signed_half_fixed_negationsource))) /\ ((((a) = 2 * (mps_negative_fixed_negation) /\ (mps_positive_fixed_negation) = 0) \/ exists ge_signed_half_fixed_negationtarget. (((a) = 2 * ge_signed_half_fixed_negationtarget + 1 /\ (mps_negative_fixed_negation) = 0) /\ (mps_positive_fixed_negation) = S ge_signed_half_fixed_negationtarget))))) -> a = 0Constructive proof overview
Generated structural guide
A canonical signed integer equal to its own additive inverse is zero; no characteristic-zero claim is assumed without proof.
The unchanged tactic script uses 3 declared prerequisites and contains 30 exact native proof lines.
Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable
Proof neighborhood
Direct dependencies
signed_decode_functional Alpha theorem; checked-use authorized signed_balance_zero_iff Alpha theorem; checked-use authorized add_comm 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. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or 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–2
02Separate the logical casesL3–5
03Establish heqL6–14
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed decode functional.
- L6
have heq : x = x1 /\ x1 = x - L7
specialize signed_decode_functional (a) - L8
specialize signed_decode_functional (x) - L9
specialize signed_decode_functional (x1) - L10
specialize signed_decode_functional (x1) - L11
specialize signed_decode_functional (x) - L12
apply signed_decode_functional - L13
exact hneg_witness_witness_left - L14
exact hneg_witness_witness_right
04Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
cases heq
05Establish hbL16–16
Establish this local claim before using it. It is not an additional assumption.
- L16
have hb : exists ge_balance_positive_fixed_balance ge_balance_negative_fixed_balance. (((((a) = 2 * (ge_balance_positive_fixed_balance) /\ (ge_balance_negative_fixed_balance) = 0) \/ exists ge_signed_half_fixed_balancedecode. (((a) = 2 * ge_signed_half_fixed_balancedecode + 1 /\ (ge_balance_positive_fixed_balance) = 0) /\ (ge_balance_negative_fixed_balance) = S ge_signed_half_fixed_balancedecode))) /\ ((x) + ge_balance_negative_fixed_balance = (x1) + ge_balance_positive_fixed_balance))
06Construct an explicit witnessL17–18
07Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
split
08Use earlier factsL20–21
09Establish hzL22–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed balance zero iff.
10Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hz
Original exact command ledger · 30 lines
- 0001
intro a - 0002
intro hneg - 0003
cases hneg - 0004
cases hneg_witness - 0005
cases hneg_witness_witness - 0006
have heq : x = x1 /\ x1 = x - 0007
specialize signed_decode_functional (a) - 0008
specialize signed_decode_functional (x) - 0009
specialize signed_decode_functional (x1) - 0010
specialize signed_decode_functional (x1) - 0011
specialize signed_decode_functional (x) - 0012
apply signed_decode_functional - 0013
exact hneg_witness_witness_left - 0014
exact hneg_witness_witness_right - 0015
cases heq - 0016
have hb : exists ge_balance_positive_fixed_balance ge_balance_negative_fixed_balance. (((((a) = 2 * (ge_balance_positive_fixed_balance) /\ (ge_balance_negative_fixed_balance) = 0) \/ exists ge_signed_half_fixed_balancedecode. (((a) = 2 * ge_signed_half_fixed_balancedecode + 1 /\ (ge_balance_positive_fixed_balance) = 0) /\ (ge_balance_negative_fixed_balance) = S ge_signed_half_fixed_balancedecode))) /\ ((x) + ge_balance_negative_fixed_balance = (x1) + ge_balance_positive_fixed_balance)) - 0017
exists x - 0018
exists x1 - 0019
split - 0020
exact hneg_witness_witness_left - 0021
apply add_comm - 0022
have hz : (a = 0 -> x = x1) /\ (x = x1 -> a = 0) - 0023
specialize signed_balance_zero_iff (a) - 0024
specialize signed_balance_zero_iff (x) - 0025
specialize signed_balance_zero_iff (x1) - 0026
apply signed_balance_zero_iff - 0027
exact hb - 0028
cases hz - 0029
apply hz_right - 0030
exact heq_left