case step z' red_x_z' red_z'_z =>
have join1 := weak _ _ _ red_x_y' red_x_z'
cases' join1 with w h'
have join2 : y ~>*.*<~ w :=
by
  apply ih
  . apply trans_clos.base
    apply red_x_y'
  . aesop
have join3 : z ~>*.*<~ w :=
by
  apply ih
  . apply trans_clos.base
    apply red_x_z'
  . aesop
cases' join2 with w1 h1
cases' join3 with w2 h2
have red_x_w : x ~>+ w :=
  by
    apply refl_trans_step_is_trans
    . apply red_x_z'
    . apply h'.2
have join4 : w1 ~>*.*<~ w2 :=
by
  apply ih
  . apply red_x_w
  . aesop
 
cases' join4 with omega h3
exists omega; constructor
. apply refl_trans_clos_transitive
  . apply h1.1
  . apply h3.1
. apply refl_trans_clos_transitive
  . apply h2.1
  . apply h3.2
A : Type
R : A → A → Prop
inhabited_A : Nonempty A
norm_R : normalizing R
weak : weakly_confluent R
x✝ : A
norm_trans : normalizing fun x x_1 => trans_clos R x x_1
y✝ z✝ : A
wedge✝ : refl_trans_clos R x✝ y✝ ∧ refl_trans_clos R x✝ z✝
x : A
ih : ∀ (y : A), trans_clos R x y → ∀ (y_1 z : A), refl_trans_clos R y y_1 ∧ refl_trans_clos R y z → joins R y_1 z
y z : A
wedge : refl_trans_clos R x y ∧ refl_trans_clos R x z
y' : A
red_x_y' : R x y'
red_y'_y : refl_trans_clos R y' y
z' : A
red_x_z' : R x z'
red_z'_z : refl_trans_clos R z' z
⊢ joins R y z
no goals