@@ -567,25 +567,25 @@ Section BackwardBounded.
567567 now apply trans_br with t33.
568568 Qed .
569569
570- Lemma trans_br31 :
571- trans l t t' ->
572- trans l (br3 t u v) t' .
570+ Lemma trans_br31 x :
571+ trans l t x ->
572+ trans l (br3 t u v) x .
573573 Proof .
574574 intros * TR.
575575 now apply trans_br with t31.
576576 Qed .
577577
578- Lemma trans_br32 :
579- trans l u u' ->
580- trans l (br3 t u v) u' .
578+ Lemma trans_br32 x :
579+ trans l u x ->
580+ trans l (br3 t u v) x .
581581 Proof .
582582 intros * TR.
583583 now apply trans_br with t32.
584584 Qed .
585585
586- Lemma trans_br33 :
587- trans l v v' ->
588- trans l (br3 t u v) v' .
586+ Lemma trans_br33 x :
587+ trans l v x ->
588+ trans l (br3 t u v) x .
589589 Proof .
590590 intros * TR.
591591 now apply trans_br with t33.
@@ -615,33 +615,33 @@ Section BackwardBounded.
615615 eapply trans_br with t44; eauto.
616616 Qed .
617617
618- Lemma trans_br41 :
619- trans l t t' ->
620- trans l (br4 t u v w) t' .
618+ Lemma trans_br41 x :
619+ trans l t x ->
620+ trans l (br4 t u v w) x .
621621 Proof .
622622 intros * TR.
623623 eapply trans_br with t41; eauto.
624624 Qed .
625625
626- Lemma trans_br42 :
627- trans l u u' ->
628- trans l (br4 t u v w) u' .
626+ Lemma trans_br42 x :
627+ trans l u x ->
628+ trans l (br4 t u v w) x .
629629 Proof .
630630 intros * TR.
631631 eapply trans_br with t42; eauto.
632632 Qed .
633633
634- Lemma trans_br43 :
635- trans l v v' ->
636- trans l (br4 t u v w) v' .
634+ Lemma trans_br43 x :
635+ trans l v x ->
636+ trans l (br4 t u v w) x .
637637 Proof .
638638 intros * TR.
639639 eapply trans_br with t43; eauto.
640640 Qed .
641641
642- Lemma trans_br44 :
643- trans l w w' ->
644- trans l (br4 t u v w) w' .
642+ Lemma trans_br44 x :
643+ trans l w x ->
644+ trans l (br4 t u v w) x .
645645 Proof .
646646 intros * TR.
647647 eapply trans_br with t44; eauto.
@@ -826,53 +826,69 @@ Structural rules
826826Ad-hoc rules for pre-defined finite branching
827827| *)
828828
829- Variable (l : @label E X) (t t' u v w : ctree E B X).
829+ Variable (l : @label E X) (t u v w : ctree E B X).
830830 Context `{B2 -< B} `{B3 -< B} `{B4 -< B}.
831831
832- Lemma trans_br2_inv :
832+ Lemma trans_br2_inv t' :
833833 trans l (br2 t u) t' ->
834834 (trans l t t' \/ trans l u t').
835835 Proof .
836836 intros * TR; apply trans_br_inv in TR as [[] TR]; auto.
837837 Qed .
838838
839- Lemma trans_br3_inv :
839+ Lemma trans_br3_inv t' :
840840 trans l (br3 t u v) t' ->
841841 (trans l t t' \/ trans l u t' \/ trans l v t').
842842 Proof .
843843 intros * TR; apply trans_br_inv in TR as [n TR].
844844 destruct n; auto.
845845 Qed .
846846
847- Lemma trans_br4_inv :
847+ Lemma trans_br4_inv t' :
848848 trans l (br4 t u v w) t' ->
849849 (trans l t t' \/ trans l u t' \/ trans l v t' \/ trans l w t').
850850 Proof .
851851 intros * TR; apply trans_br_inv in TR as [n TR].
852852 destruct n; auto.
853853 Qed .
854854
855- Lemma trans_brS2_inv :
855+ Lemma trans_brS2_inv (t': ctree _ _ _) :
856856 trans l (brS2 t u) t' ->
857857 (l = τ /\ (t' ≅ t \/ t' ≅ u)).
858858 Proof .
859859 intros * TR; apply trans_brS_inv in TR as (? & TR & ->); split; auto.
860860 destruct x; auto.
861861 Qed .
862862
863- Lemma trans_brS3_inv :
863+ Lemma trans_brS2_inv' t' :
864+ trans l (brS2 t u) t' ->
865+ (l = τ /\ (Seq t' t \/ Seq t' u)).
866+ Proof .
867+ intros * TR; apply trans_brS_inv' in TR as (? & TR & ->); split; auto.
868+ destruct x; auto.
869+ Qed .
870+
871+ Lemma trans_brS3_inv (t': ctree _ _ _) :
864872 trans l (brS3 t u v) t' ->
865873 (l = τ /\ (t' ≅ t \/ t' ≅ u \/ t' ≅ v)).
866874 Proof .
867875 intros * TR; apply trans_brS_inv in TR as (? & TR & ->); split; auto.
868876 destruct x; auto.
869877 Qed .
870878
871- Lemma trans_brS4_inv :
879+ Lemma trans_brS3_inv' t' :
880+ trans l (brS3 t u v) t' ->
881+ (l = τ /\ (Seq t' t \/ Seq t' u \/ Seq t' v)).
882+ Proof .
883+ intros * TR; apply trans_brS_inv' in TR as (? & TR & ->); split; auto.
884+ destruct x; auto.
885+ Qed .
886+
887+ Lemma trans_brS4_inv' t' :
872888 trans l (brS4 t u v w) t' ->
873- (l = τ /\ (t' ≅ t \/ t' ≅ u \/ t' ≅ v \/ t' ≅ w)).
889+ (l = τ /\ (Seq t' t \/ Seq t' u \/ Seq t' v \/ Seq t' w)).
874890 Proof .
875- intros * TR; apply trans_brS_inv in TR as (? & TR & ->); split; auto.
891+ intros * TR; apply trans_brS_inv' in TR as (? & TR & ->); split; auto.
876892 destruct x; auto.
877893 Qed .
878894
@@ -2236,6 +2252,14 @@ Ltac inv_trans_one :=
22362252 | h : htrans _ (α Br _ _) _ |- _ =>
22372253 let TR := fresh "TR" in
22382254 apply trans_br_inv in h as (?n & TR)
2255+
2256+ | h : htrans _ (α br2 _ _) _ |- _ =>
2257+ let TR := fresh "TR" in
2258+ apply trans_br2_inv in h as [TR | TR]
2259+
2260+ | h : htrans _ (α br3 _ _ _) _ |- _ =>
2261+ let TR := fresh "TR" in
2262+ apply trans_br3_inv in h as [TR | [TR | TR]]
22392263
22402264 (* Guard *)
22412265 | h : htrans _ (α Guard _) _ |- _ =>
0 commit comments