diff --git a/checks.py b/checks.py
new file mode 100644
index 0000000000000000000000000000000000000000..20243a0b1175fd6dd171a9a0391d62e63dfd4084
--- /dev/null
+++ b/checks.py
@@ -0,0 +1,72 @@
+def valid_ns1d0(ns1d0):
+    # rule 0
+    n = (len(ns1d0) * 2) - 1
+    for val in ns1d0:
+        if val > n:
+            return False
+    
+    # rule 1
+    if ns1d0[0] != 0 or ns1d0[-1] != 1:
+        return False
+    
+    # rule 2
+    if (n+1)/2 in ns1d0:
+        return False
+    
+    # rule 3
+    for i in range(2, n):
+        if i != (n+1) / 2:
+            inverseI = (1- i) % n
+            
+            if (inverseI not in ns1d0) and (i not in ns1d0):
+                return False
+            
+            if (inverseI in ns1d0) and (i in ns1d0):
+                return False
+            
+    # rule 4
+    
+    # get differences
+    diffs = []
+    for i in range(1, len(ns1d0)):
+        diffs.append((ns1d0[i] - ns1d0[i-1]) % n)
+        
+    #check differences
+    for j in range(1, n):
+        inverseJ = (-j) % n
+        
+        if (inverseJ not in diffs) and (j not in diffs):
+            return False
+        
+        if (inverseJ in diffs) and (j in diffs):
+            return False
+
+    
+    return True
+        
+
+def valid_triple(triple_system, order):
+    # generate pairs
+    
+    pairs = []
+    for i in range(order):
+        for j in range(i+1, order):
+            pairs.append([i, j])
+            
+    # check each triple
+    for triple in triple_system:
+        pair1 = sorted((triple[0], triple[1]))
+        pair2 = sorted((triple[1], triple[2]))
+        pair3 = sorted((triple[0], triple[2]))
+        
+        if pair1 in pairs and pair2 in pairs and pair3 in pairs:
+            # hasn't been seen yet
+            pairs.remove(pair1)
+            pairs.remove(pair2)
+            pairs.remove(pair3)
+        else:
+            # one of these has either a) been seen or b) is an invalid pair for this order, so the system is invalid
+            print(pair1, pair1 in pairs, "\n", pair2, pair2 in pairs, "\n", pair3, pair3 in pairs)
+            return False
+    
+    return True
\ No newline at end of file