fact: Definition sigT_enum {X: Type} {P : X -> Type} (f : nat -> option X) (fP : forall x, nat -> option (P x)) (n : nat) : option {x : X & P x} := let (nx, nP) := Cantor.of_nat n in match f nx with | Some x => match fP x nP with | Some y => Some (existT P x y) | _ => None end | None => None end.
imports: Undecidability.Synthetic(DecidabilityFacts SemiDecidabilityFacts) Undecidability.Shared.Libs.PSL.FiniteTypes.FinTypesDef Vector List Lia