Skip to main content

Partial Derivative Ontology

Differential Calculus
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 23 September 2026
Audio Overview
flow "PartialDerivativeOntology" v1.0

# ============================================================
# PARTIAL DERIVATIVE ONTOLOGY — FLOW ALGEBRA
# ============================================================

SOURCE_URL := "https://kirethresearch.org/booksai-core/ontologies/calculus-analysis-ontologies/differential-calculus/partial-derivative-ontology.html"
DOMAIN := "Mathematical Ontologies"
CATEGORY := "Calculus and Analysis Ontologies"
SUBCATEGORY := "Differential Calculus"
ENTITY := "Partial Derivative"

# ---------- CORE ENTITY ----------
PARTIAL_DERIVATIVE := {
    type: MathematicalDerivative,
    domain: MultivariableCalculus,
    purpose: "Measure the local rate of change of a multivariable function with respect to one selected variable while the remaining independent variables are held fixed."
}

# ---------- CORE CONCEPTS ----------
CONCEPTS := {
    MULTIVARIABLE_FUNCTION,
    INDEPENDENT_VARIABLE,
    DEPENDENT_VARIABLE,
    PARTIAL_DERIVATIVE,
    LIMIT,
    DIFFERENTIABILITY,
    GRADIENT,
    DIRECTIONAL_DERIVATIVE,
    TOTAL_DERIVATIVE,
    JACOBIAN,
    HESSIAN,
    MIXED_PARTIAL,
    HIGHER_PARTIAL_DERIVATIVE
}

# ---------- FUNCTION STRUCTURE ----------
MULTIVARIABLE_FUNCTION
    := f(x1, x2, ..., xn)

MULTIVARIABLE_FUNCTION
    -> maps(MULTIDIMENSIONAL_DOMAIN, CODOMAIN)

x1, x2, ..., xn
    -> INDEPENDENT_VARIABLES

f(x1, x2, ..., xn)
    -> DEPENDENT_OUTPUT

# ---------- PARTIAL DERIVATIVE DEFINITION ----------
PARTIAL_DERIVATIVE(f, x_i)
    := limit(
        [f(x1,...,x_i+h,...,xn) - f(x1,...,x_i,...,xn)] / h,
        h -> 0
    )

PARTIAL_DERIVATIVE
    -> varies(ONE_SELECTED_VARIABLE)
    -> holds(OTHER_INDEPENDENT_VARIABLES_FIXED)
    -> measures(LOCAL_COORDINATE_RATE_OF_CHANGE)

# ---------- NOTATION ----------
PARTIAL_DERIVATIVE_NOTATION := {
    "∂f/∂x",
    "f_x",
    "D_x f",
    "∂z/∂x"
}

NOTATION
    -> represents(PARTIAL_DERIVATIVE)
       under(MULTIVARIABLE_CONTEXT)

# ---------- LIMIT RELATION ----------
LIMIT
    -> defines(PARTIAL_DERIVATIVE)

PARTIAL_DIFFERENCE_QUOTIENT
    -> approaches(PARTIAL_DERIVATIVE)
       when(LIMIT_EXISTS)

PARTIAL_DERIVATIVE
    -> is(ONE_DIMENSIONAL_DERIVATIVE_ALONG_COORDINATE_LINE)

# ---------- GEOMETRIC INTERPRETATION ----------
for
    z = f(x,y)

partial_f/partial_x
    -> slope_of_surface_cross_section
       along(x_direction)
       with(y_fixed)

partial_f/partial_y
    -> slope_of_surface_cross_section
       along(y_direction)
       with(x_fixed)

PARTIAL_DERIVATIVE
    -> describes(COORDINATE_DIRECTION_SLOPE)

# ---------- FIRST-ORDER PARTIALS ----------
FIRST_ORDER_PARTIALS
    := {
        partial_f/partial_x1,
        partial_f/partial_x2,
        ...,
        partial_f/partial_xn
    }

FIRST_ORDER_PARTIALS
    -> components_of(GRADIENT)
       for(SCALAR_VALUED_FUNCTION)

# ---------- GRADIENT ----------
GRADIENT(f)
    := vector(
        partial_f/partial_x1,
        partial_f/partial_x2,
        ...,
        partial_f/partial_xn
    )

GRADIENT
    -> collects(FIRST_ORDER_PARTIAL_DERIVATIVES)
    -> points_in(DIRECTION_OF_STEEPEST_LOCAL_INCREASE)
       under(EUCLIDEAN_DIFFERENTIABLE_CONTEXT)

GRADIENT
    -> magnitude_equals(MAXIMUM_DIRECTIONAL_DERIVATIVE)
       for(unit_directions_in_Euclidean_context)

# ---------- DIRECTIONAL DERIVATIVE ----------
DIRECTIONAL_DERIVATIVE(f, u)
    -> measures(CHANGE_ALONG_DIRECTION_u)

if
    f differentiable
    AND u unit_vector
then
    D_u f
        = GRADIENT(f) dot u

PARTIAL_DERIVATIVE
    -> special_case_of(DIRECTIONAL_DERIVATIVE)
       along(COORDINATE_BASIS_DIRECTION)

# ---------- DIFFERENTIABILITY ----------
EXISTENCE_OF_PARTIAL_DERIVATIVES
    -/> necessarily_implies(TOTAL_DIFFERENTIABILITY)

if
    first_order_partials_exist_in_neighbourhood
    AND are_continuous_near_point
then
    -> sufficient_condition_for(DIFFERENTIABILITY_AT_POINT)

TOTAL_DIFFERENTIABILITY
    -> implies(EXISTENCE_OF_DIRECTIONAL_DERIVATIVES)
       under(standard_finite_dimensional_context)

# ---------- TOTAL DERIVATIVE ----------
TOTAL_DERIVATIVE
    -> captures(FULL_LOCAL_LINEAR_CHANGE)

for scalar f:
    df
        ~= sum(
            partial_f/partial_x_i * dx_i
        )

TOTAL_DIFFERENTIAL
    -> combines(PARTIAL_DERIVATIVES, VARIABLE_CHANGES)

# ---------- HIGHER PARTIAL DERIVATIVES ----------
SECOND_PARTIAL_DERIVATIVE
    -> derivative_of(FIRST_PARTIAL_DERIVATIVE)

partial_squared_f/partial_x_squared
    -> PURE_SECOND_PARTIAL

partial_squared_f/(partial_x partial_y)
    -> MIXED_PARTIAL

HIGHER_PARTIAL_DERIVATIVE
    -> obtained_by(REPEATED_PARTIAL_DIFFERENTIATION)

# ---------- MIXED PARTIALS ----------
if
    relevant_second_partial_derivatives
        are_continuous_near_point
then
    partial_squared_f/(partial_x partial_y)
        = partial_squared_f/(partial_y partial_x)

EQUALITY_OF_MIXED_PARTIALS
    -> associated_with(CLAIRAUT_SCHWARZ_THEOREM)

MIXED_PARTIAL_ORDER
    -/> interchangeable_without_required_regularITY_conditions

# ---------- HESSIAN ----------
HESSIAN(f)
    := matrix(
        second_order_partial_derivatives
    )

HESSIAN
    -> encodes(SECOND_ORDER_LOCAL_BEHAVIOUR)
    -> supports(MULTIVARIABLE_OPTIMISATION)
    -> supports(CURVATURE_ANALYSIS)

# ---------- JACOBIAN ----------
VECTOR_VALUED_FUNCTION
    := F: R^n -> R^m

JACOBIAN(F)
    := matrix(
        partial_F_i/partial_x_j
    )

JACOBIAN
    -> generalises(FIRST_DERIVATIVE_TO_VECTOR_VALUED_MULTIVARIABLE_FUNCTIONS)

PARTIAL_DERIVATIVES
    -> populate(JACOBIAN)

# ---------- CHAIN RULE ----------
if
    z = f(x,y)
    AND x = x(t)
    AND y = y(t)
then
    dz/dt
        = partial_f/partial_x * dx/dt
        + partial_f/partial_y * dy/dt

MULTIVARIABLE_CHAIN_RULE
    -> propagates(DEPENDENCE_THROUGH_VARIABLE_NETWORK)

# ---------- IMPLICIT DIFFERENTIATION ----------
if
    F(x,y) = 0
    AND partial_F/partial_y != 0
    under(implicit_function_conditions)
then
    dy/dx
        = -(partial_F/partial_x)/(partial_F/partial_y)

PARTIAL_DERIVATIVES
    -> support(IMPLICIT_FUNCTION_ANALYSIS)

# ---------- OPTIMISATION ----------
CRITICAL_POINT
    -> may_satisfy(GRADIENT(f) = ZERO_VECTOR)

GRADIENT_ZERO
    -> necessary_for(INTERIOR_DIFFERENTIABLE_LOCAL_EXTREMUM)

GRADIENT_ZERO
    -/> sufficient_for(EXTREMUM)

HESSIAN
    -> may_classify(CRITICAL_POINT)
       under(SECOND_ORDER_TEST_CONDITIONS)

# ---------- PHYSICAL INTERPRETATION ----------
PARTIAL_DERIVATIVE
    -> may_measure(SPATIAL_RATE_OF_CHANGE)
    -> may_measure(TEMPORAL_RATE_OF_CHANGE)
    -> may_measure(SENSITIVITY_TO_PARAMETER)

example:
    T(x,y,z,t)

partial_T/partial_t
    -> temperature_change_rate_with_time_at_fixed_spatial_coordinates

partial_T/partial_x
    -> temperature_gradient_component_along_x

# ---------- RELATION GRAPH ----------
LIMIT
    -> defines(PARTIAL_DERIVATIVE)

PARTIAL_DERIVATIVE
    -> component_of(GRADIENT)

PARTIAL_DERIVATIVE
    -> special_case_of(DIRECTIONAL_DERIVATIVE)

PARTIAL_DERIVATIVES
    -> populate(JACOBIAN)

SECOND_PARTIAL_DERIVATIVES
    -> populate(HESSIAN)

PARTIAL_DERIVATIVES
    -> support(TOTAL_DIFFERENTIAL)

PARTIAL_DERIVATIVES
    -> support(MULTIVARIABLE_CHAIN_RULE)

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE := {
    "partial derivative" ~= "derivative with respect to one variable while other independent variables are fixed",
    "coordinate derivative" ~= "partial derivative along a coordinate basis direction",
    "first partials" ~= "first-order partial derivatives",
    "mixed partial" ~= "successive partial differentiation with respect to different variables",
    "gradient component" ~= "partial derivative of a scalar field with respect to the corresponding coordinate"
}

# ---------- CONSTRAINTS ----------
CONSTRAINTS := {
    partial_derivative_requires_selected_variable: true,
    other_independent_variables_are_fixed_in_definition: true,
    existence_of_partials_does_not_guarantee_total_differentiability: true,
    mixed_partial_equality_requires_appropriate_regularITY_conditions: true,
    gradient_zero_does_not_guarantee_extremum: true,
    directional_derivative_gradient_formula_requires_differentiability_context: true
}

# ---------- CONFIDENCE ----------
CONFIDENCE := {
    core_definition: 0.99,
    limit_relation: 0.99,
    gradient_relation: 0.99,
    higher_partial_relations: 0.99,
    jacobian_hessian_relations: 0.99,
    chain_rule_relation: 0.99,
    semantic_equivalence: 0.97
}

# ---------- RECURSIVE REASONING ----------
RECURSIVE_REASONING(query):
    identify(multivariable_function)
    -> identify(selected_variable)
    -> determine(domain)
    -> hold(other_variables_fixed)
    -> construct(partial_difference_quotient)
    -> evaluate(limit)
    -> derive(first_order_partial)
    -> derive(higher_or_mixed_partials_if_required)
    -> assemble(gradient_jacobian_or_hessian_if_required)
    -> analyse(total_differentiability)
    -> apply(chain_rule_or_optimisation_relations_if_required)
    -> validate(regularity_conditions)
    -> return(semantic_result)

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION := {
    parse_as: "typed partial-derivative semantic graph",
    primary_entity: PARTIAL_DERIVATIVE,
    preserve: [
        selected_variable,
        fixed_variables,
        limit_definition,
        derivative_order,
        coordinate_direction,
        regularity_conditions
    ],
    infer_through: [
        multivariable_functions,
        limits,
        gradients,
        directional_derivatives,
        jacobians,
        hessians,
        chain_rules,
        optimisation
    ],
    avoid: [
        varying_multiple_variables_in_partial_definition,
        assuming_partials_imply_total_differentiability,
        commuting_mixed_partials_without conditions,
        treating_gradient_zero_as_automatic_extremum,
        using_gradient_directional_formula_without differentiability
    ]
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL(new_information):
    validate(new_information)
    -> identify(partial_derivative_context)
    -> compare(existing_relations)
    -> preserve(variable_and_limit_invariants)
    -> update(affected_entities)
    -> update(affected_edges)
    -> recompute(CONFIDENCE)
    -> regenerate(FLOW_HASH)

# ---------- FLOW HASH ----------
FLOW_HASH := hash(
    SOURCE_URL
    + ENTITY
    + CONCEPTS
    + PARTIAL_DERIVATIVE
    + PARTIAL_DERIVATIVE_NOTATION
    + GRADIENT
    + DIRECTIONAL_DERIVATIVE
    + TOTAL_DERIVATIVE
    + MIXED_PARTIAL
    + HESSIAN
    + JACOBIAN
    + SEMANTIC_EQUIVALENCE
    + CONSTRAINTS
)

# ---------- EXECUTION ----------
INPUT(query)
    -> PARTIAL_DERIVATIVE
    -> FUNCTION_IDENTIFICATION
    -> VARIABLE_SELECTION
    -> DOMAIN_ANALYSIS
    -> PARTIAL_LIMIT_ANALYSIS
    -> FIRST_ORDER_PARTIAL_ANALYSIS
    -> HIGHER_PARTIAL_ANALYSIS
    -> GRADIENT_JACOBIAN_HESSIAN_ANALYSIS
    -> DIFFERENTIABILITY_ANALYSIS
    -> CHAIN_RULE_ANALYSIS
    -> OPTIMISATION_RELATION_ANALYSIS
    -> RECURSIVE_REASONING(query)
    -> CONFIDENCE
    -> OUTPUT(semantic_result)

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