impl add[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Add[AI, B, OI], Add[AR, B, OR], Tuple[O, OI, OR]]: Add[A, B, O];
impl sub[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Sub[AI, B, OI], Sub[AR, B, OR], Tuple[O, OI, OR]]: Sub[A, B, O];
impl mul[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Mul[AI, B, OI], Mul[AR, B, OR], Tuple[O, OI, OR]]: Mul[A, B, O];
impl div[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Div[AI, B, OI], Div[AR, B, OR], Tuple[O, OI, OR]]: Div[A, B, O];
impl rem[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Rem[AI, B, OI], Rem[AR, B, OR], Tuple[O, OI, OR]]: Rem[A, B, O];
impl pow[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], Pow[AI, B, OI], Pow[AR, B, OR], Tuple[O, OI, OR]]: Pow[A, B, O];
impl bit_and[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], BitAnd[AI, B, OI], BitAnd[AR, B, OR], Tuple[O, OI, OR]]: BitAnd[A, B, O];
impl bit_or[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], BitOr[AI, B, OI], BitOr[AR, B, OR], Tuple[O, OI, OR]]: BitOr[A, B, O];
impl bit_xor[A, AI, AR, B, O, OI, OR; Fork[B], Tuple[A, AI, AR], BitXor[AI, B, OI], BitXor[AR, B, OR], Tuple[O, OI, OR]]: BitXor[A, B, O];