private static List<EdgeAggregator> CheckAndGenerateCongruentAdjacentImplyPerpendicular(Intersection intersection, CongruentAngles conAngles) { List<EdgeAggregator> newGrounded = new List<EdgeAggregator>(); // The given angles must belong to the intersection. That is, the vertex must align and all rays must overlay the intersection. if (!intersection.InducesBothAngles(conAngles)) return newGrounded; // // Now we have perpendicular scenario // Strengthened streng = new Strengthened(intersection, new Perpendicular(intersection)); // Construct hyperedge List<GroundedClause> antecedent = new List<GroundedClause>(); antecedent.Add(intersection); antecedent.Add(conAngles); newGrounded.Add(new EdgeAggregator(antecedent, streng, annotation)); return newGrounded; }