<h1>A Slightly More Complex Case Where Level-1 Heads Can Vary</h1>

<h2>1. My way by defining a short alias for a long pattern because I don't know any better. However this works!</h2>

However before we start how can I add the following condition: `/;x!=y` preferably to `cpat` or inside the definition `zinfy1[(x:cpat,y:cpat)/;x!=y]` (does this look correct?) and not in the inside or at the end of the function body?

    (* cpat for common pattern *)
    (* all arguments Integers >= 0 or +Infinity *)
    cpat = _Integer?(# >= 0 &) | Infinity;
    
    zinfy1[x : cpat, y : cpat] := Style[#, 20, Bold, Green] & /@ {x, y};
    zinfy1[x_, y_] := Style[#, 20, Bold, Red] & /@ {x, y};
    
    (* should pass - all args Greeen *)
    {zinfy1[1, 2], zinfy1[3, 2 + 3], zinfy1[Infinity, 1], zinfy1[0, 0]}
    
    (* should fail- all args Red *)
    {zinfy1[Infinity, -9], zinfy1[3, 2 - 3], zinfy1[-1 Infinity, 0], 
     zinfy1[-1, 1]}


<h2>2.  An Attempt to Implement `SequencePattern` on same function and test cases completely fails.</h2>

And I don't know why. Anyone here feeling a little adventurous up for the challenge?  I could sure use a little help solving this. 

    SequencedPattern[a_] := PatternSequence[##]?a &;
    zinfy2[SequencedPattern[cpat][x_, y_]] := 
      Style[#, 20, Bold, Green] & /@ {x, y};
    zinfy2[x_, y_] := Style[#, 20, Bold, Red] & /@ {x, y};
    
    (* should pass - all args Greeen *)
    {zinfy2[1, 2], zinfy2[3, 2 + 3], zinfy2[Infinity, 1], zinfy2[0, 0]}
    
    (* should fail- all args Red *)
    {zinfy2[Infinity, -9], zinfy2[3, 2 - 3], zinfy2[-1 Infinity, 0], 
     zinfy2[-1, 1]}