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
Download Code
Copy to Clipboard