# What are the minimum requirements to call something artificial neural network?

I've found this short Python code which implements neural network in 11 lines of code:

X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
l2_delta = (y - l2)*(l2*(1-l2))
l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
syn1 += l1.T.dot(l2_delta)
syn0 += X.T.dot(l1_delta)


I believe it may be a valid implementation of neural network, but how do I know?

In other words, is just creating bunch of arrays which compute the output on certain criteria and call them layers with synapses does it make proper neural network?

In other words, I'd like to ask, what features/properties makes a valid artificial neural network?