SQL's SELECT does both restriction and projection; indeed, it always does projection, but the restriction is optional:
select id, first_name from user;
So it's not crazy to equate SELECT with projection.
If we're making up new syntaxes for relational calculus, i think something pipey would feel most natural:
from user | restrict last_name = $last_name | project id, first_name;
Letting you repeat stages as you see fit (this is somewhat silly example):
from user
| project *, is_boss = role in ('manager', 'executive')
| restrict last_name = $last_name and is_boss
| project id, first_name;
You need some sort of converging fork to do joins, maybe:
from user
| restrict role = 'executive'
> boss
from department
| restrict location = 'HQ'
> hq_dept
join < boss < hq_dept on boss.id = hq_dept.head_id
| project first_name, last_name, dept_name
Or maybe something better!