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>
13 lines
439 B
Text
13 lines
439 B
Text
inductive Node (Data : Type) : Type where
|
|
| empty : Node Data
|
|
| node (children : Array (Node Data)) : Node Data
|
|
| leaf (data : Data) : Node Data
|
|
|
|
def Node.FixedBranching (n : Nat) : Node Data → Prop
|
|
| empty => True
|
|
| node children => children.size = n ∧ ∀ (i : Nat) h, (children[i]'h).FixedBranching n
|
|
| leaf _ => True
|
|
|
|
structure MNode (Data : Type) (m : Nat) where
|
|
node : Node Data
|
|
fix_branching : node.FixedBranching m
|