27 lines
719 B
Text
27 lines
719 B
Text
theorem Nat.lt_of_lt_le {x y z : Nat} : x < y → y ≤ z → x < z := by
|
||
intro h h'
|
||
induction h'
|
||
assumption
|
||
apply Nat.le_step
|
||
assumption
|
||
|
||
structure ArrayBuffer (α) where
|
||
cap : Nat
|
||
backing : Fin cap → Option α
|
||
size : Nat
|
||
h_size : size ≤ cap
|
||
h_full : ∀ i, (h:i < size) → (backing ⟨i, Nat.lt_of_lt_le h h_size⟩).isSome
|
||
|
||
namespace ArrayBuffer
|
||
|
||
def grow : ArrayBuffer α → ArrayBuffer α :=
|
||
λ ⟨cap, backing, size, h_size, h_full⟩ =>
|
||
⟨cap + cap,
|
||
λ i => if h:i < cap then backing ⟨i,h⟩ else none,
|
||
size,
|
||
Nat.le_trans h_size (Nat.le_add_left _ _),
|
||
by intro i h
|
||
simp
|
||
trace_state
|
||
have : i < cap := Nat.lt_of_lt_le h h_size
|
||
simp [*]⟩
|