()? ;		// --> ()
a?? ;		// --> a?
a+? ;		// --> a*
a*? ;		// --> a*
a_1^3? ;	// --> a_0^3
()+ ;		// --> ()
a?+ ;		// --> a*
a++ ;		// --> a+
a*+ ;		// --> a*
()* ;		// --> ()
a?* ;		// --> a*
a+* ;		// --> a*
a** ;		// --> a*
()^3 ;		// --> ()
a^0 ;		// --> ()
a^1 ;		// --> a
a?^3 ;		// --> a_0^3
a+^3 ;		// --> a_3~
a*^3 ;		// --> a*
a^2^3 ;		// --> a^5
a_2^3^4 ;	// --> a_8^12
()_3^5 ;	// --> ()
a_3^1 ;		// --> ()		[3 > 1]
a_3^3 ;		// --> a
a_0^1 ;		// --> a?
a_0~ ;		// --> a*
a_1~ ;		// --> a?
a?_2^3 ;	// --> a_0^5
a+_2^3 ;	// --> a_2~
a*_2^3 ;	// --> a*
().a ;		// --> a
a.() ;		// --> a
(a.b).c ;	// --> a.(b.c)
(a|b).c ;	// --> a.c|b.c
a.(b|c) ;	// --> a.b|a.c
a.a ;		// --> a^2
a.(a.b) ;	// --> a^2.b
a^3.a ;		// --> a^4
a.a^3 ;		// --> a^4
a.(a^3.b) ;	// --> a^4.b
a^3.(a.b) ;	// --> a^4.b
a^2.a^3 ;	// --> a^5
a^2.(a^3.b) ;	// --> a^5.b
a^2.a_3^6 ;	// --> a_5^8
a.a_2^3 ;	// --> a_3^4
a_2^3.a ;	// --> a_3^4
a_2^3.a^4 ;	// --> a_6^7
a_2^3.a_4^5 ;	// --> a_6^8
()|a ;		// --> a?
a|() ;		// --> a?
a?|b ;		// --> (a|b)?
a|b? ;		// --> (a|b)?
(a|b)|c ;	// --> a|(b|c)
b|a ;		// --> a|b		[a < b]
b|(a|c) ;	// --> a|(b|c)		[a < b]
a|a ;		// --> a
a|(a|b) ;	// --> a|b
a.b*|a ;	// --> a.b*
b*.a|a ;	// --> b*.a
a.b+|a ;	// --> a.b*
b+.a|a ;	// --> b*.a
a|a.b* ;	// --> a.b*
a|b*.a ;	// --> b*.a
a|a.b+ ;	// --> a.b*
a|b+.a ;	// --> b*.a
a^3|a^4 ;	// --> a_3^4
b^2|a^3 ;	// --> a^3|b^2		[a < b]
a^4|a^2 ;	// --> a^2|a^4		[2 < 4]
b^2|(a^3|c) ;	// --> a^3|(b^2|c)	[a < b]
a^4|(a^2|b) ;	// --> a^2|(a^4|b)	[2 < 4]
b_2^3|(a_4^5|c);// --> a_4^5|(b_2^3|c)	[a < b]
a_5^6|(a_2^3|b);// --> b_2^3|(a_5^6|b)	[2 < 5]
a_2^4|a_3^5 ;	// --> a_2^5		[4 >= 3]
