Synthetic Geometry
Synthetic Geometry
The Wolfram Language provides not only extensive support for analytic geometry, but also support for the symbolic representation of synthetic geometry scenes in a form suitable for automated coordinate-independent reasoning.
Scene Representation and Visualization
Synthetic geometry scenes are represented in the Wolfram Language with GeometricScene . Scenes contain parameters representing named points and quantities, as well as hypotheses consisting of symbolic 2D regions and assertions involving those parameters. Conclusions can also be added to represent geometric theorems or conjectures that those hypotheses entail. Particular instances of a scene can be represented by specifying coordinates and values for all of the parameters appearing in the scene. Multiple instances of the same scene can be represented with a single GeometricScene object.
GeometricScene [{p1,p2,…},{hyp1,hyp2,…}]
abstract 2D geometric scene defined by the hypotheses hypi in terms of the symbolic points pi
GeometricScene [{{p1,p2,…},{k1,k2,…}},hyps]
scene whose hypotheses depend on the symbolic scalar values ki
GeometricScene [{p1{x1,y1},p2{x2,y2},…},hyps]
specific instance of a geometric scene with explicit coordinates for each point
GeometricScene [{{p1{x11,y11},…},{p1{x21,y21},…},…},hyps]
collection of specific instances of a scene
Wrapper for geometric scenes.
The simplest geometric scenes consist of only a list of points and a list of hypotheses.
Here is a scene consisting of a circumscribed triangle with one side on the diameter:
Geometric scenes can be visualized by finding a particular instance of the scene using RandomInstance .
Function to find instances of a geometric scene.
Display an interactive instance of the scene:
This finds several instances of the scene:
Many 2D regions can be used as hypotheses in a geometric scene. All regions appearing in the hypotheses of a geometric scene are assumed to be nondegenerate and are displayed in instances of that scene:
HalfLine [{p,q}]
half-infinite line, or ray, starting at the point p and passing through the point q
TriangleConstruct [{p,q,r},spec]
constructed geometric region defined by the triangle △ p q r specified by spec
2D regions supported in GeometricScene .
This is a more complex geometric scene:
Hypotheses can also be geometric assertions or equations involving geometric quantities defined on elements of the scene.
Geometric quantities supported by GeometricScene .
p∈reg
assertion that the point p is an element of the region reg
x1…
assertion that the regions/quantities xi are equal
Assertions supported by GeometricScene .
This is the scene description for Brahmagupta's theorem:
GeometricScene also supports style:
Specifying styles within GeometricScene .
Find a perfect polygon dissection:
Construct an equilateral triangle:
Finding Conjectures
The Wolfram Language can use these scene descriptions to find conjectures that may hold for a geometric scene.
FindGeometricConjectures [{scene1,scene2,…}]
find conjectures that might hold for the instances scenei
Function to find conjectures for a geometric scene.
Discover Thales's theorem:
Discover Pappus's hexagon theorem:
Discover Kosnita's theorem:
Discover the Finsler–Hadwiger theorem:
Geometric Reasoning
The Wolfram Language can perform logical reasoning on geometric scenes using such functions as GeometricSolveValues .
GeometricSolveValues [scene,{expr1,expr2,…}]
solve for multiple quanitites expr1,expr2, … defined by scene
Function to solve for values in a geometric scene.
Find the area of the quadrilateral in the following scene:
Find the area of a triangle in both a general scene and a specific instance of that scene:
Reasoning on geometric objects can be done using GeometricTest .
Function to test whether geometric objects satisfy a given property.
Determine if three points are collinear:
Find conditions for three abstract points to be collinear:
Find conditions for multiple predicates to hold for a single geometric object: