##Python 2, 45 bytes

<!-- language-all: lang-python -->

    f=lambda l:l==[]or l[len(l)/2-1]/l.pop()*f(l)

Outputs 0 for Falsy, nonzero for Truthy.

Checks that the last element is less than or equal to its parent at index `len(l)/2-1`. Then, recurses to check that the same is True with the last element of the list removed, and so on until the list is empty.

----

**48 bytes:**

    f=lambda l,i=1:l==l[:i]or l[~-i/2]/l[i]*f(l,i+1)

Checks that at each index `i`, the element is at most its parent at index `(i-1)/2`. The floor-division produces 0 if this is not the case.

Doing the base case as `i/len(l)or` gives the same length. I had tried zipping at first, but got longer code (57 bytes).

    lambda l:all(map(lambda a,b,c:b<=a>=c,l,l[1::2],l[2::2]))