sage: rs=RootSystem("F4")
sage: r1=rs.root_lattice().positive_roots()
sage: r2=rs.weight_lattice().positive_roots()
sage: r3=rs.ambient_space().positive_roots()
sage: r1
A recursively enumerated set with a graded structure (breadth first search)
sage: r2
A recursively enumerated set with a graded structure (breadth first search)
sage: r3
[(1, 0, 0, 0),
(0, 1, 0, 0),
...
(1/2, -1/2, -1/2, -1/2)]
sage: it1=r1.breadth_first_search_iterator()
sage: it2=r2.breadth_first_search_iterator()
sage: a1r1=next(it1)
sage: a1r2=next(it2)
sage: a1r3=r3[0]
sage: a1r1
alpha[1]
sage: a1r2
2*Lambda[1] - Lambda[2]
sage: a1r3
(1, 0, 0, 0)
sage: a1r1==a1r2
True
sage: a1r1 is a1r2
False
sage: a1r1 == a1r3
False
sage: a1r2==a1r3
False
If I understand what's going on, a1r1, a1r2 and a1r3 above are three distinct representations of the same mathematical object (the first simple root of F4). My question is whether there is a way to access the root directly? (Say you have some function which takes a root or pair of roots as input which you want to implement...)
sage: a1r3.to_weight_space()
sage: a1r3.to_simple_root()
1
sage: a1r3==a1r1
True
sage: a1r3==a1r2