# MIT License, Copyright (c) 2022 Marvin Borner :import std/Combinator . not [0 F T] :test not T = F :test not F = T and [[1 0 F]] :test and T T = T :test and T F = F :test and F T = F :test and F F = F nand [[1 0 1 F T]] :test nand T T = F :test nand T F = T :test nand F T = T :test nand F F = T or [[1 T 0]] :test or T T = T :test or T F = T :test or F T = T :test or F F = F nor [[1 1 0 F T]] :test nor T T = F :test nor T F = F :test nor F T = F :test nor F F = T xor [[1 (not 0) 0]] :test xor T T = F :test xor T F = T :test xor F T = T :test xor F F = F xnor [[1 0 (not 0)]] :test xnor T T = T :test xnor T F = F :test xnor F T = F :test xnor F F = T if [[[2 1 0]]] :test if T T F = T :test if F T F = F implies [[or (not 1) 0]] :test implies T T = T :test implies T F = F :test implies F T = T :test implies F F = T iff [[and (implies 1 0) (implies 0 1)]] :test iff T T = T :test iff T F = F :test iff F T = F :test iff F F = T