aboutsummaryrefslogtreecommitdiffhomepage
path: root/std/Logic.bruijn
diff options
context:
space:
mode:
Diffstat (limited to 'std/Logic.bruijn')
-rw-r--r--std/Logic.bruijn70
1 files changed, 70 insertions, 0 deletions
diff --git a/std/Logic.bruijn b/std/Logic.bruijn
new file mode 100644
index 0000000..2e1e654
--- /dev/null
+++ b/std/Logic.bruijn
@@ -0,0 +1,70 @@
+# 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
+