Repository: sympy/sympy

Issue:
BooleanAtom.is_Atom -> False (could/should be True)
Is there any reason that the following gives False instead of True

```
>>> S.true.is_Atom
False
```

Discussion:

Patch:
diff --git a/sympy/logic/boolalg.py b/sympy/logic/boolalg.py
index 88627f42d8..113232ab6b 100644
--- a/sympy/logic/boolalg.py
+++ b/sympy/logic/boolalg.py
@@ -84,6 +84,7 @@ class BooleanAtom(Boolean):
     Base class of BooleanTrue and BooleanFalse.
     """
     is_Boolean = True
+    is_Atom = True
     _op_priority = 11  # higher than Expr
 
     def simplify(self, *a, **kw):


Test patch:
diff --git a/sympy/logic/tests/test_boolalg.py b/sympy/logic/tests/test_boolalg.py
index 0c72c16d6e..388927a6f8 100644
--- a/sympy/logic/tests/test_boolalg.py
+++ b/sympy/logic/tests/test_boolalg.py
@@ -779,3 +779,7 @@ def test_expand_relational():
     assert r is not S.false
     assert r.expand() is S.false
     assert (q > 0).expand() is S.true
+
+def test_issue_12717():
+    assert S.true.is_Atom == True
+    assert S.false.is_Atom == True