public void CalculateStrengthening()
        {
            //
            // Can a quadrilateral be strenghtened? Quad -> trapezoid, Quad -> Parallelogram?, etc.
            //
            foreach (Quadrilateral quad in quadrilaterals)
            {
                strengthened.AddRange(Quadrilateral.CanBeStrengthened(quad));
            }

            //
            // Can a triangle be strenghtened? Scalene -> Isosceles -> Equilateral?
            //
            foreach (Triangle t in triangles)
            {
                strengthened.AddRange(Triangle.CanBeStrengthened(t));
            }

            //
            // Can an inMiddle relationship be classified as a Midpoint?
            //
            foreach (InMiddle im in inMiddles)
            {
                Strengthened s = im.CanBeStrengthened();
                if (s != null)
                {
                    strengthened.Add(s);
                }
            }

            //
            // Right Angles
            //
            foreach (Angle angle in angles)
            {
                if (Utilities.CompareValues(angle.measure, 90))
                {
                    strengthened.Add(new Strengthened(angle, new RightAngle(angle)));
                }
            }

            //
            // Dumping the Strengthening
            //
            if (Utilities.DEBUG)
            {
                System.Diagnostics.Debug.WriteLine("Precomputed Strengthening");
                foreach (ConcreteAST.Strengthened s in strengthened)
                {
                    System.Diagnostics.Debug.WriteLine(s.ToString());
                }
            }
        }