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>
24 lines
488 B
Text
24 lines
488 B
Text
inductive Expr where
|
|
| app (f : String) (args : Array Expr)
|
|
|
|
def Expr.size (e : Expr) : Nat := Id.run do
|
|
match e with
|
|
| app f args =>
|
|
let mut sz := 1
|
|
for h : i in [: args.size] do
|
|
sz := sz + size args[i]
|
|
return sz
|
|
|
|
namespace Ex2
|
|
inductive Expr where
|
|
| app (f : String) (args : List Expr)
|
|
|
|
def Expr.size (e : Expr) : Nat := Id.run do
|
|
match e with
|
|
| app f args =>
|
|
let mut sz := 1
|
|
for h : arg in args do
|
|
sz := sz + size arg
|
|
return sz
|
|
|
|
end Ex2
|