如果我有一個So
的類型,比如So (x < y)
,通過創造的東西像在伊德里斯,我如何從一個類型中提取證據?
IsLt : Ord a => (x: a) -> (y: a) -> Type
IsLt x y = So (x < y)
我怎樣才能提取(x < y)
證明了這件事?我無法在標準庫中找到此功能。
So
在標準庫中定義爲:
data So : Bool -> Type where
Oh : So True
而且我不知道如何從提取的證據,用於在證明這樣的:
ltNeNat : {x: Nat} -> {y: Nat} -> So (x < y) -> Not (x = y)
的確如此。我被證明'S x
x
Shersh
你需要「反映」布爾變成命題。 (Coq生態系統)的ssreflect廣泛使用它。這樣你就可以使用邏輯和計算 - 這在處理可決定的命題時非常有用。 –