Module[{rule, s, x, y, x1},
rule = s : {x_Integer,
y_ /; ((y /. x1_Real :> Round[x1]) === {1, 2, 3})} :> {s, x, y,
x1};
Union@Cases[rule,
s_Symbol /; StringEndsQ[SymbolName[Unevaluated[s]], "$"] :>
StringDrop[SymbolName[Unevaluated[s]], -1], {1, \[Infinity]}]
]