Definition "знает" способ определения значения для символа: с помощью Set или SetDelayed. Но как? Насколько я понимаю, после того, как значение для символа было назначено, для оценщика нет никакой разницы, как это было назначено: с помощью Set или SetDelayed. Это можно проиллюстрировать функцией OwnValues, которая всегда возвращает определения с Head RuleDelayed. Как Definiton получает эту информацию?
In[1]:= a=5;b:=5;
Definition[a]
Definition[b]
OwnValues[a]
Out[2]= a=5
Out[3]= b:=5
Out[4]= {HoldPattern[a]:>5}