From 999c2314c0d649646a53e7cc440ae3f4aa1a3d61 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Tue, 12 Dec 2023 18:47:06 +0530 Subject: feat: commutativity + identity for multiplication --- src/tests.ts | 94 +++++++++++++++++++++++++++++------------------------------- 1 file changed, 46 insertions(+), 48 deletions(-) (limited to 'src/tests.ts') diff --git a/src/tests.ts b/src/tests.ts index f4530b4..5c066dc 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,47 +1,6 @@ -import { addition } from './index'; -import { Add } from './nat'; -import { ApplyRewrite, ChainRewrites, Flip, Eq, VerifyEquation } from './util'; - -type assert = T; - -export type specIdentity = [ - assert>, addition.Identity<'B'>>, - Add<'A', 'B'> - >>, - assert, '0'>, addition.Identity>>, - Add<'A', 'B'> - >>, - assert, Flip>>>, - Add, '0'> - >>, - assert>>, addition.Identity<'C'>>, - Add<'A', Add<'B', 'C'>> - >>, -] - -export type specCommutativity = [ - assert, addition.Commutativity<'A', 'B'>>, - Add<'B', 'A'> - >>, - assert, 'C'>, addition.Commutativity<'A', 'B'>>, - Add, 'C'> - >>, - assert>, addition.Commutativity<'B', 'C'>>, - Add<'A', Add<'C', 'B'>> - >>, -] - -export type specCommutativityInduction = [ - assert>>, - assert>>, -] +import { addition, multiplication } from './index'; +import { Add, Multiply, Succ } from './nat'; +import { ApplyRewrite, ChainRewrites, Flip, Eq, VerifyEquation, Equation, assert } from './util'; export type specChainRewrites = [ assert>, ] -export type specAssociativityInduction = [ - assert>>, - assert>>, -] +export namespace spec_addition { + export type specIdentity = [ + assert>, addition.Identity<'B'>>, + Add<'A', 'B'> + >>, + assert, '0'>, addition.Identity>>, + Add<'A', 'B'> + >>, + assert, Flip>>>, + Add, '0'> + >>, + assert>>, addition.Identity<'C'>>, + Add<'A', Add<'B', 'C'>> + >>, + ] + + export type specCommutativity = [ + assert, addition.Commutativity<'A', 'B'>>, + Add<'B', 'A'> + >>, + assert, 'C'>, addition.Commutativity<'A', 'B'>>, + Add, 'C'> + >>, + assert>, addition.Commutativity<'B', 'C'>>, + Add<'A', Add<'C', 'B'>> + >>, + ] +} +export namespace multiplication_spec { + export type specCommutativity = [ + assert, 'C'>, multiplication.Commutativity<'A', 'B'>>, + Multiply, 'C'> + >>, + ] +} -- cgit v1.3.1