Extended Notation for Greater Readability
lThe first so-many, rather than just the first, element, can be shown separated by commas:
l[a, b, c, d | R] means a list with at least 4 elements, a, b, c, d, followed by the elements in list R (which could be empty).
lIn the extended notation:
lhalve_all([2, 4, 6]) ==>
l[1 | halve_all([4, 6])] ==>
l[1, 2 | halve_all([6])] ==>
l[1, 2, 3 | halve_all([ ])] ==>
l[1, 2, 3]