私はすべてのグループに逆関数があることを証明しようとしています。 次のように私はグループを定義しています Record Group:Type := {
G:Set;
mult:G->G->G;
e:G;
assoc:forall x y z:G, mult x (mult y z)=mult (mult x y) z;
neut:forall x:G, mult e x=x /\ mul
explicit universesを使用して、固定ユニバース階層をCoqに作成する可能性を検討しています。定数を使用しようとする(2、3、4)の構築では、失敗しました:終了時に、全ての組み合わせがまだです。TypeCheck(すなわち、すべての宣言されたユニバースは、として階層的に任意扱われる): Universe k l m x y z.
Let x := 2.
Definition k
における逆方向状態モナド、バインドの次の定義が受け入れられます。 type RState s a = s -> (a, s)
bind :: RState s a -> (a -> RState s b) -> RState s b
bind sf f = \s ->
let (a, s'') = sf s'
(b, s') = f a s
in (b, s'
Coqのtypeclass関数の計算(またはその不足)の動作を理解できません。 Class class1 : Set := { class_func1 : nat -> nat }.
Class class2 : Set := { class_func2 : nat -> nat
; class_prop2 : forall x : nat, x = x
私はcoqにはかなり新しく、これまで手で証明できるものだけを証明することができました。ですからセレクションモナドを見て、それをインテルで実装しようと思ったとき、それは良いエクササイズになると思ったが、私は立ち往生した。誰かが、選択モナドが応用的でモナドであるという証拠の例をcoqで提供することができますか?ここにfunkのhaskell実装があります。 newtype Sel r a = Sel