public static bool TestFirstCommutativity() { var f = new Func <int, int>(x => x + 1); var g = new Func <int, int>(y => y - 1); var id = new Func <int, int>(x => x); var firstArrow = Op.Arr((int x) => x * 7, (int y) => y / 7).First(default(int)); var fgArrow = id.Mult(f).Arr(id.Mult(g)); var firstArrowFirst = firstArrow.Combine(fgArrow); var firstArrowLast = fgArrow.Combine(firstArrow); return(ArrowTestUtils.AssertPairInvertibleArrowsGiveSameOutput(firstArrowFirst, firstArrowLast)); }
public static bool TestFirstDistributivity() { var f = new Func <int, int>(x => x * 3 - 2); var g = new Func <int, int>(y => (y + 2) / 3); var id = new Func <int, int>(x => x); var unDistributed = f.Arr(g).First(default(int)); var distributed = (f.Mult(id)).Arr(g.Mult(id)); return(ArrowTestUtils.AssertPairInvertibleArrowsGiveSameOutput(distributed, unDistributed)); }
public static bool TestFirstDistributivity() { var f = new Func<int, int>(x => x * 3 - 2); var g = new Func<int, int>(y => (y + 2) / 3); var id = new Func<int, int>(x => x); var unDistributed = f.Arr(g).First(default(int)); var distributed = (f.Mult(id)).Arr(g.Mult(id)); return ArrowTestUtils.AssertPairInvertibleArrowsGiveSameOutput(distributed, unDistributed); }
public static bool TestFirstCommutativity() { var f = new Func<int, int>(x => x + 1); var g = new Func<int, int>(y => y - 1); var id = new Func<int, int>(x => x); var firstArrow = Op.Arr((int x) => x * 7, (int y) => y / 7).First(default(int)); var fgArrow = id.Mult(f).Arr(id.Mult(g)); var firstArrowFirst = firstArrow.Combine(fgArrow); var firstArrowLast = fgArrow.Combine(firstArrow); return ArrowTestUtils.AssertPairInvertibleArrowsGiveSameOutput(firstArrowFirst, firstArrowLast); }