From 60331b72ab37e581b0fb405c2eff862e16b52ac2 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 10 Dec 2023 19:24:31 +0530 Subject: cheated for associativity for a=n --- src/tests.ts | 148 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 78 insertions(+), 70 deletions(-) (limited to 'src/tests.ts') diff --git a/src/tests.ts b/src/tests.ts index b4fc214..d56cb30 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,77 +1,85 @@ -import { Add, Assoc0, Commutativity, Identity } from './index'; -import { ApplyRewrite, ChainRewrites, Flip } from './util'; +import { Add, Assoc, Assoc0, Assoc1, Commutativity, Identity, Succ } from './index'; +import { ApplyRewrite, ChainRewrites, Flip, Rewrite } from './util'; type Eq = ([a] extends [b] ? ([b] extends [a] ? true : false & { a: a; b: b }) : false & { a: a; b: b }); type assert = T; -export type _testCases = { - Identity: [ - assert>, Identity<'B'>>, - Add<'A', 'B'> - >>, - assert, '0'>, Identity>>, - Add<'A', 'B'> - >>, - assert, Flip>>>, - Add, '0'> - >>, - assert>>, Identity<'C'>>, - Add<'A', Add<'B', 'C'>> - >>, - ], +export type specIdentity = [ + assert>, Identity<'B'>>, + Add<'A', 'B'> + >>, + assert, '0'>, Identity>>, + Add<'A', 'B'> + >>, + assert, Flip>>>, + Add, '0'> + >>, + assert>>, Identity<'C'>>, + Add<'A', Add<'B', 'C'>> + >>, +] + +export type specCommutativity = [ + assert, Commutativity<'A', 'B'>>, + Add<'B', 'A'> + >>, + assert, 'C'>, Commutativity<'A', 'B'>>, + Add, 'C'> + >>, + assert>, Commutativity<'B', 'C'>>, + Add<'A', Add<'C', 'B'>> + >>, +] + +export type specChainRewrites = [ + assert, + Identity<'B'>, + ], + Add, 'C'> + >, + Add<'B', 'C'> + >>, + assert, + Identity<'B'>, + Flip>>, + Commutativity, '0'>, + ], + Add, 'C'> + >, + Add<'0', Add<'B', 'C'>> + >>, +] + +export type specAssoc0 = [ + assert, 'C'>, Assoc0<'B', 'C'>>, + Add<'0', Add<'B', 'C'>> + >>, + assert>, 'C'>, Assoc0, 'C'>>, + Add<'0', Add, 'C'>> + >>, +] + +export type specAssocN = [ + assert, 'C'>, Assoc<'A', 'B', 'C'>>, + Add<'A', Add<'B', 'C'>> + >>, +] - Commutativity: [ - assert, Commutativity<'A', 'B'>>, - Add<'B', 'A'> - >>, - assert, 'C'>, Commutativity<'A', 'B'>>, - Add, 'C'> - >>, - assert>, Commutativity<'B', 'C'>>, - Add<'A', Add<'C', 'B'>> - >>, - ], - ChainRewrites: [ - assert, - Identity<'B'>, - ], - Add, 'C'> - >, - Add<'B', 'C'> - >>, - assert, - Identity<'B'>, - Flip>>, - Commutativity, '0'>, - ], - Add, 'C'> - >, - Add<'0', Add<'B', 'C'>> - >>, - ], - Assoc0: [ - assert, 'C'>, Assoc0<'B', 'C'>>, - Add<'0', Add<'B', 'C'>> - >>, - assert>, 'C'>, Assoc0, 'C'>>, - Add<'0', Add, 'C'>> - >>, - ], -}; -- cgit v1.3.1