I'm not sure I understand fully what you're saying. I did

m1 = SR(GF(2)(1)) * var("m1")
m2 = SR(GF(2)(1)) * var("m2")
m3 = SR(GF(2)(1)) * var("m3")
m4 = SR(GF(2)(1)) * var("m4")

but the Matrix definition

q = Matrix(GF(2), [
    [m1, m2],
    [m3, m4],
])

still results in the same error: "unable to convert x (=x1) to an integer".

How do I define a variable in the SR that I can work with? I can't seem to 
figure it out from the example you gave me.

Thank you,
Kim


Am Dienstag, 30. September 2014 17:04:10 UTC+2 schrieb Volker Braun:
>
> Anything symbolic is in the symbolic ring SR, finite field elements are in 
> GF(2). You can wrap finite field elements in the symbolic ring if you want 
> to do symbolic computations with finite field coefficients:
>
> sage: SR(GF(5)(3)) * x
> 3*x
> sage: _ * 2
> x
>
> though the symbolic elemnts still don't know anything about finite fields, 
> they just carry the coefficients along.
>
>
>
> On Tuesday, September 30, 2014 3:14:03 PM UTC+1, Kim Schoener wrote:
>>
>> Heya!
>>
>> I want to do something relatively easy in Sage but can't figure out how. 
>> Hopefully you can help me. I want to do some symbolic operations 
>> (matrix/vector) in the GF(2). Let's start out with real numbers first:
>>
>> (m1, m2, m3, m4) = (var("m1"), var("m2"), var("m3"), var("m4"))
>> q = Matrix([
>>     [m1, m2],
>>     [m3, m4],
>> ])
>> print(q)
>> print(q * q)
>>
>> Works pefectly:
>>
>> [m1 m2]
>> [m3 m4]
>> [ m1^2 + m2*m3 m1*m2 + m2*m4]
>> [m1*m3 + m3*m4  m2*m3 + m4^2]
>>
>> But when I try the same thing in GF(2) by definiing
>>
>> q = Matrix(GF(2), [
>>     [m1, m2],
>>     [m3, m4],
>> ])
>>
>> I get:
>>
>> [...]
>>   File "parent.pyx", line 1069, in sage.structure.parent.Parent.__call__ 
>> (sage/structure/parent.c:8546)
>>   File "coerce_maps.pyx", line 156, in 
>> sage.structure.coerce_maps.NamedConvertMap._call_ 
>> (sage/structure/coerce_maps.c:4930)
>>   File "expression.pyx", line 857, in 
>> sage.symbolic.expression.Expression._integer_ 
>> (sage/symbolic/expression.cpp:5877)
>> TypeError: unable to convert x (=m1) to an integer
>>
>> However, the matrix definition seems to be okay, when I do
>>
>> q = Matrix(GF(2), [
>>     [1, 1 ],
>>     [1, 0],
>> ])
>> print(q * q)
>>
>> I get
>>
>> [0 1]
>> [1 1]
>>
>> which is what I'd expect. Why does it not work with variables when 
>> working in GF(2) and how can I get this to work the way I want it to?
>>
>> Thank you so much,
>> Regards,
>> Kim
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to