| 105 |      1 | Gate2 = FOL +
 | 
|  |      2 | consts  "~&"     :: "[o,o] => o" (infixl 35)
 | 
|  |      3 |         "#"      :: "[o,o] => o" (infixl 30)
 | 
|  |      4 |         If       :: "[o,o,o] => o"       ("if _ then _ else _")
 | 
|  |      5 | rules   nand_def "P ~& Q == ~(P & Q)"    
 | 
|  |      6 |         xor_def  "P # Q  == P & ~Q | ~P & Q"
 | 
|  |      7 |         If_def   "if P then Q else R == P&Q | ~P&R"
 | 
|  |      8 | end
 |