TODO: NOTE: currently my "primitive roots" are actually just the numbers that generate every integer below the modulus, that is `a` such that `orbit(a) = Z_n` 1. How I'm calculating something as a primtive root, and its order is not correct. For instance, consider a modulus n=4, a=3 is a primitive root, and a=2 SHOULD have order 0 (it is aperiodic) This site is useful as a reference: https://owlsmath.neocities.org/Primitive%20Root%20Calculator/calculator 2. Make Noether into a mathematical programming language (like MATLAB), with the ability to create custom types (ie the integers modulo n) with specific properties like operator overloading. Then you could create functions that check whether a set and an operator form a group or not, etc. 2.1 Use ^ to indicate exponentiation, and use ^| to indicate xor