proposition: Lemma JoinGlue(X : RSetoid): forall o a b, (StFJoin X (glue o a b))==(glue o (StFBind (StepFS X) _ a (SplitLS X o)) (StFBind (StepFS X) _ b (SplitRS X o))).
proof: Proof. intros. simpl. transitivity (glue o (StFBind00 (SplitL (glue o a b) o) (compose1 (SplitLS X o) id)) (StFBind00 (SplitR (glue o a b) o) (compose1 (SplitRS X o) id))). apply glue_wd; auto with *. apply StFBind00_wd; try reflexivity. rewrite SplitLGlue. reflexivity. apply StFBind00_wd; try reflexivity. rewrite SplitRGlue. reflexivity. apply glue_wd; auto with *. rewrite <- SplitLBind. simpl. rewrite SplitLGlue. apply StFBind_wd1. intro x. reflexivity. rewrite <- SplitRBind. simpl. rewrite SplitRGlue. apply StFBind_wd1. intro x. reflexivity. Qed.
imports: CoRN.algebra.RSetoid CoRN.metric2.StepFunctionSetoid CoRN.model.structures.OpenUnit CoRN.tactics.CornTac CoRN.logic.CornBasics