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 N F n d. (exists dst_positive_code_choice_table dst_positive_scale_choice_table dst_negative_code_choice_table dst_negative_scale_choice_table. (((F) = (((((dst_positive_code_choice_table) + (dst_positive_scale_choice_table)) * S ((dst_positive_code_choice_table) + (dst_positive_scale_choice_table)) + ((dst_positive_scale_choice_table) + (dst_positive_scale_choice_table))) + (((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) * S ((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) + ((dst_negative_scale_choice_table) + (dst_negative_scale_choice_table)))) * S ((((dst_positive_code_choice_table) + (dst_positive_scale_choice_table)) * S ((dst_positive_code_choice_table) + (dst_positive_scale_choice_table)) + ((dst_positive_scale_choice_table) + (dst_positive_scale_choice_table))) + (((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) * S ((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) + ((dst_negative_scale_choice_table) + (dst_negative_scale_choice_table)))) + ((((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) * S ((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) + ((dst_negative_scale_choice_table) + (dst_negative_scale_choice_table))) + (((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) * S ((dst_negative_code_choice_table) + (dst_negative_scale_choice_table)) + ((dst_negative_scale_choice_table) + (dst_negative_scale_choice_table)))))) /\ (forall dst_index_choice_table. (exists pvs_le_gap_choice_tabledomain. pvs_le_gap_choice_tabledomain + (dst_index_choice_table) = (N)) -> exists dst_positive_choice_table dst_negative_choice_table dst_value_choice_table. ((((exists ff_h_pvs_choice_tableentrypositive. ff_h_pvs_choice_tableentrypositive + S (dst_positive_choice_table) = S ((S (dst_index_choice_table)) * dst_positive_scale_choice_table)) /\ exists ff_q_pvs_choice_tableentrypositive. dst_positive_code_choice_table = ff_q_pvs_choice_tableentrypositive * S ((S (dst_index_choice_table)) * dst_positive_scale_choice_table) + (dst_positive_choice_table))) /\ (((((exists ff_h_pvs_choice_tableentrynegative. ff_h_pvs_choice_tableentrynegative + S (dst_negative_choice_table) = S ((S (dst_index_choice_table)) * dst_negative_scale_choice_table)) /\ exists ff_q_pvs_choice_tableentrynegative. dst_negative_code_choice_table = ff_q_pvs_choice_tableentrynegative * S ((S (dst_index_choice_table)) * dst_negative_scale_choice_table) + (dst_negative_choice_table))) /\ (exists ge_balance_positive_choice_tableentryvalue ge_balance_negative_choice_tableentryvalue. (((((dst_value_choice_table) = 2 * (ge_balance_positive_choice_tableentryvalue) /\ (ge_balance_negative_choice_tableentryvalue) = 0) \/ exists ge_signed_half_choice_tableentryvaluedecode. (((dst_value_choice_table) = 2 * ge_signed_half_choice_tableentryvaluedecode + 1 /\ (ge_balance_positive_choice_tableentryvalue) = 0) /\ (ge_balance_negative_choice_tableentryvalue) = S ge_signed_half_choice_tableentryvaluedecode))) /\ ((dst_positive_choice_table) + ge_balance_negative_choice_tableentryvalue = (dst_negative_choice_table) + ge_balance_positive_choice_tableentryvalue))))))))) -> (exists pvs_le_gap_choice_bound. pvs_le_gap_choice_bound + (d) = (N)) -> exists z. ((((~((d)=0)) /\ (exists dm_quotient_choice_result. (((n)=(d)*dm_quotient_choice_result) /\ (exists dst_positive_code_choice_resultinput dst_positive_scale_choice_resultinput dst_negative_code_choice_resultinput dst_negative_scale_choice_resultinput dst_positive_choice_resultinput dst_negative_choice_resultinput. (((F) = (((((dst_positive_code_choice_resultinput) + (dst_positive_scale_choice_resultinput)) * S ((dst_positive_code_choice_resultinput) + (dst_positive_scale_choice_resultinput)) + ((dst_positive_scale_choice_resultinput) + (dst_positive_scale_choice_resultinput))) + (((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) * S ((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) + ((dst_negative_scale_choice_resultinput) + (dst_negative_scale_choice_resultinput)))) * S ((((dst_positive_code_choice_resultinput) + (dst_positive_scale_choice_resultinput)) * S ((dst_positive_code_choice_resultinput) + (dst_positive_scale_choice_resultinput)) + ((dst_positive_scale_choice_resultinput) + (dst_positive_scale_choice_resultinput))) + (((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) * S ((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) + ((dst_negative_scale_choice_resultinput) + (dst_negative_scale_choice_resultinput)))) + ((((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) * S ((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) + ((dst_negative_scale_choice_resultinput) + (dst_negative_scale_choice_resultinput))) + (((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) * S ((dst_negative_code_choice_resultinput) + (dst_negative_scale_choice_resultinput)) + ((dst_negative_scale_choice_resultinput) + (dst_negative_scale_choice_resultinput)))))) /\ (((((exists ff_h_pvs_choice_resultinputpositive. ff_h_pvs_choice_resultinputpositive + S (dst_positive_choice_resultinput) = S ((S (d)) * dst_positive_scale_choice_resultinput)) /\ exists ff_q_pvs_choice_resultinputpositive. dst_positive_code_choice_resultinput = ff_q_pvs_choice_resultinputpositive * S ((S (d)) * dst_positive_scale_choice_resultinput) + (dst_positive_choice_resultinput))) /\ (((((exists ff_h_pvs_choice_resultinputnegative. ff_h_pvs_choice_resultinputnegative + S (dst_negative_choice_resultinput) = S ((S (d)) * dst_negative_scale_choice_resultinput)) /\ exists ff_q_pvs_choice_resultinputnegative. dst_negative_code_choice_resultinput = ff_q_pvs_choice_resultinputnegative * S ((S (d)) * dst_negative_scale_choice_resultinput) + (dst_negative_choice_resultinput))) /\ (exists ge_balance_positive_choice_resultinputvalue ge_balance_negative_choice_resultinputvalue. (((((z) = 2 * (ge_balance_positive_choice_resultinputvalue) /\ (ge_balance_negative_choice_resultinputvalue) = 0) \/ exists ge_signed_half_choice_resultinputvaluedecode. (((z) = 2 * ge_signed_half_choice_resultinputvaluedecode + 1 /\ (ge_balance_positive_choice_resultinputvalue) = 0) /\ (ge_balance_negative_choice_resultinputvalue) = S ge_signed_half_choice_resultinputvaluedecode))) /\ ((dst_positive_choice_resultinput) + ge_balance_negative_choice_resultinputvalue = (dst_negative_choice_resultinput) + ge_balance_positive_choice_resultinputvalue))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_choice_resultnondivisor. (n) = (d) * pvs_factor_choice_resultnondivisor)) /\ ((z)=0))))Constructive proof overview
Generated structural guide
Constructively decide zero and divisibility, then construct the actual retained lookup or zero code; no quotient or choice oracle is assumed.
The unchanged tactic script uses 6 declared prerequisites and contains 54 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
eq_decidable Stable theorem; checked-use authorized multiple_decidable_nonzero Stable theorem; checked-use authorized divisor_signed_table_lookup Alpha theorem; checked-use authorized DV0010 divisor_mask_entry_zero DV0011 divisor_mask_entry_from_quotient DV0012 divisor_mask_entry_from_nondivisorDirect 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 (3)
01Fix variables and assumptionsL1–6
02Establish hcL7–10
03Separate the logical casesL11–11
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L11
cases hc
04Construct an explicit witnessL12–12
Supply the displayed value, then prove that it has the required property.
- L12
exists 0
05Calculate and transport equalitiesL13–20
06Use earlier factsL21–23
07Establish hdivL24–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple decidable nonzero.
08Separate the logical casesL29–30
09Establish hzL31–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table lookup.
10Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
cases hz
11Construct an explicit witnessL39–39
Supply the displayed value, then prove that it has the required property.
- L39
exists x1
12Use earlier factsL40–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L40
specialize divisor_mask_entry_from_quotient (F) - L41
specialize divisor_mask_entry_from_quotient (n) - L42
specialize divisor_mask_entry_from_quotient (d) - L43
specialize divisor_mask_entry_from_quotient (x) - L44
specialize divisor_mask_entry_from_quotient (x1) - L45
apply divisor_mask_entry_from_quotient - L46
exact hc_right - L47
exact hdiv_left_witness - L48
exact hz_witness
13Construct an explicit witnessL49–49
Supply the displayed value, then prove that it has the required property.
- L49
exists 0
14Use earlier factsL50–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 54 lines
- 0001
intro N - 0002
intro F - 0003
intro n - 0004
intro d - 0005
intro ht - 0006
intro hbound - 0007
have hc : d=0 \/ ~(d=0) - 0008
specialize eq_decidable (d) - 0009
specialize eq_decidable (0) - 0010
apply eq_decidable - 0011
cases hc - 0012
exists 0 - 0013
rewrite hc_left - 0014
rewrite hc_left - 0015
rewrite hc_left - 0016
rewrite hc_left - 0017
rewrite hc_left - 0018
rewrite hc_left - 0019
rewrite hc_left - 0020
rewrite hc_left - 0021
specialize divisor_mask_entry_zero (F) - 0022
specialize divisor_mask_entry_zero (n) - 0023
apply divisor_mask_entry_zero - 0024
have hdiv : (exists pvs_factor_choice_yes. (n) = (d) * pvs_factor_choice_yes) \/ ~(exists pvs_factor_choice_no. (n) = (d) * pvs_factor_choice_no) - 0025
specialize multiple_decidable_nonzero (d) - 0026
specialize multiple_decidable_nonzero (n) - 0027
apply multiple_decidable_nonzero - 0028
exact hc_right - 0029
cases hdiv - 0030
cases hdiv_left - 0031
have hz : exists z. (exists dst_positive_code_choice_actual_input dst_positive_scale_choice_actual_input dst_negative_code_choice_actual_input dst_negative_scale_choice_actual_input dst_positive_choice_actual_input dst_negative_choice_actual_input. (((F) = (((((dst_positive_code_choice_actual_input) + (dst_positive_scale_choice_actual_input)) * S ((dst_positive_code_choice_actual_input) + (dst_positive_scale_choice_actual_input)) + ((dst_positive_scale_choice_actual_input) + (dst_positive_scale_choice_actual_input))) + (((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) * S ((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) + ((dst_negative_scale_choice_actual_input) + (dst_negative_scale_choice_actual_input)))) * S ((((dst_positive_code_choice_actual_input) + (dst_positive_scale_choice_actual_input)) * S ((dst_positive_code_choice_actual_input) + (dst_positive_scale_choice_actual_input)) + ((dst_positive_scale_choice_actual_input) + (dst_positive_scale_choice_actual_input))) + (((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) * S ((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) + ((dst_negative_scale_choice_actual_input) + (dst_negative_scale_choice_actual_input)))) + ((((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) * S ((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) + ((dst_negative_scale_choice_actual_input) + (dst_negative_scale_choice_actual_input))) + (((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) * S ((dst_negative_code_choice_actual_input) + (dst_negative_scale_choice_actual_input)) + ((dst_negative_scale_choice_actual_input) + (dst_negative_scale_choice_actual_input)))))) /\ (((((exists ff_h_pvs_choice_actual_inputpositive. ff_h_pvs_choice_actual_inputpositive + S (dst_positive_choice_actual_input) = S ((S (d)) * dst_positive_scale_choice_actual_input)) /\ exists ff_q_pvs_choice_actual_inputpositive. dst_positive_code_choice_actual_input = ff_q_pvs_choice_actual_inputpositive * S ((S (d)) * dst_positive_scale_choice_actual_input) + (dst_positive_choice_actual_input))) /\ (((((exists ff_h_pvs_choice_actual_inputnegative. ff_h_pvs_choice_actual_inputnegative + S (dst_negative_choice_actual_input) = S ((S (d)) * dst_negative_scale_choice_actual_input)) /\ exists ff_q_pvs_choice_actual_inputnegative. dst_negative_code_choice_actual_input = ff_q_pvs_choice_actual_inputnegative * S ((S (d)) * dst_negative_scale_choice_actual_input) + (dst_negative_choice_actual_input))) /\ (exists ge_balance_positive_choice_actual_inputvalue ge_balance_negative_choice_actual_inputvalue. (((((z) = 2 * (ge_balance_positive_choice_actual_inputvalue) /\ (ge_balance_negative_choice_actual_inputvalue) = 0) \/ exists ge_signed_half_choice_actual_inputvaluedecode. (((z) = 2 * ge_signed_half_choice_actual_inputvaluedecode + 1 /\ (ge_balance_positive_choice_actual_inputvalue) = 0) /\ (ge_balance_negative_choice_actual_inputvalue) = S ge_signed_half_choice_actual_inputvaluedecode))) /\ ((dst_positive_choice_actual_input) + ge_balance_negative_choice_actual_inputvalue = (dst_negative_choice_actual_input) + ge_balance_positive_choice_actual_inputvalue))))))))) - 0032
specialize divisor_signed_table_lookup (N) - 0033
specialize divisor_signed_table_lookup (F) - 0034
specialize divisor_signed_table_lookup (d) - 0035
apply divisor_signed_table_lookup - 0036
exact ht - 0037
exact hbound - 0038
cases hz - 0039
exists x1 - 0040
specialize divisor_mask_entry_from_quotient (F) - 0041
specialize divisor_mask_entry_from_quotient (n) - 0042
specialize divisor_mask_entry_from_quotient (d) - 0043
specialize divisor_mask_entry_from_quotient (x) - 0044
specialize divisor_mask_entry_from_quotient (x1) - 0045
apply divisor_mask_entry_from_quotient - 0046
exact hc_right - 0047
exact hdiv_left_witness - 0048
exact hz_witness - 0049
exists 0 - 0050
specialize divisor_mask_entry_from_nondivisor (F) - 0051
specialize divisor_mask_entry_from_nondivisor (n) - 0052
specialize divisor_mask_entry_from_nondivisor (d) - 0053
apply divisor_mask_entry_from_nondivisor - 0054
exact hdiv_right