A bottom-up semantics for linear logic programs