I think I have found a bug. 

In the code below I am trying to define a symbolic unitary matrix. In doing 
so, I define variables a, b, c, d - entries of the matrix. Unitary 
condition gives us assumptions on a, b, c, d, that I force using *assume* 
function. While trying to check if my matrix is unitary I have observed 
strange results. 

In particular, Out[5] does not make sense, since c*conjugate(c) is always 
nonnegative. 


+*In[1]:*+
[source, ipython2]
----
#We define variables
a, b, c, d = var('a, b, c, d')

#U is supposed to be an unitary matrix
U = matrix([[a, b], [c, d]])
M = U.H*U - identity_matrix(2)

#Assumptions on the entries of U
U_asm = [M[i][j] == 0 for i in range(2) for j in range(2)]
assume([U_asm[a] for a in [0, 1, 3]])
----


+*In[2]:*+
[source, ipython2]
----
assumptions()
----


+*Out[2]:*+
----[a*conjugate(a) + c*conjugate(c) - 1 == 0,
 b*conjugate(a) + d*conjugate(c) == 0,
 b*conjugate(b) + d*conjugate(d) - 1 == 0]----


+*In[3]:*+
[source, ipython2]
----
U.H*U == identity_matrix(2)
----


+*Out[3]:*+
----True----


+*In[4]:*+
[source, ipython2]
----
bool(a*conjugate(a) + c*conjugate(c) - 1 == 0)
----


+*Out[4]:*+
----False----


+*In[5]:*+
[source, ipython2]
----
a*conjugate(a) + c*conjugate(c) - 1 == 0
----


+*Out[5]:*+
----c*conjugate(c) + 8 == 0----


+*In[6]:*+
[source, ipython2]
----
version()
----


+*Out[6]:*+
----'SageMath version 9.0, Release Date: 2020-01-01'----
---------------------------------------
My system is: Arch Linux
My architecture is: 64 bit. 


-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/357286df-23e9-45f8-96ee-4060662ad88c%40googlegroups.com.

Reply via email to