Skip to main content

Polynomial Function Ontology

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

PAGE:
  title: "Polynomial Function Ontology"
  canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/algebra-ontologies/polynomial-function-ontology.html"
  language: "en-GB"
  domain: "Mathematics > Algebra > Functions > Polynomial Functions"

DEFINE PolynomialFunctionOntology := {

  CORE_IDENTITY: {
    entity_type: "Mathematical Ontology",
    primary_entity: PolynomialFunction,
    parent_entities: [Function, AlgebraicFunction, Algebra],
    related_entities: [
      Polynomial,
      Monomial,
      Term,
      Variable,
      Coefficient,
      Constant,
      Degree,
      LeadingCoefficient,
      Root,
      Zero,
      Multiplicity,
      Graph,
      Domain,
      Range,
      TurningPoint,
      EndBehaviour,
      LinearFunction,
      QuadraticFunction
    ]
  },

  DEFINITION: {
    meaning:
      "A function whose rule is given by a polynomial expression in the independent variable.",
    canonical_form:
      f(x)=a_n*x^n+a_(n-1)*x^(n-1)+...+a_1*x+a_0,
    constraints: [
      n is a nonnegative integer,
      a_n != 0 for n>0
    ],
    degree:
      n
  },

  SEMANTIC_PRIMITIVES: {
    Term:
      coefficient_times_nonnegative_integer_power_of_variable,
    Coefficient:
      scalar_multiplier,
    Degree:
      greatest_exponent_with_nonzero_coefficient,
    LeadingCoefficient:
      coefficient_of_highest_degree_term,
    ConstantTerm:
      degree_zero_term,
    Root:
      value_r_where_f(r)=0,
    Multiplicity:
      number_of_times_associated_linear_factor_repeats,
    Graph:
      set_of_points_(x,f(x))
  },

  STRUCTURAL_CONSTRAINTS: {
    finite_number_of_terms:
      TRUE,
    exponents:
      nonnegative_integers,
    variable_in_denominator:
      FALSE,
    variable_under_noninteger_power:
      FALSE,
    transcendental_operations_on_variable:
      FALSE
  },

  FUNCTION_MODEL: {
    mapping:
      f: Domain -> Codomain,
    default_real_domain:
      RealNumbers,
    single_valuedness:
      TRUE,
    rule:
      polynomial_expression
  },

  CLASSIFICATION_BY_DEGREE: {
    Degree0:
      ConstantFunction,
    Degree1:
      LinearFunction,
    Degree2:
      QuadraticFunction,
    Degree3:
      CubicFunction,
    Degree4:
      QuarticFunction,
    DegreeN:
      HigherDegreePolynomialFunction WHERE N>=5
  },

  COEFFICIENT_MODEL: {
    coefficient_sequence:
      [a_n,a_(n-1),...,a_1,a_0],
    leading_coefficient:
      a_n,
    constant_term:
      a_0,
    monic_condition:
      a_n=1
  },

  NORMALISATION: {
    INPUT:
      function_rule F,
    PROCESS: [
      parse,
      expand_products,
      combine_like_terms,
      remove_zero_terms,
      order_terms_by_descending_degree,
      identify_coefficients,
      determine_degree
    ],
    OUTPUT:
      canonical_polynomial_function
  },

  DOMAIN_MODEL: {
    real_polynomial_function:
      Domain=RealNumbers,
    complex_polynomial_function:
      Domain=ComplexNumbers,
    restricted_domain:
      allowed_if_explicitly_declared
  },

  GRAPH_SEMANTICS: {
    graph:
      y=f(x),
    x_intercepts:
      real_roots,
    y_intercept:
      f(0)=a_0,
    continuity:
      continuous_on_RealNumbers,
    differentiability:
      differentiable_on_RealNumbers
  },

  ROOT_SEMANTICS: {
    root_condition:
      f(r)=0,
    equivalent_terms: [
      zero,
      solution_of_f(x)=0,
      real_x_intercept_when_r_is_real
    ],
    FactorTheorem:
      f(r)=0 <=> (x-r)_is_factor
  },

  MULTIPLICITY: {
    root_r_has_multiplicity_m:
      (x-r)^m divides f(x)
      AND (x-r)^(m+1) does_not_divide f(x),
    simple_root:
      m=1,
    repeated_root:
      m>1
  },

  MULTIPLICITY_GRAPH_RELATION: {
    odd_multiplicity_real_root:
      graph_crosses_x_axis,
    even_multiplicity_real_root:
      graph_touches_x_axis_and_turns,
    higher_multiplicity:
      graph_may_flatten_near_root
  },

  FUNDAMENTAL_THEOREM_OF_ALGEBRA: {
    complex_domain:
      degree_n_polynomial_has_exactly_n_roots_counting_multiplicity,
    condition:
      n>=1
  },

  FACTORISED_FORM: {
    over_complex_numbers:
      f(x)=a_n*PRODUCT((x-r_i)^m_i),
    constraint:
      SUM(m_i)=n,
    semantic_advantage:
      roots_and_multiplicities_explicit
  },

  END_BEHAVIOUR: {
    depends_on: [
      degree_parity,
      sign_of_leading_coefficient
    ],

    even_degree_positive_leading:
      left_up_right_up,

    even_degree_negative_leading:
      left_down_right_down,

    odd_degree_positive_leading:
      left_down_right_up,

    odd_degree_negative_leading:
      left_up_right_down
  },

  LEADING_TERM_DOMINANCE: {
    asymptotic_rule:
      for_large_absolute_x,
      f(x) behaves_like a_n*x^n
  },

  TURNING_POINTS: {
    maximum_number:
      n-1,
    condition:
      degree=n>=1,
    note:
      actual_number_may_be_less_than_n-1
  },

  CRITICAL_POINTS_RELATION: {
    derivative:
      f'(x),
    critical_points:
      solutions_of_f'(x)=0
      plus_points_where_derivative_undefined,
    polynomial_case:
      derivative_defined_everywhere_over_reals
  },

  DERIVATIVE_RELATION: {
    if:
      f(x)=SUM[i=0..n](a_i*x^i),
    then:
      f'(x)=SUM[i=1..n](i*a_i*x^(i-1)),
    derivative_degree:
      n-1 WHERE n>=1
  },

  HIGHER_DERIVATIVES: {
    kth_derivative:
      polynomial_of_degree_n-k_until_zero,
    after_n_derivatives:
      constant,
    after_n_plus_1_derivatives:
      zero_function
  },

  INTEGRAL_RELATION: {
    antiderivative:
      F(x)=SUM[i=0..n](a_i*x^(i+1)/(i+1))+C,
    resulting_degree:
      n+1
  },

  CONTINUITY: {
    polynomial_functions:
      continuous_everywhere_on_RealNumbers
  },

  DIFFERENTIABILITY: {
    polynomial_functions:
      differentiable_everywhere_on_RealNumbers
  },

  RANGE_REASONING: {
    odd_degree_real_polynomial:
      Range=RealNumbers,
    even_degree_real_polynomial:
      range_depends_on_global_extrema_and_leading_coefficient,
    constant_function:
      Range={a_0}
  },

  INJECTIVITY: {
    not_guaranteed:
      TRUE,
    sufficient_case:
      strictly_monotonic_over_declared_domain
  },

  SURJECTIVITY: {
    depends_on:
      codomain_and_range,
    odd_degree_to_real_codomain:
      surjective_to_RealNumbers
  },

  BIJECTIVITY: {
    possible_if:
      function_is_injective_and_surjective_on_declared_domain_codomain
  },

  INVERSE_FUNCTION: {
    global_inverse:
      exists_only_if_polynomial_function_is_bijective_on_declared_domain,
    odd_strictly_monotonic_cases:
      may_have_global_inverse,
    inverse_type:
      inverse_need_not_be_polynomial
  },

  COMPOSITION: {
    polynomial_with_polynomial:
      produces_polynomial,
    degree_rule:
      deg(f∘g)=deg(f)*deg(g)
      WHEN both_are_nonconstant
  },

  ADDITION: {
    f_plus_g:
      polynomial,
    degree:
      <= max(deg(f),deg(g))
  },

  SUBTRACTION: {
    f_minus_g:
      polynomial,
    degree:
      <= max(deg(f),deg(g))
  },

  MULTIPLICATION: {
    f_times_g:
      polynomial,
    degree:
      deg(f)+deg(g)
      WHEN both_nonzero
  },

  SCALAR_MULTIPLICATION: {
    c*f:
      polynomial,
    degree:
      same_as_f IF c!=0,
    zero_scalar:
      zero_polynomial_function
  },

  DIVISION: {
    polynomial_divided_by_polynomial:
      generally_not_polynomial,
    result_type:
      RationalFunction unless division_is_exact_polynomial_quotient
  },

  POLYNOMIAL_FUNCTION_EQUALITY: {
    f=g IF:
      same_domain
      AND f(x)=g(x) for_all_x_in_domain,
    real_polynomial_identity:
      equality_for_all_real_x_implies_identical_coefficients
  },

  COEFFICIENT_IDENTITY: {
    IF:
      a_n*x^n+...+a_0
      =
      b_n*x^n+...+b_0
      FOR_ALL x,
    THEN:
      a_i=b_i FOR_EACH i
  },

  FINITE_DIFFERENCE_RELATION: {
    equally_spaced_inputs:
      nth_finite_difference_is_constant_for_degree_n_polynomial,
    lower_order:
      differences_reflect_degree_structure
  },

  TABLE_RECOGNITION: {
    equally_spaced_x_values:
      analyse_successive_difference_orders,
    degree_n_indicator:
      nth_differences_constant_and_previous_order_not_constant
  },

  INTERPOLATION_RELATION: {
    n_plus_1_distinct_input_points:
      determine_unique_polynomial_of_degree_at_most_n,
    condition:
      distinct_x_coordinates
  },

  LAGRANGE_INTERPOLATION: {
    representation:
      f(x)=SUM[y_i*L_i(x)],
    basis:
      L_i(x)=PRODUCT[j!=i]((x-x_j)/(x_i-x_j))
  },

  NEWTON_INTERPOLATION_RELATION: {
    representation:
      polynomial_constructed_from_divided_differences
  },

  ZERO_COUNT: {
    nonzero_degree_n_polynomial:
      at_most_n_distinct_roots_over_any_field,
    over_complex_numbers:
      exactly_n_roots_counting_multiplicity
  },

  REAL_ROOT_STRUCTURE: {
    real_coefficients:
      nonreal_complex_roots_occur_in_conjugate_pairs,
    odd_degree_real_polynomial:
      at_least_one_real_root
  },

  GRAPH_INTERSECTION_WITH_LINE: {
    line:
      y=m*x+b,
    solve:
      f(x)=m*x+b,
    transformed:
      f(x)-m*x-b=0,
    maximum_intersections:
      degree_of_resulting_polynomial
  },

  GRAPH_INTERSECTION_WITH_POLYNOMIAL: {
    functions:
      f(x),g(x),
    solve:
      f(x)-g(x)=0,
    intersection_count:
      bounded_by_degree_of_difference_unless_functions_identical
  },

  TRANSFORMATIONS: {
    vertical_shift:
      g(x)=f(x)+k,
    horizontal_shift:
      g(x)=f(x-h),
    vertical_scale:
      g(x)=a*f(x),
    horizontal_scale:
      g(x)=f(b*x),
    reflection_x_axis:
      g(x)=-f(x),
    reflection_y_axis:
      g(x)=f(-x)
  },

  SYMMETRY: {
    even_polynomial:
      only_even_power_terms
      -> f(-x)=f(x),
    odd_polynomial:
      only_odd_power_terms_and_zero_constant
      -> f(-x)=-f(x)
  },

  PARAMETER_REASONING: {
    family:
      f_p(x),
    coefficients:
      may_depend_on_parameters,
    tasks: [
      detect_degree_changes_when_leading_coefficient_parameter_becomes_zero,
      determine_root_structure_by_parameter,
      determine_turning_point_structure,
      determine_end_behaviour
    ]
  },

  SYMBOLIC_RECOGNITION: {
    ACCEPT: [
      "f(x)=3x^4-2x^2+x-7",
      "y=x^3+4x",
      "g(t)=5",
      "h(x)=2(x-1)(x+3)^2"
    ],
    NORMALISE_FIRST: [
      "f(x)=(x+1)^3-2x",
      "y=x(x^2-4)+5"
    ],
    REDIRECT_NONPOLYNOMIAL: [
      "f(x)=1/x",
      "f(x)=sqrt(x)",
      "f(x)=2^x",
      "f(x)=sin(x)"
    ]
  },

  NATURAL_LANGUAGE_MAPPING: {
    "polynomial function":
      finite_sum_of_nonnegative_integer_power_terms,
    "degree":
      highest_nonzero_exponent,
    "leading coefficient":
      coefficient_of_highest_degree_term,
    "zeros":
      roots_of_f(x)=0,
    "end behaviour":
      asymptotic_direction_determined_by_leading_term
  },

  WORD_PROBLEM_REASONING: {
    PIPELINE: [
      identify_input_output_relation,
      detect_polynomial_pattern,
      assign_variables,
      construct_polynomial_model,
      determine_degree,
      analyse_relevant_roots_extrema_or_values,
      apply_domain_constraints,
      verify_context,
      interpret_result
    ],
    common_contexts: [
      geometric_models,
      trajectory_approximations,
      revenue_cost_models,
      interpolation_models,
      algebraic_growth_patterns
    ]
  },

  UNIT_SEMANTICS: {
    coefficient_a_i_units:
      output_units_per_input_units_power_i,
    requirement:
      every_term_must_have_output_dimension
  },

  ERROR_DETECTION: {
    InvalidExponent:
      negative_or_fractional_variable_exponent
      -> reject_polynomial_classification,

    HiddenDenominator:
      variable_in_denominator
      -> redirect_to_RationalFunctionOntology,

    IncorrectDegree:
      leading_zero_coefficients_not_removed
      -> flag,

    RootWithoutVerification:
      -> require_f(r)=0_check,

    EndBehaviourError:
      mismatch_with_degree_parity_or_leading_coefficient
      -> flag,

    MultiplicityGraphError:
      incorrect_cross_touch_interpretation
      -> flag
  },

  ONTOLOGY_RELATIONS: {
    IS_A: [
      "PolynomialFunction IS_A Function",
      "LinearFunction IS_A PolynomialFunction",
      "QuadraticFunction IS_A PolynomialFunction",
      "CubicFunction IS_A PolynomialFunction"
    ],

    RELATED_TO: [
      "PolynomialFunction RELATED_TO Polynomial",
      "PolynomialFunction RELATED_TO PolynomialEquation",
      "PolynomialFunction RELATED_TO Graph",
      "PolynomialFunction RELATED_TO Interpolation",
      "PolynomialFunction RELATED_TO Calculus"
    ],

    DEPENDS_ON: [
      FunctionSemantics,
      Exponent,
      Coefficient,
      RealOrComplexField,
      CoordinateSystem
    ]
  },

  SEMANTIC_EQUIVALENCE: {
    function_equivalence:
      same_domain
      AND same_output_for_every_input,

    polynomial_identity:
      same_coefficients_after_normalisation,

    examples: [
      "(x+1)^2 <=> x^2+2x+1",
      "x(x^2-4) <=> x^3-4x"
    ]
  },

  CONFIDENCE: {
    classification_confidence:
      IF finite_terms
      AND all_exponents_nonnegative_integers
      THEN 1.0,

    degree_confidence:
      IF normalisation_complete
      AND leading_coefficient_verified_nonzero
      THEN 1.0,

    root_confidence:
      IF candidate_root_verifies_f(r)=0
      THEN 1.0
  },

  AI_CONSUMPTION: {
    tasks: [
      recognise_polynomial_function,
      normalise_function_rule,
      determine_degree,
      extract_coefficients,
      identify_leading_term,
      find_roots,
      determine_multiplicities,
      infer_end_behaviour,
      infer_intercepts,
      analyse_symmetry,
      determine_turning_point_bound,
      differentiate,
      integrate,
      compose_polynomials,
      analyse_tables_using_finite_differences,
      construct_interpolating_polynomial,
      detect_reasoning_errors,
      link_related_ontologies
    ],

    preferred_representation:
      typed_polynomial_function_graph,

    reasoning_mode:
      recursive_degree_and_coefficient_analysis
  },

  RECURSIVE_REASONING: {

    FUNCTION AnalysePolynomialFunction(F,Context):

      parsed := ParseFunction(F)
      simplified := ExpandAndCombine(parsed)

      IF not IsFunction(simplified):
        RETURN RedirectToRelationOntology

      IF not IsPolynomialExpression(FunctionRule(simplified)):
        RETURN RedirectToFunctionOntology

      n := Degree(simplified)
      coefficients := ExtractCoefficients(simplified)
      leading := LeadingCoefficient(simplified)

      IF n=0:
        specialised_type := ConstantFunction
      ELSE IF n=1:
        specialised_type := LinearFunction
      ELSE IF n=2:
        specialised_type := QuadraticFunction
      ELSE:
        specialised_type := PolynomialFunction

      roots := FindRootsWhenRequestedOrUseful(simplified,Context)
      verified_roots := VerifyRoots(roots,simplified)

      graph_properties := {
        degree:n,
        leading_coefficient:leading,
        end_behaviour:InferEndBehaviour(n,leading),
        y_intercept:Evaluate(simplified,0),
        real_x_intercepts:RealSubset(verified_roots)
      }

      RETURN {
        function:simplified,
        specialised_type,
        coefficients,
        verified_roots,
        graph_properties
      }
  },

  RECURSIVE_COHERENCE: {
    invariant_1:
      degree_matches_highest_nonzero_exponent=TRUE,

    invariant_2:
      graph_end_behaviour_matches_leading_term=TRUE,

    invariant_3:
      all_emitted_roots_verify_f(root)=0=TRUE,

    invariant_4:
      factorisation_and_expanded_form_are_equivalent=TRUE,

    invariant_5:
      calculus_relations_preserve_polynomial_structure=TRUE
  },

  FLOW_HASH: {
    semantic_signature_inputs: [
      ontology_name,
      polynomial_function_definition,
      structural_constraints,
      degree_model,
      root_semantics,
      graph_semantics,
      calculus_relations
    ],

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

  UPDATE_MODEL: {
    version: "1.0",

    immutable_constraints: [
      finite_polynomial_structure,
      nonnegative_integer_exponents,
      degree_definition,
      leading_term_end_behaviour,
      root_verification
    ],

    revision_triggers: [
      semantic_conflict,
      FunctionOntology_update,
      PolynomialOntology_update,
      new_polynomial_function_class,
      representation_standard_change
    ]
  },

  KNOWLEDGE_GRAPH: {
    nodes: [
      PolynomialFunction,
      Function,
      Polynomial,
      Degree,
      Coefficient,
      LeadingCoefficient,
      Root,
      Multiplicity,
      Graph,
      Domain,
      Range,
      TurningPoint,
      EndBehaviour
    ],

    edges: [
      PolynomialFunction -> IS_A -> Function,
      PolynomialFunction -> DEFINED_BY -> Polynomial,
      Polynomial -> HAS_DEGREE -> Degree,
      Polynomial -> HAS_COEFFICIENT -> Coefficient,
      Polynomial -> HAS_LEADING_COEFFICIENT -> LeadingCoefficient,
      PolynomialFunction -> HAS_ROOT -> Root,
      Root -> HAS_MULTIPLICITY -> Multiplicity,
      PolynomialFunction -> HAS_GRAPH -> Graph,
      PolynomialFunction -> HAS_DOMAIN -> Domain,
      PolynomialFunction -> HAS_RANGE -> Range,
      PolynomialFunction -> HAS_END_BEHAVIOUR -> EndBehaviour
    ]
  },

  CROSS_ONTOLOGY_LINKS: {
    FunctionOntology:
      direct_parent,

    PolynomialOntology:
      algebraic_structure,

    PolynomialEquationOntology:
      root_and_zero_semantics,

    LinearFunctionOntology:
      degree_one_specialisation,

    QuadraticFunctionOntology:
      degree_two_specialisation,

    CoordinateGeometryOntology:
      graph_intercepts_and_shape,

    CalculusOntology:
      derivatives_integrals_turning_points,

    ComplexNumberOntology:
      complete_root_structure,

    NumericalAnalysisOntology:
      approximate_roots_and_interpolation
  },

  TERMINATION_CONDITION: {
    ontology_complete_when: [
      polynomial_function_defined,
      structural_constraints_defined,
      degree_classification_defined,
      coefficient_model_defined,
      root_and_multiplicity_semantics_defined,
      graph_end_behaviour_defined,
      calculus_relations_defined,
      operation_closure_defined,
      interpolation_relation_defined,
      error_detection_defined,
      cross_ontology_links_defined,
      recursive_coherence_verified
    ]
  }

}

EXECUTE Polynomial_Function_Ontology_v1.0:

  INPUT:
    mathematical_entity_or_query

  PIPELINE:
    Parse
    -> IdentifyFunction
    -> ValidatePolynomialStructure
    -> NormalisePolynomialRule
    -> DetermineDegree
    -> ExtractCoefficients
    -> IdentifyLeadingTerm
    -> ClassifyByDegree
    -> AnalyseRootsAndMultiplicities
    -> DeriveIntercepts
    -> InferEndBehaviour
    -> AnalyseSymmetryAndTurningPointStructure
    -> ApplyCalculusOrInterpolationWhenRequired
    -> VerifySemanticConsistency
    -> LinkRelatedOntologies
    -> AssignConfidence
    -> EmitSemanticResult

  OUTPUT: {
    entity,
    classification,
    canonical_form,
    degree,
    coefficients,
    leading_coefficient,
    constant_term,
    domain,
    range,
    roots,
    multiplicities,
    x_intercepts,
    y_intercept,
    end_behaviour,
    symmetry,
    turning_point_information,
    derivative,
    integral,
    graph_semantics,
    verification,
    ontology_relations,
    confidence,
    semantic_equivalence,
    flow_hash
  }

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