fixed bug in issue 3142; added test for it; fixed error in test
and added a comment to it.
added is_square check to is_identity
Merge pull request #1119 from pernici/sqden2

fixed bug in issue 3142; added test for it; fixed error in test
Mul non-recursive is_positive
nonrecursive is_positive and is_negative for Mul

    If one encodes the attributes as follows:

        -2 nonpositive (sign is 0 or -1)
	-1 negative
	 0 zero (sign unknown)
	 1 positive
	 2 nonnegative (sign is 0 or 1)

    then if factors are recoded to these values according to their
    attributes then the product can be computed and checked for the
    attribute of being positive or negative.

    e.g. neg*neg*pos*nonpos*neg*nonneg
         -1 * -1 * 1 * -2 * -1 * 2 = 4 so the answer is 2-like: nonneg

    The only way to be purely negative or positive is to not have
    any +/-2 factors; the way to be *not* positive or negative is
    to have the right sign (e.g. to be nonnegative the sign must be 0
    or 1 which is what the 2 -- and greater -- positive values encode.
name changes on test variables

    While debugging, it was confusing to work with variables whose
    names had no correspondence with their attribute type (e.g. n
    for a positive variable).
remove is_number from is_positive and is_negative

    let the assumption system figure out if and when the routine
    should be called.
add Mul._eval_is_zero and test

    The Symbol with zero=True assumption is a real trouble-maker; it
    seems like it would be better to replace it with 0 upon
    instantiation. Until then, this commit should help.
simplify Mul.is_(positive|negative) code; add docstrings
move is_zero test higher in is_positive|negative logic

    is_nonpositive catches a zero so any zero factor never
    provided a quick exit for is_positive and is_negative,
    so the is_zero test was moved before that test and covereage
    checked to see that that is now covered.
Merge pull request #1058 from smichr/non-recursive

Non recursive is_positive and is_negative for Mul
Ensure that printing Dicts doesn't depend on key order of the wrapped dict.

Everything was already in place, except that Dict.__str__ and Dict.__repr__
were shadowing the printer methods.
Sort args of Booleans with default_sort_key in ccode()

+ Add spacing for readability
test_solvers.py: don't rely on Symbol.__call__()

Callable Symbols are a hackish feature we'd like to get rid of
at some point (cf. issue 440), so let's avoid writing tests
that rely on this.
3029: Sort args of boolean functions for latex and pretty printing.
Let the assumption system handle commutativity of symbols.

The attribute 'is_commutative' of Symbols was hidden from the assumption
system. Fixing this allows correct inference to happen:
>>> x = Symbol('x', commutative=False)
>>> x.is_real
False

and prevents inconsistent assumptions like
Symbol('x', real=True, commutative=False) from being set.

This changes the hash, so a number of tests and doctests need to be
modified.
Clean up sympy/core/test_assumptions.py
fix failing mechanics doctest
Merge pull request #1120 from mrocklin/3143_matrixbase_identity

added is_square check to is_identity
make manual solution canonical and more robust

    If a CoercionError is raised when trying to solve a system of
    equations, a NotImplementedError is raised so that the equations
    get added to the failed equations.

    The failed equations are now sorted to make the manual solving
    process more canonical. Ties are broken by count_op length and
    then by the default_sort_key.

    The condition that eq2.is_number be True was removed since
    an expression might be a symbolic zero. (A test failed without
    this change after making the canonical change.)