//Composes elements of group
func Compose(a, b gt.Element) *Composite {
	c := &Composite{
		left:  a.CloneLiteral(),
		right: b.CloneLiteral(),
	}
	c.init()
	return c
}
//turns $a$ and $e\cdot a$ or $a\cdot e$ depending on "left". This is a step of proof.
func Unsimplify(el gt.Element, left bool) *Composite {
	if left {
		n := Compose(NewIdentity(), el)
		n.setToken(el.token())
		return n
	} else {
		n := Compose(el, NewIdentity())
		n.setToken(el.token())
		return n
	}
}