-- Discharged coeffect assumptions
relateByLUB s (_, Discharged _ c1) (_, Discharged _ c2) (_, Discharged _ c3) = do
  (kind, (inj1, inj2)) <- mguCoeffectTypesFromCoeffects s c1 c2
  addConstraint (Lub s (inj1 c1) (inj2 c2) c3 kind)

-- Linear binding and a graded binding (likely from a promotion)
relateByLUB s (_, Discharged _ c1) (_, Discharged _ c2) (_, Discharged _ c3) = do
  (kind, (inj1, inj2)) <- mguCoeffectTypesFromCoeffects s c1 c2
  addConstraint (Lub s (inj1 c1) (inj2 c2) c3 kind)

-- Linear binding and a graded binding (likely from a promotion)
relateByLUB s (_, Discharged _ c1) (_, Discharged _ c2) (_, Discharged _ c3) = do
  (kind, (inj1, inj2)) <- mguCoeffectTypesFromCoeffects s c1 c2
  addConstraint (Lub s (inj1 c1) (inj2 c2) c3 kind)

-- Linear binding and a graded binding (likely from a promotion)