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 n l M d. (((exists dst_positive_code_omit_masktable dst_positive_scale_omit_masktable dst_negative_code_omit_masktable dst_negative_scale_omit_masktable. (((M) = (((((dst_positive_code_omit_masktable) + (dst_positive_scale_omit_masktable)) * S ((dst_positive_code_omit_masktable) + (dst_positive_scale_omit_masktable)) + ((dst_positive_scale_omit_masktable) + (dst_positive_scale_omit_masktable))) + (((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) * S ((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) + ((dst_negative_scale_omit_masktable) + (dst_negative_scale_omit_masktable)))) * S ((((dst_positive_code_omit_masktable) + (dst_positive_scale_omit_masktable)) * S ((dst_positive_code_omit_masktable) + (dst_positive_scale_omit_masktable)) + ((dst_positive_scale_omit_masktable) + (dst_positive_scale_omit_masktable))) + (((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) * S ((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) + ((dst_negative_scale_omit_masktable) + (dst_negative_scale_omit_masktable)))) + ((((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) * S ((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) + ((dst_negative_scale_omit_masktable) + (dst_negative_scale_omit_masktable))) + (((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) * S ((dst_negative_code_omit_masktable) + (dst_negative_scale_omit_masktable)) + ((dst_negative_scale_omit_masktable) + (dst_negative_scale_omit_masktable)))))) /\ (forall dst_index_omit_masktable. (exists pvs_le_gap_omit_masktabledomain. pvs_le_gap_omit_masktabledomain + (dst_index_omit_masktable) = (l)) -> exists dst_positive_omit_masktable dst_negative_omit_masktable dst_value_omit_masktable. ((((exists ff_h_pvs_omit_masktableentrypositive. ff_h_pvs_omit_masktableentrypositive + S (dst_positive_omit_masktable) = S ((S (dst_index_omit_masktable)) * dst_positive_scale_omit_masktable)) /\ exists ff_q_pvs_omit_masktableentrypositive. dst_positive_code_omit_masktable = ff_q_pvs_omit_masktableentrypositive * S ((S (dst_index_omit_masktable)) * dst_positive_scale_omit_masktable) + (dst_positive_omit_masktable))) /\ (((((exists ff_h_pvs_omit_masktableentrynegative. ff_h_pvs_omit_masktableentrynegative + S (dst_negative_omit_masktable) = S ((S (dst_index_omit_masktable)) * dst_negative_scale_omit_masktable)) /\ exists ff_q_pvs_omit_masktableentrynegative. dst_negative_code_omit_masktable = ff_q_pvs_omit_masktableentrynegative * S ((S (dst_index_omit_masktable)) * dst_negative_scale_omit_masktable) + (dst_negative_omit_masktable))) /\ (exists ge_balance_positive_omit_masktableentryvalue ge_balance_negative_omit_masktableentryvalue. (((((dst_value_omit_masktable) = 2 * (ge_balance_positive_omit_masktableentryvalue) /\ (ge_balance_negative_omit_masktableentryvalue) = 0) \/ exists ge_signed_half_omit_masktableentryvaluedecode. (((dst_value_omit_masktable) = 2 * ge_signed_half_omit_masktableentryvaluedecode + 1 /\ (ge_balance_positive_omit_masktableentryvalue) = 0) /\ (ge_balance_negative_omit_masktableentryvalue) = S ge_signed_half_omit_masktableentryvaluedecode))) /\ ((dst_positive_omit_masktable) + ge_balance_negative_omit_masktableentryvalue = (dst_negative_omit_masktable) + ge_balance_positive_omit_masktableentryvalue))))))))) /\ (forall dm_index_omit_mask dm_value_omit_mask. (exists pvs_le_gap_omit_maskdomain. pvs_le_gap_omit_maskdomain + (dm_index_omit_mask) = (l)) -> (exists dst_positive_code_omit_masklookup dst_positive_scale_omit_masklookup dst_negative_code_omit_masklookup dst_negative_scale_omit_masklookup dst_positive_omit_masklookup dst_negative_omit_masklookup. (((M) = (((((dst_positive_code_omit_masklookup) + (dst_positive_scale_omit_masklookup)) * S ((dst_positive_code_omit_masklookup) + (dst_positive_scale_omit_masklookup)) + ((dst_positive_scale_omit_masklookup) + (dst_positive_scale_omit_masklookup))) + (((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) * S ((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) + ((dst_negative_scale_omit_masklookup) + (dst_negative_scale_omit_masklookup)))) * S ((((dst_positive_code_omit_masklookup) + (dst_positive_scale_omit_masklookup)) * S ((dst_positive_code_omit_masklookup) + (dst_positive_scale_omit_masklookup)) + ((dst_positive_scale_omit_masklookup) + (dst_positive_scale_omit_masklookup))) + (((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) * S ((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) + ((dst_negative_scale_omit_masklookup) + (dst_negative_scale_omit_masklookup)))) + ((((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) * S ((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) + ((dst_negative_scale_omit_masklookup) + (dst_negative_scale_omit_masklookup))) + (((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) * S ((dst_negative_code_omit_masklookup) + (dst_negative_scale_omit_masklookup)) + ((dst_negative_scale_omit_masklookup) + (dst_negative_scale_omit_masklookup)))))) /\ (((((exists ff_h_pvs_omit_masklookuppositive. ff_h_pvs_omit_masklookuppositive + S (dst_positive_omit_masklookup) = S ((S (dm_index_omit_mask)) * dst_positive_scale_omit_masklookup)) /\ exists ff_q_pvs_omit_masklookuppositive. dst_positive_code_omit_masklookup = ff_q_pvs_omit_masklookuppositive * S ((S (dm_index_omit_mask)) * dst_positive_scale_omit_masklookup) + (dst_positive_omit_masklookup))) /\ (((((exists ff_h_pvs_omit_masklookupnegative. ff_h_pvs_omit_masklookupnegative + S (dst_negative_omit_masklookup) = S ((S (dm_index_omit_mask)) * dst_negative_scale_omit_masklookup)) /\ exists ff_q_pvs_omit_masklookupnegative. dst_negative_code_omit_masklookup = ff_q_pvs_omit_masklookupnegative * S ((S (dm_index_omit_mask)) * dst_negative_scale_omit_masklookup) + (dst_negative_omit_masklookup))) /\ (exists ge_balance_positive_omit_masklookupvalue ge_balance_negative_omit_masklookupvalue. (((((dm_value_omit_mask) = 2 * (ge_balance_positive_omit_masklookupvalue) /\ (ge_balance_negative_omit_masklookupvalue) = 0) \/ exists ge_signed_half_omit_masklookupvaluedecode. (((dm_value_omit_mask) = 2 * ge_signed_half_omit_masklookupvaluedecode + 1 /\ (ge_balance_positive_omit_masklookupvalue) = 0) /\ (ge_balance_negative_omit_masklookupvalue) = S ge_signed_half_omit_masklookupvaluedecode))) /\ ((dst_positive_omit_masklookup) + ge_balance_negative_omit_masklookupvalue = (dst_negative_omit_masklookup) + ge_balance_positive_omit_masklookupvalue))))))))) -> ((((~((dm_index_omit_mask)=0)) /\ (exists dm_quotient_omit_maskentry. (((n)=(dm_index_omit_mask)*dm_quotient_omit_maskentry) /\ (exists dst_positive_code_omit_maskentryinput dst_positive_scale_omit_maskentryinput dst_negative_code_omit_maskentryinput dst_negative_scale_omit_maskentryinput dst_positive_omit_maskentryinput dst_negative_omit_maskentryinput. (((F) = (((((dst_positive_code_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput)) * S ((dst_positive_code_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput)) + ((dst_positive_scale_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput))) + (((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) * S ((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) + ((dst_negative_scale_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)))) * S ((((dst_positive_code_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput)) * S ((dst_positive_code_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput)) + ((dst_positive_scale_omit_maskentryinput) + (dst_positive_scale_omit_maskentryinput))) + (((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) * S ((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) + ((dst_negative_scale_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)))) + ((((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) * S ((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) + ((dst_negative_scale_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput))) + (((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) * S ((dst_negative_code_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)) + ((dst_negative_scale_omit_maskentryinput) + (dst_negative_scale_omit_maskentryinput)))))) /\ (((((exists ff_h_pvs_omit_maskentryinputpositive. ff_h_pvs_omit_maskentryinputpositive + S (dst_positive_omit_maskentryinput) = S ((S (dm_index_omit_mask)) * dst_positive_scale_omit_maskentryinput)) /\ exists ff_q_pvs_omit_maskentryinputpositive. dst_positive_code_omit_maskentryinput = ff_q_pvs_omit_maskentryinputpositive * S ((S (dm_index_omit_mask)) * dst_positive_scale_omit_maskentryinput) + (dst_positive_omit_maskentryinput))) /\ (((((exists ff_h_pvs_omit_maskentryinputnegative. ff_h_pvs_omit_maskentryinputnegative + S (dst_negative_omit_maskentryinput) = S ((S (dm_index_omit_mask)) * dst_negative_scale_omit_maskentryinput)) /\ exists ff_q_pvs_omit_maskentryinputnegative. dst_negative_code_omit_maskentryinput = ff_q_pvs_omit_maskentryinputnegative * S ((S (dm_index_omit_mask)) * dst_negative_scale_omit_maskentryinput) + (dst_negative_omit_maskentryinput))) /\ (exists ge_balance_positive_omit_maskentryinputvalue ge_balance_negative_omit_maskentryinputvalue. (((((dm_value_omit_mask) = 2 * (ge_balance_positive_omit_maskentryinputvalue) /\ (ge_balance_negative_omit_maskentryinputvalue) = 0) \/ exists ge_signed_half_omit_maskentryinputvaluedecode. (((dm_value_omit_mask) = 2 * ge_signed_half_omit_maskentryinputvaluedecode + 1 /\ (ge_balance_positive_omit_maskentryinputvalue) = 0) /\ (ge_balance_negative_omit_maskentryinputvalue) = S ge_signed_half_omit_maskentryinputvaluedecode))) /\ ((dst_positive_omit_maskentryinput) + ge_balance_negative_omit_maskentryinputvalue = (dst_negative_omit_maskentryinput) + ge_balance_positive_omit_maskentryinputvalue))))))))))))) \/ ((((dm_index_omit_mask)=0 \/ ~(exists pvs_factor_omit_maskentrynondivisor. (n) = (dm_index_omit_mask) * pvs_factor_omit_maskentrynondivisor)) /\ ((dm_value_omit_mask)=0))))))) -> (exists pvs_le_gap_omit_bound. pvs_le_gap_omit_bound + (d) = (l)) -> (d=0 \/ ~(exists pvs_factor_omit_reason. (n) = (d) * pvs_factor_omit_reason)) -> (exists dst_positive_code_omit_mask_entry dst_positive_scale_omit_mask_entry dst_negative_code_omit_mask_entry dst_negative_scale_omit_mask_entry dst_positive_omit_mask_entry dst_negative_omit_mask_entry. (((M) = (((((dst_positive_code_omit_mask_entry) + (dst_positive_scale_omit_mask_entry)) * S ((dst_positive_code_omit_mask_entry) + (dst_positive_scale_omit_mask_entry)) + ((dst_positive_scale_omit_mask_entry) + (dst_positive_scale_omit_mask_entry))) + (((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) * S ((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) + ((dst_negative_scale_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)))) * S ((((dst_positive_code_omit_mask_entry) + (dst_positive_scale_omit_mask_entry)) * S ((dst_positive_code_omit_mask_entry) + (dst_positive_scale_omit_mask_entry)) + ((dst_positive_scale_omit_mask_entry) + (dst_positive_scale_omit_mask_entry))) + (((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) * S ((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) + ((dst_negative_scale_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)))) + ((((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) * S ((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) + ((dst_negative_scale_omit_mask_entry) + (dst_negative_scale_omit_mask_entry))) + (((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) * S ((dst_negative_code_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)) + ((dst_negative_scale_omit_mask_entry) + (dst_negative_scale_omit_mask_entry)))))) /\ (((((exists ff_h_pvs_omit_mask_entrypositive. ff_h_pvs_omit_mask_entrypositive + S (dst_positive_omit_mask_entry) = S ((S (d)) * dst_positive_scale_omit_mask_entry)) /\ exists ff_q_pvs_omit_mask_entrypositive. dst_positive_code_omit_mask_entry = ff_q_pvs_omit_mask_entrypositive * S ((S (d)) * dst_positive_scale_omit_mask_entry) + (dst_positive_omit_mask_entry))) /\ (((((exists ff_h_pvs_omit_mask_entrynegative. ff_h_pvs_omit_mask_entrynegative + S (dst_negative_omit_mask_entry) = S ((S (d)) * dst_negative_scale_omit_mask_entry)) /\ exists ff_q_pvs_omit_mask_entrynegative. dst_negative_code_omit_mask_entry = ff_q_pvs_omit_mask_entrynegative * S ((S (d)) * dst_negative_scale_omit_mask_entry) + (dst_negative_omit_mask_entry))) /\ (exists ge_balance_positive_omit_mask_entryvalue ge_balance_negative_omit_mask_entryvalue. (((((0) = 2 * (ge_balance_positive_omit_mask_entryvalue) /\ (ge_balance_negative_omit_mask_entryvalue) = 0) \/ exists ge_signed_half_omit_mask_entryvaluedecode. (((0) = 2 * ge_signed_half_omit_mask_entryvaluedecode + 1 /\ (ge_balance_positive_omit_mask_entryvalue) = 0) /\ (ge_balance_negative_omit_mask_entryvalue) = S ge_signed_half_omit_mask_entryvaluedecode))) /\ ((dst_positive_omit_mask_entry) + ge_balance_negative_omit_mask_entryvalue = (dst_negative_omit_mask_entry) + ge_balance_positive_omit_mask_entryvalue)))))))))Constructive proof overview
Generated structural guide
Every actual mask explicitly has zero at index zero and at each nondivisor; the source value there is not constrained.
The unchanged tactic script uses 2 declared prerequisites and contains 32 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
divisor_signed_table_lookup Alpha theorem; checked-use authorized DV0016 divisor_mask_entry_omitted_valueDirect 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 (1)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases hm
03Establish huL10–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table lookup.
04Separate the logical casesL17–17
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L17
cases hu
05Establish heqL18–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor mask entry omitted value.
- L18
have heq : x=0 - L19
specialize divisor_mask_entry_omitted_value (F) - L20
specialize divisor_mask_entry_omitted_value (n) - L21
specialize divisor_mask_entry_omitted_value (d) - L22
specialize divisor_mask_entry_omitted_value (x) - L23
apply divisor_mask_entry_omitted_value - L24
exact hc - L25
specialize hm_right (d) - L26
specialize hm_right (x) - L27
apply hm_right
06Use earlier factsL28–29
07Calculate and transport equalitiesL30–31
08Use earlier factsL32–32
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L32
exact hu_witness
Original exact command ledger · 32 lines
- 0001
intro F - 0002
intro n - 0003
intro l - 0004
intro M - 0005
intro d - 0006
intro hm - 0007
intro hbound - 0008
intro hc - 0009
cases hm - 0010
have hu : exists u. (exists dst_positive_code_omit_actual_lookup dst_positive_scale_omit_actual_lookup dst_negative_code_omit_actual_lookup dst_negative_scale_omit_actual_lookup dst_positive_omit_actual_lookup dst_negative_omit_actual_lookup. (((M) = (((((dst_positive_code_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup)) * S ((dst_positive_code_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup)) + ((dst_positive_scale_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup))) + (((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) * S ((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) + ((dst_negative_scale_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)))) * S ((((dst_positive_code_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup)) * S ((dst_positive_code_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup)) + ((dst_positive_scale_omit_actual_lookup) + (dst_positive_scale_omit_actual_lookup))) + (((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) * S ((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) + ((dst_negative_scale_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)))) + ((((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) * S ((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) + ((dst_negative_scale_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup))) + (((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) * S ((dst_negative_code_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)) + ((dst_negative_scale_omit_actual_lookup) + (dst_negative_scale_omit_actual_lookup)))))) /\ (((((exists ff_h_pvs_omit_actual_lookuppositive. ff_h_pvs_omit_actual_lookuppositive + S (dst_positive_omit_actual_lookup) = S ((S (d)) * dst_positive_scale_omit_actual_lookup)) /\ exists ff_q_pvs_omit_actual_lookuppositive. dst_positive_code_omit_actual_lookup = ff_q_pvs_omit_actual_lookuppositive * S ((S (d)) * dst_positive_scale_omit_actual_lookup) + (dst_positive_omit_actual_lookup))) /\ (((((exists ff_h_pvs_omit_actual_lookupnegative. ff_h_pvs_omit_actual_lookupnegative + S (dst_negative_omit_actual_lookup) = S ((S (d)) * dst_negative_scale_omit_actual_lookup)) /\ exists ff_q_pvs_omit_actual_lookupnegative. dst_negative_code_omit_actual_lookup = ff_q_pvs_omit_actual_lookupnegative * S ((S (d)) * dst_negative_scale_omit_actual_lookup) + (dst_negative_omit_actual_lookup))) /\ (exists ge_balance_positive_omit_actual_lookupvalue ge_balance_negative_omit_actual_lookupvalue. (((((u) = 2 * (ge_balance_positive_omit_actual_lookupvalue) /\ (ge_balance_negative_omit_actual_lookupvalue) = 0) \/ exists ge_signed_half_omit_actual_lookupvaluedecode. (((u) = 2 * ge_signed_half_omit_actual_lookupvaluedecode + 1 /\ (ge_balance_positive_omit_actual_lookupvalue) = 0) /\ (ge_balance_negative_omit_actual_lookupvalue) = S ge_signed_half_omit_actual_lookupvaluedecode))) /\ ((dst_positive_omit_actual_lookup) + ge_balance_negative_omit_actual_lookupvalue = (dst_negative_omit_actual_lookup) + ge_balance_positive_omit_actual_lookupvalue))))))))) - 0011
specialize divisor_signed_table_lookup (l) - 0012
specialize divisor_signed_table_lookup (M) - 0013
specialize divisor_signed_table_lookup (d) - 0014
apply divisor_signed_table_lookup - 0015
exact hm_left - 0016
exact hbound - 0017
cases hu - 0018
have heq : x=0 - 0019
specialize divisor_mask_entry_omitted_value (F) - 0020
specialize divisor_mask_entry_omitted_value (n) - 0021
specialize divisor_mask_entry_omitted_value (d) - 0022
specialize divisor_mask_entry_omitted_value (x) - 0023
apply divisor_mask_entry_omitted_value - 0024
exact hc - 0025
specialize hm_right (d) - 0026
specialize hm_right (x) - 0027
apply hm_right - 0028
exact hbound - 0029
exact hu_witness - 0030
rewrite heq at hu_witness - 0031
rewrite heq at hu_witness - 0032
exact hu_witness