Consider the following premises. forall y: P(y) -> U_1(y). exists y: S(y) or ~U_1(y). forall y: P(y) -> S(y). forall y: S(y) -> P(y). Can we infer exists y: S(y) <-> U_1(y) from them? If possible, name the inference rules being used at each step.
 From exists y: S(y) or ~U_1(y) we can infer exists y: U_1(y) -> S(y) via existential rewriting. From forall y: S(y) -> P(y), forall y: P(y) -> S(y) we can infer forall y: S(y) <-> P(y) via universal biconditional introduction. From forall y: S(y) <-> P(y) we can infer forall y: S(y) -> P(y) via universal biconditional elimination. From forall y: S(y) -> P(y), forall y: P(y) -> U_1(y) we can infer forall y: S(y) -> U_1(y) via universal transitivity. Finally, from forall y: S(y) -> U_1(y), exists y: U_1(y) -> S(y) we can infer exists y: S(y) <-> U_1(y) via existential biconditional introduction. Therefore, the answer is yes.