ProofWriter determines whether a statement is True, False or Unknown based on facts and rules given in natural language. For True and False statements, a proof deriving the answer is generated. If a statement is Unknown, ProofWriter tries to generate all single facts that will make it True. If no statement is given to prove, ProofWriter tries to determine all implications of the given facts and rules.