Analyzing the Ethical Logic of Six Large Language Models