DV0003

arithmetic_signed_table_extend_at

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

Decode the requested signed value, extend both beta streams at l, and explicitly construct the new packed table preserving exactly its earlier signed entries.

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 l z. (exists dst_positive_code_extend_input dst_positive_scale_extend_input dst_negative_code_extend_input dst_negative_scale_extend_input. (((F) = (((((dst_positive_code_extend_input) + (dst_positive_scale_extend_input)) * S ((dst_positive_code_extend_input) + (dst_positive_scale_extend_input)) + ((dst_positive_scale_extend_input) + (dst_positive_scale_extend_input))) + (((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) * S ((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) + ((dst_negative_scale_extend_input) + (dst_negative_scale_extend_input)))) * S ((((dst_positive_code_extend_input) + (dst_positive_scale_extend_input)) * S ((dst_positive_code_extend_input) + (dst_positive_scale_extend_input)) + ((dst_positive_scale_extend_input) + (dst_positive_scale_extend_input))) + (((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) * S ((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) + ((dst_negative_scale_extend_input) + (dst_negative_scale_extend_input)))) + ((((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) * S ((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) + ((dst_negative_scale_extend_input) + (dst_negative_scale_extend_input))) + (((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) * S ((dst_negative_code_extend_input) + (dst_negative_scale_extend_input)) + ((dst_negative_scale_extend_input) + (dst_negative_scale_extend_input)))))) /\ (forall dst_index_extend_input. (exists pvs_le_gap_extend_inputdomain. pvs_le_gap_extend_inputdomain + (dst_index_extend_input) = (N)) -> exists dst_positive_extend_input dst_negative_extend_input dst_value_extend_input. ((((exists ff_h_pvs_extend_inputentrypositive. ff_h_pvs_extend_inputentrypositive + S (dst_positive_extend_input) = S ((S (dst_index_extend_input)) * dst_positive_scale_extend_input)) /\ exists ff_q_pvs_extend_inputentrypositive. dst_positive_code_extend_input = ff_q_pvs_extend_inputentrypositive * S ((S (dst_index_extend_input)) * dst_positive_scale_extend_input) + (dst_positive_extend_input))) /\ (((((exists ff_h_pvs_extend_inputentrynegative. ff_h_pvs_extend_inputentrynegative + S (dst_negative_extend_input) = S ((S (dst_index_extend_input)) * dst_negative_scale_extend_input)) /\ exists ff_q_pvs_extend_inputentrynegative. dst_negative_code_extend_input = ff_q_pvs_extend_inputentrynegative * S ((S (dst_index_extend_input)) * dst_negative_scale_extend_input) + (dst_negative_extend_input))) /\ (exists ge_balance_positive_extend_inputentryvalue ge_balance_negative_extend_inputentryvalue. (((((dst_value_extend_input) = 2 * (ge_balance_positive_extend_inputentryvalue) /\ (ge_balance_negative_extend_inputentryvalue) = 0) \/ exists ge_signed_half_extend_inputentryvaluedecode. (((dst_value_extend_input) = 2 * ge_signed_half_extend_inputentryvaluedecode + 1 /\ (ge_balance_positive_extend_inputentryvalue) = 0) /\ (ge_balance_negative_extend_inputentryvalue) = S ge_signed_half_extend_inputentryvaluedecode))) /\ ((dst_positive_extend_input) + ge_balance_negative_extend_inputentryvalue = (dst_negative_extend_input) + ge_balance_positive_extend_inputentryvalue))))))))) -> exists G. (((exists dst_positive_code_extend_outputtable dst_positive_scale_extend_outputtable dst_negative_code_extend_outputtable dst_negative_scale_extend_outputtable. (((G) = (((((dst_positive_code_extend_outputtable) + (dst_positive_scale_extend_outputtable)) * S ((dst_positive_code_extend_outputtable) + (dst_positive_scale_extend_outputtable)) + ((dst_positive_scale_extend_outputtable) + (dst_positive_scale_extend_outputtable))) + (((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) * S ((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) + ((dst_negative_scale_extend_outputtable) + (dst_negative_scale_extend_outputtable)))) * S ((((dst_positive_code_extend_outputtable) + (dst_positive_scale_extend_outputtable)) * S ((dst_positive_code_extend_outputtable) + (dst_positive_scale_extend_outputtable)) + ((dst_positive_scale_extend_outputtable) + (dst_positive_scale_extend_outputtable))) + (((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) * S ((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) + ((dst_negative_scale_extend_outputtable) + (dst_negative_scale_extend_outputtable)))) + ((((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) * S ((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) + ((dst_negative_scale_extend_outputtable) + (dst_negative_scale_extend_outputtable))) + (((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) * S ((dst_negative_code_extend_outputtable) + (dst_negative_scale_extend_outputtable)) + ((dst_negative_scale_extend_outputtable) + (dst_negative_scale_extend_outputtable)))))) /\ (forall dst_index_extend_outputtable. (exists pvs_le_gap_extend_outputtabledomain. pvs_le_gap_extend_outputtabledomain + (dst_index_extend_outputtable) = (l)) -> exists dst_positive_extend_outputtable dst_negative_extend_outputtable dst_value_extend_outputtable. ((((exists ff_h_pvs_extend_outputtableentrypositive. ff_h_pvs_extend_outputtableentrypositive + S (dst_positive_extend_outputtable) = S ((S (dst_index_extend_outputtable)) * dst_positive_scale_extend_outputtable)) /\ exists ff_q_pvs_extend_outputtableentrypositive. dst_positive_code_extend_outputtable = ff_q_pvs_extend_outputtableentrypositive * S ((S (dst_index_extend_outputtable)) * dst_positive_scale_extend_outputtable) + (dst_positive_extend_outputtable))) /\ (((((exists ff_h_pvs_extend_outputtableentrynegative. ff_h_pvs_extend_outputtableentrynegative + S (dst_negative_extend_outputtable) = S ((S (dst_index_extend_outputtable)) * dst_negative_scale_extend_outputtable)) /\ exists ff_q_pvs_extend_outputtableentrynegative. dst_negative_code_extend_outputtable = ff_q_pvs_extend_outputtableentrynegative * S ((S (dst_index_extend_outputtable)) * dst_negative_scale_extend_outputtable) + (dst_negative_extend_outputtable))) /\ (exists ge_balance_positive_extend_outputtableentryvalue ge_balance_negative_extend_outputtableentryvalue. (((((dst_value_extend_outputtable) = 2 * (ge_balance_positive_extend_outputtableentryvalue) /\ (ge_balance_negative_extend_outputtableentryvalue) = 0) \/ exists ge_signed_half_extend_outputtableentryvaluedecode. (((dst_value_extend_outputtable) = 2 * ge_signed_half_extend_outputtableentryvaluedecode + 1 /\ (ge_balance_positive_extend_outputtableentryvalue) = 0) /\ (ge_balance_negative_extend_outputtableentryvalue) = S ge_signed_half_extend_outputtableentryvaluedecode))) /\ ((dst_positive_extend_outputtable) + ge_balance_negative_extend_outputtableentryvalue = (dst_negative_extend_outputtable) + ge_balance_positive_extend_outputtableentryvalue))))))))) /\ (((forall dst_index_extend_outputprefix dst_first_extend_outputprefix dst_second_extend_outputprefix. (exists pvs_gap_extend_outputprefixbound. pvs_gap_extend_outputprefixbound + S (dst_index_extend_outputprefix) = (l)) -> (exists dst_positive_code_extend_outputprefixfirst dst_positive_scale_extend_outputprefixfirst dst_negative_code_extend_outputprefixfirst dst_negative_scale_extend_outputprefixfirst dst_positive_extend_outputprefixfirst dst_negative_extend_outputprefixfirst. (((F) = (((((dst_positive_code_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst)) * S ((dst_positive_code_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst)) + ((dst_positive_scale_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst))) + (((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) * S ((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) + ((dst_negative_scale_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)))) * S ((((dst_positive_code_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst)) * S ((dst_positive_code_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst)) + ((dst_positive_scale_extend_outputprefixfirst) + (dst_positive_scale_extend_outputprefixfirst))) + (((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) * S ((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) + ((dst_negative_scale_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)))) + ((((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) * S ((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) + ((dst_negative_scale_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst))) + (((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) * S ((dst_negative_code_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)) + ((dst_negative_scale_extend_outputprefixfirst) + (dst_negative_scale_extend_outputprefixfirst)))))) /\ (((((exists ff_h_pvs_extend_outputprefixfirstpositive. ff_h_pvs_extend_outputprefixfirstpositive + S (dst_positive_extend_outputprefixfirst) = S ((S (dst_index_extend_outputprefix)) * dst_positive_scale_extend_outputprefixfirst)) /\ exists ff_q_pvs_extend_outputprefixfirstpositive. dst_positive_code_extend_outputprefixfirst = ff_q_pvs_extend_outputprefixfirstpositive * S ((S (dst_index_extend_outputprefix)) * dst_positive_scale_extend_outputprefixfirst) + (dst_positive_extend_outputprefixfirst))) /\ (((((exists ff_h_pvs_extend_outputprefixfirstnegative. ff_h_pvs_extend_outputprefixfirstnegative + S (dst_negative_extend_outputprefixfirst) = S ((S (dst_index_extend_outputprefix)) * dst_negative_scale_extend_outputprefixfirst)) /\ exists ff_q_pvs_extend_outputprefixfirstnegative. dst_negative_code_extend_outputprefixfirst = ff_q_pvs_extend_outputprefixfirstnegative * S ((S (dst_index_extend_outputprefix)) * dst_negative_scale_extend_outputprefixfirst) + (dst_negative_extend_outputprefixfirst))) /\ (exists ge_balance_positive_extend_outputprefixfirstvalue ge_balance_negative_extend_outputprefixfirstvalue. (((((dst_first_extend_outputprefix) = 2 * (ge_balance_positive_extend_outputprefixfirstvalue) /\ (ge_balance_negative_extend_outputprefixfirstvalue) = 0) \/ exists ge_signed_half_extend_outputprefixfirstvaluedecode. (((dst_first_extend_outputprefix) = 2 * ge_signed_half_extend_outputprefixfirstvaluedecode + 1 /\ (ge_balance_positive_extend_outputprefixfirstvalue) = 0) /\ (ge_balance_negative_extend_outputprefixfirstvalue) = S ge_signed_half_extend_outputprefixfirstvaluedecode))) /\ ((dst_positive_extend_outputprefixfirst) + ge_balance_negative_extend_outputprefixfirstvalue = (dst_negative_extend_outputprefixfirst) + ge_balance_positive_extend_outputprefixfirstvalue))))))))) -> (exists dst_positive_code_extend_outputprefixsecond dst_positive_scale_extend_outputprefixsecond dst_negative_code_extend_outputprefixsecond dst_negative_scale_extend_outputprefixsecond dst_positive_extend_outputprefixsecond dst_negative_extend_outputprefixsecond. (((G) = (((((dst_positive_code_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond)) * S ((dst_positive_code_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond)) + ((dst_positive_scale_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond))) + (((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) * S ((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) + ((dst_negative_scale_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)))) * S ((((dst_positive_code_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond)) * S ((dst_positive_code_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond)) + ((dst_positive_scale_extend_outputprefixsecond) + (dst_positive_scale_extend_outputprefixsecond))) + (((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) * S ((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) + ((dst_negative_scale_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)))) + ((((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) * S ((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) + ((dst_negative_scale_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond))) + (((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) * S ((dst_negative_code_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)) + ((dst_negative_scale_extend_outputprefixsecond) + (dst_negative_scale_extend_outputprefixsecond)))))) /\ (((((exists ff_h_pvs_extend_outputprefixsecondpositive. ff_h_pvs_extend_outputprefixsecondpositive + S (dst_positive_extend_outputprefixsecond) = S ((S (dst_index_extend_outputprefix)) * dst_positive_scale_extend_outputprefixsecond)) /\ exists ff_q_pvs_extend_outputprefixsecondpositive. dst_positive_code_extend_outputprefixsecond = ff_q_pvs_extend_outputprefixsecondpositive * S ((S (dst_index_extend_outputprefix)) * dst_positive_scale_extend_outputprefixsecond) + (dst_positive_extend_outputprefixsecond))) /\ (((((exists ff_h_pvs_extend_outputprefixsecondnegative. ff_h_pvs_extend_outputprefixsecondnegative + S (dst_negative_extend_outputprefixsecond) = S ((S (dst_index_extend_outputprefix)) * dst_negative_scale_extend_outputprefixsecond)) /\ exists ff_q_pvs_extend_outputprefixsecondnegative. dst_negative_code_extend_outputprefixsecond = ff_q_pvs_extend_outputprefixsecondnegative * S ((S (dst_index_extend_outputprefix)) * dst_negative_scale_extend_outputprefixsecond) + (dst_negative_extend_outputprefixsecond))) /\ (exists ge_balance_positive_extend_outputprefixsecondvalue ge_balance_negative_extend_outputprefixsecondvalue. (((((dst_second_extend_outputprefix) = 2 * (ge_balance_positive_extend_outputprefixsecondvalue) /\ (ge_balance_negative_extend_outputprefixsecondvalue) = 0) \/ exists ge_signed_half_extend_outputprefixsecondvaluedecode. (((dst_second_extend_outputprefix) = 2 * ge_signed_half_extend_outputprefixsecondvaluedecode + 1 /\ (ge_balance_positive_extend_outputprefixsecondvalue) = 0) /\ (ge_balance_negative_extend_outputprefixsecondvalue) = S ge_signed_half_extend_outputprefixsecondvaluedecode))) /\ ((dst_positive_extend_outputprefixsecond) + ge_balance_negative_extend_outputprefixsecondvalue = (dst_negative_extend_outputprefixsecond) + ge_balance_positive_extend_outputprefixsecondvalue))))))))) -> dst_first_extend_outputprefix = dst_second_extend_outputprefix) /\ (exists dst_positive_code_extend_outputlast dst_positive_scale_extend_outputlast dst_negative_code_extend_outputlast dst_negative_scale_extend_outputlast dst_positive_extend_outputlast dst_negative_extend_outputlast. (((G) = (((((dst_positive_code_extend_outputlast) + (dst_positive_scale_extend_outputlast)) * S ((dst_positive_code_extend_outputlast) + (dst_positive_scale_extend_outputlast)) + ((dst_positive_scale_extend_outputlast) + (dst_positive_scale_extend_outputlast))) + (((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) * S ((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) + ((dst_negative_scale_extend_outputlast) + (dst_negative_scale_extend_outputlast)))) * S ((((dst_positive_code_extend_outputlast) + (dst_positive_scale_extend_outputlast)) * S ((dst_positive_code_extend_outputlast) + (dst_positive_scale_extend_outputlast)) + ((dst_positive_scale_extend_outputlast) + (dst_positive_scale_extend_outputlast))) + (((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) * S ((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) + ((dst_negative_scale_extend_outputlast) + (dst_negative_scale_extend_outputlast)))) + ((((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) * S ((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) + ((dst_negative_scale_extend_outputlast) + (dst_negative_scale_extend_outputlast))) + (((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) * S ((dst_negative_code_extend_outputlast) + (dst_negative_scale_extend_outputlast)) + ((dst_negative_scale_extend_outputlast) + (dst_negative_scale_extend_outputlast)))))) /\ (((((exists ff_h_pvs_extend_outputlastpositive. ff_h_pvs_extend_outputlastpositive + S (dst_positive_extend_outputlast) = S ((S (l)) * dst_positive_scale_extend_outputlast)) /\ exists ff_q_pvs_extend_outputlastpositive. dst_positive_code_extend_outputlast = ff_q_pvs_extend_outputlastpositive * S ((S (l)) * dst_positive_scale_extend_outputlast) + (dst_positive_extend_outputlast))) /\ (((((exists ff_h_pvs_extend_outputlastnegative. ff_h_pvs_extend_outputlastnegative + S (dst_negative_extend_outputlast) = S ((S (l)) * dst_negative_scale_extend_outputlast)) /\ exists ff_q_pvs_extend_outputlastnegative. dst_negative_code_extend_outputlast = ff_q_pvs_extend_outputlastnegative * S ((S (l)) * dst_negative_scale_extend_outputlast) + (dst_negative_extend_outputlast))) /\ (exists ge_balance_positive_extend_outputlastvalue ge_balance_negative_extend_outputlastvalue. (((((z) = 2 * (ge_balance_positive_extend_outputlastvalue) /\ (ge_balance_negative_extend_outputlastvalue) = 0) \/ exists ge_signed_half_extend_outputlastvaluedecode. (((z) = 2 * ge_signed_half_extend_outputlastvaluedecode + 1 /\ (ge_balance_positive_extend_outputlastvalue) = 0) /\ (ge_balance_negative_extend_outputlastvalue) = S ge_signed_half_extend_outputlastvaluedecode))) /\ ((dst_positive_extend_outputlast) + ge_balance_negative_extend_outputlastvalue = (dst_negative_extend_outputlast) + ge_balance_positive_extend_outputlastvalue)))))))))))))

Constructive proof overview

Generated structural guide

Decode the requested signed value, extend both beta streams at l, and explicitly construct the new packed table preserving exactly its earlier signed entries.

The unchanged tactic script uses 7 declared prerequisites and contains 82 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_components Alpha theorem; checked-use authorized signed_decode_total Alpha theorem; checked-use authorized beta_prefix_extend Stable theorem; checked-use authorized divisor_signed_table_from_components Alpha theorem; checked-use authorized DV0001 arithmetic_signed_table_component_prefix_preserved divisor_signed_table_at_from_components Alpha theorem; checked-use authorized add_comm 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

82 script commands · 24 reading checkpoints · 4 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.

Named ingredients (1)

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

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

  1. L1
    intro N
  2. L2
    intro F
  3. L3
    intro l
  4. L4
    intro z
  5. L5
    intro ht
02Establish hrepL6–10

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

  1. L6
    have hrep : exists pb pc nb nc. ((F) = (((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) * S ((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) + ((((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))))))
  2. L7
    specialize divisor_signed_table_components (N)
  3. L8
    specialize divisor_signed_table_components (F)
  4. L9
    apply divisor_signed_table_components
  5. L10
    exact ht
03Separate the logical casesL11–14

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

  1. L11
    cases hrep
  2. L12
    cases hrep_witness
  3. L13
    cases hrep_witness_witness
  4. L14
    cases hrep_witness_witness_witness
04Establish hdL15–17

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

  1. L15
    have hd : exists p n. ((((z) = 2 * (p) /\ (n) = 0) \/ exists ge_signed_half_extend_decode. (((z) = 2 * ge_signed_half_extend_decode + 1 /\ (p) = 0) /\ (n) = S ge_signed_half_extend_decode)))
  2. L16
    specialize signed_decode_total (z)
  3. L17
    apply signed_decode_total
05Separate the logical casesL18–19

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

  1. L18
    cases hd
  2. L19
    cases hd_witness
06Establish hpL20–25

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.

  1. L20
    have hp : ∃ b. ∃ c. BetaAt(b,c,l,x4) ∧ BetaPrefixEqual(x,x1,b,c,l)Definitions: BetaPrefixEqualBetaAt
  2. L21
    specialize beta_prefix_extend (l)
  3. L22
    specialize beta_prefix_extend (x)
  4. L23
    specialize beta_prefix_extend (x1)
  5. L24
    specialize beta_prefix_extend (x4)
  6. L25
    apply beta_prefix_extend
07Separate the logical casesL26–28

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

  1. L26
    cases hp
  2. L27
    cases hp_witness
  3. L28
    cases hp_witness_witness
08Establish hnL29–34

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.

  1. L29
    have hn : ∃ b. ∃ c. BetaAt(b,c,l,x5) ∧ BetaPrefixEqual(x2,x3,b,c,l)Definitions: BetaPrefixEqualBetaAt
  2. L30
    specialize beta_prefix_extend (l)
  3. L31
    specialize beta_prefix_extend (x2)
  4. L32
    specialize beta_prefix_extend (x3)
  5. L33
    specialize beta_prefix_extend (x5)
  6. L34
    apply beta_prefix_extend
09Separate the logical casesL35–37

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

  1. L35
    cases hn
  2. L36
    cases hn_witness
  3. L37
    cases hn_witness_witness
10Construct an explicit witnessL38–38

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

  1. L38
    exists ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))))
11Separate the logical casesL39–39

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

  1. L39
    split
12Use earlier factsL40–46

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

  1. L40
    specialize divisor_signed_table_from_components (l)
  2. L41
    specialize divisor_signed_table_from_components (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  3. L42
    specialize divisor_signed_table_from_components (x6)
  4. L43
    specialize divisor_signed_table_from_components (x7)
  5. L44
    specialize divisor_signed_table_from_components (x8)
  6. L45
    specialize divisor_signed_table_from_components (x9)
  7. L46
    apply divisor_signed_table_from_components
13Calculate and transport equalitiesL47–47

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L47
    refl
14Separate the logical casesL48–48

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

  1. L48
    split
15Use earlier factsL49–58

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

  1. L49
    specialize arithmetic_signed_table_component_prefix_preserved (F)
  2. L50
    specialize arithmetic_signed_table_component_prefix_preserved (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  3. L51
    specialize arithmetic_signed_table_component_prefix_preserved (x)
  4. L52
    specialize arithmetic_signed_table_component_prefix_preserved (x1)
  5. L53
    specialize arithmetic_signed_table_component_prefix_preserved (x2)
  6. L54
    specialize arithmetic_signed_table_component_prefix_preserved (x3)
  7. L55
    specialize arithmetic_signed_table_component_prefix_preserved (x6)
  8. L56
    specialize arithmetic_signed_table_component_prefix_preserved (x7)
  9. L57
    specialize arithmetic_signed_table_component_prefix_preserved (x8)
  10. L58
    specialize arithmetic_signed_table_component_prefix_preserved (x9)
16Use earlier factsL59–61

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

  1. L59
    specialize arithmetic_signed_table_component_prefix_preserved (l)
  2. L60
    apply arithmetic_signed_table_component_prefix_preserved
  3. L61
    exact hrep_witness_witness_witness_witness
17Calculate and transport equalitiesL62–62

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L62
    refl
18Use earlier factsL63–72

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

  1. L63
    exact hp_witness_witness_right
  2. L64
    exact hn_witness_witness_right
  3. L65
    specialize divisor_signed_table_at_from_components (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  4. L66
    specialize divisor_signed_table_at_from_components (x6)
  5. L67
    specialize divisor_signed_table_at_from_components (x7)
  6. L68
    specialize divisor_signed_table_at_from_components (x8)
  7. L69
    specialize divisor_signed_table_at_from_components (x9)
  8. L70
    specialize divisor_signed_table_at_from_components (l)
  9. L71
    specialize divisor_signed_table_at_from_components (x4)
  10. L72
    specialize divisor_signed_table_at_from_components (x5)
19Use earlier factsL73–74

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

  1. L73
    specialize divisor_signed_table_at_from_components (z)
  2. L74
    apply divisor_signed_table_at_from_components
20Calculate and transport equalitiesL75–75

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L75
    refl
21Use earlier factsL76–77

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

  1. L76
    exact hp_witness_witness_left
  2. L77
    exact hn_witness_witness_left
22Construct an explicit witnessL78–79

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

  1. L78
    exists x4
  2. L79
    exists x5
23Separate the logical casesL80–80

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

  1. L80
    split
24Use earlier factsL81–82

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

  1. L81
    exact hd_witness_witness
  2. L82
    apply add_comm

Library-wide reading audit

Original exact command ledger · 82 lines
  1. 0001intro N
  2. 0002intro F
  3. 0003intro l
  4. 0004intro z
  5. 0005intro ht
  6. 0006have hrep : exists pb pc nb nc. ((F) = (((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) * S ((((pb) + (pc)) * S ((pb) + (pc)) + ((pc) + (pc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc)))) + ((((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))) + (((nb) + (nc)) * S ((nb) + (nc)) + ((nc) + (nc))))))
  7. 0007specialize divisor_signed_table_components (N)
  8. 0008specialize divisor_signed_table_components (F)
  9. 0009apply divisor_signed_table_components
  10. 0010exact ht
  11. 0011cases hrep
  12. 0012cases hrep_witness
  13. 0013cases hrep_witness_witness
  14. 0014cases hrep_witness_witness_witness
  15. 0015have hd : exists p n. ((((z) = 2 * (p) /\ (n) = 0) \/ exists ge_signed_half_extend_decode. (((z) = 2 * ge_signed_half_extend_decode + 1 /\ (p) = 0) /\ (n) = S ge_signed_half_extend_decode)))
  16. 0016specialize signed_decode_total (z)
  17. 0017apply signed_decode_total
  18. 0018cases hd
  19. 0019cases hd_witness
  20. 0020have hp : exists b c. (((((exists ff_h_pvs_extend_last_positive. ff_h_pvs_extend_last_positive + S (x4) = S ((S (l)) * c)) /\ exists ff_q_pvs_extend_last_positive. b = ff_q_pvs_extend_last_positive * S ((S (l)) * c) + (x4))) /\ (forall pfp_i_pvs_extend_old_positive pfp_a_pvs_extend_old_positive. (exists pfp_gap_pvs_extend_old_positivebound. pfp_gap_pvs_extend_old_positivebound + S (pfp_i_pvs_extend_old_positive) = (l)) -> (((exists ff_h_pfp_pvs_extend_old_positiveold. ff_h_pfp_pvs_extend_old_positiveold + S (pfp_a_pvs_extend_old_positive) = S ((S (pfp_i_pvs_extend_old_positive)) * x1)) /\ exists ff_q_pfp_pvs_extend_old_positiveold. x = ff_q_pfp_pvs_extend_old_positiveold * S ((S (pfp_i_pvs_extend_old_positive)) * x1) + (pfp_a_pvs_extend_old_positive))) -> (((exists ff_h_pfp_pvs_extend_old_positivenew. ff_h_pfp_pvs_extend_old_positivenew + S (pfp_a_pvs_extend_old_positive) = S ((S (pfp_i_pvs_extend_old_positive)) * c)) /\ exists ff_q_pfp_pvs_extend_old_positivenew. b = ff_q_pfp_pvs_extend_old_positivenew * S ((S (pfp_i_pvs_extend_old_positive)) * c) + (pfp_a_pvs_extend_old_positive))))))
  21. 0021specialize beta_prefix_extend (l)
  22. 0022specialize beta_prefix_extend (x)
  23. 0023specialize beta_prefix_extend (x1)
  24. 0024specialize beta_prefix_extend (x4)
  25. 0025apply beta_prefix_extend
  26. 0026cases hp
  27. 0027cases hp_witness
  28. 0028cases hp_witness_witness
  29. 0029have hn : exists b c. (((((exists ff_h_pvs_extend_last_negative. ff_h_pvs_extend_last_negative + S (x5) = S ((S (l)) * c)) /\ exists ff_q_pvs_extend_last_negative. b = ff_q_pvs_extend_last_negative * S ((S (l)) * c) + (x5))) /\ (forall pfp_i_pvs_extend_old_negative pfp_a_pvs_extend_old_negative. (exists pfp_gap_pvs_extend_old_negativebound. pfp_gap_pvs_extend_old_negativebound + S (pfp_i_pvs_extend_old_negative) = (l)) -> (((exists ff_h_pfp_pvs_extend_old_negativeold. ff_h_pfp_pvs_extend_old_negativeold + S (pfp_a_pvs_extend_old_negative) = S ((S (pfp_i_pvs_extend_old_negative)) * x3)) /\ exists ff_q_pfp_pvs_extend_old_negativeold. x2 = ff_q_pfp_pvs_extend_old_negativeold * S ((S (pfp_i_pvs_extend_old_negative)) * x3) + (pfp_a_pvs_extend_old_negative))) -> (((exists ff_h_pfp_pvs_extend_old_negativenew. ff_h_pfp_pvs_extend_old_negativenew + S (pfp_a_pvs_extend_old_negative) = S ((S (pfp_i_pvs_extend_old_negative)) * c)) /\ exists ff_q_pfp_pvs_extend_old_negativenew. b = ff_q_pfp_pvs_extend_old_negativenew * S ((S (pfp_i_pvs_extend_old_negative)) * c) + (pfp_a_pvs_extend_old_negative))))))
  30. 0030specialize beta_prefix_extend (l)
  31. 0031specialize beta_prefix_extend (x2)
  32. 0032specialize beta_prefix_extend (x3)
  33. 0033specialize beta_prefix_extend (x5)
  34. 0034apply beta_prefix_extend
  35. 0035cases hn
  36. 0036cases hn_witness
  37. 0037cases hn_witness_witness
  38. 0038exists ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))))
  39. 0039split
  40. 0040specialize divisor_signed_table_from_components (l)
  41. 0041specialize divisor_signed_table_from_components (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  42. 0042specialize divisor_signed_table_from_components (x6)
  43. 0043specialize divisor_signed_table_from_components (x7)
  44. 0044specialize divisor_signed_table_from_components (x8)
  45. 0045specialize divisor_signed_table_from_components (x9)
  46. 0046apply divisor_signed_table_from_components
  47. 0047refl
  48. 0048split
  49. 0049specialize arithmetic_signed_table_component_prefix_preserved (F)
  50. 0050specialize arithmetic_signed_table_component_prefix_preserved (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  51. 0051specialize arithmetic_signed_table_component_prefix_preserved (x)
  52. 0052specialize arithmetic_signed_table_component_prefix_preserved (x1)
  53. 0053specialize arithmetic_signed_table_component_prefix_preserved (x2)
  54. 0054specialize arithmetic_signed_table_component_prefix_preserved (x3)
  55. 0055specialize arithmetic_signed_table_component_prefix_preserved (x6)
  56. 0056specialize arithmetic_signed_table_component_prefix_preserved (x7)
  57. 0057specialize arithmetic_signed_table_component_prefix_preserved (x8)
  58. 0058specialize arithmetic_signed_table_component_prefix_preserved (x9)
  59. 0059specialize arithmetic_signed_table_component_prefix_preserved (l)
  60. 0060apply arithmetic_signed_table_component_prefix_preserved
  61. 0061exact hrep_witness_witness_witness_witness
  62. 0062refl
  63. 0063exact hp_witness_witness_right
  64. 0064exact hn_witness_witness_right
  65. 0065specialize divisor_signed_table_at_from_components (((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) * S ((((x6) + (x7)) * S ((x6) + (x7)) + ((x7) + (x7))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))) + ((((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9))) + (((x8) + (x9)) * S ((x8) + (x9)) + ((x9) + (x9)))))
  66. 0066specialize divisor_signed_table_at_from_components (x6)
  67. 0067specialize divisor_signed_table_at_from_components (x7)
  68. 0068specialize divisor_signed_table_at_from_components (x8)
  69. 0069specialize divisor_signed_table_at_from_components (x9)
  70. 0070specialize divisor_signed_table_at_from_components (l)
  71. 0071specialize divisor_signed_table_at_from_components (x4)
  72. 0072specialize divisor_signed_table_at_from_components (x5)
  73. 0073specialize divisor_signed_table_at_from_components (z)
  74. 0074apply divisor_signed_table_at_from_components
  75. 0075refl
  76. 0076exact hp_witness_witness_left
  77. 0077exact hn_witness_witness_left
  78. 0078exists x4
  79. 0079exists x5
  80. 0080split
  81. 0081exact hd_witness_witness
  82. 0082apply add_comm