Script(
Definition(point(),A::Point,null),
Definition(line(A::Point,B::Point),a::Line,not(is(A,B))),
Definition(segment(A::Point,B::Point),s::Segment,not(is(A,B))),
Definition(length(segment(A::Point,B::Point)),[distance(A,B)],null),
Definition(halfline(A::Point,B::Point),h::Halfline,not(is(A,B))),
Definition(triangle(A::Point,B::Point,C::Point),t::Triangle,not(collinear(A,B,C))),
Definition(quadrilateral(A::Point,B::Point,C::Point,D::Point),a::Quadrilateral,null),
Definition(angle(A::Point,B::Point,C::Point),a::Angle,and(not(is(A,B)),not(is(B,C)),not(is(A,C)))),
Definition(angle(line(A::Point,B::Point),line(C::Point,D::Point)),[angle(A,intersection(line(A,B),line(C,D)),C)whereintersect(line(A,B),line(C,D))],null),
Definition(conic(A::Point,B::Point,C::Point,D::Point,E::Point),c::Conic,null),
Definition(size(angle(A::Point,B::Point,C::Point)),s::Degree,null),
Definition(circle(O::Point,r::Length),c::Circle,not(equal(r,0::Length))),
Definition(arc(A::Point,B::Point,C::Point),a::Arc,null),
Definition(perpendicularline(A::Point,l::Line),[m::Linewhereand(incident(A,m),perpendicular(m,l))],null),
Definition(parallelline(A::Point,l::Line),[m::Linewhereand(incident(A,m),parallel(m,l))],not(incident(A,l))),
Definition(is(A::Point,B::Point),b::Boolean,null),
Definition(is(line(A::Point,B::Point),l::Line),[and(incident(A,l),incident(B,l))],null),
Definition(is(triangle(A::Point,B::Point,C::Point),triangle(D::Point,E::Point,F::Point)),[and(is(A,D),is(B,E),is(C,F))],null),
Definition(incident(A::Point,o::Circle),[equal(distance(center(o),A),length(radius(o)))],null),
Definition(incident(A::Point,l::Line),b::Boolean,null),
Definition(incident(A::Point,segment(B::Point,C::Point)),[and(incident(A,line(B,C)),differentside(B,C,A))],null),
Definition(incident(A::Point,line(B::Point,C::Point)),b::Boolean,null),
Definition(incident(A::Point,halfline(B::Point,C::Point)),[and(incident(A,line(B,C)),sameside(A,C,B))],null),
Definition(incident(A::Point,bisector(B::Point,C::Point,D::Point)),[equal(distance(A,line(B,C)),distance(A,line(C,D)))],null),
Definition(ratio(A::GeometricQuantity,B::GeometricQuantity),a::AlgebraicQuantity,null),
Definition(ratio(a::AlgebraicQuantity,b::AlgebraicQuantity),a::AlgebraicQuantity,null),
Definition(equal(ratio(A::GeometricQuantity,B::GeometricQuantity),ratio(a::AlgebraicQuantity,b::AlgebraicQuantity)),[equal(times(b,A),times(a,B))],null),
Definition(isout(A::Point,o::Circle),[lt(length(radius(o)),distance(A,center(o)))],null),
Definition(isin(A::Point,o::Circle),[lt(distance(A,center(o)),length(radius(o)))],null),
Definition(isin(O::Point,triangle(A::Point,B::Point,C::Point)),b::Boolean,null),
Definition(collinear(A::Point,B::Point,C::Point),[incident(A,line(B,C))],and(not(is(A,B)),not(is(B,C)))),
Definition(concurrent(l::Line,m::Line,n::Line),[incident(intersection(l,m),n)],and(not(is(l,n)),not(is(m,n)))),
Definition(concurrent(l::Segment,m::Segment,n::Segment),[incident(intersection(l,m),n)],and(not(is(l,n)),not(is(m,n)))),
Definition(perpendicular(line(A::Point,B::Point),line(C::Point,D::Point)),b::boolean,null),
Definition(parallel(line(A::Point,B::Point),line(C::Point,D::Point)),b::Boolean,null),
Definition(intersect(l::Line,m::Line),[not(parallel(l,m))],null),
Definition(intersect(l::Line,m::Circle),[lt(distance(center(m),l),length(radius(m)))],null),
Definition(intersect(m::Circle,n::Circle),[lt(distance(center(m),center(n)),plus(length(radius(m)),length(radius(n))))],null),
Definition(sameside(A::Point,B::Point,l::Line),b::Boolean,null),
Definition(sameside(A::Point,B::Point,C::Point),b::Boolean,collinear(A,B,C)),
Definition(differentside(A::Point,B::Point,l::Line),b::Boolean,null),
Definition(differentside(A::Point,B::Point,C::Point),b::Boolean,collinear(A,B,C)),
Definition(endpoint(segment(A::Point,B::Point)),{[A];[B]},null),
Definition(vertex(triangle(A::Point,B::Point,C::Point)),{[A];[B];[C]},null),
Definition(orthocenter(triangle(A::Point,B::Point,C::Point)),[concurrentpoint(altitudelines(triangle(A,B,C)))],null),
Definition(centroid(triangle(A::Point,B::Point,C::Point)),[concurrentpoint(median(A,side(B,C)),median(B,side(A,C)),median(C,side(A,B)))],null),
Definition(barycenter(triangle(A::Point,B::Point,C::Point)),[centroid(triangle(A,B,C))],null),
Definition(geometriccenter(triangle(A::Point,B::Point,C::Point)),[centroid(triangle(A,B,C))],null),
Definition(incenter(t::Triangle),[center(incircle(t))],null),
Definition(circumcenter(t::Triangle),[center(circumcircle(t))],null),
Definition(circumradius(t::Triangle),[radius(circumcircle(t))],null),
Definition(inradius(t::Triangle),[radius(incircle(t))],null),
Definition(midperpendicularline(segment(A::Point,B::Point)),[perpendicularline(midpoint(segment(A,B)),line(A,B))],null),
Definition(distance(A::Point,B::Point),l::Length,null),
Definition(distance(A::Point,l::Line),[distance(A,foot(A,l))],null),
Definition(pointon(o::Circle),[A::Pointwhereincident(A,o)],null),
Definition(pointon(l::Line),[A::Pointwhereincident(A,l)],null),
Definition(midpoint(A::Point,B::Point),[midpoint(segment(A,B))],null),
Definition(midpoint(segment(A::Point,B::Point)),[C::Pointwhereand(equal(distance(C,A),distance(C,B)),incident(C,line(A,B)))],null),
Definition(circle(O::Point,A::Point),[circle(O,distance(O,A))],null),
Definition(circle(A::Point,B::Point,C::Point),[circle(O::Point,A)whereand(equal(distance(O,A),distance(O,B)),equal(distance(O,A),distance(O,C)))],null),
Definition(foot(A::Point,l::Line),[intersection(perpendicularline(A,l),l)],not(incident(A,l))),
Definition(intersection(l::Line,m::Line),[A::Pointwhereand(incident(A,l),incident(A,m))],intersect(l,m)),
Definition(intersection(segment(A::Point,B::Point),segment(C::Point,D::Point)),[intersection(line(A,B),line(C,D))],null),
Definition(intersection(l::Line,o::Circle),{[A::Pointwhereand(incident(A,l),incident(A,o))];[B::Pointwhereand(incident(B,l),incident(B,o))]},intersect(l,o)),
Definition(intersection(halfline(A::Point,B::Point),o::Circle),[C::Pointwhereand(incident(C,halfline(A,B)),incident(C,o))],in(A,o)),
Definition(intersection(m::Circle,n::Circle),{[A::Pointwhereand(incident(A,m),incident(A,n))];[B::Pointwhereand(incident(B,m),incident(B,n))]},intersect(m,n)),
Definition(tangentpoint(l::Line,o::Circle),[A::Pointwhereand(incident(A,l),incident(A,o))],tangent(l,o)),
Definition(tangentpoint(m::Circle,n::Circle),[A::Pointwhereand(incident(A,m),incident(A,n))],tangent(m,n)),
Definition(2tangentline(A::Point,o::Circle),{[l::Linewhereand(incident(A,l),tangent(l,o))];[m::Linewhereand(incident(A,m),tangent(m,o))]},out(A,o)),
Definition(1tangentline(A::Point,o::Circle),[perpendicularline(A,line(A,Center(o)))],incident(A,o)),
Definition(center(circle(O::Point,r::Length)),[O],null),
Definition(radius(circle(O::Point,r::Length)),[segment(O,B::Point)whereequal(distance(O,B),r)],null),
Definition(length(radius(circle(O::Point,r::Length))),[r],null),
Definition(SBintangentcircle(A::Point,o::Circle),[circle(A,B::Point)whereSBintangent(circle(A,B),o)],and(in(A,o),not(is(A,center(o))))),
Definition(BSintangentcircle(A::Point,o::Circle),[circle(A,B::Point)whereBSintangent(circle(A,B),o)],not(is(A,center(o)))),
Definition(extangentcircle(A::Point,o::Circle),[circle(A,B::Point)whereextangent(circle(A,B),o)],out(A,o)),
Definition(tangent(m::Circle,n::Circle),[or(extangent(m,n),intangent(m,n))],null),
Definition(tangentcircle(A::Point,o::Circle),[circle(A,B::Point)wheretangent(circle(A,B),o)],not(is(A,center(o)))),
Definition(extangent(m::Circle,n::Circle),[equal(plus(length(radius(m)),length(radius(n))),distance(center(m),center(n)))],null),
Definition(intangent(m::Circle,n::Circle),[or(BSintangent(m,n),SBintangent(m,n))],null),
Definition(BSintangent(m::Circle,n::Circle),[equal(minus(length(radius(m)),length(radius(n))),distance(center(m),center(n)))],null),
Definition(SBintangent(m::Circle,n::Circle),[equal(minus(length(radius(n)),length(radius(m))),distance(center(m),center(n)))],null),
Definition(side(A::Point,B::Point),[segment(A,B)],null),
Definition(sides(triangle(A::Point,B::Point,C::Point)),{[side(A,B)];[side(A,C)];[side(B,C)]},null),
Definition(median(A::Point,segment(B::Point,C::Point)),[segment(A,midpoint(segment(B,C)))],not(collinear(A,B,C))),
Definition(medians(triangle(A::Point,B::Point,C::Point)),{[median(A,segment(B,C))];[median(B,segment(A,C))];[median(C,segment(A,B))]},null),
Definition(cevian(A::Point,segment(B::Point,C::Point)),[segment(A,D::Point)whereincident(D,segment(B,C))],not(collinear(A,B,C))),
Definition(altitude(A::Point,segment(B::Point,C::Point)),[segment(A,foot(A,line(B,C)))],not(collinear(A,B,C))),
Definition(altitudes(triangle(A::Point,B::Point,C::Point)),{[altitude(A,segment(B,C))];[altitude(B,segment(A,C))];[altitude(C,segment(A,B))]},null),
Definition(altitudeline(A::Point,segment(B::Point,C::Point)),[perpendicularline(A,line(B,C))],not(collinear(A,B,C))),
Definition(altitudelines(triangle(A::Point,B::Point,C::Point)),{[altitudeline(A,segment(B,C))];[altitudeline(B,segment(A,C))];[altitudeline(C,segment(A,B))]},null),
Definition(bisectorline(A::Point,B::Point,C::Point),[line(B,D::Point)whereequal(size(angle(C,B,D)),size(angle(D,B,A)))],null),
Definition(bisector(B::Point,A::Point,C::Point),[segment(A,intersection(bisectorline(B,A,C),line(B,C)))],not(collinear(A,B,C))),
Definition(bisectors(triangle(A::Point,B::Point,C::Point)),{[bisector(A,B,C)];[bisector(B,C,A)];[bisector(C,A,B)]},null),

Definition(ninepointcircle(triangle(A::Point,B::Point,C::Point)),[circle(midpoint(side(B,C)),midpoint(side(A,C)),midpoint(side(A,B)))],null),
Definition(Eulerpoint(A::Point,t::Triangle),[midpoint(segment(A,orthocenter(t)))],null),
Definition(Eulerline(a::Triangle),[collinearline(orthocenter(a),centroid(a),circumcenter(a))],null),
Definition(collinearline(A::Point,B::Point,C::Point),[line(choosediff({A;B;C},2))],collinear(A,B,C)),
Definition(concurrentpoint(l::Line,m::Line,n::Line),[intersection(choosediff({l;m;n},2))],concurrent(l,m,n)),
Definition(concurrentpoint(segment(A::Point,B::Point),segment(C::Point,D::Point),segment(E::Point,F::Point)),[concurrentpoint(line(A,B),line(C,D),line(E,F))],null),
Definition(circumcircle(triangle(A::Point,B::Point,C::Point)),[circle(A,B,C)],null),
Definition(incircle(triangle(A::Point,B::Point,C::Point)),[circle(O::Point,distance(O,line(A,B)))whereand(equal(distance(O,line(A,B)),distance(O,line(B,C))),equal(distance(O,line(A,B)),distance(O,line(A,C))),isin(O,triangle(A,B,C)))],null),
Definition(excircle(C::Point,side(A::Point,B::Point)),[circle(O::Point,distance(O,line(A,B)))whereand(equal(distance(O,line(A,B)),distance(O,line(B,C))),equal(distance(O,line(A,B)),distance(O,line(A,C))),differentside(A,O,line(B,C)))],null),
Definition(excircle(triangle(A::Point,B::Point,C::Point)),{[excircle(A,side(B,C))];[excircle(B,side(A,C))];[excircle(C,side(A,B))]},null),

Definition(escenter(C::Point,side(A::Point,B::Point)),[center(excircle(C,side(A,B)))],null),

Definition(escenter(triangle(A::Point,B::Point,C::Point)),{[center(excircle(A,side(B,C)))];[center(excircle(B,side(A,C)))];[center(excircle(C,side(A,B)))]},null),

Definition(tritangentcircle(triangle(A::Point,B::Point,C::Point)),{[incircle(triangle(A,B,C))];[excircle(A,side(B,C))];[excircle(B,side(A,C))];[excircle(C,side(A,B))]},null),
Definition(equilateraltriangle(A::Point,B::Point,C::Point),[triangle(A,B,C)whereand(equal(length(side(A,B)),length(side(A,C))),equal(length(side(A,B)),length(side(B,C))))],null),
Definition(externalequilateraltriangle(segment(A::Point,B::Point),C::Point),[equilateraltriangle(A,B,D::Point)wheredifferentside(C,D,line(A,B))],not(incidentLine(C,line(A,B)))),
Definition(Napoleontriangle(triangle(A::Point,B::Point,C::Point)),[triangle(barycenter(externalequilateraltriangle(side(B,C),A)),barycenter(externalequilateraltriangle(side(C,A),B)),barycenter(externalequilateraltriangle(side(A,B),C)))],null),
Definition(Pappus(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point,P::Point,Q::Point,R::Point),[configuration(C:=pointon(line(A,B)),F:=pointon(line(D,E)),P:=intersection(line(A,E),line(D,B)),Q:=intersection(line(A,F),line(D,C)),R:=intersection(line(B,F),line(E,C)))],null),
Definition(concyclic(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point),[configuration(O::Point:=center(circle(A,B,C)),incident(D,circle(O,A)),incident(E,circle(O,A)),incident(F,circle(O,A)))],null),
Definition(concyclic(A::Point,B::Point,C::Point,D::Point),[incident(D,circle(A,B,C))],null),
Definition(completequadrilateral(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point),[configuration(E:=intersection(line(A,B),line(C,D)),F:=intersection(line(A,C),line(B,D)))],null),
Definition(diagonal(completequadrilateral(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point)),{[segment(A,D)];[segment(B,C)];[segment(E,F)]},null),
Definition(Gaussline(A::Point,B::Point,C::Point,D::Point),[collinearline(midpoint(diagonal(completequadrilateral(A,B,C,D,E::Point,F::Point))))],null),
Definition(Simsonline(D::Point,triangle(A::Point,B::Point,C::Point)),[collinearline(foot(D,side(A,B)),foot(D,side(A,C)),foot(D,side(B,C)))],null),
Definition(mediator(segment(A::Point,B::Point)),[midperpendicularline(segment(A,B))],null),
Definition(orthictriangle(triangle(A::Point,B::Point,C::Point)),[triangle(foot(A,side(B,C)),foot(B,side(A,C)),foot(C,side(A,B)))],null),
Definition(homothetic(triangle(A::Point,B::Point,C::Point),triangle(A::Point,B::Point,C::Point)),[and(parallel(line(A,B),line(D,E)),parallel(line(A,C),line(D,F)),parallel(line(B,C),line(E,F)))],null),
Definition(homotheticcenter(triangle(A::Point,B::Point,C::Point),triangle(D::Point,E::Point,F::Point)),[concurrentpoint(line(A,D),line(B,E),line(C,F))],null),
Definition(tangentialtriangle(triangle(A::Point,B::Point,C::Point)),[triangle(D::Point,E::Point,F::Point)whereand(equal(length(segment(O::Point,A)),length(segment(O,B))),equal(length(segment(O,A)),length(segment(O,C))),perpendicular(line(O,A),line(E,F)),perpendicular(line(O,B),line(D,F)),perpendicular(line(O,C),line(D,E)))],null),
Definition(antiparallel(l::Line,m::Line,n::Line),[equal(size(angle(l,n)),size(angle(n,m)))],null),
Definition(orthorcentricgroup(H::Point,triangle(A::Point,B::Point,C::Point)),[configuration(H:=orthocenter(triangle(A,B,C)))],null),
Definition(circumdiameterline(A::Point,side(B::Point,C::Point)),[line(A,circumcenter(triangle(A,B,C)))],null),
Definition(symmetry(A::Point,line(B::Point,C::Point)),[D::Pointwhereand(perpendicular(line(A,D),line(B,C)),equal(distance(A,line(B,C)),distance(D,line(B,C))))],null),
Definition(anticomplementarytriangle(triangle(A::Point,B::Point,C::Point)),[triangle(D::Point,E::Point,F::Point)whereand(is(A,midpoint(segment(D,E))),is(B,midpoint(segment(E,F))),is(C,midpoint(segment(D,F))))],null),
Definiiton(anticenter(cyclicquadrilateral(A::Point,B::Point,C::Point,D::Point)),[concurrentpoint(maltitude(quadrilateral(A,B,C,D)))],null),
Definition(maltitude(quadrilateral(A::Point,B::Point,C::Point,D::Point)),{[perpendicularline(midpoint(A,B),line(C,D))];[perpendicularline(midpoint(B,C),line(A,D))];[perpendicularline(midpoint(C,D),line(A,B))];[perpendicularline(midpoint(A,D),line(B,C))]},null),
Definition(cyclicquadrilateral(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,D)whereincident(D,circle(A,B,C))],null),
Definition(orthodiagonalquadrilateral(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,D)whereperpendicular(line(A,C),line(B,D))],null),
Definition(Miquelcircle(A::Point,D::Point,E::Point,side(B::Point,C::Point)),[circle(A,D,E)whereand(incident(D,segment(A,B)),incident(E,segment(A,C)))],null),
Definition(contacttriangle(triangle(A::Point,B::Point,C::Point)),[triangle(foot(O::Point,line(A,B)),foot(O,line(A,C)),foot(O,line(B,C)))whereis(O,incenter(triangle(A,B,C)))],null),
Definition(parallelogram(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,D)whereand(parallel(line(A,B),line(C,D)),parallel(line(A,D),line(B,C)))],null)
)