File tree Expand file tree Collapse file tree
EvmAsm/Evm64/EvmWordArith Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -88,22 +88,22 @@ theorem hq_over_from_second_carry_one (q : Word) {v0 v1 v2 v3 u0 u1 u2 u3 : Word
8888 -- val256(u) + (2 - q) * val256(v) ≥ 1 (signed arithmetic)
8989 -- val256(u) ≥ (q - 2) * val256(v) (Nat subtraction handles q < 2 trivially)
9090 -- Hence u/v ≥ q - 2, i.e., q ≤ u/v + 2.
91- have hq_v_le_plus : q.toNat * val256 v0 v1 v2 v3 ≤
91+ have : q.toNat * val256 v0 v1 v2 v3 ≤
9292 val256 u0 u1 u2 u3 + 2 * val256 v0 v1 v2 v3 := by nlinarith
9393 -- (q - 2) * v ≤ u
94- have hqm2_le : (q.toNat - 2 ) * val256 v0 v1 v2 v3 ≤ val256 u0 u1 u2 u3 := by
94+ have : (q.toNat - 2 ) * val256 v0 v1 v2 v3 ≤ val256 u0 u1 u2 u3 := by
9595 rcases Nat.lt_or_ge q.toNat 2 with hq_lt | hq_ge
9696 · -- q < 2: q - 2 = 0, trivial
9797 have : q.toNat - 2 = 0 := by omega
9898 rw [this]; simp
9999 · -- q ≥ 2
100- have hq_split : q.toNat * val256 v0 v1 v2 v3 =
100+ have : q.toNat * val256 v0 v1 v2 v3 =
101101 (q.toNat - 2 ) * val256 v0 v1 v2 v3 + 2 * val256 v0 v1 v2 v3 := by
102102 have : q.toNat = (q.toNat - 2 ) + 2 := by omega
103103 nlinarith
104104 linarith
105105 -- u/v ≥ q - 2
106- have hdiv_ge : val256 u0 u1 u2 u3 / val256 v0 v1 v2 v3 ≥ q.toNat - 2 := by
106+ have : val256 u0 u1 u2 u3 / val256 v0 v1 v2 v3 ≥ q.toNat - 2 := by
107107 exact Nat.le_div_iff_mul_le hv_pos |>.mpr (by linarith [Nat.mul_comm (q.toNat - 2 ) (val256 v0 v1 v2 v3)])
108108 omega
109109
Original file line number Diff line number Diff line change @@ -105,7 +105,7 @@ theorem mulsub_addback_correct {uVal vVal qNat rAbVal : Nat}
105105 (hge : uVal / vVal + 1 ≤ qNat) :
106106 qNat - 1 = uVal / vVal ∧ rAbVal < vVal := by
107107 have := Nat.zero_le (uVal / vVal)
108- have hq1 : qNat ≥ 1 := by omega
108+ have : qNat ≥ 1 := by omega
109109 have heq : uVal = (qNat - 1 ) * vVal + rAbVal := by omega
110110 have hge' : uVal / vVal ≤ qNat - 1 := by omega
111111 exact remainder_lt_of_ge_floor hv heq hge'
Original file line number Diff line number Diff line change @@ -97,7 +97,7 @@ theorem mulsub_correction_eq (u_nat v_nat r_nat qNat : Nat)
9797 (hchain : u_nat + 2 ^256 = r_nat + qNat * v_nat)
9898 (hq : 0 < qNat) :
9999 u_nat + 2 ^256 = (r_nat + v_nat) + (qNat - 1 ) * v_nat := by
100- have hq1 : qNat = 1 + (qNat - 1 ) := by omega
100+ have : qNat = 1 + (qNat - 1 ) := by omega
101101 nlinarith [show qNat * v_nat = v_nat + (qNat - 1 ) * v_nat by nlinarith]
102102
103103end EvmWord
Original file line number Diff line number Diff line change @@ -55,7 +55,7 @@ theorem val256_ms_un_eq_val256_mod_max_skip
5555 -- compare with `Nat.div_add_mod` to conclude.
5656 rw [hq] at hmulsub
5757 have := Nat.div_add_mod (val256 a0 a1 a2 a3) (val256 b0 b1 b2 b3)
58- have hmulcomm : val256 b0 b1 b2 b3 * (val256 a0 a1 a2 a3 / val256 b0 b1 b2 b3) =
58+ have : val256 b0 b1 b2 b3 * (val256 a0 a1 a2 a3 / val256 b0 b1 b2 b3) =
5959 (val256 a0 a1 a2 a3 / val256 b0 b1 b2 b3) * val256 b0 b1 b2 b3 := Nat.mul_comm _ _
6060 omega
6161
You can’t perform that action at this time.
0 commit comments