Skip to content

Commit

Permalink
add Johannes' itree strong bisimulation
Browse files Browse the repository at this point in the history
  • Loading branch information
Plisp committed Oct 7, 2023
1 parent 8be7140 commit 9c6512c
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/coalgebras/itreeTauScript.sml
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,23 @@ Proof
\\ Cases_on ‘h’ \\ fs []
QED

Theorem itree_strong_bisimulation:
!t1 t2.
t1 = t2 <=>
?R. R t1 t2 /\
(!x t. R (Ret x) t ==> t = Ret x) /\
(!u t. R (Tau u) t ==> ?v. t = Tau v /\ (R u v \/ u = v)) /\
(!a f t. R (Vis a f) t ==> ?g. t = Vis a g /\
!s. R (f s) (g s) \/ f s = g s)
Proof
rpt strip_tac >>
EQ_TAC
>- (strip_tac >> first_x_assum $ irule_at $ Pos hd >> metis_tac[]) >>
strip_tac >>
ONCE_REWRITE_TAC[itree_bisimulation] >>
qexists_tac ‘\x y. R x y \/ x = y’ >>
metis_tac[]
QED

(* register with TypeBase *)

Expand Down

0 comments on commit 9c6512c

Please sign in to comment.