aboutsummaryrefslogtreecommitdiff
path: root/src/tests/nat.spec.ts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2023-12-15 22:36:03 +0530
committerAkshay Nair <phenax5@gmail.com>2023-12-15 22:36:03 +0530
commitefc0358c1e2b52308d3df68aa713cef5dc6e6bfe (patch)
tree40bac1f220895180c1cb99f044ac56eb4ed1ccbb /src/tests/nat.spec.ts
parent3d91b8c0fe73d24e3bcf13e7d7e8079f58975500 (diff)
downloadts-theorem-provinator-efc0358c1e2b52308d3df68aa713cef5dc6e6bfe.tar.gz
ts-theorem-provinator-efc0358c1e2b52308d3df68aa713cef5dc6e6bfe.zip
refactor: moves stuff around
Diffstat (limited to 'src/tests/nat.spec.ts')
-rw-r--r--src/tests/nat.spec.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/tests/nat.spec.ts b/src/tests/nat.spec.ts
new file mode 100644
index 0000000..acade6f
--- /dev/null
+++ b/src/tests/nat.spec.ts
@@ -0,0 +1,60 @@
+import { addition, multiplication } from '../natural-numbers';
+import { Add, Multiply, _0 } from '../utils/nat';
+import { ApplyRewrite, Sym, Eq, VerifyEquation, Equation, assert, Evaluate } from '../utils/theorem';
+
+export namespace spec_addition {
+ export type specIdentity = [
+ assert<Eq<
+ ApplyRewrite<Add<'A', Add<'B', _0>>, addition.Identity<'B'>>,
+ Add<'A', 'B'>
+ >>,
+ assert<Eq<
+ ApplyRewrite<Add<Add<'A', 'B'>, _0>, addition.Identity<Add<'A', 'B'>>>,
+ Add<'A', 'B'>
+ >>,
+ assert<Eq<
+ ApplyRewrite<Add<'A', 'B'>, Sym<addition.Identity<Add<'A', 'B'>>>>,
+ Add<Add<'A', 'B'>, _0>
+ >>,
+ assert<Eq<
+ ApplyRewrite<Add<'A', Add<'B', Add<'C', _0>>>, addition.Identity<'C'>>,
+ Add<'A', Add<'B', 'C'>>
+ >>,
+ ]
+
+ export type specCommutativity = [
+ assert<Eq<
+ ApplyRewrite<Add<'A', 'B'>, addition.Commutativity<'A', 'B'>>,
+ Add<'B', 'A'>
+ >>,
+ assert<Eq<
+ ApplyRewrite<Add<Add<'A', 'B'>, 'C'>, addition.Commutativity<'A', 'B'>>,
+ Add<Add<'B', 'A'>, 'C'>
+ >>,
+ assert<Eq<
+ ApplyRewrite<Add<'A', Add<'B', 'C'>>, addition.Commutativity<'B', 'C'>>,
+ Add<'A', Add<'C', 'B'>>
+ >>,
+ ]
+}
+
+export namespace multiplication_spec {
+ export type specCommutativity = [
+ assert<Eq<
+ ApplyRewrite<Multiply<Multiply<'A', 'B'>, 'C'>, multiplication.Commutativity<'A', 'B'>>,
+ Multiply<Multiply<'B', 'A'>, 'C'>
+ >>,
+ ]
+ export type specDistributivity = [
+ assert<Eq<
+ Evaluate<multiplication.Distributivity<'A', 'B', 'C'>>,
+ Add<Multiply<'A', 'C'>, Multiply<'B', 'C'>>
+ >>,
+ ]
+ export type specAssociativity = [
+ assert<Eq<
+ Evaluate<multiplication.Associativity<'A', 'B', 'C'>>,
+ Multiply<'A', Multiply<'B', 'C'>>
+ >>,
+ ]
+}