Zulip Chat Archive
Stream: lean4
Topic: Getting usable constructors from an inductive type.
ohhaimark (Jul 24 2024 at 09:25):
Say I have the following inductive datatype
inductive Vec : Type → Nat → Type where
| nil : Vec a 0
| cons : a → Vec a n → Vec a (n+1)
how can I, from say CommandElabM, get a list of constructors whose return type unifies with Vec a n
for some a n.
For example Vec Nat 0
can't unify with Vec a (n+1)
, so using cons
is impossible. I believe lean should already do this internally for exhaustiveness checking.
Ultimately I want to calculate the number of bits to encode an inductive datatype, but a naive approach doesn't account for dependent inductive types, i.e Vec Bool 3
requires more bits then Bool × Bool × Bool
when done naively.
Last updated: May 02 2025 at 03:31 UTC