RS0001

signed_rectangular_slice_lookup

Every actual slice lookup is the identical canonical signed value at its explicitly computed source index.

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

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

Every slice, row table, column table and signed sum is an actual beta-coded witness. Entries are F((o+s*i)+t*j), for i<m and j<n. Zero dimensions and zero strides are allowed; separately certified endpoints are unused. Table uniqueness concerns values, not codes. No infinite-sum assertion is made.

Exact theorem in conservative defined notation

∀ F. ∀ G. ∀ o. ∀ s. ∀ l. ∀ i. ∀ z. ArithSlice(F,G,o,s,l)Lt(i,l)ArithAt(G,i,z)ArithAt(F,o + s · i,z)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall F G o s l i z. (((exists dst_positive_code_lookup_slicesource_table dst_positive_scale_lookup_slicesource_table dst_negative_code_lookup_slicesource_table dst_negative_scale_lookup_slicesource_table. (((F) = (((((dst_positive_code_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table)) * S ((dst_positive_code_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table)) + ((dst_positive_scale_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table))) + (((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) * S ((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) + ((dst_negative_scale_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)))) * S ((((dst_positive_code_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table)) * S ((dst_positive_code_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table)) + ((dst_positive_scale_lookup_slicesource_table) + (dst_positive_scale_lookup_slicesource_table))) + (((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) * S ((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) + ((dst_negative_scale_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)))) + ((((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) * S ((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) + ((dst_negative_scale_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table))) + (((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) * S ((dst_negative_code_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)) + ((dst_negative_scale_lookup_slicesource_table) + (dst_negative_scale_lookup_slicesource_table)))))) /\ (forall dst_index_lookup_slicesource_table. (exists pvs_le_gap_lookup_slicesource_tabledomain. pvs_le_gap_lookup_slicesource_tabledomain + (dst_index_lookup_slicesource_table) = (0)) -> exists dst_positive_lookup_slicesource_table dst_negative_lookup_slicesource_table dst_value_lookup_slicesource_table. ((((exists ff_h_pvs_lookup_slicesource_tableentrypositive. ff_h_pvs_lookup_slicesource_tableentrypositive + S (dst_positive_lookup_slicesource_table) = S ((S (dst_index_lookup_slicesource_table)) * dst_positive_scale_lookup_slicesource_table)) /\ exists ff_q_pvs_lookup_slicesource_tableentrypositive. dst_positive_code_lookup_slicesource_table = ff_q_pvs_lookup_slicesource_tableentrypositive * S ((S (dst_index_lookup_slicesource_table)) * dst_positive_scale_lookup_slicesource_table) + (dst_positive_lookup_slicesource_table))) /\ (((((exists ff_h_pvs_lookup_slicesource_tableentrynegative. ff_h_pvs_lookup_slicesource_tableentrynegative + S (dst_negative_lookup_slicesource_table) = S ((S (dst_index_lookup_slicesource_table)) * dst_negative_scale_lookup_slicesource_table)) /\ exists ff_q_pvs_lookup_slicesource_tableentrynegative. dst_negative_code_lookup_slicesource_table = ff_q_pvs_lookup_slicesource_tableentrynegative * S ((S (dst_index_lookup_slicesource_table)) * dst_negative_scale_lookup_slicesource_table) + (dst_negative_lookup_slicesource_table))) /\ (exists ge_balance_positive_lookup_slicesource_tableentryvalue ge_balance_negative_lookup_slicesource_tableentryvalue. (((((dst_value_lookup_slicesource_table) = 2 * (ge_balance_positive_lookup_slicesource_tableentryvalue) /\ (ge_balance_negative_lookup_slicesource_tableentryvalue) = 0) \/ exists ge_signed_half_lookup_slicesource_tableentryvaluedecode. (((dst_value_lookup_slicesource_table) = 2 * ge_signed_half_lookup_slicesource_tableentryvaluedecode + 1 /\ (ge_balance_positive_lookup_slicesource_tableentryvalue) = 0) /\ (ge_balance_negative_lookup_slicesource_tableentryvalue) = S ge_signed_half_lookup_slicesource_tableentryvaluedecode))) /\ ((dst_positive_lookup_slicesource_table) + ge_balance_negative_lookup_slicesource_tableentryvalue = (dst_negative_lookup_slicesource_table) + ge_balance_positive_lookup_slicesource_tableentryvalue))))))))) /\ (((exists dst_positive_code_lookup_sliceoutput_table dst_positive_scale_lookup_sliceoutput_table dst_negative_code_lookup_sliceoutput_table dst_negative_scale_lookup_sliceoutput_table. (((G) = (((((dst_positive_code_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table)) * S ((dst_positive_code_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table)) + ((dst_positive_scale_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table))) + (((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) * S ((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) + ((dst_negative_scale_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)))) * S ((((dst_positive_code_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table)) * S ((dst_positive_code_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table)) + ((dst_positive_scale_lookup_sliceoutput_table) + (dst_positive_scale_lookup_sliceoutput_table))) + (((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) * S ((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) + ((dst_negative_scale_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)))) + ((((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) * S ((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) + ((dst_negative_scale_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table))) + (((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) * S ((dst_negative_code_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)) + ((dst_negative_scale_lookup_sliceoutput_table) + (dst_negative_scale_lookup_sliceoutput_table)))))) /\ (forall dst_index_lookup_sliceoutput_table. (exists pvs_le_gap_lookup_sliceoutput_tabledomain. pvs_le_gap_lookup_sliceoutput_tabledomain + (dst_index_lookup_sliceoutput_table) = (l)) -> exists dst_positive_lookup_sliceoutput_table dst_negative_lookup_sliceoutput_table dst_value_lookup_sliceoutput_table. ((((exists ff_h_pvs_lookup_sliceoutput_tableentrypositive. ff_h_pvs_lookup_sliceoutput_tableentrypositive + S (dst_positive_lookup_sliceoutput_table) = S ((S (dst_index_lookup_sliceoutput_table)) * dst_positive_scale_lookup_sliceoutput_table)) /\ exists ff_q_pvs_lookup_sliceoutput_tableentrypositive. dst_positive_code_lookup_sliceoutput_table = ff_q_pvs_lookup_sliceoutput_tableentrypositive * S ((S (dst_index_lookup_sliceoutput_table)) * dst_positive_scale_lookup_sliceoutput_table) + (dst_positive_lookup_sliceoutput_table))) /\ (((((exists ff_h_pvs_lookup_sliceoutput_tableentrynegative. ff_h_pvs_lookup_sliceoutput_tableentrynegative + S (dst_negative_lookup_sliceoutput_table) = S ((S (dst_index_lookup_sliceoutput_table)) * dst_negative_scale_lookup_sliceoutput_table)) /\ exists ff_q_pvs_lookup_sliceoutput_tableentrynegative. dst_negative_code_lookup_sliceoutput_table = ff_q_pvs_lookup_sliceoutput_tableentrynegative * S ((S (dst_index_lookup_sliceoutput_table)) * dst_negative_scale_lookup_sliceoutput_table) + (dst_negative_lookup_sliceoutput_table))) /\ (exists ge_balance_positive_lookup_sliceoutput_tableentryvalue ge_balance_negative_lookup_sliceoutput_tableentryvalue. (((((dst_value_lookup_sliceoutput_table) = 2 * (ge_balance_positive_lookup_sliceoutput_tableentryvalue) /\ (ge_balance_negative_lookup_sliceoutput_tableentryvalue) = 0) \/ exists ge_signed_half_lookup_sliceoutput_tableentryvaluedecode. (((dst_value_lookup_sliceoutput_table) = 2 * ge_signed_half_lookup_sliceoutput_tableentryvaluedecode + 1 /\ (ge_balance_positive_lookup_sliceoutput_tableentryvalue) = 0) /\ (ge_balance_negative_lookup_sliceoutput_tableentryvalue) = S ge_signed_half_lookup_sliceoutput_tableentryvaluedecode))) /\ ((dst_positive_lookup_sliceoutput_table) + ge_balance_negative_lookup_sliceoutput_tableentryvalue = (dst_negative_lookup_sliceoutput_table) + ge_balance_positive_lookup_sliceoutput_tableentryvalue))))))))) /\ (forall srs_index_lookup_slice. (exists pvs_gap_lookup_slicebound. pvs_gap_lookup_slicebound + S (srs_index_lookup_slice) = (l)) -> exists srs_value_lookup_slice. (((exists dst_positive_code_lookup_sliceentrysource dst_positive_scale_lookup_sliceentrysource dst_negative_code_lookup_sliceentrysource dst_negative_scale_lookup_sliceentrysource dst_positive_lookup_sliceentrysource dst_negative_lookup_sliceentrysource. (((F) = (((((dst_positive_code_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource)) * S ((dst_positive_code_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource)) + ((dst_positive_scale_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource))) + (((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) * S ((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) + ((dst_negative_scale_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)))) * S ((((dst_positive_code_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource)) * S ((dst_positive_code_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource)) + ((dst_positive_scale_lookup_sliceentrysource) + (dst_positive_scale_lookup_sliceentrysource))) + (((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) * S ((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) + ((dst_negative_scale_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)))) + ((((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) * S ((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) + ((dst_negative_scale_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource))) + (((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) * S ((dst_negative_code_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)) + ((dst_negative_scale_lookup_sliceentrysource) + (dst_negative_scale_lookup_sliceentrysource)))))) /\ (((((exists ff_h_pvs_lookup_sliceentrysourcepositive. ff_h_pvs_lookup_sliceentrysourcepositive + S (dst_positive_lookup_sliceentrysource) = S ((S (((o) + ((s) * (srs_index_lookup_slice))))) * dst_positive_scale_lookup_sliceentrysource)) /\ exists ff_q_pvs_lookup_sliceentrysourcepositive. dst_positive_code_lookup_sliceentrysource = ff_q_pvs_lookup_sliceentrysourcepositive * S ((S (((o) + ((s) * (srs_index_lookup_slice))))) * dst_positive_scale_lookup_sliceentrysource) + (dst_positive_lookup_sliceentrysource))) /\ (((((exists ff_h_pvs_lookup_sliceentrysourcenegative. ff_h_pvs_lookup_sliceentrysourcenegative + S (dst_negative_lookup_sliceentrysource) = S ((S (((o) + ((s) * (srs_index_lookup_slice))))) * dst_negative_scale_lookup_sliceentrysource)) /\ exists ff_q_pvs_lookup_sliceentrysourcenegative. dst_negative_code_lookup_sliceentrysource = ff_q_pvs_lookup_sliceentrysourcenegative * S ((S (((o) + ((s) * (srs_index_lookup_slice))))) * dst_negative_scale_lookup_sliceentrysource) + (dst_negative_lookup_sliceentrysource))) /\ (exists ge_balance_positive_lookup_sliceentrysourcevalue ge_balance_negative_lookup_sliceentrysourcevalue. (((((srs_value_lookup_slice) = 2 * (ge_balance_positive_lookup_sliceentrysourcevalue) /\ (ge_balance_negative_lookup_sliceentrysourcevalue) = 0) \/ exists ge_signed_half_lookup_sliceentrysourcevaluedecode. (((srs_value_lookup_slice) = 2 * ge_signed_half_lookup_sliceentrysourcevaluedecode + 1 /\ (ge_balance_positive_lookup_sliceentrysourcevalue) = 0) /\ (ge_balance_negative_lookup_sliceentrysourcevalue) = S ge_signed_half_lookup_sliceentrysourcevaluedecode))) /\ ((dst_positive_lookup_sliceentrysource) + ge_balance_negative_lookup_sliceentrysourcevalue = (dst_negative_lookup_sliceentrysource) + ge_balance_positive_lookup_sliceentrysourcevalue))))))))) /\ (exists dst_positive_code_lookup_sliceentryoutput dst_positive_scale_lookup_sliceentryoutput dst_negative_code_lookup_sliceentryoutput dst_negative_scale_lookup_sliceentryoutput dst_positive_lookup_sliceentryoutput dst_negative_lookup_sliceentryoutput. (((G) = (((((dst_positive_code_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput)) * S ((dst_positive_code_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput)) + ((dst_positive_scale_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput))) + (((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) * S ((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) + ((dst_negative_scale_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)))) * S ((((dst_positive_code_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput)) * S ((dst_positive_code_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput)) + ((dst_positive_scale_lookup_sliceentryoutput) + (dst_positive_scale_lookup_sliceentryoutput))) + (((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) * S ((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) + ((dst_negative_scale_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)))) + ((((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) * S ((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) + ((dst_negative_scale_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput))) + (((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) * S ((dst_negative_code_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)) + ((dst_negative_scale_lookup_sliceentryoutput) + (dst_negative_scale_lookup_sliceentryoutput)))))) /\ (((((exists ff_h_pvs_lookup_sliceentryoutputpositive. ff_h_pvs_lookup_sliceentryoutputpositive + S (dst_positive_lookup_sliceentryoutput) = S ((S (srs_index_lookup_slice)) * dst_positive_scale_lookup_sliceentryoutput)) /\ exists ff_q_pvs_lookup_sliceentryoutputpositive. dst_positive_code_lookup_sliceentryoutput = ff_q_pvs_lookup_sliceentryoutputpositive * S ((S (srs_index_lookup_slice)) * dst_positive_scale_lookup_sliceentryoutput) + (dst_positive_lookup_sliceentryoutput))) /\ (((((exists ff_h_pvs_lookup_sliceentryoutputnegative. ff_h_pvs_lookup_sliceentryoutputnegative + S (dst_negative_lookup_sliceentryoutput) = S ((S (srs_index_lookup_slice)) * dst_negative_scale_lookup_sliceentryoutput)) /\ exists ff_q_pvs_lookup_sliceentryoutputnegative. dst_negative_code_lookup_sliceentryoutput = ff_q_pvs_lookup_sliceentryoutputnegative * S ((S (srs_index_lookup_slice)) * dst_negative_scale_lookup_sliceentryoutput) + (dst_negative_lookup_sliceentryoutput))) /\ (exists ge_balance_positive_lookup_sliceentryoutputvalue ge_balance_negative_lookup_sliceentryoutputvalue. (((((srs_value_lookup_slice) = 2 * (ge_balance_positive_lookup_sliceentryoutputvalue) /\ (ge_balance_negative_lookup_sliceentryoutputvalue) = 0) \/ exists ge_signed_half_lookup_sliceentryoutputvaluedecode. (((srs_value_lookup_slice) = 2 * ge_signed_half_lookup_sliceentryoutputvaluedecode + 1 /\ (ge_balance_positive_lookup_sliceentryoutputvalue) = 0) /\ (ge_balance_negative_lookup_sliceentryoutputvalue) = S ge_signed_half_lookup_sliceentryoutputvaluedecode))) /\ ((dst_positive_lookup_sliceentryoutput) + ge_balance_negative_lookup_sliceentryoutputvalue = (dst_negative_lookup_sliceentryoutput) + ge_balance_positive_lookup_sliceentryoutputvalue)))))))))))))))) -> (exists pvs_gap_lookup_bound. pvs_gap_lookup_bound + S (i) = (l)) -> (exists dst_positive_code_lookup_value dst_positive_scale_lookup_value dst_negative_code_lookup_value dst_negative_scale_lookup_value dst_positive_lookup_value dst_negative_lookup_value. (((G) = (((((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) * S ((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) + ((dst_positive_scale_lookup_value) + (dst_positive_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))) * S ((((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) * S ((dst_positive_code_lookup_value) + (dst_positive_scale_lookup_value)) + ((dst_positive_scale_lookup_value) + (dst_positive_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))) + ((((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value))) + (((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) * S ((dst_negative_code_lookup_value) + (dst_negative_scale_lookup_value)) + ((dst_negative_scale_lookup_value) + (dst_negative_scale_lookup_value)))))) /\ (((((exists ff_h_pvs_lookup_valuepositive. ff_h_pvs_lookup_valuepositive + S (dst_positive_lookup_value) = S ((S (i)) * dst_positive_scale_lookup_value)) /\ exists ff_q_pvs_lookup_valuepositive. dst_positive_code_lookup_value = ff_q_pvs_lookup_valuepositive * S ((S (i)) * dst_positive_scale_lookup_value) + (dst_positive_lookup_value))) /\ (((((exists ff_h_pvs_lookup_valuenegative. ff_h_pvs_lookup_valuenegative + S (dst_negative_lookup_value) = S ((S (i)) * dst_negative_scale_lookup_value)) /\ exists ff_q_pvs_lookup_valuenegative. dst_negative_code_lookup_value = ff_q_pvs_lookup_valuenegative * S ((S (i)) * dst_negative_scale_lookup_value) + (dst_negative_lookup_value))) /\ (exists ge_balance_positive_lookup_valuevalue ge_balance_negative_lookup_valuevalue. (((((z) = 2 * (ge_balance_positive_lookup_valuevalue) /\ (ge_balance_negative_lookup_valuevalue) = 0) \/ exists ge_signed_half_lookup_valuevaluedecode. (((z) = 2 * ge_signed_half_lookup_valuevaluedecode + 1 /\ (ge_balance_positive_lookup_valuevalue) = 0) /\ (ge_balance_negative_lookup_valuevalue) = S ge_signed_half_lookup_valuevaluedecode))) /\ ((dst_positive_lookup_value) + ge_balance_negative_lookup_valuevalue = (dst_negative_lookup_value) + ge_balance_positive_lookup_valuevalue))))))))) -> (exists dst_positive_code_lookup_source dst_positive_scale_lookup_source dst_negative_code_lookup_source dst_negative_scale_lookup_source dst_positive_lookup_source dst_negative_lookup_source. (((F) = (((((dst_positive_code_lookup_source) + (dst_positive_scale_lookup_source)) * S ((dst_positive_code_lookup_source) + (dst_positive_scale_lookup_source)) + ((dst_positive_scale_lookup_source) + (dst_positive_scale_lookup_source))) + (((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) * S ((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) + ((dst_negative_scale_lookup_source) + (dst_negative_scale_lookup_source)))) * S ((((dst_positive_code_lookup_source) + (dst_positive_scale_lookup_source)) * S ((dst_positive_code_lookup_source) + (dst_positive_scale_lookup_source)) + ((dst_positive_scale_lookup_source) + (dst_positive_scale_lookup_source))) + (((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) * S ((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) + ((dst_negative_scale_lookup_source) + (dst_negative_scale_lookup_source)))) + ((((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) * S ((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) + ((dst_negative_scale_lookup_source) + (dst_negative_scale_lookup_source))) + (((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) * S ((dst_negative_code_lookup_source) + (dst_negative_scale_lookup_source)) + ((dst_negative_scale_lookup_source) + (dst_negative_scale_lookup_source)))))) /\ (((((exists ff_h_pvs_lookup_sourcepositive. ff_h_pvs_lookup_sourcepositive + S (dst_positive_lookup_source) = S ((S (((o) + ((s) * (i))))) * dst_positive_scale_lookup_source)) /\ exists ff_q_pvs_lookup_sourcepositive. dst_positive_code_lookup_source = ff_q_pvs_lookup_sourcepositive * S ((S (((o) + ((s) * (i))))) * dst_positive_scale_lookup_source) + (dst_positive_lookup_source))) /\ (((((exists ff_h_pvs_lookup_sourcenegative. ff_h_pvs_lookup_sourcenegative + S (dst_negative_lookup_source) = S ((S (((o) + ((s) * (i))))) * dst_negative_scale_lookup_source)) /\ exists ff_q_pvs_lookup_sourcenegative. dst_negative_code_lookup_source = ff_q_pvs_lookup_sourcenegative * S ((S (((o) + ((s) * (i))))) * dst_negative_scale_lookup_source) + (dst_negative_lookup_source))) /\ (exists ge_balance_positive_lookup_sourcevalue ge_balance_negative_lookup_sourcevalue. (((((z) = 2 * (ge_balance_positive_lookup_sourcevalue) /\ (ge_balance_negative_lookup_sourcevalue) = 0) \/ exists ge_signed_half_lookup_sourcevaluedecode. (((z) = 2 * ge_signed_half_lookup_sourcevaluedecode + 1 /\ (ge_balance_positive_lookup_sourcevalue) = 0) /\ (ge_balance_negative_lookup_sourcevalue) = S ge_signed_half_lookup_sourcevaluedecode))) /\ ((dst_positive_lookup_source) + ge_balance_negative_lookup_sourcevalue = (dst_negative_lookup_source) + ge_balance_positive_lookup_sourcevalue)))))))))

Complete tactic proof in conservative notation

All 29 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

29 script commands · 6 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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro o
  4. L4
    intro s
  5. L5
    intro l
  6. L6
    intro i
  7. L7
    intro z
  8. L8
    intro hs
  9. L9
    intro hi
  10. L10
    intro hz
02Separate the logical casesL11–12

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

  1. L11
    cases hs
  2. L12
    cases hs_right
03Establish heL13–16

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

  1. L13
    have he : ∃ a. ArithAt(F,o + s · i,a) ∧ ArithAt(G,i,a)Definitions: ArithAt(F,o + s · i,a)ArithAt(G,i,a)Original native command in the exact edition
  2. L14
    specialize hs_right_right (i)
  3. L15
    apply hs_right_right
  4. L16
    exact hi
04Separate the logical casesL17–18

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

  1. L17
    cases he
  2. L18
    cases he_witness
05Establish heqL19–28

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

  1. L19
    have heq : x = z
  2. L20
    specialize divisor_signed_table_at_functional (G)
  3. L21
    specialize divisor_signed_table_at_functional (i)
  4. L22
    specialize divisor_signed_table_at_functional (x)
  5. L23
    specialize divisor_signed_table_at_functional (z)
  6. L24
    apply divisor_signed_table_at_functional
  7. L25
    exact he_witness_right
  8. L26
    exact hz
  9. L27
    rewrite heq at he_witness_left
  10. L28
    rewrite heq at he_witness_left
06Use earlier factsL29–29

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

  1. L29
    exact he_witness_left

Library-wide reading audit

Original defined command ledger · 29 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro o
  4. 0004intro s
  5. 0005intro l
  6. 0006intro i
  7. 0007intro z
  8. 0008intro hs
  9. 0009intro hi
  10. 0010intro hz
  11. 0011cases hs
  12. 0012cases hs_right
  13. 0013have he : ∃ a. ArithAt(F,o + s · i,a)ArithAt(G,i,a)
  14. 0014specialize hs_right_right (i)
  15. 0015apply hs_right_right
  16. 0016exact hi
  17. 0017cases he
  18. 0018cases he_witness
  19. 0019have heq : x = z
  20. 0020specialize divisor_signed_table_at_functional (G)
  21. 0021specialize divisor_signed_table_at_functional (i)
  22. 0022specialize divisor_signed_table_at_functional (x)
  23. 0023specialize divisor_signed_table_at_functional (z)
  24. 0024apply divisor_signed_table_at_functional
  25. 0025exact he_witness_right
  26. 0026exact hz
  27. 0027rewrite heq at he_witness_left
  28. 0028rewrite heq at he_witness_left
  29. 0029exact he_witness_left