propositional
Version:
Propositional logic symbolic computation library
39 lines (38 loc) • 801 B
TypeScript
import * as AST from '../syntax/ast';
/**
* Simplify an expression under the following principles:
* - !0 <=> 1
* - !1 <=> 0
*
* - !!a <=> a
*
* - (a & a) <=> a
* - (a | a) <=> a
* - (a ^ a) <=> 0
* - (a => a) <=> 1
* - (a <=> a) <=> 1
*
* - (a & !a) <=> 0
* - (a | !a) <=> 1
* - (a ^ !a) <=> 1
* - (a <=> !a) <=> 0
*
* - (a => !a) <=> !a
* - (!a => a) <=> a
*
* - (0 & a) <=> 0
* - (0 | a) <=> a
* - (0 ^ a) <=> a
* - (0 => a) <=> 1
* - (0 <=> a) <=> !a
*
* - (1 & a) <=> a
* - (1 | a) <=> 1
* - (1 ^ a) <=> !a
* - (1 => a) <=> a
* - (1 <=> a) <=> a
*
* - (a => 0) <=> !a
* - (a => 1) <=> 1
*/
export declare function simplify(expression: AST.Expression): AST.Expression;