C-expressions: a variable-free calculus for equational logic programming