私はこのうち(x < y)
の証明を抽出するにはどうすればよいIdrisでは、どのようにしてSo型から証明を抽出しますか?
IsLt : Ord a => (x: a) -> (y: a) -> Type
IsLt x y = So (x < y)
のようなものが作成したSo (x < y)
ようSo
タイプを、持っている場合は?私はこれのための標準ライブラリで関数を見つけることができません。
So
は、次のように標準ライブラリで定義されています
data So : Bool -> Type where
Oh : So True
そして、私のような何かを証明で使用するために、そこから証拠を抽出するかどうかはわかりません。
ltNeNat : {x: Nat} -> {y: Nat} -> So (x < y) -> Not (x = y)
これは本当です。ブーリアンが実際に物事を証明するのに役立たないので、私は 'S x
x
Shersh
ブール値を命題に「反映」する必要があります。 ssreflect(Coqエコシステムの)は広範囲にそれを使用します。このようにして、論理と計算を使用することができます。これは、決定可能な命題を扱うときに非常に便利です。 –