def test_graft(self): with self.assertRaises(DerivationError): UnnamedOpetopicSet.graft( UnnamedOpetopicSet.Sequent(), UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), "x")) with self.assertRaises(DerivationError): UnnamedOpetopicSet.graft( UnnamedOpetopicSet.Sequent(), UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.Arrow(), {UnnamedOpetope.Address.epsilon(0): "x"})) # Incorrect grafting: ab on top of cd with self.assertRaises(DerivationError): UnnamedOpetopicSet.graft( self.seq, UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "cd", UnnamedOpetope.Address.epsilon(0).shift(): "ab" })) # Correct grafting: ab on top of bc UnnamedOpetopicSet.graft( self.seq, UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "bc", UnnamedOpetope.Address.epsilon(0).shift(): "ab" }))
def test_shape(self): self.assertEqual(self.a.shape, UnnamedOpetope.Arrow().eval().source) self.assertEqual(self.b.shape, UnnamedOpetope.Arrow().eval().source) self.assertEqual(self.i1.shape, UnnamedOpetope.OpetopicInteger(1).eval().source) self.assertEqual(self.i2.shape, UnnamedOpetope.OpetopicInteger(2).eval().source) self.assertEqual(self.i3.shape, UnnamedOpetope.OpetopicInteger(3).eval().source)
def test___init__(self): UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("x", UnnamedOpetope.OpetopicInteger(2)), self.t) with self.assertRaises(DerivationError): UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("x", UnnamedOpetope.OpetopicInteger(3)), self.t)
def test___getitem__(self): d = UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), "d") p = UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "a", UnnamedOpetope.Address.epsilon(0).shift(): "b" }) with self.assertRaises(DerivationError): d[UnnamedOpetope.Address.epsilon(0)] self.assertEqual(p[UnnamedOpetope.Address.epsilon(1)], "a") self.assertEqual(p[UnnamedOpetope.Address.epsilon(0).shift()], "b")
def test_nonDegeneratePastingDiagram(self): UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "a", UnnamedOpetope.Address.epsilon(0).shift(): "b" }) with self.assertRaises(DerivationError): UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), {}) with self.assertRaises(DerivationError): UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), {UnnamedOpetope.Address.epsilon(1): "a"})
def setUp(self): self.a = UnnamedOpetopicSet.Variable("a", UnnamedOpetope.Arrow()) self.b = UnnamedOpetopicSet.Variable("b", UnnamedOpetope.Arrow()) self.i1 = UnnamedOpetopicSet.Variable( "i1", UnnamedOpetope.OpetopicInteger(1)) self.i2 = UnnamedOpetopicSet.Variable( "i2", UnnamedOpetope.OpetopicInteger(2)) self.i3 = UnnamedOpetopicSet.Variable( "i3", UnnamedOpetope.OpetopicInteger(3)) self.c = UnnamedOpetopicSet.Variable( "c", UnnamedOpetope.Graft( UnnamedOpetope.Shift(UnnamedOpetope.OpetopicInteger(2)), UnnamedOpetope.OpetopicInteger(2), UnnamedOpetope.Address.fromList([['*']], 2)))
def setUp(self): self.t = UnnamedOpetopicSet.Type( UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "a", UnnamedOpetope.Address.epsilon(0).shift(): "b" }), UnnamedOpetopicSet.Variable("t", UnnamedOpetope.Arrow()))
def test_OpetopicTree(self): self.assertEqual( UnnamedOpetope.OpetopicTree(None).eval(), UnnamedOpetope.Degen(UnnamedOpetope.Arrow()).eval()) for i in range(5): self.assertEqual( UnnamedOpetope.OpetopicTree([None] * i).eval(), UnnamedOpetope.Shift(UnnamedOpetope.OpetopicInteger(i)).eval()) for i in range(5): tree = [None] * i + [[None]] + [None] * (4 - i) self.assertEqual( UnnamedOpetope.OpetopicTree(tree).eval(), UnnamedOpetope.Graft( UnnamedOpetope.Shift(UnnamedOpetope.OpetopicInteger(5)), UnnamedOpetope.OpetopicInteger(1), UnnamedOpetope.address([['*'] * i], 2)).eval())
def test_shift(self): s = UnnamedOpetopicSet.graft( self.seq, UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(1), {UnnamedOpetope.Address.epsilon(1): "ac"})) with self.assertRaises(DerivationError): UnnamedOpetopicSet.shift(s, "ab", "A") with self.assertRaises(DerivationError): UnnamedOpetopicSet.shift(s, "bc", "A") UnnamedOpetopicSet.shift(s, "ac", "A")
def test_graft(self): i2 = UnnamedOpetope.OpetopicInteger(2).eval() i3 = UnnamedOpetope.OpetopicInteger(3).eval() s = UnnamedOpetope.shift(i3) s = UnnamedOpetope.graft(s, i2, UnnamedOpetope.Address.fromList([['*']], 2)) s = UnnamedOpetope.graft( s, i2, UnnamedOpetope.Address.fromList([['*', '*']], 2)) r = s.context self.assertEqual(r(UnnamedOpetope.Address.fromList([[]], 2)), UnnamedOpetope.Address.fromList([], 1)) self.assertEqual(r(UnnamedOpetope.Address.fromList([['*'], []], 2)), UnnamedOpetope.Address.fromList(['*'], 1)) self.assertEqual(r(UnnamedOpetope.Address.fromList([['*'], ['*']], 2)), UnnamedOpetope.Address.fromList(['*', '*'], 1)) self.assertEqual( r(UnnamedOpetope.Address.fromList([['*', '*'], []], 2)), UnnamedOpetope.Address.fromList(['*', '*', '*'], 1)) self.assertEqual( r(UnnamedOpetope.Address.fromList([['*', '*'], ['*']], 2)), UnnamedOpetope.Address.fromList(['*', '*', '*', '*'], 1))
def setUp(self): self.p = UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("p", UnnamedOpetope.Point()), UnnamedOpetopicSet.Type(UnnamedOpetopicSet.PastingDiagram.point(), None)) self.a = UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("a", UnnamedOpetope.OpetopicInteger(0)), UnnamedOpetopicSet.Type( UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), "p"), UnnamedOpetopicSet.Variable("p", UnnamedOpetope.Arrow()))) self.b = UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("b", UnnamedOpetope.OpetopicInteger(0)), UnnamedOpetopicSet.Type( UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), "p"), UnnamedOpetopicSet.Variable("p", UnnamedOpetope.Arrow()))) self.c = UnnamedOpetopicSet.Typing( UnnamedOpetopicSet.Variable("c", UnnamedOpetope.OpetopicInteger(2)), UnnamedOpetopicSet.Type( UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "x", UnnamedOpetope.Address.epsilon(0).shift(): "y" }), UnnamedOpetopicSet.Variable("z", UnnamedOpetope.Arrow()))) self.ctx = UnnamedOpetopicSet.Context() + self.p + self.a + self.c
def test_ProofTree(self): self.assertEqual( UnnamedOpetope.ProofTree({}).eval(), UnnamedOpetope.Point().eval()) self.assertEqual( UnnamedOpetope.ProofTree({ UnnamedOpetope.address('*'): {} }).eval(), UnnamedOpetope.Arrow().eval()) self.assertEqual( UnnamedOpetope.ProofTree({ None: {} }).eval(), UnnamedOpetope.OpetopicInteger(0).eval()) self.assertEqual( UnnamedOpetope.ProofTree({ UnnamedOpetope.address([], 1): { UnnamedOpetope.address('*'): {} }, UnnamedOpetope.address(['*']): { UnnamedOpetope.address('*'): {} } }).eval(), UnnamedOpetope.OpetopicInteger(2).eval()) with self.assertRaises(DerivationError): UnnamedOpetope.ProofTree({ UnnamedOpetope.address(['*']): { UnnamedOpetope.address('*'): {} } }) with self.assertRaises(DerivationError): UnnamedOpetope.ProofTree({ UnnamedOpetope.address([], 1): { UnnamedOpetope.address('*'): {} }, UnnamedOpetope.address(['*', '*']): { UnnamedOpetope.address('*'): {} } }).eval()
def test_shapeTarget(self): self.assertEqual(self.a.shapeTarget(), UnnamedOpetope.Point().eval().source) self.assertEqual(self.b.shapeTarget(), UnnamedOpetope.Point().eval().source) self.assertEqual(self.i1.shapeTarget(), UnnamedOpetope.Arrow().eval().source) self.assertEqual(self.i2.shapeTarget(), UnnamedOpetope.Arrow().eval().source) self.assertEqual(self.i3.shapeTarget(), UnnamedOpetope.Arrow().eval().source) self.assertEqual(self.c.shapeTarget(), UnnamedOpetope.OpetopicInteger(3).eval().source)
def test_degeneratePastingDiagram(self): UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(0), "d") with self.assertRaises(DerivationError): UnnamedOpetopicSet.PastingDiagram.degeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(1), "d")
def setUp(self): self.s = UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.Address.epsilon(1): "a", UnnamedOpetope.Address.epsilon(0).shift(): "b" })
def test___eq__(self): self.assertEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(0), "a"), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(0), "a")) self.assertNotEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(0), "a"), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(0), "b")) self.assertNotEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(0), "a"), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.Degen(UnnamedOpetope.Arrow()), "a")) self.assertNotEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(1), {UnnamedOpetope.address([], 1): "a"}), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(1), {UnnamedOpetope.address([], 1): "b"})) self.assertNotEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(1), {UnnamedOpetope.address([], 1): "a"}), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.address([], 1): "a", UnnamedOpetope.address(['*']): "a" })) self.assertEqual( UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.address([], 1): "a", UnnamedOpetope.address(['*']): "b" }), UnnamedOpetopicSet.pastingDiagram( UnnamedOpetope.OpetopicInteger(2), { UnnamedOpetope.address(['*']): "b", UnnamedOpetope.address([], 1): "a" }))
def test_toDict(self): for i in range(5): seq = UnnamedOpetope.OpetopicInteger(i).eval() self.assertEqual( seq, UnnamedOpetope.ProofTree(seq.source.toDict()).eval())