First, see
Assignment #30 on LTLYM