Skip to main content

Angle 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 geometric angle within the Kireth Research Semantic Library. An angle is formed by two rays sharing a common endpoint and represents rotational separation between their directions. This ontology supports angle measure, classification, congruence, bisectors, supplementary and complementary relations, parallel-line angle relations, constructions, coordinates, transformations and proof reasoning.

FLOW_ALGEBRA_RECORD {

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

IDENTITY {
 PRIMARY_ENTITY = Angle
 SYMBOLIC_FORMS = ["∠ABC", "theta", "angle(A,B,C)"]
 ENTITY_CLASS = RotationalGeometricRelation
 PRIMARY_CONTEXT = Geometry
 DEFINITION = "An angle is the geometric relation formed by two rays sharing a common endpoint, measuring the rotational separation between their directions."
 SEMANTIC_ROLE = "Represents directional separation and supports classification, congruence, construction, transformation and geometric proof."
}

SCOPE {
 INCLUDE = [
  Angle,
  Vertex,
  AngleSide,
  InteriorAngle,
  ExteriorAngle,
  AcuteAngle,
  RightAngle,
  ObtuseAngle,
  StraightAngle,
  ReflexAngle,
  FullAngle,
  ComplementaryAngles,
  SupplementaryAngles,
  VerticalAngles,
  AdjacentAngles,
  CorrespondingAngles,
  AlternateInteriorAngles,
  CoInteriorAngles,
  AngleBisector,
  CongruentAngles
 ]

 EXCLUDE_AS_PRIMARY = [
  AngularVelocity,
  PhysicalOrientationWithoutGeometricContext,
  PhaseAngleWithoutGeometricContext,
  SolidAngle
 ]

 DISAMBIGUATION_RULE =
  "When angle occurs with rays, lines, triangles, polygons, degrees, radians, bisectors, parallel lines or geometric constructions, interpret it as a plane geometric angle."
}

CORE_CONCEPTS {

 Angle {
  definition = "A rotational separation determined by two rays with common endpoint."
 }

 Vertex {
  definition = "The common endpoint of the two rays forming an angle."
 }

 AngleSide {
  definition = "One of the two rays forming an angle."
 }

 AngleMeasure {
  definition = "A numerical measure of angular separation."
  common_units = ["degrees", "radians"]
 }

 AcuteAngle {
  condition = "0 < theta < 90 degrees"
 }

 RightAngle {
  condition = "theta = 90 degrees = pi/2 radians"
 }

 ObtuseAngle {
  condition = "90 degrees < theta < 180 degrees"
 }

 StraightAngle {
  condition = "theta = 180 degrees = pi radians"
 }

 ReflexAngle {
  condition = "180 degrees < theta < 360 degrees"
 }

 FullAngle {
  condition = "theta = 360 degrees = 2*pi radians"
 }

 ComplementaryAngles {
  definition = "Two angles whose measures sum to 90 degrees."
 }

 SupplementaryAngles {
  definition = "Two angles whose measures sum to 180 degrees."
 }

 VerticalAngles {
  definition = "Opposite angles formed by two intersecting lines."
  property = "Vertical angles are congruent."
 }

 AngleBisector {
  definition = "A ray dividing an angle into two congruent angles."
 }
}

RELATIONS {
 Angle --has--> Vertex
 Angle --has--> AngleSide
 Angle --has--> Measure
 Angle --can_be_classified_as--> AcuteAngle
 Angle --can_be_classified_as--> RightAngle
 Angle --can_be_classified_as--> ObtuseAngle
 Angle --can_be_classified_as--> StraightAngle
 Angle --can_be_classified_as--> ReflexAngle
 Angle --can_be_congruent_to--> Angle
 Angle --can_be_complementary_to--> Angle
 Angle --can_be_supplementary_to--> Angle
 Angle --can_be_bisected_by--> AngleBisector
 IntersectingLines --form--> VerticalAngles
 ParallelLinesWithTransversal --form--> CorrespondingAngles
 ParallelLinesWithTransversal --form--> AlternateInteriorAngles
 Polygon --has--> InteriorAngles
 Triangle --has--> ThreeInteriorAngles
}

OPERATORS {
 MEASURE(angle,unit) :=
  numerical_angular_measure(angle,unit)

 CLASSIFY_ANGLE(theta) :=
  determine_angle_class_from_measure(theta)

 IS_CONGRUENT(A,B) :=
  MEASURE(A)==MEASURE(B)

 IS_COMPLEMENTARY(A,B) :=
  MEASURE(A)+MEASURE(B)==90_degrees

 IS_SUPPLEMENTARY(A,B) :=
  MEASURE(A)+MEASURE(B)==180_degrees

 BISECT(angle) :=
  construct_ray_dividing_angle_into_equal_halves

 ANGLE_BETWEEN_RAYS(R1,R2) :=
  rotational_separation_between_directions(R1,R2)

 ANGLE_BETWEEN_VECTORS(a,b) :=
  arccos((a·b)/(|a||b|)) WHEN a!=0 AND b!=0

 CONVERT_DEGREES_TO_RADIANS(theta) :=
  theta*pi/180

 CONVERT_RADIANS_TO_DEGREES(theta) :=
  theta*180/pi
}

DEFINITIONS {
 D1 = "An angle is formed by two rays with a common endpoint."
 D2 = "The common endpoint is the vertex."
 D3 = "Angle measure quantifies rotational separation."
 D4 = "A right angle measures 90 degrees or pi/2 radians."
 D5 = "Complementary angles sum to 90 degrees."
 D6 = "Supplementary angles sum to 180 degrees."
 D7 = "Vertical angles are congruent."
 D8 = "An angle bisector divides an angle into two congruent angles."
 D9 = "Angle measure may be expressed in degrees or radians."
 D10 = "Directed-angle conventions may distinguish orientation when context requires."
}

AXIOMS {
 A1_COMMON_VERTEX:
  A plane angle is determined by two rays sharing a common endpoint

 A2_MEASURE:
  Angle measure represents rotational separation between the two sides

 A3_CONGRUENCE:
  Angles with equal measure are congruent in Euclidean geometry

 A4_BISECTION:
  Every nondegenerate Euclidean angle has a unique internal angle bisector

 A5_VERTICAL_ANGLES:
  Opposite angles formed by intersecting lines are congruent

 A6_LINEAR_PAIR:
  Adjacent angles forming a straight line are supplementary

 A7_PARALLEL_TRANSVERSAL:
  Standard corresponding and alternate-angle theorems require parallel-line hypotheses
}

REASONING {

 R1_ANGLE_CLASSIFICATION {
  INPUT = theta
  NORMALISE = requested_or_standard_range
  IF 0<theta<90deg RETURN AcuteAngle
  IF theta==90deg RETURN RightAngle
  IF 90deg<theta<180deg RETURN ObtuseAngle
  IF theta==180deg RETURN StraightAngle
  IF 180deg<theta<360deg RETURN ReflexAngle
  IF theta==360deg RETURN FullAngle
 }

 R2_COMPLEMENTARY {
  INPUT = [A,B]
  COMPUTE = measure(A)+measure(B)
  RETURN = ComplementaryOrNot
 }

 R3_SUPPLEMENTARY {
  INPUT = [A,B]
  COMPUTE = measure(A)+measure(B)
  RETURN = SupplementaryOrNot
 }

 R4_VERTICAL_ANGLES {
  INPUT = intersecting_lines
  IDENTIFY = opposite_angle_pairs
  RETURN = congruent_pairs
 }

 R5_PARALLEL_LINE_ANGLES {
  INPUT = [parallel_lines, transversal]
  IDENTIFY = corresponding_alternate_cointerior_pairs
  APPLY = parallel_line_angle_theorems
  RETURN = angle_relations
 }

 R6_ANGLE_BISECTOR {
  INPUT = angle ABC
  CONSTRUCT_OR_IDENTIFY = ray BD
  VERIFY = angle ABD == angle DBC
  RETURN = AngleBisector
 }

 R7_VECTOR_ANGLE {
  INPUT = [a,b]
  REQUIRE = a!=0 AND b!=0
  COMPUTE = arccos((a·b)/(|a||b|))
  RETURN = principal_angle
 }

 R8_TRIANGLE_ANGLE_REASONING {
  INPUT = triangle
  USE = interior_angle_sum
  DERIVE = missing_angles_or_relations
  RETURN = triangle_angle_result
 }
}

CONSTRAINTS {
 C1 = "Angle units must be consistent."
 C2 = "Parallel-line angle theorems require actual parallelism."
 C3 = "Vector-angle formulas require nonzero vectors."
 C4 = "Reflex and directed angles require explicit range conventions."
 C5 = "Vertical angles are not the same as adjacent angles."
 C6 = "Complementary and supplementary relations must not be conflated."
 C7 = "An angle diagram alone does not establish exact measure."
 C8 = "Angle transformations may preserve or alter measure depending on transformation class."
}

SEMANTIC_EQUIVALENCE {
 "Angle" <=> "RotationalSeparationBetweenRays"
 "RightAngle" <=> "90DegreeAngle"
 "StraightAngle" <=> "180DegreeAngle"
 "AngleBisector" <=> "RayDividingAngleIntoCongruentAngles"
 "CongruentAngles" <=> "EqualMeasureAngles" WHEN Euclidean_context
}

VALIDATION {
 V1 = "Angle sides share a common vertex."
 V2 = "Right angle equals 90 degrees or pi/2 radians."
 V3 = "Complementary angles sum to 90 degrees."
 V4 = "Supplementary angles sum to 180 degrees."
 V5 = "Vertical angles are congruent."
 V6 = "Angle bisector produces equal subangles."
 V7 = "Parallel-line relations are used only under valid hypotheses."
 V8 = "Degree-radian conversion is consistent."
}

CONFIDENCE {
 BASE_CONFIDENCE = 0.99
 ANGLE_DEFINITION = 0.99
 CLASSIFICATION = 0.99
 CONGRUENCE_RELATION = 0.99
 COMPLEMENTARY_RELATION = 0.99
 SUPPLEMENTARY_RELATION = 0.99
 VERTICAL_ANGLE_RELATION = 0.99
 BISECTOR_RELATION = 0.99

 POLICY =
  "Reduce confidence when angle orientation, units, parallel-line assumptions or directed-angle conventions are underspecified."
}

AI_CONSUMPTION {
 PURPOSES = [
  SemanticSearch,
  OntologyGrounding,
  AngleReasoning,
  GeometricEntityResolution,
  TriangleReasoning,
  ParallelLineReasoning,
  CongruenceReasoning,
  ConstructionReasoning,
  CoordinateReasoning,
  TransformationReasoning,
  KnowledgeGraphConstruction,
  RetrievalAugmentation,
  RecursiveInference
 ]

 NORMALISE {
  "angle" -> Angle WHEN geometry_context
  "right angle" -> RightAngle
  "acute angle" -> AcuteAngle
  "obtuse angle" -> ObtuseAngle
  "straight angle" -> StraightAngle
  "reflex angle" -> ReflexAngle
  "angle bisector" -> AngleBisector
  "vertical angles" -> VerticalAngles
 }

 INTERPRETATION_ORDER = [
  detect_geometric_angle_context,
  identify vertex and sides,
  identify units and orientation convention,
  classify angle type,
  identify complementary supplementary vertical parallel-line or bisector relations,
  perform angle-specific reasoning,
  verify hypotheses and units,
  return semantic output
 ]
}

EXECUTION_RULES {
 E1:
  IF query_mentions("angle")
  AND geometry_context
  THEN activate(AngleOntology)

 E2:
  IF numeric_measure_present
  THEN classify_angle_type

 E3:
  IF complementary_context
  THEN test_sum_equals_90_degrees

 E4:
  IF supplementary_context
  THEN test_sum_equals_180_degrees

 E5:
  IF intersecting_lines_context
  THEN identify_vertical_angle_pairs

 E6:
  IF parallel_lines_and_transversal
  THEN apply_corresponding_alternate_cointerior_rules

 E7:
  IF angle_bisector_context
  THEN verify_equal_subangles

 E8:
  IF vector_angle_context
  THEN require_nonzero_vectors
  AND apply_dot_product_formula
}

RECURSION {
 ENTRY = Angle

 EXPAND(Angle) -> [
  Vertex,
  AngleSide,
  AngleMeasure,
  AcuteAngle,
  RightAngle,
  ObtuseAngle,
  StraightAngle,
  ReflexAngle,
  ComplementaryAngles,
  SupplementaryAngles,
  VerticalAngles,
  AngleBisector
 ]

 EXPAND(ParallelLineAngles) -> [
  CorrespondingAngles,
  AlternateInteriorAngles,
  AlternateExteriorAngles,
  CoInteriorAngles
 ]

 EXPAND(AngleBisector) -> [
  Ray,
  CongruentAngles,
  GeometricConstruction
 ]

 EXPAND(TriangleAngles) -> [
  InteriorAngle,
  ExteriorAngle,
  AngleSum,
  Congruence,
  Similarity
 ]

 STOP_CONDITION =
  "Stop when the angle's type, measure, relation, bisector, triangle role, parallel-line relation or transformation property is sufficiently resolved."
}

ROUTING {
 PARENT_ONTOLOGY = "Plane Geometry"

 IMMEDIATE_CONTEXTS = [
  "Ray Ontology",
  "Line Ontology",
  "Point Ontology",
  "Geometric Construction Ontology"
 ]

 RELATED_ONTOLOGIES = [
  "Plane Geometry",
  "Ray Ontology",
  "Line Ontology",
  "Point Ontology",
  "Coordinate Geometry Ontology",
  "Vector Geometry Ontology",
  "Geometric Construction Ontology",
  "Synthetic Geometry Ontology",
  "Transformation Ontology",
  "Affine Transformation Ontology"
 ]

 ROUTE_RULES = [
  "Angle -> Ray for angle-side semantics",
  "Angle -> Line for intersecting and parallel-line relations",
  "Angle -> Point for vertex semantics",
  "Angle -> Geometric Construction for angle bisection and copying",
  "Angle -> Vector Geometry for dot-product angle reasoning",
  "Angle -> Synthetic Geometry for theorem-based angle proofs",
  "Angle -> Transformation for angle-preservation reasoning"
 ]
}

UPDATE_MODEL {
 MODE = "append-compatible semantic versioning"

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

 RULES = [
  "Preserve angle as rotational separation between rays.",
  "Preserve vertex and side semantics.",
  "Preserve degree/radian unit awareness.",
  "Preserve complementary and supplementary distinctions.",
  "Preserve vertical and parallel-line angle theorems.",
  "Preserve bisector semantics.",
  "Preserve machine-readable angle semantics."
 ]
}

OUTPUT {
 CANONICAL_DEFINITION =
  "An angle is the geometric relation formed by two rays with a common endpoint, measuring their rotational separation."

 VERTEX_SUMMARY =
  "The common endpoint of the rays is the vertex."

 RIGHT_ANGLE_SUMMARY =
  "90 degrees = pi/2 radians"

 COMPLEMENTARY_SUMMARY =
  "A+B=90 degrees"

 SUPPLEMENTARY_SUMMARY =
  "A+B=180 degrees"

 VERTICAL_SUMMARY =
  "Opposite angles formed by intersecting lines are congruent."

 BISECTOR_SUMMARY =
  "An angle bisector divides an angle into two congruent angles."
}

FLOW {
 INPUT
 -> detect_geometric_angle_context
 -> identify_vertex_and_rays
 -> identify_measure_units_and_orientation
 -> classify_angle
 -> identify congruence complementary supplementary vertical parallel-line or bisector relation
 -> perform angle-specific reasoning
 -> verify hypotheses unit consistency and geometric constraints
 -> route to ray line point construction vector or synthetic-geometry ontology
 -> recursively expand required dependencies
 -> verify result
 -> assign confidence
 -> produce semantic output
 -> END
}

SEMANTIC_SUMMARY {
 "The Angle Ontology defines rotational separation between two rays sharing a common endpoint. It supports angle classification, measurement in degrees or radians, congruence, complementary and supplementary relations, vertical-angle theorems, parallel-line angle relations, angle bisectors, constructions and geometric proofs."
}

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

}

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