Minimally satisfying multiple qualitative requirements at once
It depends what you mean by "minimal".  You might mean either of the following two:


you want to minimize the number of foods selected (variables set to true).
you want a set of foods that's a valid solution, but where any subset of that set is no longer a valid solution.


I'll discuss solution to both variants of the problem.

Minimizing the size of the set

If you want to minimize the number of foods selected (the number of variables set to true), the problem is NP-hard, so there is not likely to be any algorithm that is both efficient and always provides the optimum answer for all possible instances.

However, don't give up.  There are reasonable approaches.  Your problem can be formulated as an instance of integer linear programming (ILP), and then you can use an off-the-shelf ILP solver to solve it.  ILP solvers have gotten pretty good so they might be adequate.

You have $n$ zero-or-one integer variables $x_1,\dots,x_n$, corresponding to the $n$ foods.  Each requirement then translates to one (or more) linear inequalities.  For instance, the requirement that you must have food #1 and food #2 corresponds to $x_1=x_2=1$.  The requirement that you must have at least three foods corresponds to $x_1+x_2+x_3+x_4 \ge 3$.  Some kinds of requirements take a bit more work to formulate as linear inequalities; see Express boolean logic operations in zero-one integer linear programming (ILP) for some tools you can use.  Then, you want to minimize the objective function $x_1+x_2+\dots + x_n$ subject to those constraints.  An ILP solver will do that for you.

Alternatively, you could use an off-the-shelf pseudo-boolean satisfiability solver.

The ILP solver will generate one minimal solution.  To generate all of them, there are various ways to do that.  For instance, if you know there's a solution with 3 variables set to true and no solution with 2 variables set to true, then you can add the requirement $x_1+x_2+\dots + x_n=3$ and enumerate all solutions to the corresponding integer linear program.

Minimal sets of foods

Alternatively, suppose you want to enumerate all ways to choose a set of foods that is minimal (no proper subset is a valid solution).  This requires different methods.

One way is to find a valid solution, then start removing foods until you can no longer remove any more.  That will be one minimal solution.  To enumerate minimal valid solutions, you can now look for a new solution that is not a superset of any prior minimal solution.  This could be very slow.  One way to find a valid solution is by using an integer linear program (ILP), as above; you can formulate the constraint that the solution must not be a superset of any prior minimal solution as well.

An alternative approach might be to view this as the problem of converting a Boolean formula to DNF form.  I think that each DNF clause corresponds to one minimal subset of foods (of variables that can be set to true).  There are various methods for conversion to DNF form; e.g., Quine-McCluskey, the Espresso logic minimizer.  I haven't thought about this carefully and I don't know for sure whether this will find all minimal solutions.  It appears that in your specific situation, you have a monotone Boolean formula; I don't know whether there are better algorithms for converting monotone Boolean formulas to DNF form.