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 G n i j a b z. (exists pvs_gap_flat_lookup_bound. pvs_gap_flat_lookup_bound + S (j) = (n)) -> (exists dst_positive_code_flat_lookup_F dst_positive_scale_flat_lookup_F dst_negative_code_flat_lookup_F dst_negative_scale_flat_lookup_F dst_positive_flat_lookup_F dst_negative_flat_lookup_F. (((F) = (((((dst_positive_code_flat_lookup_F) + (dst_positive_scale_flat_lookup_F)) * S ((dst_positive_code_flat_lookup_F) + (dst_positive_scale_flat_lookup_F)) + ((dst_positive_scale_flat_lookup_F) + (dst_positive_scale_flat_lookup_F))) + (((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) * S ((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) + ((dst_negative_scale_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)))) * S ((((dst_positive_code_flat_lookup_F) + (dst_positive_scale_flat_lookup_F)) * S ((dst_positive_code_flat_lookup_F) + (dst_positive_scale_flat_lookup_F)) + ((dst_positive_scale_flat_lookup_F) + (dst_positive_scale_flat_lookup_F))) + (((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) * S ((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) + ((dst_negative_scale_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)))) + ((((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) * S ((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) + ((dst_negative_scale_flat_lookup_F) + (dst_negative_scale_flat_lookup_F))) + (((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) * S ((dst_negative_code_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)) + ((dst_negative_scale_flat_lookup_F) + (dst_negative_scale_flat_lookup_F)))))) /\ (((((exists ff_h_pvs_flat_lookup_Fpositive. ff_h_pvs_flat_lookup_Fpositive + S (dst_positive_flat_lookup_F) = S ((S (i)) * dst_positive_scale_flat_lookup_F)) /\ exists ff_q_pvs_flat_lookup_Fpositive. dst_positive_code_flat_lookup_F = ff_q_pvs_flat_lookup_Fpositive * S ((S (i)) * dst_positive_scale_flat_lookup_F) + (dst_positive_flat_lookup_F))) /\ (((((exists ff_h_pvs_flat_lookup_Fnegative. ff_h_pvs_flat_lookup_Fnegative + S (dst_negative_flat_lookup_F) = S ((S (i)) * dst_negative_scale_flat_lookup_F)) /\ exists ff_q_pvs_flat_lookup_Fnegative. dst_negative_code_flat_lookup_F = ff_q_pvs_flat_lookup_Fnegative * S ((S (i)) * dst_negative_scale_flat_lookup_F) + (dst_negative_flat_lookup_F))) /\ (exists ge_balance_positive_flat_lookup_Fvalue ge_balance_negative_flat_lookup_Fvalue. (((((a) = 2 * (ge_balance_positive_flat_lookup_Fvalue) /\ (ge_balance_negative_flat_lookup_Fvalue) = 0) \/ exists ge_signed_half_flat_lookup_Fvaluedecode. (((a) = 2 * ge_signed_half_flat_lookup_Fvaluedecode + 1 /\ (ge_balance_positive_flat_lookup_Fvalue) = 0) /\ (ge_balance_negative_flat_lookup_Fvalue) = S ge_signed_half_flat_lookup_Fvaluedecode))) /\ ((dst_positive_flat_lookup_F) + ge_balance_negative_flat_lookup_Fvalue = (dst_negative_flat_lookup_F) + ge_balance_positive_flat_lookup_Fvalue))))))))) -> (exists dst_positive_code_flat_lookup_G dst_positive_scale_flat_lookup_G dst_negative_code_flat_lookup_G dst_negative_scale_flat_lookup_G dst_positive_flat_lookup_G dst_negative_flat_lookup_G. (((G) = (((((dst_positive_code_flat_lookup_G) + (dst_positive_scale_flat_lookup_G)) * S ((dst_positive_code_flat_lookup_G) + (dst_positive_scale_flat_lookup_G)) + ((dst_positive_scale_flat_lookup_G) + (dst_positive_scale_flat_lookup_G))) + (((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) * S ((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) + ((dst_negative_scale_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)))) * S ((((dst_positive_code_flat_lookup_G) + (dst_positive_scale_flat_lookup_G)) * S ((dst_positive_code_flat_lookup_G) + (dst_positive_scale_flat_lookup_G)) + ((dst_positive_scale_flat_lookup_G) + (dst_positive_scale_flat_lookup_G))) + (((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) * S ((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) + ((dst_negative_scale_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)))) + ((((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) * S ((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) + ((dst_negative_scale_flat_lookup_G) + (dst_negative_scale_flat_lookup_G))) + (((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) * S ((dst_negative_code_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)) + ((dst_negative_scale_flat_lookup_G) + (dst_negative_scale_flat_lookup_G)))))) /\ (((((exists ff_h_pvs_flat_lookup_Gpositive. ff_h_pvs_flat_lookup_Gpositive + S (dst_positive_flat_lookup_G) = S ((S (j)) * dst_positive_scale_flat_lookup_G)) /\ exists ff_q_pvs_flat_lookup_Gpositive. dst_positive_code_flat_lookup_G = ff_q_pvs_flat_lookup_Gpositive * S ((S (j)) * dst_positive_scale_flat_lookup_G) + (dst_positive_flat_lookup_G))) /\ (((((exists ff_h_pvs_flat_lookup_Gnegative. ff_h_pvs_flat_lookup_Gnegative + S (dst_negative_flat_lookup_G) = S ((S (j)) * dst_negative_scale_flat_lookup_G)) /\ exists ff_q_pvs_flat_lookup_Gnegative. dst_negative_code_flat_lookup_G = ff_q_pvs_flat_lookup_Gnegative * S ((S (j)) * dst_negative_scale_flat_lookup_G) + (dst_negative_flat_lookup_G))) /\ (exists ge_balance_positive_flat_lookup_Gvalue ge_balance_negative_flat_lookup_Gvalue. (((((b) = 2 * (ge_balance_positive_flat_lookup_Gvalue) /\ (ge_balance_negative_flat_lookup_Gvalue) = 0) \/ exists ge_signed_half_flat_lookup_Gvaluedecode. (((b) = 2 * ge_signed_half_flat_lookup_Gvaluedecode + 1 /\ (ge_balance_positive_flat_lookup_Gvalue) = 0) /\ (ge_balance_negative_flat_lookup_Gvalue) = S ge_signed_half_flat_lookup_Gvaluedecode))) /\ ((dst_positive_flat_lookup_G) + ge_balance_negative_flat_lookup_Gvalue = (dst_negative_flat_lookup_G) + ge_balance_positive_flat_lookup_Gvalue))))))))) -> (exists scp_flat_row_flat_lookup_entry scp_flat_column_flat_lookup_entry scp_flat_first_flat_lookup_entry scp_flat_second_flat_lookup_entry. (((((n)*(i)+(j)))=((n)*(scp_flat_row_flat_lookup_entry)+(scp_flat_column_flat_lookup_entry))) /\ (((exists pvs_gap_flat_lookup_entryremainder. pvs_gap_flat_lookup_entryremainder + S (scp_flat_column_flat_lookup_entry) = (n)) /\ (((exists dst_positive_code_flat_lookup_entryF dst_positive_scale_flat_lookup_entryF dst_negative_code_flat_lookup_entryF dst_negative_scale_flat_lookup_entryF dst_positive_flat_lookup_entryF dst_negative_flat_lookup_entryF. (((F) = (((((dst_positive_code_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF)) * S ((dst_positive_code_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF)) + ((dst_positive_scale_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF))) + (((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) * S ((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) + ((dst_negative_scale_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)))) * S ((((dst_positive_code_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF)) * S ((dst_positive_code_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF)) + ((dst_positive_scale_flat_lookup_entryF) + (dst_positive_scale_flat_lookup_entryF))) + (((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) * S ((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) + ((dst_negative_scale_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)))) + ((((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) * S ((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) + ((dst_negative_scale_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF))) + (((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) * S ((dst_negative_code_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)) + ((dst_negative_scale_flat_lookup_entryF) + (dst_negative_scale_flat_lookup_entryF)))))) /\ (((((exists ff_h_pvs_flat_lookup_entryFpositive. ff_h_pvs_flat_lookup_entryFpositive + S (dst_positive_flat_lookup_entryF) = S ((S (scp_flat_row_flat_lookup_entry)) * dst_positive_scale_flat_lookup_entryF)) /\ exists ff_q_pvs_flat_lookup_entryFpositive. dst_positive_code_flat_lookup_entryF = ff_q_pvs_flat_lookup_entryFpositive * S ((S (scp_flat_row_flat_lookup_entry)) * dst_positive_scale_flat_lookup_entryF) + (dst_positive_flat_lookup_entryF))) /\ (((((exists ff_h_pvs_flat_lookup_entryFnegative. ff_h_pvs_flat_lookup_entryFnegative + S (dst_negative_flat_lookup_entryF) = S ((S (scp_flat_row_flat_lookup_entry)) * dst_negative_scale_flat_lookup_entryF)) /\ exists ff_q_pvs_flat_lookup_entryFnegative. dst_negative_code_flat_lookup_entryF = ff_q_pvs_flat_lookup_entryFnegative * S ((S (scp_flat_row_flat_lookup_entry)) * dst_negative_scale_flat_lookup_entryF) + (dst_negative_flat_lookup_entryF))) /\ (exists ge_balance_positive_flat_lookup_entryFvalue ge_balance_negative_flat_lookup_entryFvalue. (((((scp_flat_first_flat_lookup_entry) = 2 * (ge_balance_positive_flat_lookup_entryFvalue) /\ (ge_balance_negative_flat_lookup_entryFvalue) = 0) \/ exists ge_signed_half_flat_lookup_entryFvaluedecode. (((scp_flat_first_flat_lookup_entry) = 2 * ge_signed_half_flat_lookup_entryFvaluedecode + 1 /\ (ge_balance_positive_flat_lookup_entryFvalue) = 0) /\ (ge_balance_negative_flat_lookup_entryFvalue) = S ge_signed_half_flat_lookup_entryFvaluedecode))) /\ ((dst_positive_flat_lookup_entryF) + ge_balance_negative_flat_lookup_entryFvalue = (dst_negative_flat_lookup_entryF) + ge_balance_positive_flat_lookup_entryFvalue))))))))) /\ (((exists dst_positive_code_flat_lookup_entryG dst_positive_scale_flat_lookup_entryG dst_negative_code_flat_lookup_entryG dst_negative_scale_flat_lookup_entryG dst_positive_flat_lookup_entryG dst_negative_flat_lookup_entryG. (((G) = (((((dst_positive_code_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG)) * S ((dst_positive_code_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG)) + ((dst_positive_scale_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG))) + (((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) * S ((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) + ((dst_negative_scale_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)))) * S ((((dst_positive_code_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG)) * S ((dst_positive_code_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG)) + ((dst_positive_scale_flat_lookup_entryG) + (dst_positive_scale_flat_lookup_entryG))) + (((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) * S ((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) + ((dst_negative_scale_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)))) + ((((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) * S ((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) + ((dst_negative_scale_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG))) + (((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) * S ((dst_negative_code_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)) + ((dst_negative_scale_flat_lookup_entryG) + (dst_negative_scale_flat_lookup_entryG)))))) /\ (((((exists ff_h_pvs_flat_lookup_entryGpositive. ff_h_pvs_flat_lookup_entryGpositive + S (dst_positive_flat_lookup_entryG) = S ((S (scp_flat_column_flat_lookup_entry)) * dst_positive_scale_flat_lookup_entryG)) /\ exists ff_q_pvs_flat_lookup_entryGpositive. dst_positive_code_flat_lookup_entryG = ff_q_pvs_flat_lookup_entryGpositive * S ((S (scp_flat_column_flat_lookup_entry)) * dst_positive_scale_flat_lookup_entryG) + (dst_positive_flat_lookup_entryG))) /\ (((((exists ff_h_pvs_flat_lookup_entryGnegative. ff_h_pvs_flat_lookup_entryGnegative + S (dst_negative_flat_lookup_entryG) = S ((S (scp_flat_column_flat_lookup_entry)) * dst_negative_scale_flat_lookup_entryG)) /\ exists ff_q_pvs_flat_lookup_entryGnegative. dst_negative_code_flat_lookup_entryG = ff_q_pvs_flat_lookup_entryGnegative * S ((S (scp_flat_column_flat_lookup_entry)) * dst_negative_scale_flat_lookup_entryG) + (dst_negative_flat_lookup_entryG))) /\ (exists ge_balance_positive_flat_lookup_entryGvalue ge_balance_negative_flat_lookup_entryGvalue. (((((scp_flat_second_flat_lookup_entry) = 2 * (ge_balance_positive_flat_lookup_entryGvalue) /\ (ge_balance_negative_flat_lookup_entryGvalue) = 0) \/ exists ge_signed_half_flat_lookup_entryGvaluedecode. (((scp_flat_second_flat_lookup_entry) = 2 * ge_signed_half_flat_lookup_entryGvaluedecode + 1 /\ (ge_balance_positive_flat_lookup_entryGvalue) = 0) /\ (ge_balance_negative_flat_lookup_entryGvalue) = S ge_signed_half_flat_lookup_entryGvaluedecode))) /\ ((dst_positive_flat_lookup_entryG) + ge_balance_negative_flat_lookup_entryGvalue = (dst_negative_flat_lookup_entryG) + ge_balance_positive_flat_lookup_entryGvalue))))))))) /\ (exists sto_ap_flat_lookup_entryvalue sto_an_flat_lookup_entryvalue sto_bp_flat_lookup_entryvalue sto_bn_flat_lookup_entryvalue sto_cp_flat_lookup_entryvalue sto_cn_flat_lookup_entryvalue. (((((scp_flat_first_flat_lookup_entry) = 2 * (sto_ap_flat_lookup_entryvalue) /\ (sto_an_flat_lookup_entryvalue) = 0) \/ exists ge_signed_half_flat_lookup_entryvalueleft. (((scp_flat_first_flat_lookup_entry) = 2 * ge_signed_half_flat_lookup_entryvalueleft + 1 /\ (sto_ap_flat_lookup_entryvalue) = 0) /\ (sto_an_flat_lookup_entryvalue) = S ge_signed_half_flat_lookup_entryvalueleft))) /\ ((((((scp_flat_second_flat_lookup_entry) = 2 * (sto_bp_flat_lookup_entryvalue) /\ (sto_bn_flat_lookup_entryvalue) = 0) \/ exists ge_signed_half_flat_lookup_entryvalueright. (((scp_flat_second_flat_lookup_entry) = 2 * ge_signed_half_flat_lookup_entryvalueright + 1 /\ (sto_bp_flat_lookup_entryvalue) = 0) /\ (sto_bn_flat_lookup_entryvalue) = S ge_signed_half_flat_lookup_entryvalueright))) /\ ((((((z) = 2 * (sto_cp_flat_lookup_entryvalue) /\ (sto_cn_flat_lookup_entryvalue) = 0) \/ exists ge_signed_half_flat_lookup_entryvalueoutput. (((z) = 2 * ge_signed_half_flat_lookup_entryvalueoutput + 1 /\ (sto_cp_flat_lookup_entryvalue) = 0) /\ (sto_cn_flat_lookup_entryvalue) = S ge_signed_half_flat_lookup_entryvalueoutput))) /\ ((sto_ap_flat_lookup_entryvalue * sto_bp_flat_lookup_entryvalue + sto_an_flat_lookup_entryvalue * sto_bn_flat_lookup_entryvalue) + sto_cn_flat_lookup_entryvalue = (sto_ap_flat_lookup_entryvalue * sto_bn_flat_lookup_entryvalue + sto_an_flat_lookup_entryvalue * sto_bp_flat_lookup_entryvalue) + sto_cp_flat_lookup_entryvalue))))))))))))))) -> (exists sto_ap_flat_lookup_result sto_an_flat_lookup_result sto_bp_flat_lookup_result sto_bn_flat_lookup_result sto_cp_flat_lookup_result sto_cn_flat_lookup_result. (((((a) = 2 * (sto_ap_flat_lookup_result) /\ (sto_an_flat_lookup_result) = 0) \/ exists ge_signed_half_flat_lookup_resultleft. (((a) = 2 * ge_signed_half_flat_lookup_resultleft + 1 /\ (sto_ap_flat_lookup_result) = 0) /\ (sto_an_flat_lookup_result) = S ge_signed_half_flat_lookup_resultleft))) /\ ((((((b) = 2 * (sto_bp_flat_lookup_result) /\ (sto_bn_flat_lookup_result) = 0) \/ exists ge_signed_half_flat_lookup_resultright. (((b) = 2 * ge_signed_half_flat_lookup_resultright + 1 /\ (sto_bp_flat_lookup_result) = 0) /\ (sto_bn_flat_lookup_result) = S ge_signed_half_flat_lookup_resultright))) /\ ((((((z) = 2 * (sto_cp_flat_lookup_result) /\ (sto_cn_flat_lookup_result) = 0) \/ exists ge_signed_half_flat_lookup_resultoutput. (((z) = 2 * ge_signed_half_flat_lookup_resultoutput + 1 /\ (sto_cp_flat_lookup_result) = 0) /\ (sto_cn_flat_lookup_result) = S ge_signed_half_flat_lookup_resultoutput))) /\ ((sto_ap_flat_lookup_result * sto_bp_flat_lookup_result + sto_an_flat_lookup_result * sto_bn_flat_lookup_result) + sto_cn_flat_lookup_result = (sto_ap_flat_lookup_result * sto_bn_flat_lookup_result + sto_an_flat_lookup_result * sto_bp_flat_lookup_result) + sto_cp_flat_lookup_result)))))))Constructive proof overview
Generated structural guide
Unique bounded remainder coordinates and signed lookup functionality recover the actual prescribed cell product.
The unchanged tactic script uses 2 declared prerequisites and contains 62 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
division_remainder_unique Stable theorem; checked-use authorized divisor_signed_table_at_functional Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–12
03Separate the logical casesL13–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L13
cases hv - L14
cases hv_witness - L15
cases hv_witness_witness - L16
cases hv_witness_witness_witness - L17
cases hv_witness_witness_witness_witness - L18
cases hv_witness_witness_witness_witness_right - L19
cases hv_witness_witness_witness_witness_right_right - L20
cases hv_witness_witness_witness_witness_right_right_right
04Establish hcoordL21–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder unique.
- L21
have hcoord : x=i /\ x1=j - L22
specialize division_remainder_unique (n) - L23
specialize division_remainder_unique (((n)*(i)+(j))) - L24
specialize division_remainder_unique (x) - L25
specialize division_remainder_unique (x1) - L26
specialize division_remainder_unique (i) - L27
specialize division_remainder_unique (j) - L28
apply division_remainder_unique - L29
exact hv_witness_witness_witness_witness_left - L30
exact hv_witness_witness_witness_witness_right_left
05Calculate and transport equalitiesL31–31
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L31
refl
06Use earlier factsL32–32
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L32
exact hj
07Separate the logical casesL33–33
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L33
cases hcoord
08Calculate and transport equalitiesL34–41
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L34
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - L35
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - L36
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - L37
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - L38
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - L39
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - L40
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - L41
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left
09Establish hfirstL42–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table at functional.
- L42
have hfirst : x2=a - L43
specialize divisor_signed_table_at_functional (F) - L44
specialize divisor_signed_table_at_functional (i) - L45
specialize divisor_signed_table_at_functional (x2) - L46
specialize divisor_signed_table_at_functional (a) - L47
apply divisor_signed_table_at_functional - L48
exact hv_witness_witness_witness_witness_right_right_left - L49
exact ha
10Establish hsecondL50–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor signed table at functional.
- L50
have hsecond : x3=b - L51
specialize divisor_signed_table_at_functional (G) - L52
specialize divisor_signed_table_at_functional (j) - L53
specialize divisor_signed_table_at_functional (x3) - L54
specialize divisor_signed_table_at_functional (b) - L55
apply divisor_signed_table_at_functional - L56
exact hv_witness_witness_witness_witness_right_right_right_left - L57
exact hb - L58
rewrite hfirst at hv_witness_witness_witness_witness_right_right_right_right - L59
rewrite hfirst at hv_witness_witness_witness_witness_right_right_right_right
11Calculate and transport equalitiesL60–61
12Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact hv_witness_witness_witness_witness_right_right_right_right
Original exact command ledger · 62 lines
- 0001
intro F - 0002
intro G - 0003
intro n - 0004
intro i - 0005
intro j - 0006
intro a - 0007
intro b - 0008
intro z - 0009
intro hj - 0010
intro ha - 0011
intro hb - 0012
intro hv - 0013
cases hv - 0014
cases hv_witness - 0015
cases hv_witness_witness - 0016
cases hv_witness_witness_witness - 0017
cases hv_witness_witness_witness_witness - 0018
cases hv_witness_witness_witness_witness_right - 0019
cases hv_witness_witness_witness_witness_right_right - 0020
cases hv_witness_witness_witness_witness_right_right_right - 0021
have hcoord : x=i /\ x1=j - 0022
specialize division_remainder_unique (n) - 0023
specialize division_remainder_unique (((n)*(i)+(j))) - 0024
specialize division_remainder_unique (x) - 0025
specialize division_remainder_unique (x1) - 0026
specialize division_remainder_unique (i) - 0027
specialize division_remainder_unique (j) - 0028
apply division_remainder_unique - 0029
exact hv_witness_witness_witness_witness_left - 0030
exact hv_witness_witness_witness_witness_right_left - 0031
refl - 0032
exact hj - 0033
cases hcoord - 0034
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - 0035
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - 0036
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - 0037
rewrite hcoord_left at hv_witness_witness_witness_witness_right_right_left - 0038
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - 0039
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - 0040
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - 0041
rewrite hcoord_right at hv_witness_witness_witness_witness_right_right_right_left - 0042
have hfirst : x2=a - 0043
specialize divisor_signed_table_at_functional (F) - 0044
specialize divisor_signed_table_at_functional (i) - 0045
specialize divisor_signed_table_at_functional (x2) - 0046
specialize divisor_signed_table_at_functional (a) - 0047
apply divisor_signed_table_at_functional - 0048
exact hv_witness_witness_witness_witness_right_right_left - 0049
exact ha - 0050
have hsecond : x3=b - 0051
specialize divisor_signed_table_at_functional (G) - 0052
specialize divisor_signed_table_at_functional (j) - 0053
specialize divisor_signed_table_at_functional (x3) - 0054
specialize divisor_signed_table_at_functional (b) - 0055
apply divisor_signed_table_at_functional - 0056
exact hv_witness_witness_witness_witness_right_right_right_left - 0057
exact hb - 0058
rewrite hfirst at hv_witness_witness_witness_witness_right_right_right_right - 0059
rewrite hfirst at hv_witness_witness_witness_witness_right_right_right_right - 0060
rewrite hsecond at hv_witness_witness_witness_witness_right_right_right_right - 0061
rewrite hsecond at hv_witness_witness_witness_witness_right_right_right_right - 0062
exact hv_witness_witness_witness_witness_right_right_right_right