Module Unlabeled.
Reserved Infix "-->" (at level 80, no associativity).
Inductive step : relation com :=
| step_loop_stop c :
loop c --> skip
| step_loop_go c :
loop c --> (c ;; loop c)
| step_choose_l c1 c2 :
choose c1 c2 --> c1
| step_choose_r c1 c2 :
choose c1 c2 --> c2
| step_seq_go c1 c1' c2 :
c1 --> c2 ->
(c1 ;; c2) --> (c1' ;; c2)
| step_seq_next c2 :
(skip ;; c2) --> c2
where "x --> y" := (step x y).
CoInductive infinite_steps (c : com) : Type :=
| more c' : step c c' -> infinite_steps c' -> infinite_steps c.

Lemma infinite_simple_loop : infinite_steps one_loop.