symbolic n, f(1), f_last, f_first;

True := { [] : 1 = 1 };

old_R1 := { [x] -> [] : (1 <= x <= n and f(x) > 0)};
old_R2 := { [x] -> [] : (1 <= x <= n and f(x) <=0)};
True - range old_R1 - range old_R2;

R1 := { [x] -> [] : (3 <= x <= n-1 and f(x) > 0)
		 or (1 <= n and f_last > 0)
		 or (1 <= n and f_first > 0) };
R2 := { [x] -> [] : (3 <= x <= n-1 and f(x) <=0)
		 or (1 <= n and f_last <=0)
		 or (1 <= n and f_first <=0) };
True - range R1 - range R2;

R1a := { [x] -> [] : (1 <= x <= n and (f(x) > 0 or f_first > 0 or f_last > 0)) };
R2a := { [x] -> [] : (1 <= x <= n and (f(x) <=0 or f_first <=0 or f_last <=0)) };
True - range R1a - range R2a;