public void Triangles_AreSelfInjective_WithUnusualFirstVertex() { const int FirstVertex = -123; var qps = Utility.InfiniteRange(2).Select(k => UsefulQPs.GetTriangleQP(k, FirstVertex)).TakeWhile(qp => qp.Quiver.Vertices.Count < 30); AssertAreSelfInjective(qps); }
public void ComputeMaximalNonzeroEquivalenceClassRepresentativesStartingAt_TriforceCorner() { var settings = GetSettings(detectNonCancellativity: false); var qp = UsefulQPs.GetTriangleQP(3); DoSetup(qp, out var ruleTree); var representatives = Computer.ComputeMaximalNonzeroEquivalenceClassRepresentativesStartingAt(qp.Quiver, 1, ruleTree, settings).MaximalNonzeroEquivalenceClassRepresentatives; var representativeArrowPaths = representatives.Select(path => path.Arrows).ToList(); var expectedRepresentative = new Arrow <int>[] { new Arrow <int>(1, 3), new Arrow <int>(3, 6) }; Assert.That(representativeArrowPaths, Has.Count.EqualTo(1)); Assert.That(representativeArrowPaths.Single(), Is.EqualTo(expectedRepresentative)); }
public void ComputeMaximalNonzeroEquivalenceClassRepresentativesStartingAt_TriforceInterior() { var settings = GetSettings(detectNonCancellativity: false); var qp = UsefulQPs.GetTriangleQP(3); DoSetup(qp, out var ruleTree); var representatives = Computer.ComputeMaximalNonzeroEquivalenceClassRepresentativesStartingAt(qp.Quiver, 2, ruleTree, settings).MaximalNonzeroEquivalenceClassRepresentatives.ToList(); var representativeArrowPaths = representatives.Select(path => path.Arrows); var expectedMaximalEquivalenceClasses = new ISet <IEnumerable <Arrow <int> > >[] { new HashSet <IEnumerable <Arrow <int> > > { new Arrow <int>[] { new Arrow <int>(2, 1), new Arrow <int>(1, 3) }, new Arrow <int>[] { new Arrow <int>(2, 5), new Arrow <int>(5, 3) } }, }; Assert.That(representatives, Has.Count.EqualTo(expectedMaximalEquivalenceClasses.Length)); foreach (var representative in representativeArrowPaths) { Assert.That(expectedMaximalEquivalenceClasses, Has.One.Contains(representative)); } }
public void Triangles_AreSelfInjective() { var qps = Utility.InfiniteRange(2).Select(k => UsefulQPs.GetTriangleQP(k)).TakeWhile(qp => qp.Quiver.Vertices.Count < 20); AssertAreSelfInjective(qps); }