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 setUp(self):
     self.type_point = UnnamedOpetopicSet.Type(
         UnnamedOpetopicSet.PastingDiagram.point(), None)
     self.a = UnnamedOpetopicSet.Variable("a", UnnamedOpetope.Point())
     self.b = UnnamedOpetopicSet.Variable("b", UnnamedOpetope.Point())
     self.c = UnnamedOpetopicSet.Variable("c", UnnamedOpetope.Point())
     self.d = UnnamedOpetopicSet.Variable("d", UnnamedOpetope.Point())
     self.ab = UnnamedOpetopicSet.Variable("ab", UnnamedOpetope.Arrow())
     self.ac = UnnamedOpetopicSet.Variable("ac", UnnamedOpetope.Arrow())
     self.bc = UnnamedOpetopicSet.Variable("bc", UnnamedOpetope.Arrow())
     self.cd = UnnamedOpetopicSet.Variable("cd", UnnamedOpetope.Arrow())
     self.seq = UnnamedOpetopicSet.Sequent()
     self.seq.context = UnnamedOpetopicSet.Context() + \
         UnnamedOpetopicSet.Typing(self.a, self.type_point) + \
         UnnamedOpetopicSet.Typing(self.b, self.type_point) + \
         UnnamedOpetopicSet.Typing(self.c, self.type_point) + \
         UnnamedOpetopicSet.Typing(self.d, self.type_point) + \
         UnnamedOpetopicSet.Typing(
             self.ab, self.type_arrow("a", self.b)) + \
         UnnamedOpetopicSet.Typing(
             self.ac, self.type_arrow("a", self.c)) + \
         UnnamedOpetopicSet.Typing(
             self.bc, self.type_arrow("b", self.c)) + \
         UnnamedOpetopicSet.Typing(
             self.cd, self.type_arrow("c", self.d))
 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_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 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 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 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 type_arrow(
         self, src: str,
         tgt: UnnamedOpetopicSet.Variable) -> UnnamedOpetopicSet.Type:
     """
     Convenient function to define the type of an arrow shaped cell
     """
     return UnnamedOpetopicSet.Type(
         UnnamedOpetopicSet.PastingDiagram.nonDegeneratePastingDiagram(
             UnnamedOpetope.Arrow(),
             {UnnamedOpetope.Address.epsilon(0): src}), tgt)
 def test___init__(self):
     UnnamedOpetopicSet.Type(
         self.s, UnnamedOpetopicSet.Variable("t", UnnamedOpetope.Arrow()))
     with self.assertRaises(DerivationError):
         UnnamedOpetopicSet.Type(
             self.s, UnnamedOpetopicSet.Variable("t",
                                                 UnnamedOpetope.Point()))
     UnnamedOpetopicSet.Type(UnnamedOpetopicSet.PastingDiagram.point(),
                             None)
     with self.assertRaises(DerivationError):
         UnnamedOpetopicSet.Type(self.s, None)
示例#10
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___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"
             }))
示例#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()