FLOW Rational_Function_Ontology_v1.0
PAGE:
title: "Rational Function Ontology"
canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/algebra-ontologies/rational-function-ontology.html"
language: "en-GB"
domain: "Mathematics > Algebra > Functions > Rational Functions"
DEFINE RationalFunctionOntology := {
CORE_IDENTITY: {
entity_type: "Mathematical Ontology",
primary_entity: RationalFunction,
parent_entities: [Function, AlgebraicFunction, Algebra],
related_entities: [
PolynomialFunction,
RationalExpression,
Numerator,
Denominator,
Domain,
Range,
Zero,
Pole,
Hole,
Asymptote,
VerticalAsymptote,
HorizontalAsymptote,
ObliqueAsymptote,
Intercept,
Factor,
PolynomialDivision
]
},
DEFINITION: {
meaning:
"A function expressible as the quotient of two polynomial functions, with denominator values equal to zero excluded from the domain.",
canonical_form:
f(x)=P(x)/Q(x),
constraints: [
P(x) is a polynomial,
Q(x) is a nonzero polynomial,
Q(x) != 0 on allowed inputs
]
},
SEMANTIC_PRIMITIVES: {
Numerator:
polynomial_P(x),
Denominator:
polynomial_Q(x),
DomainRestriction:
Q(x)!=0,
Zero:
value_r_where_P(r)=0_and_Q(r)!=0,
Pole:
nonremovable_denominator_zero,
Hole:
removable_discontinuity_created_by_cancelled_common_factor,
Asymptote:
line_or_curve_approached_in_limit_behaviour
},
FUNCTION_MODEL: {
mapping:
f: Domain -> Codomain,
rule:
x -> P(x)/Q(x),
single_valuedness:
TRUE,
default_real_context:
RealNumbers
},
DOMAIN_MODEL: {
raw_domain:
RealNumbers,
exclusions:
{x | Q(x)=0},
final_domain:
RealNumbers \ zeros_of_Q
},
FACTORISED_MODEL: {
numerator:
P(x)=a*PRODUCT((x-r_i)^m_i),
denominator:
Q(x)=b*PRODUCT((x-s_j)^n_j),
purpose:
reveal_zeros_poles_holes_and_sign_structure
},
COMMON_FACTOR_CANCELLATION: {
original:
f(x)=P(x)/Q(x),
IF common_factor_C(x):
algebraic_simplification:
f(x)=P_1(x)/Q_1(x),
domain_rule:
original_denominator_zeros_remain_excluded,
semantic_consequence:
cancelled_denominator_zero_may_be_hole_not_restored_domain_point
},
REMOVABLE_DISCONTINUITY: {
condition:
common_factor_(x-a)_cancels_from_numerator_and_denominator,
domain:
x=a_excluded,
hole_coordinate:
(a, simplified_function_value_at_a)
IF simplified_function_defined_at_a
},
POLE: {
condition:
Q(a)=0
AND denominator_factor_not_fully_cancelled,
local_behaviour:
function_magnitude_may_diverge_near_a,
graph_relation:
typically_vertical_asymptote_at_x=a
},
VERTICAL_ASYMPTOTE: {
candidate_values:
zeros_of_simplified_denominator,
confirmation:
limit_magnitude_diverges_or_one_sided_infinite_behaviour,
common_rule:
uncancelled_real_denominator_zero -> vertical_asymptote
},
HORIZONTAL_ASYMPTOTE: {
let:
n=degree(P),
m=degree(Q),
CASE n<m:
y=0,
CASE n=m:
y=leading_coefficient(P)/leading_coefficient(Q),
CASE n>m:
no_horizontal_asymptote_from_degree_rule
},
OBLIQUE_ASYMPTOTE: {
condition:
degree(P)=degree(Q)+1,
method:
polynomial_long_division,
quotient:
linear_function,
asymptote:
y=quotient_linear_function
},
POLYNOMIAL_ASYMPTOTE: {
condition:
degree(P)>degree(Q),
method:
divide_P_by_Q,
representation:
f(x)=S(x)+R(x)/Q(x),
asymptotic_function:
y=S(x)
as |x|->infinity_when_R/Q->0
},
ZERO_SEMANTICS: {
root_condition:
P(r)=0 AND Q(r)!=0,
graph_relation:
real_zero_corresponds_to_x_intercept,
caution:
cancelled_common_factor_zero_may_be_hole_not_zero
},
Y_INTERCEPT: {
condition:
Q(0)!=0,
value:
f(0)=P(0)/Q(0),
coordinate:
(0,f(0))
},
X_INTERCEPTS: {
solve:
P(x)=0,
filter:
retain_only_values_with_Q(x)!=0
},
CLASSIFICATION: {
ProperRationalFunction: {
condition:
degree(P)<degree(Q)
},
ImproperRationalFunction: {
condition:
degree(P)>=degree(Q)
},
ReciprocalFunction: {
canonical_form:
f(x)=1/x
},
LinearOverLinearFunction: {
form:
(a*x+b)/(c*x+d)
},
RationalFunctionWithHoles: {
condition:
common_factors_cancel
},
RationalFunctionWithPoles: {
condition:
uncancelled_denominator_zeros_exist
}
},
LINEAR_OVER_LINEAR_MODEL: {
form:
f(x)=(a*x+b)/(c*x+d),
denominator_constraint:
c*x+d != 0,
IF c!=0:
vertical_asymptote:
x=-d/c,
IF c!=0:
horizontal_asymptote:
y=a/c
},
TRANSFORMATION_FROM_RECIPROCAL: {
parent:
y=1/x,
transformed:
y=a/(x-h)+k,
vertical_asymptote:
x=h,
horizontal_asymptote:
y=k
},
RANGE_MODEL: {
general_rule:
range_requires_solving_y=P(x)/Q(x)_for_x_and_testing_existence,
transformed_reciprocal:
y=a/(x-h)+k
-> Range=RealNumbers\{k}
WHERE a!=0,
caution:
range_cannot_be_inferred_only_from_denominator_zeros
},
CONTINUITY: {
rational_function:
continuous_at_every_point_in_its_domain,
discontinuities:
only_at_excluded_denominator_zeros_in_standard_real_rational_function
},
DIFFERENTIABILITY: {
rational_function:
differentiable_at_every_domain_point,
derivative:
f'(x)=
(P'(x)*Q(x)-P(x)*Q'(x))/(Q(x))^2
},
QUOTIENT_RULE_RELATION: {
numerator:
P,
denominator:
Q,
derivative:
(P'Q-PQ')/Q^2
},
INTEGRAL_RELATION: {
method_depends_on_structure: [
polynomial_division,
substitution,
partial_fractions,
standard_rational_integrals
]
},
PARTIAL_FRACTION_RELATION: {
applicability:
proper_rational_function_after_factorising_denominator,
purpose:
decompose_into_simpler_rational_terms,
uses: [
integration,
inverse_laplace_contexts,
algebraic_analysis
]
},
SIGN_ANALYSIS: {
critical_values:
numerator_zeros_and_denominator_zeros,
process: [
factor_numerator_and_denominator,
identify_critical_points,
partition_real_line,
determine_sign_on_each_interval
]
},
RATIONAL_INEQUALITY_RELATION: {
expression:
P(x)/Q(x) REL 0,
related_ontology:
InequalityOntology,
requirement:
denominator_zeros_never_in_solution_set
},
LIMIT_BEHAVIOUR: {
near_poles:
analyse_one_sided_limits,
near_holes:
finite_limit_may_exist,
at_infinity:
governed_by_polynomial_degree_and_leading_terms
},
ONE_SIDED_LIMITS: {
at_vertical_asymptote_x=a:
left_limit_and_right_limit_may_differ,
possibilities: [
+infinity,
-infinity,
finite_value_for_removable_case
]
},
END_BEHAVIOUR: {
dominant_ratio:
leading_term_of_P / leading_term_of_Q,
equivalent_analysis:
polynomial_long_division_when_n>=m
},
COMPOSITION: {
rational_after_rational:
may_produce_rational_function_after_valid_substitution_and_simplification,
domain_rule:
exclude_inputs_invalid_for_inner_function
AND inputs_making_outer_denominator_zero
},
INVERSE_FUNCTION: {
existence:
requires_bijectivity_on_declared_domain,
common_linear_over_linear_case:
may_be_invertible_on_natural_domain_if_nonconstant_and_parameters_valid
},
LINEAR_FRACTIONAL_TRANSFORMATION: {
form:
f(x)=(a*x+b)/(c*x+d),
determinant_parameter:
ad-bc,
nonconstant_condition:
ad-bc != 0,
complex_analysis_relation:
MöbiusTransformation
},
POLYNOMIAL_DIVISION: {
INPUT:
P(x)/Q(x),
IF degree(P)>=degree(Q):
P(x)=Q(x)*S(x)+R(x),
OUTPUT:
f(x)=S(x)+R(x)/Q(x),
condition:
degree(R)<degree(Q)
},
PARAMETER_REASONING: {
family:
f_p(x)=P_p(x)/Q_p(x),
tasks: [
detect_parameter_values_causing_cancellation,
detect_parameter_values_changing_degree,
detect_parameter_values_moving_poles,
detect_parameter_values_creating_constant_or_polynomial_special_cases
]
},
SYMBOLIC_RECOGNITION: {
ACCEPT: [
"f(x)=1/x",
"y=(x+1)/(x-2)",
"g(t)=(t^2-1)/(t+3)",
"h(x)=(x^2-4)/(x-2)"
],
NORMALISE_FIRST: [
"f(x)=1+2/(x-1)",
"y=(x^3+1)/(x^2-1)"
],
REDIRECT_NONRATIONAL: [
"f(x)=sqrt(x)/(x+1)",
"f(x)=sin(x)/x",
"f(x)=2^x/(x+1)"
]
},
NATURAL_LANGUAGE_MAPPING: {
"ratio of polynomials":
RationalFunction,
"denominator cannot be zero":
domain_restriction,
"vertical asymptote":
uncancelled_denominator_zero_candidate,
"hole":
removable_discontinuity_from_cancelled_factor,
"horizontal asymptote":
end_behaviour_constant_line
},
WORD_PROBLEM_REASONING: {
PIPELINE: [
identify_input_output_relation,
detect_ratio_structure,
define_numerator_and_denominator,
establish_domain_restrictions,
simplify_without_losing_original_exclusions,
analyse_intercepts_asymptotes_or_values,
verify_context,
interpret_result
],
common_contexts: [
rates,
average_cost,
concentration_ratios,
inverse_proportion,
rational_response_models
]
},
UNIT_SEMANTICS: {
output_units:
numerator_units_divided_by_denominator_units,
denominator_zero:
may_correspond_to physically_invalid_or_undefined_state
},
ERROR_DETECTION: {
LostDomainRestriction:
cancelled_factor_restored_as_valid_input
-> flag,
FalseVerticalAsymptote:
cancelled_denominator_zero_marked_as_pole
-> flag,
MissedHole:
common_factor_cancelled_without_recording_original_exclusion
-> flag,
IncorrectHorizontalAsymptote:
degree_rule_misapplied
-> flag,
InvalidZero:
numerator_zero_that_also_zeroes_denominator
-> reject_as_x_intercept,
QuotientRuleError:
malformed_derivative
-> flag
},
ONTOLOGY_RELATIONS: {
IS_A: [
"RationalFunction IS_A Function",
"ReciprocalFunction IS_A RationalFunction",
"LinearOverLinearFunction IS_A RationalFunction"
],
RELATED_TO: [
"RationalFunction RELATED_TO RationalExpression",
"RationalFunction RELATED_TO PolynomialFunction",
"RationalFunction RELATED_TO Asymptote",
"RationalFunction RELATED_TO Limit",
"RationalFunction RELATED_TO PartialFractions",
"RationalFunction RELATED_TO RationalInequality"
],
DEPENDS_ON: [
FunctionSemantics,
PolynomialSemantics,
Division,
DomainRestriction,
LimitBehaviour
]
},
SEMANTIC_EQUIVALENCE: {
rational_function_equivalence:
same_domain
AND same_output_for_every_input,
caution:
algebraically_simplified_expressions_may_have_different_domains,
example:
(x^2-1)/(x-1)
simplifies_to
x+1
BUT original_function_excludes_x=1
},
CONFIDENCE: {
classification_confidence:
IF numerator_and_denominator_are_polynomials
AND denominator_not_zero_polynomial
THEN 1.0,
domain_confidence:
IF all_denominator_zeros_identified
THEN 1.0,
asymptote_confidence:
IF cancellation_and_limit_behaviour_checked
THEN 1.0
},
AI_CONSUMPTION: {
tasks: [
recognise_rational_function,
extract_numerator_and_denominator,
determine_domain,
factor_polynomials,
detect_common_factors,
distinguish_holes_from_poles,
find_intercepts,
identify_vertical_asymptotes,
identify_horizontal_asymptotes,
identify_oblique_or_polynomial_asymptotes,
perform_polynomial_division,
analyse_sign,
infer_range_when_possible,
differentiate,
decompose_into_partial_fractions,
detect_domain_errors,
map_word_problems,
link_related_ontologies
],
preferred_representation:
typed_quotient_function_graph,
reasoning_mode:
recursive_factor_domain_and_limit_analysis
},
RECURSIVE_REASONING: {
FUNCTION AnalyseRationalFunction(F,Context):
parsed := ParseFunction(F)
simplified_structure := IdentifyQuotient(parsed)
IF not IsFunction(parsed):
RETURN RedirectToRelationOntology
[P,Q] := ExtractPolynomialNumeratorDenominator(simplified_structure)
IF not IsPolynomial(P) OR not IsPolynomial(Q):
RETURN RedirectToFunctionOntology
IF Q is ZeroPolynomial:
RETURN UndefinedFunction
original_exclusions := Solve(Q=0)
factors_P := Factor(P)
factors_Q := Factor(Q)
common := CommonFactors(factors_P,factors_Q)
reduced := CancelCommonFactorsSymbolically(P,Q)
holes := DetermineCancelledFactorLocations(common,original_exclusions)
poles := DetermineUncancelledDenominatorZeros(reduced)
asymptotes := {
vertical:ConfirmVerticalAsymptotes(poles,reduced),
horizontal_or_polynomial:AnalyseInfinityBehaviour(reduced)
}
zeros := Solve(Numerator(reduced)=0)
zeros := RemoveExcludedInputs(zeros,original_exclusions)
verified := VerifyRationalProperties(parsed,{
original_exclusions,
holes,
poles,
zeros,
asymptotes
})
RETURN {
function:parsed,
reduced_form:reduced,
domain:RealNumbers\original_exclusions,
holes,
poles,
zeros,
asymptotes,
verified
}
},
RECURSIVE_COHERENCE: {
invariant_1:
original_denominator_exclusions_never_lost=TRUE,
invariant_2:
cancelled_factors_produce_holes_not_restored_points=TRUE,
invariant_3:
uncancelled_denominator_zeros_match_pole_analysis=TRUE,
invariant_4:
real_zeros_require_valid_domain_points=TRUE,
invariant_5:
asymptotic_classification_matches_degree_and_limit_behaviour=TRUE
},
FLOW_HASH: {
semantic_signature_inputs: [
ontology_name,
rational_function_definition,
numerator_denominator_model,
domain_rules,
hole_pole_semantics,
asymptote_rules,
verification_rules
],
purpose:
"Detect semantic drift between revisions of the ontology."
},
UPDATE_MODEL: {
version: "1.0",
immutable_constraints: [
quotient_of_polynomials,
denominator_nonzero_domain_rule,
original_domain_exclusions_preserved_after_cancellation,
hole_vs_pole_distinction,
root_must_be_valid_domain_point
],
revision_triggers: [
semantic_conflict,
FunctionOntology_update,
RationalExpressionOntology_update,
asymptote_model_revision,
representation_standard_change
]
},
KNOWLEDGE_GRAPH: {
nodes: [
RationalFunction,
Function,
PolynomialFunction,
Numerator,
Denominator,
Domain,
Zero,
Hole,
Pole,
VerticalAsymptote,
HorizontalAsymptote,
ObliqueAsymptote
],
edges: [
RationalFunction -> IS_A -> Function,
RationalFunction -> HAS_NUMERATOR -> Numerator,
RationalFunction -> HAS_DENOMINATOR -> Denominator,
RationalFunction -> HAS_DOMAIN -> Domain,
RationalFunction -> HAS_ZERO -> Zero,
RationalFunction -> MAY_HAVE -> Hole,
RationalFunction -> MAY_HAVE -> Pole,
Pole -> ASSOCIATED_WITH -> VerticalAsymptote,
RationalFunction -> MAY_HAVE -> HorizontalAsymptote,
RationalFunction -> MAY_HAVE -> ObliqueAsymptote
]
},
CROSS_ONTOLOGY_LINKS: {
FunctionOntology:
direct_parent,
RationalExpressionOntology:
algebraic_structure,
PolynomialFunctionOntology:
numerator_and_denominator_components,
PolynomialEquationOntology:
zeros_and_denominator_restrictions,
InequalityOntology:
rational_sign_analysis,
CalculusOntology:
limits_derivatives_integrals,
CoordinateGeometryOntology:
graph_and_asymptote_interpretation,
ComplexAnalysisOntology:
poles_and_mobius_transformations
},
TERMINATION_CONDITION: {
ontology_complete_when: [
rational_function_defined,
numerator_denominator_structure_defined,
domain_rule_defined,
zero_semantics_defined,
hole_and_pole_distinction_defined,
asymptote_rules_defined,
continuity_and_calculus_relations_defined,
polynomial_division_defined,
error_detection_defined,
cross_ontology_links_defined,
recursive_coherence_verified
]
}
}
EXECUTE Rational_Function_Ontology_v1.0:
INPUT:
mathematical_entity_or_query
PIPELINE:
Parse
-> IdentifyFunction
-> DetectRationalStructure
-> ExtractNumeratorAndDenominator
-> ValidatePolynomialComponents
-> RecordOriginalDomainExclusions
-> FactorAndSimplify
-> DetectHolesAndPoles
-> FindZerosAndIntercepts
-> AnalyseVerticalHorizontalAndObliqueAsymptotes
-> DetermineContinuityAndRangeProperties
-> ApplyCalculusOrPartialFractionMethodsWhenRequired
-> VerifyOriginalDomainSemantics
-> LinkRelatedOntologies
-> AssignConfidence
-> EmitSemanticResult
OUTPUT: {
entity,
classification,
canonical_form,
numerator,
denominator,
reduced_form,
domain,
range,
zeros,
x_intercepts,
y_intercept,
holes,
poles,
vertical_asymptotes,
horizontal_asymptote,
oblique_or_polynomial_asymptote,
continuity,
derivative,
sign_structure,
verification,
ontology_relations,
confidence,
semantic_equivalence,
flow_hash
}
END FLOW Rational_Function_Ontology_v1.0
Download Code
Copy to Clipboard