Skip to main content

Inequality Ontology

Algebra Ontologies
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 20 September 2026
Audio Overview
FLOW Inequality_Ontology_v1.0

PAGE:
  title: "Inequality Ontology"
  canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/algebra-ontologies/inequality-ontology.html"
  language: "en-GB"
  domain: "Mathematics > Algebra > Inequalities"

DEFINE InequalityOntology := {

  CORE_IDENTITY: {
    entity_type: "Mathematical Ontology",
    primary_entity: Inequality,
    parent_entities: [MathematicalRelation, AlgebraicRelation, Algebra],
    related_entities: [
      Expression,
      Variable,
      Constant,
      Coefficient,
      OrderRelation,
      Solution,
      SolutionSet,
      Interval,
      NumberLine,
      LinearInequality,
      PolynomialInequality,
      RationalInequality,
      AbsoluteValueInequality,
      CompoundInequality,
      SystemOfInequalities
    ]
  },

  DEFINITION: {
    meaning:
      "A mathematical statement comparing two expressions using an order relation rather than asserting equality.",
    canonical_relation:
      L R R,
    relation_symbols: [<, <=, >, >=],
    optional_relation_symbols: [!=],
    left_expression: L,
    right_expression: R
  },

  SEMANTIC_PRIMITIVES: {
    LeftExpression:
-
      expression_on_left_side_of_relation,
    RightExpression:
-
      expression_on_right_side_of_relation,
    OrderRelation:
      comparator_defining_relative_order,
    Solution:
      value_or_tuple_making_inequality_true,
    SolutionSet:
      set_of_all_values_satisfying_inequality,
    Boundary:
      value_where_related_equality_holds,
    Interval:
      connected_subset_of_ordered_domain
  },

  ORDER_RELATIONS: {
    LessThan: <,
    LessThanOrEqual: <=,
    GreaterThan: >,
    GreaterThanOrEqual: >=,
    NotEqual: !=
  },

  STRICTNESS_MODEL: {
    strict_relations: [<, >],
    non_strict_relations: [<=, >=],
    strict_boundary_included: FALSE,
    non_strict_boundary_included: TRUE
  },

  STRUCTURAL_MODEL: {
    inequality:
      left_expression RELATION right_expression,

    domain:
      inherited_from_context_or_declared_domain,

    variables:
      one_or_more_symbolic_quantities,

    solution_semantics:
      predicate_over_domain
  },

  CORE_TRUTH_CONDITION: {
    candidate_value_c:
      substitute_into_left_and_right,

    valid_solution:
      evaluate_relation(L(c), R(c)) = TRUE,

    invalid_solution:
      evaluate_relation(L(c), R(c)) = FALSE
  },

  CLASSIFICATION: {

    LinearInequality: {
      condition:
        normalised_difference_has_degree_1_or_less
    },

    PolynomialInequality: {
      condition:
        normalised_difference_is_polynomial
    },

    RationalInequality: {
      condition:
        variable_occurs_in_denominator_after_simplification
    },

    AbsoluteValueInequality: {
      condition:
        absolute_value_operation_contains_variable_expression
    },

    RadicalInequality: {
      condition:
        variable_occurs_inside_radical
    },

    ExponentialInequality: {
      condition:
        variable_occurs_in_exponent
    },

    LogarithmicInequality: {
      condition:
        variable_occurs_inside_logarithm
    },

    CompoundInequality: {
      condition:
        two_or_more_inequality_relations_combined_logically
    },

    SystemOfInequalities: {
      condition:
        multiple_inequalities_share_variables
    }
  },

  NORMALISATION: {
    INPUT:
      inequality I,

    PROCESS: [
      parse_left_and_right,
      identify_relation_symbol,
      simplify_each_side,
      move_terms_to_preferred_side_when_useful,
      preserve_relation_semantics,
      classify_expression_type,
      record_domain_restrictions
    ],

    OUTPUT:
      NormalisedInequality
  },

  EQUIVALENCE_RULES: {

    AddSameQuantity: {
      L < R
      <=> L+k < R+k,

      L <= R
      <=> L+k <= R+k,

      applicability:
        all_ordered_field_values_k
    },

    SubtractSameQuantity: {
      L REL R
      <=> L-k REL R-k
    },

    MultiplyByPositive: {
      condition: k>0,
      rule:
        L REL R
        <=> k*L REL k*R,
      relation_direction_preserved: TRUE
    },

    DivideByPositive: {
      condition: k>0,
      relation_direction_preserved: TRUE
    },

    MultiplyByNegative: {
      condition: k<0,
      rule:
        relation_direction_reversed = TRUE
    },

    DivideByNegative: {
      condition: k<0,
      rule:
        relation_direction_reversed = TRUE
    }
  },

  RELATION_REVERSAL: {
    <  -> >,
    >  -> <,
    <= -> >=,
    >= -> <=,

    trigger:
      multiply_or_divide_both_sides_by_negative_quantity
  },

  LINEAR_INEQUALITY_SOLVING: {
    generic_form:
      a*x + b REL c,

    CASE a>0:
      x REL (c-b)/a,

    CASE a<0:
      x REVERSED_REL (c-b)/a,

    CASE a=0:
      evaluate_constant_truth_statement
  },

  CONSTANT_RESULT_CLASSIFICATION: {
    always_true:
      solution_set = entire_domain,

    always_false:
      solution_set = EmptySet
  },

  INTERVAL_NOTATION: {
    strict_lower_bound:
      use_parenthesis,

    strict_upper_bound:
      use_parenthesis,

    inclusive_lower_bound:
      use_square_bracket,

    inclusive_upper_bound:
      use_square_bracket,

    infinity_endpoints:
      always_use_parentheses
  },

  NUMBER_LINE_SEMANTICS: {
    open_boundary:
      strict_inequality,

    closed_boundary:
      inclusive_inequality,

    ray_direction:
      determined_by_greater_or_less_relation,

    union_of_intervals:
      disconnected_solution_regions
  },

  COMPOUND_INEQUALITIES: {

    AND_Compound: {
      semantic_operation:
        intersection,

      example_pattern:
        a < x AND x <= b,

      solution:
        intersection_of_component_solution_sets
    },

    OR_Compound: {
      semantic_operation:
        union,

      example_pattern:
        x<a OR x>b,

      solution:
        union_of_component_solution_sets
    }
  },

  CHAINED_INEQUALITY: {
    pattern:
      a < x <= b,

    equivalent_logic:
      a < x AND x <= b,

    solution_set:
      interval_with_correct_boundary_inclusion
  },

  ABSOLUTE_VALUE_INEQUALITIES: {

    form_less_than:
      |x-h| < k,

    precondition:
      k>=0,

    equivalent:
      h-k < x < h+k,

    form_less_equal:
      |x-h| <= k,

    equivalent:
      h-k <= x <= h+k,

    form_greater_than:
      |x-h| > k,

    equivalent:
      x < h-k OR x > h+k,

    form_greater_equal:
      |x-h| >= k,

    equivalent:
      x <= h-k OR x >= h+k
  },

  POLYNOMIAL_INEQUALITY_SOLVING: {
    INPUT:
      P(x) REL 0,

    PROCESS: [
      factor_polynomial_when_possible,
      find_real_roots,
      identify_critical_points,
      partition_real_line,
      determine_sign_on_each_interval,
      include_or_exclude_roots_according_to_relation,
      assemble_solution_set
    ],

    invariant:
      sign_analysis_matches_polynomial_value
  },

  SIGN_CHART_MODEL: {
    critical_points:
      real_zeros_and_domain_boundaries,

    intervals:
      regions_between_critical_points,

    sign_state:
      positive_negative_or_zero,

    solution_selection:
      choose_intervals_matching_requested_relation
  },

  MULTIPLICITY_EFFECT: {
    odd_multiplicity_root:
      sign_typically_changes_across_root,

    even_multiplicity_root:
      sign_typically_remains_same_across_root
  },

  RATIONAL_INEQUALITY_SOLVING: {
    form:
      P(x)/Q(x) REL 0,

    domain_restriction:
      Q(x) != 0,

    critical_points: [
      zeros_of_P,
      zeros_of_Q
    ],

    PROCESS: [
      factor_numerator_and_denominator,
      identify_critical_points,
      build_sign_chart,
      exclude_denominator_zeros_always,
      apply_boundary_inclusion_to_numerator_zeros,
      assemble_solution_intervals
    ]
  },

  DOMAIN_RESTRICTIONS: {
    denominator:
      cannot_equal_zero,

    even_root_radicand:
      must_be_nonnegative_over_real_domain,

    logarithm_argument:
      must_be_positive,

    inverse_function_constraints:
      inherited_from_function_definition
  },

  NONLINEAR_TRANSFORMATION_WARNINGS: {
    squaring_both_sides:
      may_not_preserve_equivalence_without_sign_conditions,

    taking_reciprocals:
      relation_direction_depends_on_signs,

    multiplying_by_variable_expression:
      direction_depends_on_sign_of_expression,

    dividing_by_variable_expression:
      requires_zero_case_and_sign_case_analysis
  },

  RECIPROCAL_RULES: {
    positive_values:
      IF 0<a<b
      THEN 1/a > 1/b,

    negative_values:
      ordering_requires_explicit_sign_analysis,

    zero:
      reciprocal_undefined
  },

  SQUARE_RULES: {
    rule:
      a<b DOES_NOT_GENERALLY_IMPLY a^2<b^2,

    valid_when:
      additional_sign_or_magnitude_constraints_are_known
  },

  SYSTEM_OF_INEQUALITIES: {
    solution_set:
      intersection_of_component_inequality_solution_sets,

    graphical_2D:
      overlapping_feasible_regions,

    related_concepts: [
      feasible_region,
      linear_programming,
      constraint_satisfaction
    ]
  },

  TWO_VARIABLE_LINEAR_INEQUALITY: {
    form:
      a*x + b*y REL c,

    boundary:
      a*x + b*y = c,

    strict_relation:
      boundary_not_included,

    inclusive_relation:
      boundary_included,

    solution:
      one_half_plane
  },

  GRAPHICAL_TEST_POINT_METHOD: {
    INPUT:
      boundary_line_and_inequality,

    PROCESS: [
      choose_point_not_on_boundary,
      evaluate_inequality,
      select_corresponding_half_plane
    ],

    special_case:
      if_origin_on_boundary_choose_different_test_point
  },

  FEASIBLE_REGION: {
    definition:
      intersection_of_all_constraint_regions,

    empty_region:
      inconsistent_inequality_system,

    nonempty_region:
      feasible_solution_set
  },

  ORDER_PROPERTIES: {
    Transitivity:
      IF a<b AND b<c THEN a<c,

    Antisymmetry_NonStrict:
      IF a<=b AND b<=a THEN a=b,

    Trichotomy_RealNumbers:
      exactly_one_of [a<b, a=b, a>b],

    TranslationInvariance:
      a<b <=> a+c<b+c
  },

  DOMAIN_MODEL: {
    common_ordered_domains: [
      Integers,
      RationalNumbers,
      RealNumbers
    ],

    complex_numbers:
      no_standard_total_order_compatible_with_field_structure,

    default_domain:
      RealNumbers
  },

  INTEGER_DOMAIN_SEMANTICS: {
    example:
      x>2 over Integers
      differs_from
      x>2 over RealNumbers,

    requirement:
      preserve_declared_domain_in_solution_representation
  },

  SYMBOLIC_RECOGNITION: {
    ACCEPT: [
      "x+3<7",
      "2x-5>=9",
      "x^2-4<=0",
      "(x-1)/(x+2)>0",
      "|x-3|<5",
      "2<x<=7"
    ],

    REDIRECT_EQUALITY:
      relation_symbol_equals "=" -> EquationOntology
  },

  NATURAL_LANGUAGE_MAPPING: {
    "less than":
      <,

    "greater than":
      >,

    "at most":
      <=,

    "no more than":
      <=,

    "at least":
      >=,

    "no less than":
      >=,

    "between":
      requires_boundary_and_inclusion_context
  },

  WORD_PROBLEM_REASONING: {
    PIPELINE: [
      identify_unknown_quantity,
      assign_variable,
      detect_comparative_language,
      construct_inequality,
      include_domain_constraints,
      solve,
      verify_boundary_logic,
      interpret_solution_in_context
    ],

    common_contexts: [
      minimum_requirements,
      maximum_capacity,
      budget_limits,
      age_limits,
      distance_ranges,
      tolerances,
      scheduling_constraints
    ]
  },

  VERIFICATION: {
    candidate_point:
      substitute_into_original_inequality,

    interval_verification:
      test_representative_points_and_boundary_conditions,

    system_verification:
      candidate_must_satisfy_every_component_inequality
  },

  ERROR_DETECTION: {

    MissingRelationReversal:
      negative_multiplication_or_division_without_reversing_relation
      -> flag,

    IncorrectBoundaryInclusion:
      strict_vs_inclusive_mismatch
      -> flag,

    DomainViolation:
      candidate_outside_expression_domain
      -> reject,

    DenominatorZeroIncluded:
      rational_inequality_solution_contains_pole
      -> reject,

    InvalidSquaringInference:
      transformation_without_required_sign_analysis
      -> flag,

    LogicalConnectorError:
      AND_OR_confusion
      -> flag
  },

  ONTOLOGY_RELATIONS: {
    IS_A: [
      "LinearInequality IS_A Inequality",
      "PolynomialInequality IS_A Inequality",
      "RationalInequality IS_A Inequality",
      "AbsoluteValueInequality IS_A Inequality",
      "CompoundInequality IS_A Inequality"
    ],

    RELATED_TO: [
      "Inequality RELATED_TO OrderTheory",
      "Inequality RELATED_TO Equation",
      "Inequality RELATED_TO Interval",
      "Inequality RELATED_TO NumberLine",
      "Inequality RELATED_TO Optimisation",
      "Inequality RELATED_TO ConstraintSatisfaction"
    ],

    DEPENDS_ON: [
      OrderedDomain,
      RelationSemantics,
      AlgebraicTransformation,
      LogicalConjunction,
      LogicalDisjunction
    ]
  },

  SEMANTIC_EQUIVALENCE: {
    equivalent_inequalities:
      SolutionSet(I1)=SolutionSet(I2),

    example:
      2*x+4<10
      <=> x<3,

    stronger_requirement:
      equivalence_must_hold_over_same_domain
  },

  CONFIDENCE: {
    classification_confidence:
      based_on [
        relation_detection,
        expression_type_detection,
        domain_detection
      ],

    solution_confidence:
      IF transformation_valid
      AND boundaries_checked
      AND domain_constraints_applied
      THEN 1.0,

    semantic_mapping_confidence:
      based_on [
        comparative_language_resolution,
        strictness_resolution,
        domain_consistency
      ]
  },

  AI_CONSUMPTION: {
    tasks: [
      recognise_inequality,
      identify_relation_symbol,
      classify_inequality_type,
      normalise_expressions,
      solve_linear_inequality,
      solve_polynomial_inequality,
      solve_rational_inequality,
      solve_absolute_value_inequality,
      process_compound_inequality,
      construct_sign_chart,
      represent_interval_solution,
      derive_number_line_semantics,
      analyse_system_of_inequalities,
      detect_relation_reversal_errors,
      enforce_domain_restrictions,
      translate_natural_language_constraints,
      verify_solution_sets
    ],

    preferred_representation:
      predicate_plus_interval_constraint_graph,

    reasoning_mode:
      recursive_order_preserving_transformation
  },

  RECURSIVE_REASONING: {

    FUNCTION SolveInequality(I,Domain):

      parsed := ParseInequality(I)

      IF relation(parsed) = "=":
        RETURN RedirectToEquationOntology

      normalised := Normalise(parsed)
      restrictions := ExtractDomainRestrictions(normalised)
      type := ClassifyInequality(normalised)

      CASE type OF:

        LinearInequality:
          result := SolveLinear(normalised)

        PolynomialInequality:
          result := SignAnalysePolynomial(normalised)

        RationalInequality:
          result := SignAnalyseRational(normalised,restrictions)

        AbsoluteValueInequality:
          result := ExpandAbsoluteValueCases(normalised)
          result := RecursiveSolve(result,Domain)

        CompoundInequality:
          components := SplitLogicalComponents(normalised)
          partial := RecursiveSolveEach(components,Domain)
          result := CombineByLogicalOperator(partial)

        SystemOfInequalities:
          partial := RecursiveSolveEach(normalised,Domain)
          result := Intersect(partial)

        OTHERWISE:
          result := DelegateToSpecialisedInequalityOntology(normalised)

      result := ApplyDomainRestrictions(result,restrictions)
      verified := VerifySolutionDescription(result,I,Domain)

      RETURN verified
  },

  RECURSIVE_COHERENCE: {
    invariant_1:
      relation_reversal_applied_exactly_when_required=TRUE,

    invariant_2:
      domain_restrictions_are_never_lost=TRUE,

    invariant_3:
      interval_boundaries_match_strictness=TRUE,

    invariant_4:
      sign_chart_matches_expression_sign=TRUE,

    invariant_5:
      final_solution_set_satisfies_original_inequality=TRUE
  },

  FLOW_HASH: {
    semantic_signature_inputs: [
      ontology_name,
      inequality_definition,
      order_relations,
      equivalence_rules,
      domain_rules,
      solution_methods,
      verification_rules
    ],

    purpose:
      "Detect semantic drift between revisions of the ontology."
  },

  UPDATE_MODEL: {
    version: "1.0",

    immutable_constraints: [
      order_relation_semantics,
      negative_scaling_relation_reversal,
      domain_restriction_preservation,
      strict_boundary_exclusion,
      inclusive_boundary_inclusion,
      solution_verification
    ],

    revision_triggers: [
      semantic_conflict,
      ordered_domain_model_update,
      new_inequality_class,
      new_representation_standard
    ]
  },

  KNOWLEDGE_GRAPH: {
    nodes: [
      Inequality,
      OrderRelation,
      Expression,
      Variable,
      Boundary,
      Interval,
      SolutionSet,
      NumberLine,
      LinearInequality,
      PolynomialInequality,
      RationalInequality,
      SystemOfInequalities
    ],

    edges: [
      Inequality -> USES -> OrderRelation,
      Inequality -> COMPARES -> Expression,
      Inequality -> HAS_VARIABLE -> Variable,
      Inequality -> HAS_SOLUTION_SET -> SolutionSet,
      SolutionSet -> REPRESENTED_BY -> Interval,
      SolutionSet -> VISUALISED_ON -> NumberLine,
      SystemOfInequalities -> CONTAINS -> Inequality,
      SystemOfInequalities -> HAS_SOLUTION_SET -> FeasibleRegion
    ]
  },

  CROSS_ONTOLOGY_LINKS: {
    EquationOntology:
      neighbouring_relation_ontology,

    LinearEquationOntology:
      boundary_equation_relation,

    PolynomialEquationOntology:
      polynomial_roots_define_sign_boundaries,

    RationalExpressionOntology:
      rational_inequality_structure,

    AbsoluteValueOntology:
      absolute_value_cases,

    SystemOfEquationsOntology:
      related_multi_constraint_structure,

    OrderTheoryOntology:
      foundational_order_semantics,

    IntervalOntology:
      solution_representation,

    OptimisationOntology:
      feasible_constraint_regions
  },

  TERMINATION_CONDITION: {
    ontology_complete_when: [
      inequality_defined,
      order_relations_defined,
      strictness_defined,
      transformation_rules_defined,
      relation_reversal_defined,
      major_inequality_classes_defined,
      domain_restrictions_defined,
      solution_representation_defined,
      verification_defined,
      cross_ontology_links_defined,
      recursive_coherence_verified
    ]
  }

}

EXECUTE Inequality_Ontology_v1.0:

  INPUT:
    mathematical_entity_or_query

  PIPELINE:
    Parse
    -> IdentifyOrderRelation
    -> ExtractExpressions
    -> ResolveDomain
    -> IdentifyDomainRestrictions
    -> ClassifyInequality
    -> Normalise
    -> SelectSolutionStrategy
    -> ApplyOrderPreservingTransformations
    -> ReverseRelationWhenRequired
    -> BuildIntervalOrRegionSolution
    -> ApplyDomainRestrictions
    -> VerifyBoundariesAndRepresentativePoints
    -> LinkRelatedOntologies
    -> AssignConfidence
    -> EmitSemanticResult

  OUTPUT: {
    entity,
    classification,
    relation,
    canonical_form,
    domain,
    domain_restrictions,
    boundaries,
    transformations,
    solution_set,
    interval_notation,
    number_line_semantics,
    feasible_region,
    verification,
    ontology_relations,
    confidence,
    semantic_equivalence,
    flow_hash
  }

END FLOW Inequality_Ontology_v1.0
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ