fact: Fixpoint Vector_enum {X: Type} {k: nat} (f : nat -> option X) (n : nat) : option (Vector.t X k) := match k return option (Vector.t X k) with | 0 => Some (@Vector.nil X) | S k' => let (nx, m) := Cantor.of_nat n in match f nx with | Some x => match (@Vector_enum X k' f m) with | Some v => Some (@Vector.cons X x k' v) | _ => None end | None => None end end.
imports: Undecidability.Synthetic(DecidabilityFacts SemiDecidabilityFacts) Undecidability.Shared.Libs.PSL.FiniteTypes.FinTypesDef Vector List Lia