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()))
Exemplo n.º 8
0
 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")
Exemplo n.º 10
0
 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
Exemplo n.º 12
0
 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"
             }))
Exemplo n.º 17
0
 def test_toDict(self):
     for i in range(5):
         seq = UnnamedOpetope.OpetopicInteger(i).eval()
         self.assertEqual(
             seq,
             UnnamedOpetope.ProofTree(seq.source.toDict()).eval())