The Point-Set and Line-Set of a Plane#

Introduction#

An affine or projective plane in Magma consists of three objects: the plane \(P\) itself, the point–set \(V\) of \(P\), and the line–set \(L\) of \(P\).

Although called the point–set and line–set, \(V\) and \(L\) are not actual Magma sets. They simply act as the parent structures for the points and lines (respectively) of the plane \(P\), enabling easy creation of these objects via the ! and . operators.

The point–set \(V\) belongs to the Magma category PlanePtSet, and the line–set \(L\) to the category PlaneLnSet.

In this section, the functions used to create point–sets, line–sets and the points and lines themselves are described.

Creating Point-Sets and Line-Sets#

As mentioned above, the point–set and line–set are returned as the second and third arguments of any function which creates a plane. They can also be created via the following two functions.

PointSet(P): Plane -> PlanePtSet#

Given a plane \(P\), return the point–set \(V\) of \(P\).

LineSet(P): Plane -> PlaneLnSet#

Given a plane \(P\), return the line–set \(L\) of \(P\).

Using the Point-Set and Line-Set to Create Points and Lines#

For efficiency and clarity, the points and lines of a plane are given special types in Magma. The category names for points and lines are PlanePt and PlaneLn respectively. They can be created in the following ways.

V . i: PlanePtSet, RngIntElt -> PlanePt#

Given the point–set \(V\) of a plane \(P\) and an integer \(i\), return the \(i\)-th point of \(P\).

V ! [a, b, c]: PlanePtSet, SeqEnum -> PlanePt#

Given the point–set \(V\) of a classical projective plane \(P = PG_2(K)\), and elements \(a, b, c\) of the finite field \(K\), create the projective point \((a : b : c)\) in the plane \(P\).

V ! [a, b]: PlanePtSet, SeqEnum -> PlanePt#

Given the point–set \(V\) of a classical affine plane \(P = AG_2(K)\), and elements \(a, b\) of the finite field \(K\), create the point \((a, b)\) in the plane \(P\).

V ! x: PlanePtSet, Elt -> PlanePt#

Given the point–set \(V\) of a plane \(P\), return the point of \(P\) corresponding to the element \(x\), which should be coercible into the underlying point set for \(P\). (In the case of classical planes, \(x\) should be coercible to a vector.)

Representative(V): PlanePtSet -> PlanePt#
Rep(V): PlanePtSet -> PlanePt#

Given the point–set \(V\) of a plane \(P\), return a representative point of \(P\).

Random(V): PlanePtSet -> PlanePt#

Given the point–set \(V\) of a plane \(P\), return a random point of \(P\).

L . i: PlanePtSet, RngIntElt -> PlanePt#

Given the line–set \(L\) of a plane \(P\) and an integer \(i\), return the \(i\)-th line of \(P\).

L ! [a, b, c]: PlaneLnSet, SeqEnum -> PlaneLn#

Given the line set \(L\) of a classical plane \(P\) defined over a finite field \(K\), and elements \(a, b, c\) of \(K\), create the line \(\left<a : b : c\right>\) (i.e. the line given by the equation \(ax + by + cz = 0\) if \(P\) is projective, or \(ax + by + c = 0\) if \(P\) is affine).

L ! [m, b]: PlaneLnSet, SeqEnum -> PlaneLn#

Given the line set \(L\) of a classical affine plane \(P = AG_2(K)\), and elements \(m, b\) of the finite field \(K\), create the affine line \(y = mx + b\) in \(P\).

L ! S: PlaneLnSet, SetEnum -> PlaneLn#
L ! S: PlaneLnSet, SeqEnum -> PlaneLn#

Given the line–set \(L\) of a plane \(P\) and a set or sequence \(S\) of collinear points of \(P\), return the line containing the points of \(S\).

L ! l: PlaneLnSet, PlaneLn -> PlaneLn#

Given the line–set \(L\) of a plane \(P\) and a line \(l\) of a (possibly) different plane (generally a subplane of \(P\)), return the line of \(P\) corresponding to \(l\).

Representative(L): PlaneLnSet -> PlaneLn#
Rep(L): PlaneLnSet -> PlaneLn#

Given the line–set \(L\) of a plane \(P\), return a representative line of \(P\).

Random(L): PlaneLnSet -> PlaneLn#

Given the line–set \(L\) of a plane \(P\), return a random line of \(P\).

Example: Points Lines (ex-afb4c8)#

The following example shows how points and lines of a plane can be created. First we study a classical projective plane.

> P, V, L := FiniteProjectivePlane(5);
> V;
Point-set of Projective Plane PG(2, 5)
> L;
Line-set of Projective Plane PG(2, 5)

Run in calculator

Create the third point of \(P\):

> V.3;
( 0 : 0 : 1 )

Run in calculator

Create the point \((1:2:3)\) of \(P\):

> V![1, 2, 3];
( 1 : 2 : 3 )

Run in calculator

Choose a random point of \(P\):

> Random(V);
( 1 : 0 : 0 )
> Random(V);
( 0 : 0 : 1 )

Run in calculator

Create the sixth line of \(P\):

> L.6;
< 1 : 1 : 3 >

Run in calculator

Create the line of \(P\) given by the equation 4x + 3y + 2z = 0:

> L![4, 3, 2];
< 1 : 2 : 3 >

Run in calculator

Create the line of \(P\) containing the points \((0:0:1)\) and \((0:1:0)\):

> L![ V | [0, 0, 1], [0, 1, 0] ];
< 1 : 0 : 0 >

Run in calculator

Get a representative from the line-set of \(P\), and a random line:

> Rep(L);
< 1 : 0 : 0 >
> Random(L);
< 1 : 2 : 4 >

Run in calculator

Now we look at a non-classical plane.

> V := {2, 4, 6, 8};
> A, P, L := FiniteAffinePlane< SetToIndexedSet(V) | Setseq(Subsets(V, 2)) >;
> A: Maximal;
Affine Plane of order 2
Points: {@ 2, 4, 6, 8 @}
Lines:
    {6, 8},
    {2, 6},
    {2, 8},
    {2, 4},
    {4, 6},
    {4, 8}
> P;
Point-set of Affine Plane of order 2
> L;
Line-set of Affine Plane of order 2

Run in calculator

Get the third point of \(A\):

> P.3;
6

Run in calculator

Create the point of \(A\) given by the integer 4:

> P!4;
4

Run in calculator

Get a representative from the point–set of \(A\):

> Rep(P);
2

Run in calculator

Get the third line of \(A\):

> L.3;
{2, 8}

Run in calculator

Create the line of \(A\) containing the integers 2 and 6:

> L![2, 6];
{2, 6}

Run in calculator

Choose a random line from \(A\):

> Random(L);
{6, 8}

Run in calculator

Retrieving the Plane from Points, Lines, Point-Sets and Line-Sets#

The ParentPlane function allows you to access the plane to which a point, line, point–set or line–set belongs.

ParentPlane(V): PlanePtSet -> Plane, PlanePtSet, PlaneLnSet#

The plane \(P\) for which \(V\) is the point–set.

ParentPlane(L): PlaneLnSet -> Plane, PlanePtSet, PlaneLnSet#

The plane \(P\) for which \(L\) is the line–set.

ParentPlane(p): PlanePt -> Plane, PlanePtSet, PlaneLnSet#

The plane \(P\) for which \(p\) is a point.

ParentPlane(l): PlaneLn -> Plane, PlanePtSet, PlaneLnSet#

The plane \(P\) for which \(l\) is a line.