@ Ответ Тео Винтерхальтера - путь к go здесь. Просто добавьте точность к его ответу [Я изначально разместил его как комментарий, но это затрудняло читабельность кода…]:
тип, который вы ищете здесь - {T : Set & T -> bool}
, это Σ-type и использует следующую индуктивность:
Print sigT.
Inductive sigT (A : Type) (P : A -> Type) : Type :=
existT : forall x : A, P x -> {x : A & P x}
. Чтобы упростить определение classif
, вы также можете определить ярлык:
From mathcomp Require Import all_ssreflect.
Set Implicit Arguments.
Definition sigma (T' : Set) f := (existT (fun A : Set => A -> bool) T' f).
Definition classif :
seq {T : Set & T -> bool} :=
[:: sigma (fun b : bool => b); sigma (fun n : nat => false)].