test_ordinals.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from sympy.sets.ordinals import Ordinal, OmegaPower, ord0, omega
  2. from sympy.testing.pytest import raises
  3. def test_string_ordinals():
  4. assert str(omega) == 'w'
  5. assert str(Ordinal(OmegaPower(5, 3), OmegaPower(3, 2))) == 'w**5*3 + w**3*2'
  6. assert str(Ordinal(OmegaPower(5, 3), OmegaPower(0, 5))) == 'w**5*3 + 5'
  7. assert str(Ordinal(OmegaPower(1, 3), OmegaPower(0, 5))) == 'w*3 + 5'
  8. assert str(Ordinal(OmegaPower(omega + 1, 1), OmegaPower(3, 2))) == 'w**(w + 1) + w**3*2'
  9. def test_addition_with_integers():
  10. assert 3 + Ordinal(OmegaPower(5, 3)) == Ordinal(OmegaPower(5, 3))
  11. assert Ordinal(OmegaPower(5, 3))+3 == Ordinal(OmegaPower(5, 3), OmegaPower(0, 3))
  12. assert Ordinal(OmegaPower(5, 3), OmegaPower(0, 2))+3 == \
  13. Ordinal(OmegaPower(5, 3), OmegaPower(0, 5))
  14. def test_addition_with_ordinals():
  15. assert Ordinal(OmegaPower(5, 3), OmegaPower(3, 2)) + Ordinal(OmegaPower(3, 3)) == \
  16. Ordinal(OmegaPower(5, 3), OmegaPower(3, 5))
  17. assert Ordinal(OmegaPower(5, 3), OmegaPower(3, 2)) + Ordinal(OmegaPower(4, 2)) == \
  18. Ordinal(OmegaPower(5, 3), OmegaPower(4, 2))
  19. assert Ordinal(OmegaPower(omega, 2), OmegaPower(3, 2)) + Ordinal(OmegaPower(4, 2)) == \
  20. Ordinal(OmegaPower(omega, 2), OmegaPower(4, 2))
  21. def test_comparison():
  22. assert Ordinal(OmegaPower(5, 3)) > Ordinal(OmegaPower(4, 3), OmegaPower(2, 1))
  23. assert Ordinal(OmegaPower(5, 3), OmegaPower(3, 2)) < Ordinal(OmegaPower(5, 4))
  24. assert Ordinal(OmegaPower(5, 4)) < Ordinal(OmegaPower(5, 5), OmegaPower(4, 1))
  25. assert Ordinal(OmegaPower(5, 3), OmegaPower(3, 2)) == \
  26. Ordinal(OmegaPower(5, 3), OmegaPower(3, 2))
  27. assert not Ordinal(OmegaPower(5, 3), OmegaPower(3, 2)) == Ordinal(OmegaPower(5, 3))
  28. assert Ordinal(OmegaPower(omega, 3)) > Ordinal(OmegaPower(5, 3))
  29. def test_multiplication_with_integers():
  30. w = omega
  31. assert 3*w == w
  32. assert w*9 == Ordinal(OmegaPower(1, 9))
  33. def test_multiplication():
  34. w = omega
  35. assert w*(w + 1) == w*w + w
  36. assert (w + 1)*(w + 1) == w*w + w + 1
  37. assert w*1 == w
  38. assert 1*w == w
  39. assert w*ord0 == ord0
  40. assert ord0*w == ord0
  41. assert w**w == w * w**w
  42. assert (w**w)*w*w == w**(w + 2)
  43. def test_exponentiation():
  44. w = omega
  45. assert w**2 == w*w
  46. assert w**3 == w*w*w
  47. assert w**(w + 1) == Ordinal(OmegaPower(omega + 1, 1))
  48. assert (w**w)*(w**w) == w**(w*2)
  49. def test_comapre_not_instance():
  50. w = OmegaPower(omega + 1, 1)
  51. assert(not (w == None))
  52. assert(not (w < 5))
  53. raises(TypeError, lambda: w < 6.66)
  54. def test_is_successort():
  55. w = Ordinal(OmegaPower(5, 1))
  56. assert not w.is_successor_ordinal