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