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
Download Code
Copy to Clipboard