Skip to main content

Recursion Ontology

Algorithms
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 01 October 2026
Audio Overview
AI SEARCH

FLOW ALGEBRA — RECURSION ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/algorithms/recursion-ontology.html

FLOW RECURSION_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Algorithms"
    ONTOLOGY = "Recursion Ontology"
    PURPOSE = "Formalise recursion, recursive procedures, base cases, recursive calls, call stacks, termination, correctness, recurrence relations and complexity."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    RECURSION
    RECURSIVE_ALGORITHM
    RECURSIVE_PROCEDURE
    RECURSIVE_FUNCTION
    DIRECT_RECURSION
    INDIRECT_RECURSION
    MUTUAL_RECURSION
    TAIL_RECURSION
    NONTAIL_RECURSION
    STRUCTURAL_RECURSION
    TREE_RECURSION
    LINEAR_RECURSION
    RECURSIVE_CALL
    CALLER
    CALLEE
    ARGUMENT
    PARAMETER
    PROBLEM_INSTANCE
    SUBPROBLEM
    BASE_CASE
    BASE_CASE_PREDICATE
    BASE_RESULT
    RECURSIVE_CASE
    RECURSIVE_STEP
    REDUCTION
    PROGRESS_MEASURE
    WELL_FOUNDED_RELATION
    TERMINATION_CONDITION
    CALL_STACK
    STACK_FRAME
    ACTIVATION_RECORD
    LOCAL_STATE
    RETURN_VALUE
    CALL_TREE
    RECURSION_TREE
    RECURSION_DEPTH
    BRANCHING_FACTOR
    RECURRENCE_RELATION
    MEMOISATION
    CACHE
    TAIL_CALL
    TAIL_CALL_OPTIMISATION
    STACK_OVERFLOW
    INFINITE_RECURSION
    PRECONDITION
    POSTCONDITION
    INVARIANT
    INDUCTION
    STRUCTURAL_INDUCTION
    CORRECTNESS
    TERMINATION
    INPUT_SIZE
    TIME_COMPLEXITY
    SPACE_COMPLEXITY
    AUXILIARY_SPACE
    EXECUTION_TRACE
    IMPLEMENTATION
    PROGRAMMING_LANGUAGE
    RUNTIME
    CONFIGURATION
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    CALLS
    RECURSIVELY_CALLS
    CALLS_SELF
    CALLS_INDIRECTLY
    CALLER_OF
    CALLEE_OF
    ACCEPTS
    HAS_ARGUMENT
    HAS_PARAMETER
    REDUCES_TO
    HAS_SUBPROBLEM
    HAS_BASE_CASE
    HAS_RECURSIVE_CASE
    HAS_RECURSIVE_STEP
    HAS_PROGRESS_MEASURE
    DECREASES
    TERMINATES_AT
    PUSHES_FRAME
    POPS_FRAME
    HAS_STACK_FRAME
    HAS_LOCAL_STATE
    RETURNS
    HAS_RETURN_VALUE
    HAS_CALL_TREE
    HAS_RECURSION_DEPTH
    HAS_BRANCHING_FACTOR
    HAS_RECURRENCE
    MEMOISES
    CACHES
    HAS_TAIL_CALL
    OPTIMISED_BY
    REQUIRES
    ENSURES
    MAINTAINS
    HAS_INVARIANT
    PROVEN_BY
    HAS_CORRECTNESS
    HAS_TERMINATION
    HAS_TIME_COMPLEXITY
    HAS_SPACE_COMPLEXITY
    IMPLEMENTED_BY
    WRITTEN_IN
    EXECUTED_BY
    HAS_CONFIGURATION
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    RECURSIVE_ALGORITHM_SPECIFICATIONS
    PSEUDOCODE
    SOURCE_CODE
    FUNCTION_DEFINITIONS
    CALL_GRAPH_DATA
    ARGUMENT_AND_PARAMETER_DATA
    BASE_CASE_DEFINITIONS
    RECURSIVE_CASE_DEFINITIONS
    PROGRESS_MEASURES
    CALL_STACK_TRACES
    CALL_TREE_DATA
    RECURRENCE_RELATIONS
    MEMOISATION_DATA
    TERMINATION_PROOFS
    CORRECTNESS_PROOFS
    COMPLEXITY_ANALYSES
    LANGUAGE_AND_RUNTIME_CONTEXT
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_RECURSION_IDENTIFIERS
    NORMALISE_FUNCTION_AND_PROCEDURE_IDENTIFIERS
    NORMALISE_CALL_IDENTIFIERS
    NORMALISE_ARGUMENT_AND_PARAMETER_TYPES
    NORMALISE_BASE_CASES
    NORMALISE_RECURSIVE_CASES
    NORMALISE_PROGRESS_MEASURES
    NORMALISE_STACK_FRAME_IDENTIFIERS
    NORMALISE_CALL_TREE_NODES
    NORMALISE_RECURRENCE_RELATIONS
    NORMALISE_RECURSION_DEPTH
    NORMALISE_COMPLEXITY_NOTATION
    NORMALISE_LANGUAGE_AND_RUNTIME_CONTEXT
    RESOLVE_FUNCTION_CALL_AND_FRAME_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS RECURSION_REASONING_PIPELINE {
    RECURSIVE_PROCEDURE
      -> INPUT_AND_PRECONDITION
      -> BASE_CASE_CHECK
      -> BASE_RESULT_OR_RECURSIVE_CASE
      -> SUBPROBLEM_GENERATION
      -> RECURSIVE_CALL
      -> RETURN_PROPAGATION
      -> FINAL_RESULT
      -> TERMINATION_AND_CORRECTNESS_ANALYSIS
      -> COMPLEXITY_ANALYSIS
  }

  PROCESS BASE_CASE_REASONING {
    CURRENT_PROBLEM_INSTANCE
      -> BASE_CASE_PREDICATE

    PREDICATE_TRUE
      -> BASE_RESULT
      -> RETURN_WITHOUT_FURTHER_RECURSION

    PREDICATE_FALSE
      -> RECURSIVE_CASE
  }

  PROCESS RECURSIVE_CASE_REASONING {
    CURRENT_PROBLEM_INSTANCE
      -> REDUCTION_OR_TRANSFORMATION
      -> SUBPROBLEM
      -> RECURSIVE_CALL
      -> RECURSIVE_CALL_RESULT
      -> COMBINATION_OR_DIRECT_RETURN
      -> CALLER
  }

  PROCESS CALL_STACK_REASONING {
    FUNCTION_CALL
      -> STACK_FRAME

    STACK_FRAME
      -> PARAMETERS
      -> LOCAL_STATE

    RECURSIVE_CALL
      -> PUSH_NEW_FRAME

    BASE_CASE_OR_COMPLETED_CALL
      -> RETURN_VALUE
      -> POP_FRAME
      -> RESUME_CALLER
  }

  PROCESS RECURSION_TYPE_REASONING {
    FUNCTION_F CALLS FUNCTION_F
      -> DIRECT_RECURSION

    FUNCTION_A CALLS FUNCTION_B
      + FUNCTION_B HAS_CALL_PATH_TO FUNCTION_A
      -> INDIRECT_OR_MUTUAL_RECURSION
  }

  PROCESS TAIL_RECURSION_REASONING {
    RECURSIVE_CALL
      -> CHECK_REMAINING_COMPUTATION

    NO_REQUIRED_COMPUTATION_AFTER_CALL
      -> TAIL_CALL

    TAIL_CALL + RUNTIME_SUPPORT
      -> TAIL_CALL_OPTIMISATION_CANDIDATE

    OPTIMISED_EXECUTION
      -> FRAME_REUSE_OR_EQUIVALENT_CONTROL_TRANSFER
  }

  PROCESS RECURSION_TREE_REASONING {
    ROOT
      -> INITIAL_CALL

    EACH_RECURSIVE_CALL
      -> CHILD_CALL_NODE

    LONGEST_ROOT_TO_LEAF_CALL_PATH
      -> RECURSION_DEPTH

    NUMBER_OF_CHILD_CALLS
      -> BRANCHING_FACTOR
  }

  PROCESS TERMINATION_REASONING {
    RECURSIVE_CASE
      -> PROGRESS_MEASURE

    RECURSIVE_CALL
      -> NEW_MEASURE_VALUE

    WELL_FOUNDED_DECREASE
      -> EVENTUAL_BASE_CASE

    EVENTUAL_BASE_CASE
      -> TERMINATION_EVIDENCE
  }

  PROCESS CORRECTNESS_REASONING {
    BASE_CASE
      -> BASE_CASE_CORRECTNESS

    INDUCTION_HYPOTHESIS
      -> RECURSIVE_SUBPROBLEM_CORRECTNESS

    RECURSIVE_STEP
      -> POSTCONDITION

    BASE_CASE_CORRECTNESS
      + RECURSIVE_STEP_CORRECTNESS
      -> RECURSIVE_CORRECTNESS_EVIDENCE
  }

  PROCESS RECURRENCE_REASONING {
    INPUT_SIZE_N
      -> RECURSIVE_SUBPROBLEM_SIZES

    NUMBER_OF_RECURSIVE_CALLS
      -> RECURSIVE_WORK

    NONRECURSIVE_WORK
      -> LOCAL_WORK

    RECURSIVE_WORK + LOCAL_WORK
      -> RECURRENCE_RELATION

    RECURRENCE_RELATION
      -> ASYMPTOTIC_ANALYSIS
  }

  PROCESS MEMOISATION_REASONING {
    RECURSIVE_SUBPROBLEM
      -> STATE_KEY
      -> CACHE_LOOKUP

    CACHE_HIT
      -> RETURN_STORED_RESULT

    CACHE_MISS
      -> COMPUTE_RECURSIVELY
      -> STORE_RESULT
  }

  PROCESS COMPLEXITY_REASONING {
    RECURSION_TREE
      -> NUMBER_OF_CALLS

    EACH_CALL
      -> LOCAL_WORK

    NUMBER_OF_CALLS + LOCAL_WORK
      -> TIME_COMPLEXITY

    MAXIMUM_ACTIVE_CALL_DEPTH
      -> CALL_STACK_SPACE

    CALL_STACK_SPACE + AUXILIARY_STORAGE
      -> SPACE_COMPLEXITY
  }

  RULES {
    IF RECURSION_IS_ASSERTED
    THEN REQUIRE DIRECT_OR_INDIRECT_RECURSIVE_CALL_PATH

    IF TERMINATION_IS_ASSERTED
    THEN REQUIRE BASE_CASE_AND_PROGRESS_OR_EQUIVALENT_WELL_FOUNDED_EVIDENCE

    IF TAIL_RECURSION_IS_ASSERTED
    THEN REQUIRE RECURSIVE_CALL_OCCURS_IN_TAIL_POSITION

    IF TAIL_CALL_OPTIMISATION_IS_ASSERTED
    THEN PRESERVE LANGUAGE_COMPILER_AND_RUNTIME_CONTEXT

    IF MEMOISATION_IS_USED
    THEN DISTINGUISH RECURSION_FROM_DYNAMIC_PROGRAMMING_AS_IDENTICAL_CONCEPT

    IF STACK_OVERFLOW_OCCURS
    THEN DO_NOT AUTOMATICALLY_ASSERT INFINITE_RECURSION

    IF RECURRENCE_IS_ASSERTED
    THEN PRESERVE INPUT_SIZE_SUBPROBLEM_SIZE_CALL_COUNT_AND_LOCAL_WORK

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND RECURSION_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        PROCEDURE_IDENTITY_CERTAINTY,
        CALL_GRAPH_COMPLETENESS,
        BASE_CASE_CERTAINTY,
        RECURSIVE_CASE_CERTAINTY,
        PROGRESS_MEASURE_CERTAINTY,
        CALL_STACK_TRACE_COMPLETENESS,
        CORRECTNESS_AND_TERMINATION_EVIDENCE_QUALITY,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF CALL_GRAPH_IS_PARTIAL
    THEN REDUCE_RECURSION_TYPE_CONFIDENCE

    IF PROGRESS_MEASURE_OR_BASE_CASE_IS_UNKNOWN
    THEN REDUCE_TERMINATION_CONFIDENCE

    IF FORMAL_PROOF_AND_EXECUTION_TRACE_CONVERGE
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        RECURSIVE_PROCEDURE_IDENTIFIER,
        BASE_CASE,
        RECURSIVE_STEP,
        ARGUMENT_TRANSFORMATION,
        LANGUAGE_RUNTIME_CONTEXT,
        CONFIGURATION
      )

    IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
    THEN A SEMANTICALLY_EQUIVALENT_TO B
    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    RECURSION != ITERATION
    RECURSION != DIVIDE_AND_CONQUER_AS_IDENTICAL_CONCEPT
    RECURSION != DYNAMIC_PROGRAMMING_AS_IDENTICAL_CONCEPT
    BASE_CASE != RECURSIVE_CASE
    RECURSIVE_CALL != STACK_FRAME
    CALL_TREE != CALL_STACK
    RECURSION_DEPTH != TOTAL_CALL_COUNT
    DIRECT_RECURSION != INDIRECT_RECURSION
    TAIL_RECURSION != TAIL_CALL_OPTIMISATION
    TAIL_CALL_OPTIMISATION != GUARANTEED_BY_ALL_LANGUAGES_OR_RUNTIMES
    STACK_OVERFLOW != INFINITE_RECURSION
    MEMOISATION != RECURSION
    TERMINATION != CORRECTNESS
    RECURRENCE_RELATION != EXECUTION_TRACE
    TIME_COMPLEXITY != RECURSION_DEPTH_ALONE
    SPACE_COMPLEXITY_DEPENDS_ON_ACTIVE_CALL_DEPTH_AND_AUXILIARY_STORAGE
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_RECURSIVE_PROCEDURE_IDENTIFIER
    CHECK_CALL_GRAPH
    CHECK_DIRECT_OR_INDIRECT_RECURSION
    CHECK_ARGUMENT_TRANSFORMATIONS
    CHECK_BASE_CASE
    CHECK_RECURSIVE_CASE
    CHECK_PROGRESS_MEASURE
    CHECK_CALL_STACK
    CHECK_CALL_TREE
    CHECK_RECURSION_DEPTH
    CHECK_TAIL_POSITION_IF_APPLICABLE
    CHECK_MEMOISATION_IF_APPLICABLE
    CHECK_TERMINATION_EVIDENCE
    CHECK_CORRECTNESS_EVIDENCE
    CHECK_RECURRENCE
    CHECK_COMPLEXITY_CONTEXT
    CHECK_LANGUAGE_RUNTIME_AND_CONFIGURATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_RECURSION_ENTITIES
    RECURSIVE_CALL_RELATIONS
    DIRECT_INDIRECT_AND_MUTUAL_RECURSION_RELATIONS
    BASE_CASE_RELATIONS
    RECURSIVE_CASE_RELATIONS
    SUBPROBLEM_RELATIONS
    CALL_STACK_RELATIONS
    STACK_FRAME_RELATIONS
    CALL_TREE_RELATIONS
    RECURSION_DEPTH_RELATIONS
    TAIL_RECURSION_RELATIONS
    MEMOISATION_RELATIONS
    TERMINATION_RELATIONS
    CORRECTNESS_RELATIONS
    RECURRENCE_RELATIONS
    TIME_COMPLEXITY_RELATIONS
    SPACE_COMPLEXITY_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON RECURSIVE_PROCEDURE_OR_CALL_CHANGE {
      NORMALISE
      RESOLVE_FUNCTION_CALL_AND_FRAME_IDENTITIES
      UPDATE_CALL_GRAPH
      UPDATE_BASE_AND_RECURSIVE_CASES
      UPDATE_CALL_STACK_AND_TREE
      REASSESS_PROGRESS_AND_TERMINATION
      REASSESS_CORRECTNESS_AND_COMPLEXITY
      UPDATE_CONFIDENCE
      PRESERVE_VERSION_HISTORY
    }

    ON NEW_EXECUTION_OR_TRACE_DATA {
      LINK_EVIDENCE
      UPDATE_STACK_FRAMES
      UPDATE_CALL_TREE
      UPDATE_RECURSION_DEPTH
      UPDATE_RETURN_RELATIONS
      REASSESS_RECURRENCE_MODEL
      UPDATE_CONFIDENCE
      RECORD_PROVENANCE
    }

    ON ONTOLOGY_REVISION {
      REMAP_TERMS
      CHECK_SEMANTIC_EQUIVALENCE
      IDENTIFY_DEPRECATED_TERMS
      MIGRATE_RELATIONSHIPS
      PRESERVE_PRIOR_VERSION_REFERENCES
    }
  }

  FLOW_HASH {
    HASH_INPUT =
      CANONICALISE(
        ENTITY_TYPES,
        RELATIONSHIPS,
        RULES,
        CONFIDENCE,
        SEMANTIC_EQUIVALENCE,
        REASONING_CONSTRAINTS,
        UPDATE_MODEL
      )

    FLOW_HASH = SHA256(HASH_INPUT)
  }

  AI_CONSUMPTION {
    INDEX {
      ONTOLOGY
      ENTITY_TYPES
      RELATIONSHIPS
      RULES
      OUTPUTS
    }

    RETRIEVE {
      BY_RECURSIVE_PROCEDURE
      BY_RECURSIVE_CALL
      BY_BASE_CASE
      BY_RECURSIVE_CASE
      BY_CALL_STACK
      BY_STACK_FRAME
      BY_CALL_TREE
      BY_RECURSION_DEPTH
      BY_TAIL_RECURSION
      BY_RECURRENCE
      BY_COMPLEXITY
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      ANALYSE_BASE_CASES
      TRACE_RECURSIVE_CALLS
      ANALYSE_DIRECT_INDIRECT_AND_MUTUAL_RECURSION
      TRACE_CALL_STACK
      BUILD_CALL_TREE
      ANALYSE_TAIL_RECURSION
      ANALYSE_TERMINATION
      ANALYSE_CORRECTNESS
      ANALYSE_RECURRENCES
      ANALYSE_MEMOISATION
      ANALYSE_COMPLEXITY
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_RECURSION_FROM_ITERATION_DIVIDE_AND_CONQUER_AND_DYNAMIC_PROGRAMMING
      DISTINGUISH_CALL_STACK_FROM_CALL_TREE
      DISTINGUISH_TAIL_RECURSION_FROM_TAIL_CALL_OPTIMISATION
      PRESERVE_BASE_CASE_PROGRESS_MEASURE_ARGUMENT_TRANSFORMATION_LANGUAGE_RUNTIME_AND_CONFIGURATION_CONTEXT
      DISTINGUISH_STACK_OVERFLOW_FROM_INFINITE_RECURSION
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_RECURSION_INFERENCE
    }
  }

  TERMINAL {
    RESULT =
      VALIDATED(
        SEMANTICALLY_NORMALISED(
          EVIDENCE_LINKED(
            CONFIDENCE_AWARE(
              RECURSION_KNOWLEDGE
            )
          )
        )
      )
  }
}

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