This PR changes the signature of `Array.get` to take a Nat and a proof, rather than a `Fin`, for consistency with the rest of the (planned) Array API. Note that because of bootstrapping issues we can't provide `get_elem_tactic` as an autoparameter for the proof. As users will mostly use the `xs[i]` notation provided by `GetElem`, this hopefully isn't a problem. We may restore `Fin` based versions, either here or downstream, as needed, but they won't be the "main" functions. --------- Co-authored-by: David Thrane Christiansen <david@davidchristiansen.dk>
9 lines
184 B
Text
9 lines
184 B
Text
def sum (as : Array Nat) : Nat :=
|
|
go 0 0
|
|
where
|
|
go (i : Nat) (s : Nat) : Nat :=
|
|
if h : i < as.size then
|
|
go (i+1) (s + as[i])
|
|
else
|
|
s
|
|
termination_by as.size - i
|