No More Jockeys - CodeGolf Version This challenge is inspired by the game No More Jockeys.
The input is a list of tuples of natural numbers (potentially including 0), in some appropriate input format. Starting with player 0 and alternating with player 1, each player chooses some number which is contained within at least one remaining tuple, and all tuples containing that number will be removed from the list. The first player who has no possible moves loses.
Your challenge is to implement a function to calculate the minimax value of a given input. Return a truthy value if it is player 1 to win given optimal play by both players, and a falsy value if it is player 0 to win. The converse is also acceptable.
This is code-golf, so fewest bytes wins.
Test Cases
((), (0, 1, 3), (1,)) -&gt; 0
() -&gt; 1
((0,), (1, 3), (2,)) -&gt; 0
((), (0, 1), (0, 1, 2), (0, 2), (1,)) -&gt; 1
((0,), (0, 1, 3), (0, 3), (2,)) -&gt; 0
((), (0, 1), (0, 2, 3), (1,), (2,), (3,)) -&gt; 1
((0, 1), (1, 2), (2, 3), (3,)) -&gt; 0
((0, 2), (1,), (1, 3), (3,), (4,)) -&gt; 1
((0, 2, 3), (0, 3), (1,), (2,), (2, 3)) -&gt; 0
Python 3, 62 bytes

f=lambda a:0in(f([x for x in a if{r}-{*x}])for r in sum(a,()))

Try it online!
Python 2, 61 bytes

f=lambda a:0in(f(filter({y}.__sub__,a))for x in a for y in x)

Try it online!
-5 bytes thanks to Unrelated String
-6 bytes thanks to dingledooper
-1 byte if we use Python 2 thanks to dingledooper
-2 bytes thanks to xnor
Outputs True for player 0 winning and False or () for player 1 winning (() is an empty tuple in Python, which is a falsey value in the language)