DV0015

divisor_mask_entry_quotient_input

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

At a witnessed positive divisor, a mask value is genuinely the input value, not a value attached to an unspecified quotient.

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 d q z. ~(d=0) -> n=d*q -> ((((~((d)=0)) /\ (exists dm_quotient_read_mask. (((n)=(d)*dm_quotient_read_mask) /\ (exists dst_positive_code_read_maskinput dst_positive_scale_read_maskinput dst_negative_code_read_maskinput dst_negative_scale_read_maskinput dst_positive_read_maskinput dst_negative_read_maskinput. (((F) = (((((dst_positive_code_read_maskinput) + (dst_positive_scale_read_maskinput)) * S ((dst_positive_code_read_maskinput) + (dst_positive_scale_read_maskinput)) + ((dst_positive_scale_read_maskinput) + (dst_positive_scale_read_maskinput))) + (((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) * S ((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) + ((dst_negative_scale_read_maskinput) + (dst_negative_scale_read_maskinput)))) * S ((((dst_positive_code_read_maskinput) + (dst_positive_scale_read_maskinput)) * S ((dst_positive_code_read_maskinput) + (dst_positive_scale_read_maskinput)) + ((dst_positive_scale_read_maskinput) + (dst_positive_scale_read_maskinput))) + (((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) * S ((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) + ((dst_negative_scale_read_maskinput) + (dst_negative_scale_read_maskinput)))) + ((((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) * S ((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) + ((dst_negative_scale_read_maskinput) + (dst_negative_scale_read_maskinput))) + (((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) * S ((dst_negative_code_read_maskinput) + (dst_negative_scale_read_maskinput)) + ((dst_negative_scale_read_maskinput) + (dst_negative_scale_read_maskinput)))))) /\ (((((exists ff_h_pvs_read_maskinputpositive. ff_h_pvs_read_maskinputpositive + S (dst_positive_read_maskinput) = S ((S (d)) * dst_positive_scale_read_maskinput)) /\ exists ff_q_pvs_read_maskinputpositive. dst_positive_code_read_maskinput = ff_q_pvs_read_maskinputpositive * S ((S (d)) * dst_positive_scale_read_maskinput) + (dst_positive_read_maskinput))) /\ (((((exists ff_h_pvs_read_maskinputnegative. ff_h_pvs_read_maskinputnegative + S (dst_negative_read_maskinput) = S ((S (d)) * dst_negative_scale_read_maskinput)) /\ exists ff_q_pvs_read_maskinputnegative. dst_negative_code_read_maskinput = ff_q_pvs_read_maskinputnegative * S ((S (d)) * dst_negative_scale_read_maskinput) + (dst_negative_read_maskinput))) /\ (exists ge_balance_positive_read_maskinputvalue ge_balance_negative_read_maskinputvalue. (((((z) = 2 * (ge_balance_positive_read_maskinputvalue) /\ (ge_balance_negative_read_maskinputvalue) = 0) \/ exists ge_signed_half_read_maskinputvaluedecode. (((z) = 2 * ge_signed_half_read_maskinputvaluedecode + 1 /\ (ge_balance_positive_read_maskinputvalue) = 0) /\ (ge_balance_negative_read_maskinputvalue) = S ge_signed_half_read_maskinputvaluedecode))) /\ ((dst_positive_read_maskinput) + ge_balance_negative_read_maskinputvalue = (dst_negative_read_maskinput) + ge_balance_positive_read_maskinputvalue))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_read_masknondivisor. (n) = (d) * pvs_factor_read_masknondivisor)) /\ ((z)=0)))) -> (exists dst_positive_code_read_input dst_positive_scale_read_input dst_negative_code_read_input dst_negative_scale_read_input dst_positive_read_input dst_negative_read_input. (((F) = (((((dst_positive_code_read_input) + (dst_positive_scale_read_input)) * S ((dst_positive_code_read_input) + (dst_positive_scale_read_input)) + ((dst_positive_scale_read_input) + (dst_positive_scale_read_input))) + (((dst_negative_code_read_input) + (dst_negative_scale_read_input)) * S ((dst_negative_code_read_input) + (dst_negative_scale_read_input)) + ((dst_negative_scale_read_input) + (dst_negative_scale_read_input)))) * S ((((dst_positive_code_read_input) + (dst_positive_scale_read_input)) * S ((dst_positive_code_read_input) + (dst_positive_scale_read_input)) + ((dst_positive_scale_read_input) + (dst_positive_scale_read_input))) + (((dst_negative_code_read_input) + (dst_negative_scale_read_input)) * S ((dst_negative_code_read_input) + (dst_negative_scale_read_input)) + ((dst_negative_scale_read_input) + (dst_negative_scale_read_input)))) + ((((dst_negative_code_read_input) + (dst_negative_scale_read_input)) * S ((dst_negative_code_read_input) + (dst_negative_scale_read_input)) + ((dst_negative_scale_read_input) + (dst_negative_scale_read_input))) + (((dst_negative_code_read_input) + (dst_negative_scale_read_input)) * S ((dst_negative_code_read_input) + (dst_negative_scale_read_input)) + ((dst_negative_scale_read_input) + (dst_negative_scale_read_input)))))) /\ (((((exists ff_h_pvs_read_inputpositive. ff_h_pvs_read_inputpositive + S (dst_positive_read_input) = S ((S (d)) * dst_positive_scale_read_input)) /\ exists ff_q_pvs_read_inputpositive. dst_positive_code_read_input = ff_q_pvs_read_inputpositive * S ((S (d)) * dst_positive_scale_read_input) + (dst_positive_read_input))) /\ (((((exists ff_h_pvs_read_inputnegative. ff_h_pvs_read_inputnegative + S (dst_negative_read_input) = S ((S (d)) * dst_negative_scale_read_input)) /\ exists ff_q_pvs_read_inputnegative. dst_negative_code_read_input = ff_q_pvs_read_inputnegative * S ((S (d)) * dst_negative_scale_read_input) + (dst_negative_read_input))) /\ (exists ge_balance_positive_read_inputvalue ge_balance_negative_read_inputvalue. (((((z) = 2 * (ge_balance_positive_read_inputvalue) /\ (ge_balance_negative_read_inputvalue) = 0) \/ exists ge_signed_half_read_inputvaluedecode. (((z) = 2 * ge_signed_half_read_inputvaluedecode + 1 /\ (ge_balance_positive_read_inputvalue) = 0) /\ (ge_balance_negative_read_inputvalue) = S ge_signed_half_read_inputvaluedecode))) /\ ((dst_positive_read_input) + ge_balance_negative_read_inputvalue = (dst_negative_read_input) + ge_balance_positive_read_inputvalue)))))))))

Constructive proof overview

Generated structural guide

At a witnessed positive divisor, a mask value is genuinely the input value, not a value attached to an unspecified quotient.

The unchanged tactic script uses 0 declared prerequisites and contains 21 exact native proof lines.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Proof neighborhood

Direct dependencies

none

Direct dependents

none

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

21 script commands · 7 reading checkpoints · 0 local claims

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–8

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro F
  2. L2
    intro n
  3. L3
    intro d
  4. L4
    intro q
  5. L5
    intro z
  6. L6
    intro hd
  7. L7
    intro hq
  8. L8
    intro he
02Separate the logical casesL9–12

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L9
    cases he
  2. L10
    cases he_left
  3. L11
    cases he_left_right
  4. L12
    cases he_left_right_witness
03Use earlier factsL13–13

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L13
    exact he_left_right_witness_right
04Separate the logical casesL14–16

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L14
    cases he_right
  2. L15
    exfalso
  3. L16
    cases he_right_left
05Use earlier factsL17–19

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L17
    apply hd
  2. L18
    exact he_right_left_left
  3. L19
    apply he_right_left_right
06Construct an explicit witnessL20–20

Supply the displayed value, then prove that it has the required property.

  1. L20
    exists q
07Use earlier factsL21–21

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L21
    exact hq

Library-wide reading audit

Original exact command ledger · 21 lines
  1. 0001intro F
  2. 0002intro n
  3. 0003intro d
  4. 0004intro q
  5. 0005intro z
  6. 0006intro hd
  7. 0007intro hq
  8. 0008intro he
  9. 0009cases he
  10. 0010cases he_left
  11. 0011cases he_left_right
  12. 0012cases he_left_right_witness
  13. 0013exact he_left_right_witness_right
  14. 0014cases he_right
  15. 0015exfalso
  16. 0016cases he_right_left
  17. 0017apply hd
  18. 0018exact he_right_left_left
  19. 0019apply he_right_left_right
  20. 0020exists q
  21. 0021exact hq