IMHO [[https://en.wikipedia.org/wiki/S-expression][Symbolic Expressions]] are... infinitely better.
Example: '(iff (not (and (P 1) (P 2))) (or (not (P 1)) (not (P 2))) )
Example: '(iff (not (and (P 1) (P 2))) (or (not (P 1)) (not (P 2))) )
I forgot to mention SMT-LIB[1] and pySMT[2]. I don't want to say their are optimal, I just think You might find it interesting.
I think it would be even better with Curryed[0] Functions. As an example ``'(f a1 a2)'' is just a Syntactic Sugar for ``'((f a1) a2)''.
Don't forget something like `help' in Python :) .
[0]: https://en.wikipedia.org/wiki/Currying
[1]: http://www.smtlib.org/
[2]: https://github.com/pysmt/pysmt