QUESTION 1: How would one distinguish between what is meant by Mathematica's "Set" and "SetDelayed" functions in informal mathematical notation?
Set vs. SetDelayed
f[x_] = Expand[x^2]
x^2
{f[3], f[3.5], f[x + 1]}
{9, 12.25, (x+1)^2}
f[x+1] is not expanded because that was evaluated when f was defined.
Also Set is evaluated once for certain definitions.
r1 = Random[]; {r1, r1, r1}
{0.937245,0.937245,0.937245}
SetDelayed is evaluated each time.
r2 := Random[]; {r2, r2, r2}
{0.687744,0.629629,0.732141}
Clear["`*"]
f[x_] := Expand[x^2]
Notice when you evaluate this expression, there is no output. That's because the rhs is held until the function f is evaluated.
{f[24],f[x + 2],f[(h - 4)^3]}
{576, x^2+4 x+4, h^6-24 h^5+240 h^4-1280 h^3+3840 h^2-6144 h+4096}
Now everything works because Expand is evaluated after f gets its input.
QUESTION 3: Also, how is informal mathematical notation and formal logic notation related to Mathematica's use of variables like 'x_'?
The underscore is what Mathematica uses to show input variables. It is used with Set and SetDelayed. Even f[x_] is evaluated without :=.
f[x_]
x_^2
The human mind knows that the x in f(x) is the input. Computers don't unless you tell them.
QUESTION 2: Is there a way to make this distinction any any reasonably standard formal logics?
I have never seen it. The human mind would always evaluate like a SetDelayed definition, wouldn't it?
Here's a link to the notebook. Hope this helps.