public bool IsInCanonicalOrder()

in Chemistry/src/DataModel/Fermion/HermitianFermionTerm.cs [103:123]


        public bool IsInCanonicalOrder()
        {
            if (IsInIndexOrder())
            {
                var creationSequence = Sequence.Where(o => o.Type == RaisingLowering.u).Select(o => o.Index);
                var annihilationSequence = Sequence.Where(o => o.Type == RaisingLowering.d).Select(o => o.Index);
                if (creationSequence.Count() == annihilationSequence.Count())
                {
                    if (CompareArray(creationSequence, annihilationSequence.Reverse()) > 0)
                    {
                        return false;
                    }
                }
                else if(creationSequence.Count() < annihilationSequence.Count())
                {
                    return false;
                }
                return true;
            }
            return false;
        }