haskell,data-structures,functional-programming,induction,coinduction

In Morte, a natural number is encoded as a value of type: forall (Nat : *) -> (Nat -> Nat) -> Nat -> Nat So, for example, 0, 1, and 2 in Morte would be represented as: ( \(Nat : *) -> \(zero : Nat) -> \(one : Nat) ->...

I think you are right. To the best of my knowledge, you can't even correctly state what it means for two streams to be equal, since it would imply that you can inspect them in finite time, but they are infinite terms. What you could do, is state that any...

ocaml,type-inference,coq,induction,coinduction

You need to declare A as implicit to ask Coq to infer it for you. There are a few ways of doing it: Add the following declaration to your file: Set Implicit Arguments.. This will cause Coq to turn on automatic inference for arguments such as A for Cons, allowing...

verification,idris,coinduction

I was able to get a little help on IRC from Daniel Peebles (copumpkin) who explained that being able to use propositional equality over codata is just generally not something usually permitted. He pointed out that it's possible to define a custom equivalence relation, like how Agda defines ones for...