满足某个谓词的一个类型中的所有元素。
Subtype p 通常写作 { x : α // p x } 或 { x // p x },它包含所有 x : α 且 p x 为真的元素。其构造子由值及证明该值满足谓词的证据组成。在运行时代码中,{ x : α // p x } 与 α 具有相同的表示。
存在从 { x : α // p x } 到 α 的强制转换,因此子类型的元素可用于需要底层类型之处。
示例:
-
{ n : Nat // n % 2 = 0 }是偶数的类型。 -
给定
xs : List α,List { x : α // x ∈ xs }是其所有元素都包含在xs中的列表类型。
标识符中记法的约定:
-
标识符中
{ x // p x }的推荐拼写是subtype。
构造子
Subtype.mk.{u}