MX0018

signed_slice_identity

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

The original packed table itself is a genuine zero-origin, unit-stride slice; the certified endpoint is unused.

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 l. (exists dst_positive_code_identity_source dst_positive_scale_identity_source dst_negative_code_identity_source dst_negative_scale_identity_source. (((F) = (((((dst_positive_code_identity_source) + (dst_positive_scale_identity_source)) * S ((dst_positive_code_identity_source) + (dst_positive_scale_identity_source)) + ((dst_positive_scale_identity_source) + (dst_positive_scale_identity_source))) + (((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) * S ((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) + ((dst_negative_scale_identity_source) + (dst_negative_scale_identity_source)))) * S ((((dst_positive_code_identity_source) + (dst_positive_scale_identity_source)) * S ((dst_positive_code_identity_source) + (dst_positive_scale_identity_source)) + ((dst_positive_scale_identity_source) + (dst_positive_scale_identity_source))) + (((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) * S ((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) + ((dst_negative_scale_identity_source) + (dst_negative_scale_identity_source)))) + ((((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) * S ((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) + ((dst_negative_scale_identity_source) + (dst_negative_scale_identity_source))) + (((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) * S ((dst_negative_code_identity_source) + (dst_negative_scale_identity_source)) + ((dst_negative_scale_identity_source) + (dst_negative_scale_identity_source)))))) /\ (forall dst_index_identity_source. (exists pvs_le_gap_identity_sourcedomain. pvs_le_gap_identity_sourcedomain + (dst_index_identity_source) = (0)) -> exists dst_positive_identity_source dst_negative_identity_source dst_value_identity_source. ((((exists ff_h_pvs_identity_sourceentrypositive. ff_h_pvs_identity_sourceentrypositive + S (dst_positive_identity_source) = S ((S (dst_index_identity_source)) * dst_positive_scale_identity_source)) /\ exists ff_q_pvs_identity_sourceentrypositive. dst_positive_code_identity_source = ff_q_pvs_identity_sourceentrypositive * S ((S (dst_index_identity_source)) * dst_positive_scale_identity_source) + (dst_positive_identity_source))) /\ (((((exists ff_h_pvs_identity_sourceentrynegative. ff_h_pvs_identity_sourceentrynegative + S (dst_negative_identity_source) = S ((S (dst_index_identity_source)) * dst_negative_scale_identity_source)) /\ exists ff_q_pvs_identity_sourceentrynegative. dst_negative_code_identity_source = ff_q_pvs_identity_sourceentrynegative * S ((S (dst_index_identity_source)) * dst_negative_scale_identity_source) + (dst_negative_identity_source))) /\ (exists ge_balance_positive_identity_sourceentryvalue ge_balance_negative_identity_sourceentryvalue. (((((dst_value_identity_source) = 2 * (ge_balance_positive_identity_sourceentryvalue) /\ (ge_balance_negative_identity_sourceentryvalue) = 0) \/ exists ge_signed_half_identity_sourceentryvaluedecode. (((dst_value_identity_source) = 2 * ge_signed_half_identity_sourceentryvaluedecode + 1 /\ (ge_balance_positive_identity_sourceentryvalue) = 0) /\ (ge_balance_negative_identity_sourceentryvalue) = S ge_signed_half_identity_sourceentryvaluedecode))) /\ ((dst_positive_identity_source) + ge_balance_negative_identity_sourceentryvalue = (dst_negative_identity_source) + ge_balance_positive_identity_sourceentryvalue))))))))) -> (((exists dst_positive_code_identity_resultsource_table dst_positive_scale_identity_resultsource_table dst_negative_code_identity_resultsource_table dst_negative_scale_identity_resultsource_table. (((F) = (((((dst_positive_code_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table)) * S ((dst_positive_code_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table)) + ((dst_positive_scale_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table))) + (((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) * S ((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) + ((dst_negative_scale_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)))) * S ((((dst_positive_code_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table)) * S ((dst_positive_code_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table)) + ((dst_positive_scale_identity_resultsource_table) + (dst_positive_scale_identity_resultsource_table))) + (((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) * S ((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) + ((dst_negative_scale_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)))) + ((((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) * S ((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) + ((dst_negative_scale_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table))) + (((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) * S ((dst_negative_code_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)) + ((dst_negative_scale_identity_resultsource_table) + (dst_negative_scale_identity_resultsource_table)))))) /\ (forall dst_index_identity_resultsource_table. (exists pvs_le_gap_identity_resultsource_tabledomain. pvs_le_gap_identity_resultsource_tabledomain + (dst_index_identity_resultsource_table) = (0)) -> exists dst_positive_identity_resultsource_table dst_negative_identity_resultsource_table dst_value_identity_resultsource_table. ((((exists ff_h_pvs_identity_resultsource_tableentrypositive. ff_h_pvs_identity_resultsource_tableentrypositive + S (dst_positive_identity_resultsource_table) = S ((S (dst_index_identity_resultsource_table)) * dst_positive_scale_identity_resultsource_table)) /\ exists ff_q_pvs_identity_resultsource_tableentrypositive. dst_positive_code_identity_resultsource_table = ff_q_pvs_identity_resultsource_tableentrypositive * S ((S (dst_index_identity_resultsource_table)) * dst_positive_scale_identity_resultsource_table) + (dst_positive_identity_resultsource_table))) /\ (((((exists ff_h_pvs_identity_resultsource_tableentrynegative. ff_h_pvs_identity_resultsource_tableentrynegative + S (dst_negative_identity_resultsource_table) = S ((S (dst_index_identity_resultsource_table)) * dst_negative_scale_identity_resultsource_table)) /\ exists ff_q_pvs_identity_resultsource_tableentrynegative. dst_negative_code_identity_resultsource_table = ff_q_pvs_identity_resultsource_tableentrynegative * S ((S (dst_index_identity_resultsource_table)) * dst_negative_scale_identity_resultsource_table) + (dst_negative_identity_resultsource_table))) /\ (exists ge_balance_positive_identity_resultsource_tableentryvalue ge_balance_negative_identity_resultsource_tableentryvalue. (((((dst_value_identity_resultsource_table) = 2 * (ge_balance_positive_identity_resultsource_tableentryvalue) /\ (ge_balance_negative_identity_resultsource_tableentryvalue) = 0) \/ exists ge_signed_half_identity_resultsource_tableentryvaluedecode. (((dst_value_identity_resultsource_table) = 2 * ge_signed_half_identity_resultsource_tableentryvaluedecode + 1 /\ (ge_balance_positive_identity_resultsource_tableentryvalue) = 0) /\ (ge_balance_negative_identity_resultsource_tableentryvalue) = S ge_signed_half_identity_resultsource_tableentryvaluedecode))) /\ ((dst_positive_identity_resultsource_table) + ge_balance_negative_identity_resultsource_tableentryvalue = (dst_negative_identity_resultsource_table) + ge_balance_positive_identity_resultsource_tableentryvalue))))))))) /\ (((exists dst_positive_code_identity_resultoutput_table dst_positive_scale_identity_resultoutput_table dst_negative_code_identity_resultoutput_table dst_negative_scale_identity_resultoutput_table. (((F) = (((((dst_positive_code_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table)) * S ((dst_positive_code_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table)) + ((dst_positive_scale_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table))) + (((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) * S ((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) + ((dst_negative_scale_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)))) * S ((((dst_positive_code_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table)) * S ((dst_positive_code_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table)) + ((dst_positive_scale_identity_resultoutput_table) + (dst_positive_scale_identity_resultoutput_table))) + (((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) * S ((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) + ((dst_negative_scale_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)))) + ((((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) * S ((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) + ((dst_negative_scale_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table))) + (((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) * S ((dst_negative_code_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)) + ((dst_negative_scale_identity_resultoutput_table) + (dst_negative_scale_identity_resultoutput_table)))))) /\ (forall dst_index_identity_resultoutput_table. (exists pvs_le_gap_identity_resultoutput_tabledomain. pvs_le_gap_identity_resultoutput_tabledomain + (dst_index_identity_resultoutput_table) = (l)) -> exists dst_positive_identity_resultoutput_table dst_negative_identity_resultoutput_table dst_value_identity_resultoutput_table. ((((exists ff_h_pvs_identity_resultoutput_tableentrypositive. ff_h_pvs_identity_resultoutput_tableentrypositive + S (dst_positive_identity_resultoutput_table) = S ((S (dst_index_identity_resultoutput_table)) * dst_positive_scale_identity_resultoutput_table)) /\ exists ff_q_pvs_identity_resultoutput_tableentrypositive. dst_positive_code_identity_resultoutput_table = ff_q_pvs_identity_resultoutput_tableentrypositive * S ((S (dst_index_identity_resultoutput_table)) * dst_positive_scale_identity_resultoutput_table) + (dst_positive_identity_resultoutput_table))) /\ (((((exists ff_h_pvs_identity_resultoutput_tableentrynegative. ff_h_pvs_identity_resultoutput_tableentrynegative + S (dst_negative_identity_resultoutput_table) = S ((S (dst_index_identity_resultoutput_table)) * dst_negative_scale_identity_resultoutput_table)) /\ exists ff_q_pvs_identity_resultoutput_tableentrynegative. dst_negative_code_identity_resultoutput_table = ff_q_pvs_identity_resultoutput_tableentrynegative * S ((S (dst_index_identity_resultoutput_table)) * dst_negative_scale_identity_resultoutput_table) + (dst_negative_identity_resultoutput_table))) /\ (exists ge_balance_positive_identity_resultoutput_tableentryvalue ge_balance_negative_identity_resultoutput_tableentryvalue. (((((dst_value_identity_resultoutput_table) = 2 * (ge_balance_positive_identity_resultoutput_tableentryvalue) /\ (ge_balance_negative_identity_resultoutput_tableentryvalue) = 0) \/ exists ge_signed_half_identity_resultoutput_tableentryvaluedecode. (((dst_value_identity_resultoutput_table) = 2 * ge_signed_half_identity_resultoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_identity_resultoutput_tableentryvalue) = 0) /\ (ge_balance_negative_identity_resultoutput_tableentryvalue) = S ge_signed_half_identity_resultoutput_tableentryvaluedecode))) /\ ((dst_positive_identity_resultoutput_table) + ge_balance_negative_identity_resultoutput_tableentryvalue = (dst_negative_identity_resultoutput_table) + ge_balance_positive_identity_resultoutput_tableentryvalue))))))))) /\ (forall srs_index_identity_result. (exists pvs_gap_identity_resultbound. pvs_gap_identity_resultbound + S (srs_index_identity_result) = (l)) -> exists srs_value_identity_result. (((exists dst_positive_code_identity_resultentrysource dst_positive_scale_identity_resultentrysource dst_negative_code_identity_resultentrysource dst_negative_scale_identity_resultentrysource dst_positive_identity_resultentrysource dst_negative_identity_resultentrysource. (((F) = (((((dst_positive_code_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource)) * S ((dst_positive_code_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource)) + ((dst_positive_scale_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource))) + (((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) * S ((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) + ((dst_negative_scale_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)))) * S ((((dst_positive_code_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource)) * S ((dst_positive_code_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource)) + ((dst_positive_scale_identity_resultentrysource) + (dst_positive_scale_identity_resultentrysource))) + (((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) * S ((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) + ((dst_negative_scale_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)))) + ((((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) * S ((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) + ((dst_negative_scale_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource))) + (((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) * S ((dst_negative_code_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)) + ((dst_negative_scale_identity_resultentrysource) + (dst_negative_scale_identity_resultentrysource)))))) /\ (((((exists ff_h_pvs_identity_resultentrysourcepositive. ff_h_pvs_identity_resultentrysourcepositive + S (dst_positive_identity_resultentrysource) = S ((S (((0) + ((1) * (srs_index_identity_result))))) * dst_positive_scale_identity_resultentrysource)) /\ exists ff_q_pvs_identity_resultentrysourcepositive. dst_positive_code_identity_resultentrysource = ff_q_pvs_identity_resultentrysourcepositive * S ((S (((0) + ((1) * (srs_index_identity_result))))) * dst_positive_scale_identity_resultentrysource) + (dst_positive_identity_resultentrysource))) /\ (((((exists ff_h_pvs_identity_resultentrysourcenegative. ff_h_pvs_identity_resultentrysourcenegative + S (dst_negative_identity_resultentrysource) = S ((S (((0) + ((1) * (srs_index_identity_result))))) * dst_negative_scale_identity_resultentrysource)) /\ exists ff_q_pvs_identity_resultentrysourcenegative. dst_negative_code_identity_resultentrysource = ff_q_pvs_identity_resultentrysourcenegative * S ((S (((0) + ((1) * (srs_index_identity_result))))) * dst_negative_scale_identity_resultentrysource) + (dst_negative_identity_resultentrysource))) /\ (exists ge_balance_positive_identity_resultentrysourcevalue ge_balance_negative_identity_resultentrysourcevalue. (((((srs_value_identity_result) = 2 * (ge_balance_positive_identity_resultentrysourcevalue) /\ (ge_balance_negative_identity_resultentrysourcevalue) = 0) \/ exists ge_signed_half_identity_resultentrysourcevaluedecode. (((srs_value_identity_result) = 2 * ge_signed_half_identity_resultentrysourcevaluedecode + 1 /\ (ge_balance_positive_identity_resultentrysourcevalue) = 0) /\ (ge_balance_negative_identity_resultentrysourcevalue) = S ge_signed_half_identity_resultentrysourcevaluedecode))) /\ ((dst_positive_identity_resultentrysource) + ge_balance_negative_identity_resultentrysourcevalue = (dst_negative_identity_resultentrysource) + ge_balance_positive_identity_resultentrysourcevalue))))))))) /\ (exists dst_positive_code_identity_resultentryoutput dst_positive_scale_identity_resultentryoutput dst_negative_code_identity_resultentryoutput dst_negative_scale_identity_resultentryoutput dst_positive_identity_resultentryoutput dst_negative_identity_resultentryoutput. (((F) = (((((dst_positive_code_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput)) * S ((dst_positive_code_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput)) + ((dst_positive_scale_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput))) + (((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) * S ((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) + ((dst_negative_scale_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)))) * S ((((dst_positive_code_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput)) * S ((dst_positive_code_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput)) + ((dst_positive_scale_identity_resultentryoutput) + (dst_positive_scale_identity_resultentryoutput))) + (((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) * S ((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) + ((dst_negative_scale_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)))) + ((((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) * S ((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) + ((dst_negative_scale_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput))) + (((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) * S ((dst_negative_code_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)) + ((dst_negative_scale_identity_resultentryoutput) + (dst_negative_scale_identity_resultentryoutput)))))) /\ (((((exists ff_h_pvs_identity_resultentryoutputpositive. ff_h_pvs_identity_resultentryoutputpositive + S (dst_positive_identity_resultentryoutput) = S ((S (srs_index_identity_result)) * dst_positive_scale_identity_resultentryoutput)) /\ exists ff_q_pvs_identity_resultentryoutputpositive. dst_positive_code_identity_resultentryoutput = ff_q_pvs_identity_resultentryoutputpositive * S ((S (srs_index_identity_result)) * dst_positive_scale_identity_resultentryoutput) + (dst_positive_identity_resultentryoutput))) /\ (((((exists ff_h_pvs_identity_resultentryoutputnegative. ff_h_pvs_identity_resultentryoutputnegative + S (dst_negative_identity_resultentryoutput) = S ((S (srs_index_identity_result)) * dst_negative_scale_identity_resultentryoutput)) /\ exists ff_q_pvs_identity_resultentryoutputnegative. dst_negative_code_identity_resultentryoutput = ff_q_pvs_identity_resultentryoutputnegative * S ((S (srs_index_identity_result)) * dst_negative_scale_identity_resultentryoutput) + (dst_negative_identity_resultentryoutput))) /\ (exists ge_balance_positive_identity_resultentryoutputvalue ge_balance_negative_identity_resultentryoutputvalue. (((((srs_value_identity_result) = 2 * (ge_balance_positive_identity_resultentryoutputvalue) /\ (ge_balance_negative_identity_resultentryoutputvalue) = 0) \/ exists ge_signed_half_identity_resultentryoutputvaluedecode. (((srs_value_identity_result) = 2 * ge_signed_half_identity_resultentryoutputvaluedecode + 1 /\ (ge_balance_positive_identity_resultentryoutputvalue) = 0) /\ (ge_balance_negative_identity_resultentryoutputvalue) = S ge_signed_half_identity_resultentryoutputvaluedecode))) /\ ((dst_positive_identity_resultentryoutput) + ge_balance_negative_identity_resultentryoutputvalue = (dst_negative_identity_resultentryoutput) + ge_balance_positive_identity_resultentryoutputvalue))))))))))))))))

Constructive proof overview

Generated structural guide

The original packed table itself is a genuine zero-origin, unit-stride slice; the certified endpoint is unused.

The unchanged tactic script uses 4 declared prerequisites and contains 34 exact native proof lines.

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

Proof neighborhood

Direct dependencies

signed_table_domain_resize Alpha theorem; checked-use authorized signed_table_lookup_any Alpha theorem; checked-use authorized zero_add Stable theorem; checked-use authorized one_mul Stable theorem; checked-use authorized

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

34 script commands · 12 reading checkpoints · 2 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.

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–3

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

  1. L1
    intro F
  2. L2
    intro l
  3. L3
    intro hF
02Separate the logical casesL4–4

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

  1. L4
    split
03Use earlier factsL5–5

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

  1. L5
    exact hF
04Separate the logical casesL6–6

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

  1. L6
    split
05Use earlier factsL7–11

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

  1. L7
    specialize signed_table_domain_resize (0)
  2. L8
    specialize signed_table_domain_resize (l)
  3. L9
    specialize signed_table_domain_resize (F)
  4. L10
    apply signed_table_domain_resize
  5. L11
    exact hF
06Fix variables and assumptionsL12–13

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

  1. L12
    intro i
  2. L13
    intro hi
07Establish hzL14–19

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed table lookup any.

  1. L14
    have hz : ∃ z. ArithAt(F,i,z)Definitions: ArithAt
  2. L15
    specialize signed_table_lookup_any (0)
  3. L16
    specialize signed_table_lookup_any (F)
  4. L17
    specialize signed_table_lookup_any (i)
  5. L18
    apply signed_table_lookup_any
  6. L19
    exact hF
08Separate the logical casesL20–20

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

  1. L20
    cases hz
09Construct an explicit witnessL21–21

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

  1. L21
    exists x
10Separate the logical casesL22–22

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

  1. L22
    split
11Establish hindexL23–32

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply zero add.

  1. L23
    have hindex : ((0) + ((1) * (i))) = i
  2. L24
    trans 1*i
  3. L25
    specialize zero_add (1*i)
  4. L26
    apply zero_add
  5. L27
    specialize one_mul (i)
  6. L28
    apply one_mul
  7. L29
    rewrite hindex
  8. L30
    rewrite hindex
  9. L31
    rewrite hindex
  10. L32
    rewrite hindex
12Use earlier factsL33–34

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

  1. L33
    exact hz_witness
  2. L34
    exact hz_witness

Library-wide reading audit

Original exact command ledger · 34 lines
  1. 0001intro F
  2. 0002intro l
  3. 0003intro hF
  4. 0004split
  5. 0005exact hF
  6. 0006split
  7. 0007specialize signed_table_domain_resize (0)
  8. 0008specialize signed_table_domain_resize (l)
  9. 0009specialize signed_table_domain_resize (F)
  10. 0010apply signed_table_domain_resize
  11. 0011exact hF
  12. 0012intro i
  13. 0013intro hi
  14. 0014have hz : exists z. (exists dst_positive_code_identity_value dst_positive_scale_identity_value dst_negative_code_identity_value dst_negative_scale_identity_value dst_positive_identity_value dst_negative_identity_value. (((F) = (((((dst_positive_code_identity_value) + (dst_positive_scale_identity_value)) * S ((dst_positive_code_identity_value) + (dst_positive_scale_identity_value)) + ((dst_positive_scale_identity_value) + (dst_positive_scale_identity_value))) + (((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) * S ((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) + ((dst_negative_scale_identity_value) + (dst_negative_scale_identity_value)))) * S ((((dst_positive_code_identity_value) + (dst_positive_scale_identity_value)) * S ((dst_positive_code_identity_value) + (dst_positive_scale_identity_value)) + ((dst_positive_scale_identity_value) + (dst_positive_scale_identity_value))) + (((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) * S ((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) + ((dst_negative_scale_identity_value) + (dst_negative_scale_identity_value)))) + ((((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) * S ((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) + ((dst_negative_scale_identity_value) + (dst_negative_scale_identity_value))) + (((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) * S ((dst_negative_code_identity_value) + (dst_negative_scale_identity_value)) + ((dst_negative_scale_identity_value) + (dst_negative_scale_identity_value)))))) /\ (((((exists ff_h_pvs_identity_valuepositive. ff_h_pvs_identity_valuepositive + S (dst_positive_identity_value) = S ((S (i)) * dst_positive_scale_identity_value)) /\ exists ff_q_pvs_identity_valuepositive. dst_positive_code_identity_value = ff_q_pvs_identity_valuepositive * S ((S (i)) * dst_positive_scale_identity_value) + (dst_positive_identity_value))) /\ (((((exists ff_h_pvs_identity_valuenegative. ff_h_pvs_identity_valuenegative + S (dst_negative_identity_value) = S ((S (i)) * dst_negative_scale_identity_value)) /\ exists ff_q_pvs_identity_valuenegative. dst_negative_code_identity_value = ff_q_pvs_identity_valuenegative * S ((S (i)) * dst_negative_scale_identity_value) + (dst_negative_identity_value))) /\ (exists ge_balance_positive_identity_valuevalue ge_balance_negative_identity_valuevalue. (((((z) = 2 * (ge_balance_positive_identity_valuevalue) /\ (ge_balance_negative_identity_valuevalue) = 0) \/ exists ge_signed_half_identity_valuevaluedecode. (((z) = 2 * ge_signed_half_identity_valuevaluedecode + 1 /\ (ge_balance_positive_identity_valuevalue) = 0) /\ (ge_balance_negative_identity_valuevalue) = S ge_signed_half_identity_valuevaluedecode))) /\ ((dst_positive_identity_value) + ge_balance_negative_identity_valuevalue = (dst_negative_identity_value) + ge_balance_positive_identity_valuevalue)))))))))
  15. 0015specialize signed_table_lookup_any (0)
  16. 0016specialize signed_table_lookup_any (F)
  17. 0017specialize signed_table_lookup_any (i)
  18. 0018apply signed_table_lookup_any
  19. 0019exact hF
  20. 0020cases hz
  21. 0021exists x
  22. 0022split
  23. 0023have hindex : ((0) + ((1) * (i))) = i
  24. 0024trans 1*i
  25. 0025specialize zero_add (1*i)
  26. 0026apply zero_add
  27. 0027specialize one_mul (i)
  28. 0028apply one_mul
  29. 0029rewrite hindex
  30. 0030rewrite hindex
  31. 0031rewrite hindex
  32. 0032rewrite hindex
  33. 0033exact hz_witness
  34. 0034exact hz_witness