// This is a comment. // Comments out exactly one line. // We're proving that (P and Q) and R implies every combination. // The first non-comment line must be the logical implication you're proving. P /\ Q /\ R => (P /\ Q) /\ (Q /\ R) /\ (P /\ R) // Blank lines don't count. // The second non-comment line must be the assumption. P /\ Q /\ R // The following lines should have a (true) proposition followed by // whitespace, with AT LEAST ONE TAB, followed by a justification. // A justification is a rule name or abbreviation applied to line number(s). // /\ is left-associative, so this requires associativity of /\. P /\ (Q /\ R) Assoc(8) // If the fact you're using is the immediately previous one, // you can leave out the line number. P Simplify Q /\ R Simplify(14) // You can use the full rule name or the abbreviation. Q S R S(18) // Multiple line numbers are separated by commas. P /\ Q Conj(17, 20) Q /\ R Conj(20, 21) P /\ R Conj(17, 21) (P /\ Q) /\ (Q /\ R) Conj(23, 24) // The proof ends when you reach the goal. (P /\ Q) /\ (Q /\ R) /\ (P /\ R) Conj(26, 25)
    Filename:
ItemSyntax  ItemSyntax
Atomic PropositionsP  Conditionalp -> q
PredicatesP(x)  Biconditionalp <-> q
Negation~p  UniversalForall x. ...
Conjunctionp /\ q  ExistentialExists x. ...
Disjunctionp \/ q 


Checker compiled