java logical programs