Opening_hours based on holiday

I am not finding a good reference online, need help:

what is the correct way to express date range for “opening_hours” tag based on US holidays:

Memorial Day-Labor Day: 8-10
Labor Day-mid Oct: 9-4
Thanksgiving-day before Christmas 10-12

Labor day: first Monday in September
Memorial day: last Monday of May
Thanksgiving day: fourth Thursday of November

There’s “PH” (public holiday) specifier, however these have to be already defined for a particular country in the opening_hours.js library (contributions from people around the world are welcome).

https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification#explain:weekday_range:nth_entry
Labor day: first Monday in September => Sep Mo[1]
Memorial day: last Monday of May => May Mo[5]
Thanksgiving day: fourth Thursday of November => Nov Th[4]

(1) I still need help with “day before” and “day after” based on a specific holiday.
(2) I see that US holidays are defined in opening_hours.js
https://github.com/opening-hours/opening_hours.js/blob/master/opening_hours.js

opening_hours wiki page is not clear: is it legal to refer to actual holidays by actual name:
Memorial Day
Memorial Day-1
Labor Day+1

(3) Could you check this looks correct:

Summer (Memorial Day – Labor Day) 8:30am-7:30pm
May Mo[-1]-Sep Mo[1] 08:30-19:30

Fall (day after Labor Day – mid Oct.) 8:30am-5:30pm
Sep Mo[1]+1-Oct 14 08:30-17:30

Winter (Oct – March) 8:30am-3pm
Oct 15-Mar 31: 08:30-15:00

Spring (April – day before Labor Day) 8:30am-5:30pm
Apr-May Mo[-1]-1 08:30-17:30

Many thanks!

When you look at https://github.com/opening-hours/opening_hours.js, it gives a website (and a mirrror or backup site) to evaluate expressions for opening hours: http://openingh.openstreetmap.de/evaluation_tool/

I checked the validation page. I still could use help how to do day before or day after relative to a holiday:
valid: May Mo[-1]
invalid: May Mo[-1]-1 / May Mo[-1][-1] / (May Mo[-1]-1)

Thanks.