@@ -425,6 +425,24 @@ def _sympysage_kronecker_delta(self):
425
425
from sage .functions .generalized import kronecker_delta
426
426
return kronecker_delta (self .args [0 ]._sage_ (), self .args [1 ]._sage_ ())
427
427
428
+ def _sympysage_piecewise (self ):
429
+ """
430
+ EXAMPLES::
431
+
432
+ sage: from sympy import Symbol, pi as spi, Eq, Lt, Piecewise
433
+ sage: sx = Symbol('x')
434
+ sage: sp = Piecewise((spi, Lt(sx,0)), (1, Eq(sx,1)), (0, True))
435
+ sage: ex = cases(((x<0, pi), (x==1, 1), (True, 0)))
436
+ sage: assert ex._sympy_() == sp
437
+ sage: assert ex == sp._sage_()
438
+
439
+ sage: _ = var('y, z')
440
+ sage: (x^y - z).integrate(y, algorithm="sympy")
441
+ -y*z + cases(((log(x) == 0, y), (1, x^y/log(x))))
442
+ """
443
+ from sage .functions .other import cases
444
+ return cases ([(p .cond ._sage_ (),p .expr ._sage_ ()) for p in self .args ])
445
+
428
446
def _sympysage_besselj (self ):
429
447
"""
430
448
EXAMPLES::
@@ -550,6 +568,29 @@ def _sympysage_relational(self):
550
568
ops = {Eq : eq , Ne : ne , Gt : gt , Lt : lt , Ge : ge , Le : le }
551
569
return ops .get (self .func )(self .lhs ._sage_ (), self .rhs ._sage_ ())
552
570
571
+ def _sympysage_false (self ):
572
+ """
573
+ EXAMPLES::
574
+
575
+ sage: from sympy.logic.boolalg import BooleanFalse
576
+ sage: assert SR(False)._sympy_() == BooleanFalse() # known bug
577
+ sage: assert SR(False) == BooleanFalse()._sage_()
578
+ """
579
+ from sage .symbolic .ring import SR
580
+ return SR (False )
581
+
582
+ def _sympysage_true (self ):
583
+ """
584
+ EXAMPLES::
585
+
586
+ sage: from sympy.logic.boolalg import BooleanTrue
587
+ sage: assert SR(True)._sympy_() == BooleanTrue() # known bug
588
+ sage: assert SR(True) == BooleanTrue()._sage_()
589
+ """
590
+ from sage .symbolic .ring import SR
591
+ return SR (True )
592
+
593
+
553
594
#------------------------------------------------------------------
554
595
from sage .repl .ipython_extension import run_once
555
596
@@ -594,6 +635,7 @@ def sympy_init():
594
635
from sympy .functions .special .hyper import hyper
595
636
from sympy .functions .special .spherical_harmonics import Ynm
596
637
from sympy .functions .special .tensor_functions import KroneckerDelta
638
+ from sympy .logic .boolalg import BooleanTrue , BooleanFalse
597
639
from sympy .integrals .integrals import Integral
598
640
from sympy .series .order import Order
599
641
@@ -627,6 +669,7 @@ def sympy_init():
627
669
hyper ._sage_ = _sympysage_hyp
628
670
elliptic_k ._sage_ = _sympysage_elliptic_k
629
671
KroneckerDelta ._sage_ = _sympysage_kronecker_delta
672
+ Piecewise ._sage_ = _sympysage_piecewise
630
673
besselj ._sage_ = _sympysage_besselj
631
674
bessely ._sage_ = _sympysage_bessely
632
675
besseli ._sage_ = _sympysage_besseli
@@ -635,6 +678,8 @@ def sympy_init():
635
678
re ._sage_ = _sympysage_re
636
679
im ._sage_ = _sympysage_im
637
680
Abs ._sage_ = _sympysage_abs
681
+ BooleanFalse ._sage_ = _sympysage_false
682
+ BooleanTrue ._sage_ = _sympysage_true
638
683
639
684
def check_expression (expr , var_symbols , only_from_sympy = False ):
640
685
"""
0 commit comments