[Agda] Re: [Coq-Club] Adding (inductive) transitivity to weak
bisimilarity not sound? (was: Need help with coinductive proof)
Edsko de Vries
edskodevries at gmail.com
Fri Aug 28 19:35:34 CEST 2009
>
> So, what's left to be able to complete the proof is adding transitivity
> rules to the extended relation, and then presumably a translation from the
> extended extended relation to the extended relation, and then finally to the
> original bisimulation relation. Hopefully, that's not too difficult..
I thought I was almost there, when I realized that adding (inductive)
transitivity to my weak bisimularity relation is not sound, as any number is
now bisimilar to bottom:
------ reflexivity -------- coinduction
n ~ n n ~ _|_
---------- weak-tau-right ---------------- strong_tau
n ~ tau n tau n ~ tau _|_
------------------------------------------------- transitivity
n ~ _|_
note that this mixes coinduction and induction; the coinductive argument (n
~ _|_) in the leaf is guarded by an application of strong_tau; and the rest
of the proof is finite. At least, I think that's right (would Agda accept
it?); concretely, using my Coq encoding of mixed induction/coinduction with
nats to limit the application of the 'inductive' rules, I had
CoInductive bisim'P : nat -> coN' -> coN' -> Prop :=
| strong_coZ'P : forall d,
bisim'P d coZ' coZ'
| strong_coS'P : forall d' d m n,
bisim'P d' m n ->
bisim'P d (coS' m) (coS' n)
| strong_tau'P : forall d' d m n,
bisim'P d' m n ->
bisim'P d (tau' m) (tau' n)
| strong_add'P : forall dm dn d m m' n n',
bisim'P dm m m' ->
bisim'P dn n n' ->
bisim'P d (add' m n) (add' m' n')
| weak_tau_left'P : forall d m n,
bisim'P d m n ->
bisim'P (S d) (tau' m) n
| weak_tau_right'P : forall d m n,
bisim'P d m n ->
bisim'P (S d) m (tau' n)
| bisim'P_trans : forall dm dn d m n p, (dm < d) -> (dn < d) ->
bisim'P dm m n ->
bisim'P dn n p ->
bisim'P d m p.
which certainly has the above problem. I find this to be an extremely subtle
issue, and the solution is not clear to me. In particular, when I restrict
the rule for strong_tau so that it uses the same index above and below the
line
| strong_tau'P : forall d m n,
bisim'P d m n ->
bisim'P d (tau' m) (tau' n)
I can no longer prove the flattening lemma for bisimulation so I again have
nothing :-(
We must somehow limit the rules that are applied as arguments to
transitivity to be strong steps, not weak steps (it reminds me a bit of the
problem of weak bisimulation up to weak bisimularity) -- I *think* that
might be enough, but at this point I'm not really sure about anything
anymore ;)
Edsko
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.chalmers.se/mailman/private/agda/attachments/20090828/eeb4dee6/attachment.html
More information about the Agda
mailing list