Putting Logic In Its Place C door David Christensen