From efc0358c1e2b52308d3df68aa713cef5dc6e6bfe Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Fri, 15 Dec 2023 22:36:03 +0530 Subject: refactor: moves stuff around --- src/equation.ts | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/equation.ts (limited to 'src/equation.ts') diff --git a/src/equation.ts b/src/equation.ts new file mode 100644 index 0000000..0ec25d6 --- /dev/null +++ b/src/equation.ts @@ -0,0 +1,51 @@ +import { Op, Rewrite, ChainRewrites, Sym, Equation, VerifyEquation, assert, ApplyRewrite, Evaluate, OpToStr } from './utils/theorem'; + +export namespace equation { + type F = { op: 'F', a: X }; + + export type Reflexivity = Rewrite, 'true'>; + + export type Symmetry = Rewrite, Equation>; + + export type Congruence = Rewrite, Equation, F>>; + + export type SubstituteEq> = Rewrite + export interface SubstituteEq_Proof { + type: 'rewrite', + known: { + 'a = b': Equation, + }, + left: Equation, F>; // f(a) = f(b) + right: ChainRewrites<[ + Sym>, // a = b + SubstituteEq, // b = b + Reflexivity, + ], this['left']>; + }; + export namespace spec { + export type substitution = [ + assert>>, + ] + } + + export interface Transitivity_Proof { + type: 'rewrite', + known: { + 'a = b': Equation, + 'b = c': Equation, + }, + left: Equation, Equation>; // (a = b) = (b = c) + right: ChainRewrites<[ + SubstituteEq, // (b = b) = (b = c) + SubstituteEq>>, // (b = b) = (c = b) + Reflexivity, // true = (b = b) + Reflexivity, // true = true + Reflexivity<'true'>, + ], this['left']>; + }; + export namespace spec { + export type transitivity = [ + assert>>, + ] + } +} -- cgit v1.3.1