coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Daniel Schepler <dschepler AT gmail.com>
- To: coq-club AT inria.fr
- Subject: [Coq-Club] Proving equality of coinductives
- Date: Tue, 26 Apr 2011 09:56:42 -0700
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:mime-version:content-type :content-transfer-encoding:message-id; b=sx6YIIvgcn16JLAcZJautt3tta08TUWSdkTsRbTosKPHLTCqyQe6oL0Tw+PZQnxDSZ UIaDhIs/7WdJh4ZMXkmAZP8C1xFLCgNlQMXHRQyIMZWp6PyKwXEwxbjsn3jgvPxsU+eZ xR8iLB5aRbYMdz3MesC7l2czmM7MhBQqyODGQ=
I was looking at proving monad properties of:
CoInductive Coroutine (X:Type) : Type :=
| coroutine_return : X -> Coroutine X
| yield_with_continuation : Coroutine X -> Coroutine X.
Implicit Arguments coroutine_return [[X]].
Implicit Arguments yield_with_continuation [[X]].
I was eventually able to prove the necessary identities, assuming the axiom:
CoInductive coroutine_eq {X} : Coroutine X -> Coroutine X -> Prop :=
| coroutine_return_eq: forall x0:X,
coroutine_eq (coroutine_return x0) (coroutine_return x0)
| yield_eq: forall x y:Coroutine X, coroutine_eq x y ->
coroutine_eq (yield_with_continuation x) (yield_with_continuation y).
Axiom coroutine_eq_eq: forall {X} (x y:Coroutine X),
coroutine_eq x y -> x = y.
My question is: is there any way to prove that axiom? Maybe using a single
axiom which would also imply corresponding statements for Stream,
PossiblyTerminatingStream, InfinitelyBranchingBinaryTree, etc.?
--
Daniel Schepler
- [Coq-Club] Proving equality of coinductives, Daniel Schepler
- Re: [Coq-Club] Proving equality of coinductives, Thorsten Altenkirch
Archive powered by MhonArc 2.6.16.