Missing data, and the null that is data

Reaching past what is there gives no value, and a rule derives no tuple where one of its expressions has none. Reaching a key that is present and null gives the null value, and the row stays:

So the two are distinguishable, which is the point: null is one of the value shapes and an ordinary value, while an absent key has no value at all. Ask for the rows an expression lost with not defined(e).

Both notions are Datamog-specific: standard Datalog has only flat, atomic values, no null, and total expressions.