// Generated by purs version 0.13.6 "use strict"; var $foreign = require("./foreign.js"); var HeytingAlgebra = function (conj, disj, ff, implies, not, tt) { this.conj = conj; this.disj = disj; this.ff = ff; this.implies = implies; this.not = not; this.tt = tt; }; var tt = function (dict) { return dict.tt; }; var not = function (dict) { return dict.not; }; var implies = function (dict) { return dict.implies; }; var ff = function (dict) { return dict.ff; }; var disj = function (dict) { return dict.disj; }; var heytingAlgebraBoolean = new HeytingAlgebra($foreign.boolConj, $foreign.boolDisj, false, function (a) { return function (b) { return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b); }; }, $foreign.boolNot, true); var conj = function (dict) { return dict.conj; }; var heytingAlgebraFunction = function (dictHeytingAlgebra) { return new HeytingAlgebra(function (f) { return function (g) { return function (a) { return conj(dictHeytingAlgebra)(f(a))(g(a)); }; }; }, function (f) { return function (g) { return function (a) { return disj(dictHeytingAlgebra)(f(a))(g(a)); }; }; }, function (v) { return ff(dictHeytingAlgebra); }, function (f) { return function (g) { return function (a) { return implies(dictHeytingAlgebra)(f(a))(g(a)); }; }; }, function (f) { return function (a) { return not(dictHeytingAlgebra)(f(a)); }; }, function (v) { return tt(dictHeytingAlgebra); }); }; module.exports = { HeytingAlgebra: HeytingAlgebra, tt: tt, ff: ff, implies: implies, conj: conj, disj: disj, not: not, heytingAlgebraBoolean: heytingAlgebraBoolean, heytingAlgebraFunction: heytingAlgebraFunction };