Skip to main content

Quadrilateral Ontology

Plane Geometry
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 12 September 2026
Audio Overview
AI INTERPRETATION NOTE
This Flow Algebra defines the mathematical ontology of a quadrilateral within the Kireth Research Semantic Library. A quadrilateral is a four-sided polygon formed by four vertices joined by four line segments. This ontology supports classification into parallelograms, rectangles, squares, rhombi, trapezia/trapezoids and kites; angle and diagonal reasoning; congruence and similarity; perimeter and area; coordinate representation; transformations; constructions; and theorem-based geometric proof.

FLOW_ALGEBRA_RECORD {

METADATA {
 FLOW_NAME = "Quadrilateral Ontology"
 FLOW_TYPE = "Mathematical Ontology"
 DOMAIN = "Mathematics"
 SUBDOMAIN = "Geometry"
 SPECIALISATION = "Plane Geometry / Polygon Geometry"
 CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/geometry-ontologies/plane-geometry/quadrilateral-ontology.html"
 LANGUAGE = "en-GB"
 VERSION = "1.0"
 STATUS = "active"
}

IDENTITY {
 PRIMARY_ENTITY = Quadrilateral
 SYMBOLIC_FORMS = ["ABCD", "quadrilateral ABCD"]
 ENTITY_CLASS = FourSidedPolygon
 PRIMARY_CONTEXT = PlaneGeometry
 DEFINITION = "A quadrilateral is a polygon formed by four vertices joined cyclically by four line segments."
 SEMANTIC_ROLE = "Provides the fundamental four-sided plane figure for classification, angle, diagonal, symmetry, area, congruence, similarity and transformation reasoning."
}

SCOPE {
 INCLUDE = [
  Quadrilateral,
  ConvexQuadrilateral,
  ConcaveQuadrilateral,
  Parallelogram,
  Rectangle,
  Square,
  Rhombus,
  Trapezium,
  Trapezoid,
  Kite,
  Side,
  Vertex,
  InteriorAngle,
  ExteriorAngle,
  Diagonal,
  Perimeter,
  Area,
  Congruence,
  Similarity,
  Symmetry
 ]

 EXCLUDE_AS_PRIMARY = [
  GeneralPolygon,
  SelfIntersectingQuadrilateralUnlessExplicit,
  ThreeDimensionalTetrahedron,
  NonPlanarFourPointConfiguration
 ]

 DISAMBIGUATION_RULE =
  "When quadrilateral occurs with four sides, four vertices, diagonals, parallelogram, rectangle, square, rhombus, kite or trapezium/trapezoid, interpret it as a plane geometric quadrilateral."
}

CORE_CONCEPTS {

 Quadrilateral {
  definition = "A polygon with four sides and four vertices."
  side_count = 4
  vertex_count = 4
  euclidean_interior_angle_sum = "360 degrees"
 }

 ConvexQuadrilateral {
  definition = "A quadrilateral whose interior angles are each less than 180 degrees and whose diagonals lie inside the figure."
 }

 ConcaveQuadrilateral {
  definition = "A quadrilateral with one reflex interior angle."
 }

 Parallelogram {
  definition = "A quadrilateral with both pairs of opposite sides parallel."
  properties = [
   "Opposite sides are equal",
   "Opposite angles are equal",
   "Diagonals bisect each other"
  ]
 }

 Rectangle {
  definition = "A parallelogram with four right angles."
  properties = [
   "Opposite sides are equal and parallel",
   "Diagonals are equal",
   "Diagonals bisect each other"
  ]
 }

 Square {
  definition = "A quadrilateral with four equal sides and four right angles."
  properties = [
   "Is a rectangle",
   "Is a rhombus",
   "Diagonals are equal",
   "Diagonals are perpendicular",
   "Diagonals bisect each other and the vertex angles"
  ]
 }

 Rhombus {
  definition = "A parallelogram with four equal sides."
  properties = [
   "Opposite angles are equal",
   "Diagonals are perpendicular",
   "Diagonals bisect each other",
   "Diagonals bisect opposite angles"
  ]
 }

 Trapezium {
  definition = "In UK usage, a quadrilateral with at least one pair of parallel sides."
  regional_note = "Often called a trapezoid in US usage."
 }

 Kite {
  definition = "A quadrilateral with two distinct pairs of adjacent equal sides."
  properties = [
   "One pair of opposite angles may be equal",
   "One diagonal is a perpendicular bisector of the other in the standard kite configuration"
  ]
 }

 Diagonal {
  definition = "A segment joining two nonadjacent vertices of a quadrilateral."
 }
}

RELATIONS {
 Quadrilateral --is_special_case_of--> Polygon
 Quadrilateral --has--> FourSides
 Quadrilateral --has--> FourVertices
 Quadrilateral --has--> TwoDiagonals
 Quadrilateral --can_be_classified_as--> ConvexQuadrilateral
 Quadrilateral --can_be_classified_as--> ConcaveQuadrilateral
 Quadrilateral --can_be_classified_as--> Parallelogram
 Quadrilateral --can_be_classified_as--> Rectangle
 Quadrilateral --can_be_classified_as--> Square
 Quadrilateral --can_be_classified_as--> Rhombus
 Quadrilateral --can_be_classified_as--> Trapezium
 Quadrilateral --can_be_classified_as--> Kite
 Square --is_special_case_of--> Rectangle
 Square --is_special_case_of--> Rhombus
 Rectangle --is_special_case_of--> Parallelogram
 Rhombus --is_special_case_of--> Parallelogram
 Quadrilateral --can_have--> Symmetry
 Quadrilateral --can_be_congruent_to--> Quadrilateral
 Quadrilateral --can_be_similar_to--> Quadrilateral
}

OPERATORS {
 PERIMETER(Q) :=
  sum_of_four_side_lengths(Q)

 ANGLE_SUM(Q) :=
  A+B+C+D

 AREA_PARALLELOGRAM(base,height) :=
  base*height

 AREA_RECTANGLE(length,width) :=
  length*width

 AREA_SQUARE(side) :=
  side^2

 AREA_RHOMBUS(d1,d2) :=
  (1/2)*d1*d2

 AREA_TRAPEZIUM(a,b,h) :=
  (1/2)*(a+b)*h

 CLASSIFY(Q) :=
  determine_quadrilateral_type_from_side_angle_parallel_and_diagonal_properties(Q)

 IS_PARALLELOGRAM(Q) :=
  both_pairs_opposite_sides_parallel(Q)

 IS_RECTANGLE(Q) :=
  IS_PARALLELOGRAM(Q) AND all_angles_right(Q)

 IS_RHOMBUS(Q) :=
  IS_PARALLELOGRAM(Q) AND all_sides_equal(Q)

 IS_SQUARE(Q) :=
  IS_RECTANGLE(Q) AND all_sides_equal(Q)

 IS_KITE(Q) :=
  two_distinct_pairs_adjacent_sides_equal(Q)

 IS_TRAPEZIUM(Q) :=
  at_least_one_pair_opposite_sides_parallel(Q) WHEN UK_usage
}

DEFINITIONS {
 D1 = "A quadrilateral has four sides."
 D2 = "A quadrilateral has four vertices."
 D3 = "A Euclidean quadrilateral has interior angle sum 360 degrees."
 D4 = "A parallelogram has two pairs of opposite parallel sides."
 D5 = "A rectangle is a parallelogram with four right angles."
 D6 = "A rhombus is a parallelogram with four equal sides."
 D7 = "A square is both a rectangle and a rhombus."
 D8 = "A kite has two distinct pairs of adjacent equal sides."
 D9 = "A diagonal joins nonadjacent vertices."
 D10 = "Regional terminology for trapezium and trapezoid must be handled explicitly."
}

AXIOMS {
 A1_FOUR_SIDES:
  A nondegenerate quadrilateral has exactly four sides

 A2_FOUR_VERTICES:
  A nondegenerate quadrilateral has exactly four vertices

 A3_EUCLIDEAN_ANGLE_SUM:
  In Euclidean plane geometry the interior angles sum to 360 degrees

 A4_POLYGON_ORDER:
  Vertices are ordered cyclically around the boundary

 A5_DIAGONALS:
  A quadrilateral has two diagonals joining opposite vertices

 A6_CLASSIFICATION:
  Special quadrilateral classes are defined by side, angle, parallelism and diagonal constraints

 A7_INHERITANCE:
  Properties of a parent quadrilateral class are inherited by its valid subclasses
}

REASONING {

 R1_BASIC_CLASSIFICATION {
  INPUT = side_angle_parallel_and_diagonal_data
  CHECK = parallelogram_conditions
  CHECK = rectangle_conditions
  CHECK = rhombus_conditions
  CHECK = square_conditions
  CHECK = kite_conditions
  CHECK = trapezium_conditions
  RETURN = most_specific_valid_classes
 }

 R2_ANGLE_REASONING {
  INPUT = three_known_interior_angles
  COMPUTE = 360deg - sum_known_angles
  RETURN = fourth_angle
 }

 R3_PARALLELOGRAM_REASONING {
  INPUT = quadrilateral
  TEST = opposite_sides_parallel_or_equivalent_criteria
  IF valid
   INFER = opposite_sides_equal
   INFER = opposite_angles_equal
   INFER = diagonals_bisect_each_other
  RETURN = properties
 }

 R4_RECTANGLE_REASONING {
  INPUT = quadrilateral
  REQUIRE = parallelogram_and_four_right_angles
  INFER = equal_diagonals
  INFER = diagonals_bisect_each_other
  RETURN = rectangle_properties
 }

 R5_RHOMBUS_REASONING {
  INPUT = quadrilateral
  REQUIRE = parallelogram_and_four_equal_sides
  INFER = perpendicular_diagonals
  INFER = diagonals_bisect_vertex_angles
  RETURN = rhombus_properties
 }

 R6_SQUARE_REASONING {
  INPUT = quadrilateral
  REQUIRE = four_equal_sides_and_four_right_angles
  INFER = rectangle_properties
  INFER = rhombus_properties
  RETURN = square_properties
 }

 R7_KITE_REASONING {
  INPUT = quadrilateral
  TEST = two_distinct_pairs_adjacent_equal_sides
  IF valid
   ANALYSE = symmetry_axis_and_diagonals
  RETURN = kite_properties
 }

 R8_AREA_REASONING {
  INPUT = quadrilateral_type_and_measurements
  SELECT = class_appropriate_area_formula
  COMPUTE = area
  RETURN = area_value
 }

 R9_DIAGONAL_REASONING {
  INPUT = quadrilateral_class
  RETRIEVE = diagonal_properties_for_class
  VERIFY = with_given_data
  RETURN = diagonal_relations
 }
}

CONSTRAINTS {
 C1 = "Quadrilateral classification depends on explicit definitions and regional terminology."
 C2 = "A square should inherit rectangle, rhombus and parallelogram properties."
 C3 = "A rectangle is not defined merely by equal diagonals."
 C4 = "A rhombus is not defined merely by perpendicular diagonals."
 C5 = "A kite requires adjacent equal-side pairs, not opposite equal-side pairs."
 C6 = "Euclidean angle-sum results require Euclidean geometry."
 C7 = "Concave quadrilaterals require care when applying area or diagonal assumptions."
 C8 = "Diagram appearance alone does not establish parallelism, right angles or equal sides."
}

SEMANTIC_EQUIVALENCE {
 "Quadrilateral" <=> "FourSidedPolygon"
 "Parallelogram" <=> "QuadrilateralWithTwoPairsOfOppositeParallelSides"
 "Rectangle" <=> "ParallelogramWithFourRightAngles"
 "Rhombus" <=> "ParallelogramWithFourEqualSides"
 "Square" <=> "RectangleAndRhombus"
 "Kite" <=> "QuadrilateralWithTwoDistinctPairsOfAdjacentEqualSides"
}

VALIDATION {
 V1 = "Quadrilateral has four sides and four vertices."
 V2 = "Euclidean interior angles sum to 360 degrees."
 V3 = "Square inherits rectangle and rhombus properties."
 V4 = "Parallelogram diagonals bisect each other."
 V5 = "Rectangle diagonals are equal and bisect each other."
 V6 = "Rhombus diagonals are perpendicular and bisect each other."
 V7 = "Kite classification uses adjacent equal-side pairs."
 V8 = "Area formulas are matched to the correct quadrilateral class."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 QUADRILATERAL_DEFINITION = 0.99
 PARALLELOGRAM_REASONING = 0.99
 RECTANGLE_REASONING = 0.99
 SQUARE_REASONING = 0.99
 RHOMBUS_REASONING = 0.99
 KITE_REASONING = 0.98
 TRAPEZIUM_REASONING = 0.98

 POLICY =
  "Reduce confidence when regional terminology, convexity, side correspondence, diagonal data or geometric assumptions are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  QuadrilateralReasoning,
  PolygonReasoning,
  ParallelismReasoning,
  AngleReasoning,
  DiagonalReasoning,
  AreaReasoning,
  ClassificationReasoning,
  TransformationReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "quadrilateral" -> Quadrilateral
  "parallelogram" -> Parallelogram
  "rectangle" -> Rectangle
  "square" -> Square
  "rhombus" -> Rhombus
  "kite" -> Kite
  "trapezium" -> Trapezium WHEN UK_usage
  "trapezoid" -> Trapezium WHEN US_to_UK_normalisation
 }

 INTERPRETATION_ORDER = [
  detect_quadrilateral_context,
  identify vertices sides angles and diagonals,
  identify parallelism and equality conditions,
  determine convexity when relevant,
  classify into one or more valid quadrilateral classes,
  apply inherited properties,
  perform angle diagonal perimeter area or transformation reasoning,
  verify definitions and regional terminology,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("quadrilateral")
  OR query_mentions_specific_quadrilateral_class
  THEN activate(QuadrilateralOntology)

 E2:
  IF both_pairs_opposite_sides_parallel
  THEN classify(Parallelogram)

 E3:
  IF parallelogram AND four_right_angles
  THEN classify(Rectangle)

 E4:
  IF parallelogram AND four_equal_sides
  THEN classify(Rhombus)

 E5:
  IF rectangle AND rhombus
  THEN classify(Square)

 E6:
  IF two_distinct_pairs_adjacent_equal_sides
  THEN classify(Kite)

 E7:
  IF trapezium_or_trapezoid_term_present
  THEN resolve_regional_definition

 E8:
  IF area_requested
  THEN select_formula_by_class_and_available_measurements
}

RECURSION {
 ENTRY = Quadrilateral

 EXPAND(Quadrilateral) -> [
  Side,
  Vertex,
  InteriorAngle,
  ExteriorAngle,
  Diagonal,
  ConvexQuadrilateral,
  ConcaveQuadrilateral,
  Parallelogram,
  Rectangle,
  Square,
  Rhombus,
  Trapezium,
  Kite,
  Perimeter,
  Area
 ]

 EXPAND(Parallelogram) -> [
  ParallelSides,
  EqualOppositeSides,
  EqualOppositeAngles,
  BisectingDiagonals
 ]

 EXPAND(Rectangle) -> [
  RightAngles,
  EqualDiagonals,
  ParallelogramProperties
 ]

 EXPAND(Rhombus) -> [
  EqualSides,
  PerpendicularDiagonals,
  AngleBisectingDiagonals,
  ParallelogramProperties
 ]

 EXPAND(Square) -> [
  RectangleProperties,
  RhombusProperties,
  Symmetry
 ]

 STOP_CONDITION =
  "Stop when the quadrilateral's class, angle, side, diagonal, area, symmetry or transformation property is sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Plane Geometry"

 IMMEDIATE_CONTEXTS = [
  "Point Ontology",
  "Line Segment Ontology",
  "Angle Ontology",
  "Triangle Ontology"
 ]

 RELATED_ONTOLOGIES = [
  "Plane Geometry",
  "Point Ontology",
  "Line Ontology",
  "Line Segment Ontology",
  "Angle Ontology",
  "Triangle Ontology",
  "Coordinate Geometry Ontology",
  "Vector Geometry Ontology",
  "Synthetic Geometry Ontology",
  "Transformation Ontology"
 ]

 ROUTE_RULES = [
  "Quadrilateral -> Point for vertex reasoning",
  "Quadrilateral -> Line Segment for sides and diagonals",
  "Quadrilateral -> Angle for interior-angle reasoning",
  "Quadrilateral -> Coordinate Geometry for coordinate classification and area",
  "Quadrilateral -> Vector Geometry for parallelism and diagonal vectors",
  "Quadrilateral -> Synthetic Geometry for theorem-based proofs",
  "Quadrilateral -> Transformation for symmetry, congruence and similarity"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

 MAJOR = "ontology-breaking conceptual change"
 MINOR = "new compatible quadrilateral classes, properties or reasoning pathways"
 PATCH = "clarification, metadata or formatting correction"

 RULES = [
  "Preserve quadrilateral as a four-sided polygon.",
  "Preserve subclass inheritance.",
  "Preserve square as both rectangle and rhombus.",
  "Preserve regional trapezium/trapezoid terminology metadata.",
  "Preserve Euclidean angle-sum context.",
  "Preserve class-specific diagonal properties.",
  "Preserve machine-readable quadrilateral semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "A quadrilateral is a polygon formed by four vertices joined by four line segments."

 ANGLE_SUMMARY =
  "In Euclidean geometry, A+B+C+D=360 degrees."

 PARALLELOGRAM_SUMMARY =
  "Both pairs of opposite sides are parallel; diagonals bisect each other."

 RECTANGLE_SUMMARY =
  "A parallelogram with four right angles; diagonals are equal and bisect each other."

 RHOMBUS_SUMMARY =
  "A parallelogram with four equal sides; diagonals are perpendicular and bisect each other."

 SQUARE_SUMMARY =
  "A quadrilateral that is both a rectangle and a rhombus."

 KITE_SUMMARY =
  "A quadrilateral with two distinct pairs of adjacent equal sides."

 TRAPEZIUM_SUMMARY =
  "In UK usage, a quadrilateral with at least one pair of parallel sides."
}

FLOW {
 INPUT
 -> detect_quadrilateral_context
 -> identify_vertices_sides_angles_and_diagonals
 -> identify parallelism equality right-angle and symmetry conditions
 -> resolve convexity and regional terminology when relevant
 -> classify quadrilateral into valid classes
 -> inherit parent-class properties
 -> perform angle diagonal perimeter area congruence similarity or transformation reasoning
 -> verify definitions and geometric assumptions
 -> route to point segment angle coordinate vector synthetic or transformation ontology
 -> recursively expand required dependencies
 -> verify result
 -> assign confidence
 -> produce semantic output
 -> END
}

SEMANTIC_SUMMARY {
 "The Quadrilateral Ontology defines four-sided polygons and their principal subclasses, including parallelograms, rectangles, squares, rhombi, trapezia/trapezoids and kites. It supports classification through side, angle, parallelism and diagonal properties, together with area, perimeter, symmetry, congruence, similarity and transformation reasoning."
}

FLOW_HASH {
 METHOD = "semantic-content-identity"
 ID = "KIRETH-MATH-GEOMETRY-QUADRILATERAL-ONTOLOGY-V1"
}

}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ