So if I understand correctly, on p.83:
num discount {year in YEARS} = 1 / (1 + &discount_rate)^(year - 1);
here we have "year" in YEARS becasue there is also "year" on the RHS, whereas for:
proc optmodel;
set <str> MINES;
num cost {MINES};
num extract_ub {MINES};
num quality {MINES};
read data mine_data into MINES=[mine] cost extract_ub quality;
here for the num cost, extract_ub and quality there is no "mine" in MINES becasue there is no RHS part of an equation where "mine" is specified, but here the values are just being read.