Skip to main content

Procedural Programming Ontology

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

FLOW ALGEBRA — PROCEDURAL PROGRAMMING ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/programming/procedural-programming-ontology.html

FLOW PROCEDURAL_PROGRAMMING_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Programming"
    ONTOLOGY = "Procedural Programming Ontology"
    PURPOSE = "Formalise procedural programming concepts including procedures, functions, statements, variables, control flow, parameter passing, scope, state mutation, call stacks and execution relationships."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    PROCEDURAL_PROGRAMMING
    PROGRAMMING_PARADIGM
    IMPERATIVE_PROGRAMMING
    PROGRAMMING_LANGUAGE
    PROGRAM
    MODULE
    PROCEDURE
    FUNCTION
    SUBROUTINE
    ROUTINE
    MAIN_PROCEDURE
    PROCEDURE_DEFINITION
    PROCEDURE_CALL
    FUNCTION_CALL
    PARAMETER
    FORMAL_PARAMETER
    ACTUAL_PARAMETER
    ARGUMENT
    RETURN_VALUE
    RETURN_STATEMENT
    VARIABLE
    LOCAL_VARIABLE
    GLOBAL_VARIABLE
    STATIC_VARIABLE
    CONSTANT
    VALUE
    DATA_TYPE
    DECLARATION
    DEFINITION
    ASSIGNMENT
    EXPRESSION
    STATEMENT
    BLOCK
    SEQUENCE
    CONDITIONAL
    IF_STATEMENT
    SWITCH_STATEMENT
    LOOP
    FOR_LOOP
    WHILE_LOOP
    DO_WHILE_LOOP
    BRANCH
    BREAK_STATEMENT
    CONTINUE_STATEMENT
    GOTO_STATEMENT
    LABEL
    CONTROL_FLOW
    CONTROL_FLOW_GRAPH
    BASIC_BLOCK
    SCOPE
    LEXICAL_SCOPE
    DYNAMIC_SCOPE
    NAMESPACE
    BINDING
    STACK
    CALL_STACK
    STACK_FRAME
    ACTIVATION_RECORD
    HEAP
    MEMORY
    POINTER
    REFERENCE
    PASS_BY_VALUE
    PASS_BY_REFERENCE
    PASS_BY_NAME
    INPUT
    OUTPUT
    STATE
    PROGRAM_STATE
    SIDE_EFFECT
    MUTATION
    RECURSION
    TAIL_RECURSION
    EXCEPTION
    ERROR
    RUNTIME
    LANGUAGE_VERSION
    CONFIGURATION
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    PART_OF
    CONTAINS
    DEFINES
    DECLARES
    CALLS
    INVOKES
    HAS_PARAMETER
    HAS_ARGUMENT
    BINDS_TO
    PASSES_BY
    RETURNS
    ASSIGNS
    HAS_VALUE
    HAS_TYPE
    READS
    WRITES
    MODIFIES
    MUTATES
    HAS_SCOPE
    HAS_NAMESPACE
    PRECEDES
    FOLLOWS
    BRANCHES_TO
    LOOPS_TO
    JUMPS_TO
    ENTERS
    EXITS
    PUSHES
    POPS
    ALLOCATES
    DEALLOCATES
    POINTS_TO
    REFERENCES
    RECURSES_ON
    HAS_STATE
    TRANSITIONS_TO
    PRODUCES_SIDE_EFFECT
    HAS_LANGUAGE_VERSION
    HAS_CONFIGURATION
    DEPENDS_ON
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    SOURCE_CODE
    LANGUAGE_SPECIFICATIONS
    LANGUAGE_VERSION_DATA
    PROCEDURE_DEFINITIONS
    FUNCTION_DEFINITIONS
    PARAMETER_DATA
    VARIABLE_DECLARATIONS
    TYPE_INFORMATION
    SYMBOL_TABLES
    SCOPE_DATA
    CONTROL_FLOW_GRAPHS
    CALL_GRAPHS
    EXECUTION_TRACES
    CALL_STACK_TRACES
    MEMORY_TRACES
    INPUT_OUTPUT_TRACES
    ERROR_LOGS
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_PROCEDURAL_IDENTIFIERS
    NORMALISE_LANGUAGE_NAMES
    NORMALISE_LANGUAGE_VERSIONS
    NORMALISE_PROCEDURE_AND_FUNCTION_SIGNATURES
    NORMALISE_VARIABLE_IDENTIFIERS
    NORMALISE_PARAMETER_NAMES
    NORMALISE_TYPE_NAMES
    NORMALISE_SCOPE_IDENTIFIERS
    NORMALISE_CONTROL_FLOW_CONSTRUCTS
    NORMALISE_PARAMETER_PASSING_MODES
    NORMALISE_SOURCE_LOCATIONS
    RESOLVE_PROCEDURE_VARIABLE_AND_BINDING_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS PROCEDURAL_REASONING_PIPELINE {
    SOURCE_OR_RUNTIME_DATA
      -> LANGUAGE_AND_VERSION_RESOLUTION
      -> PROCEDURE_AND_FUNCTION_RESOLUTION
      -> VARIABLE_AND_SCOPE_RESOLUTION
      -> PARAMETER_BINDING_MAPPING
      -> CONTROL_FLOW_MAPPING
      -> CALL_STACK_MAPPING
      -> STATE_AND_SIDE_EFFECT_MAPPING
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS PROCEDURE_CALL_REASONING {
    PROCEDURE_CALL
      -> PROCEDURE_RESOLUTION

    PROCEDURE_RESOLUTION
      -> ARGUMENT_EVALUATION

    ARGUMENT_EVALUATION
      -> PARAMETER_PASSING_RULES

    PARAMETER_PASSING_RULES
      -> FORMAL_PARAMETER_BINDINGS

    FORMAL_PARAMETER_BINDINGS
      -> ACTIVATION_RECORD_CREATION

    ACTIVATION_RECORD_CREATION
      -> PROCEDURE_BODY_EXECUTION

    PROCEDURE_BODY_EXECUTION
      -> RETURN_OR_EXIT

    RETURN_OR_EXIT
      -> CALLER_CONTINUATION
  }

  PROCESS PARAMETER_PASSING_REASONING {
    ARGUMENT + FORMAL_PARAMETER
      -> PASSING_MODE

    PASS_BY_VALUE
      -> VALUE_COPY_OR_VALUE_BINDING

    PASS_BY_REFERENCE
      -> REFERENCE_TO_CALLER_STORAGE

    PASS_BY_NAME
      -> DEFERRED_EXPRESSION_OR_LANGUAGE_SPECIFIC_BINDING

    PARAMETER_USE
      -> VALUE_READ_OR_STATE_MUTATION
  }

  PROCESS VARIABLE_REASONING {
    VARIABLE_DECLARATION
      -> SCOPE

    SCOPE
      -> STORAGE_DURATION_AND_VISIBILITY

    VARIABLE_REFERENCE
      -> SCOPE_LOOKUP

    SCOPE_LOOKUP
      -> VARIABLE_BINDING

    ASSIGNMENT
      -> VARIABLE_STATE_UPDATE
  }

  PROCESS CONTROL_FLOW_REASONING {
    PROCEDURE_ENTRY
      -> BASIC_BLOCK

    BASIC_BLOCK
      -> SEQUENTIAL_EDGE
      OR -> CONDITIONAL_EDGE
      OR -> LOOP_EDGE
      OR -> JUMP_EDGE
      OR -> RETURN_EDGE

    CONTROL_EDGES
      -> CONTROL_FLOW_GRAPH

    CONTROL_FLOW_GRAPH
      -> EXECUTION_PATHS
  }

  PROCESS LOOP_REASONING {
    LOOP_ENTRY
      -> INITIALISATION_IF_PRESENT

    INITIALISATION_IF_PRESENT
      -> CONDITION_CHECK

    CONDITION_TRUE
      -> LOOP_BODY

    LOOP_BODY
      -> UPDATE_IF_PRESENT
      -> CONDITION_CHECK

    CONDITION_FALSE
      -> LOOP_EXIT
  }

  PROCESS CALL_STACK_REASONING {
    PROCEDURE_OR_FUNCTION_CALL
      -> STACK_FRAME_CREATION

    STACK_FRAME_CREATION
      -> PUSH_CALL_STACK

    CALLEE_EXECUTION
      -> LOCAL_STATE

    RETURN
      -> POP_CALL_STACK

    POP_CALL_STACK
      -> RESTORE_CALLER_CONTEXT
  }

  PROCESS RECURSION_REASONING {
    CALL_GRAPH
      -> SELF_OR_MUTUAL_CALL_CYCLE

    SELF_CALL
      -> RECURSION

    TAIL_POSITION_SELF_CALL
      -> TAIL_RECURSION_CANDIDATE

    RECURSIVE_CALL
      -> NEW_ACTIVATION_RECORD_UNLESS_OPTIMISED
  }

  PROCESS STATE_MUTATION_REASONING {
    PROGRAM_STATE(T1)
      + ASSIGNMENT_OR_IO_OR_MUTATING_CALL
      -> STATE_CHANGE

    STATE_CHANGE
      -> PROGRAM_STATE(T2)

    STATE_CHANGE
      -> SIDE_EFFECT_IF_OBSERVABLE_OUTSIDE_EXPRESSION_CONTEXT
  }

  RULES {
    IF PROCEDURE_IS_CALLED
    THEN PRESERVE CALLER_CALLEE_ARGUMENT_PARAMETER_AND_STACK_CONTEXT

    IF VARIABLE_IS_REFERENCED
    THEN REQUIRE SCOPE_AND_BINDING_RESOLUTION

    IF PARAMETER_IS_PASS_BY_REFERENCE
    THEN PRESERVE ALIASING_AND_CALLER_STORAGE_CONTEXT

    IF ASSIGNMENT_OCCURS
    THEN LINK PRIOR_VALUE_NEW_VALUE_AND_PROGRAM_STATE

    IF CONTROL_FLOW_BRANCHES
    THEN PRESERVE CONDITION_AND_SELECTED_PATH_CONTEXT

    IF RECURSION_IS_ASSERTED
    THEN REQUIRE CALL_GRAPH_CYCLE_OR_RUNTIME_RECURSIVE_CALL_EVIDENCE

    IF PROCEDURE_RETURNS
    THEN DISTINGUISH CONTROL_RETURN_FROM_RETURNED_VALUE

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND PROCEDURAL_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        LANGUAGE_VERSION_CERTAINTY,
        PROCEDURE_RESOLUTION_COMPLETENESS,
        VARIABLE_AND_SCOPE_RESOLUTION_COMPLETENESS,
        PARAMETER_PASSING_CERTAINTY,
        CONTROL_FLOW_COMPLETENESS,
        CALL_STACK_TRACE_QUALITY,
        RUNTIME_STATE_OBSERVABILITY,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF PARAMETER_PASSING_MODE_IS_UNKNOWN
    THEN REDUCE_ALIASING_AND_MUTATION_CONFIDENCE

    IF RUNTIME_STATE_IS_UNOBSERVED
    THEN REDUCE_DYNAMIC_PATH_AND_STATE_CONFIDENCE

    IF COMPLETE_EXECUTION_TRACE_CONFIRMS_BEHAVIOUR
    THEN INCREASE CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        PROGRAMMING_LANGUAGE,
        LANGUAGE_VERSION,
        MODULE_OR_NAMESPACE,
        PROCEDURE_OR_FUNCTION_SIGNATURE,
        SCOPE_CONTEXT
      )

    IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
    THEN A SEMANTICALLY_EQUIVALENT_TO B

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    PROCEDURE != PROCEDURE_CALL
    FUNCTION != FUNCTION_CALL
    PARAMETER != ARGUMENT
    VARIABLE != VALUE
    ASSIGNMENT != EQUALITY
    SCOPE != STORAGE_LOCATION
    PASS_BY_VALUE != PASS_BY_REFERENCE
    REFERENCE != REFERENCED_VALUE
    RETURN_OF_CONTROL != RETURN_VALUE
    CONTROL_FLOW_GRAPH != SINGLE_RUNTIME_EXECUTION_PATH
    RECURSION != ITERATION
    TAIL_RECURSION != GUARANTEED_TAIL_CALL_OPTIMISATION
    SIDE_EFFECT != ERROR
    MUTATION != NECESSARILY_GLOBAL_STATE_CHANGE
    LANGUAGE_VERSION_AFFECTS_PROCEDURAL_SEMANTICS
    RUNTIME_STATE_MAY_BE_REQUIRED_FOR_DYNAMIC_BEHAVIOUR
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_LANGUAGE_AND_VERSION
    CHECK_PROCEDURE_AND_FUNCTION_IDENTITIES
    CHECK_VARIABLE_BINDINGS
    CHECK_SCOPE_RELATIONS
    CHECK_PARAMETER_AND_ARGUMENT_RELATIONS
    CHECK_PARAMETER_PASSING_MODE
    CHECK_CONTROL_FLOW
    CHECK_CALL_GRAPH
    CHECK_CALL_STACK
    CHECK_RECURSION
    CHECK_STATE_MUTATIONS
    CHECK_SIDE_EFFECTS
    CHECK_MEMORY_RELATIONS
    CHECK_RUNTIME_CONTEXT
    CHECK_CONFIGURATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_PROCEDURAL_PROGRAMMING_ENTITIES
    PROCEDURE_AND_FUNCTION_RELATIONS
    PROCEDURE_CALL_RELATIONS
    PARAMETER_AND_ARGUMENT_RELATIONS
    PARAMETER_PASSING_RELATIONS
    VARIABLE_AND_BINDING_RELATIONS
    SCOPE_RELATIONS
    CONTROL_FLOW_GRAPHS
    CALL_GRAPHS
    CALL_STACK_RELATIONS
    RECURSION_RELATIONS
    STATE_MUTATION_RELATIONS
    SIDE_EFFECT_RELATIONS
    PROGRAM_STATE_TRANSITIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON SOURCE_SCOPE_OR_SIGNATURE_CHANGE {
      NORMALISE
      RESOLVE_PROCEDURES_FUNCTIONS_AND_VARIABLES
      UPDATE_SCOPE_RELATIONS
      UPDATE_PARAMETER_BINDINGS
      UPDATE_CONTROL_FLOW
      UPDATE_CALL_GRAPH
      RECOMPUTE_AFFECTED_RELATIONS
      UPDATE_CONFIDENCE
      PRESERVE_VERSION_HISTORY
    }

    ON NEW_RUNTIME_OR_CALL_TRACE {
      LINK_EVIDENCE
      UPDATE_CALL_STACK_RELATIONS
      UPDATE_EXECUTION_PATHS
      UPDATE_PROGRAM_STATE
      UPDATE_MUTATION_AND_SIDE_EFFECT_RELATIONS
      REASSESS_RECURSION
      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_PROCEDURE
      BY_FUNCTION
      BY_CALL
      BY_PARAMETER
      BY_ARGUMENT
      BY_VARIABLE
      BY_SCOPE
      BY_CONTROL_FLOW
      BY_CALL_STACK
      BY_RECURSION
      BY_STATE_MUTATION
      BY_SIDE_EFFECT
      BY_LANGUAGE
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      TRACE_PROCEDURE_CALLS
      ANALYSE_PARAMETER_PASSING
      RESOLVE_VARIABLES_AND_SCOPES
      TRACE_CONTROL_FLOW
      ANALYSE_LOOPS
      TRACE_CALL_STACK
      ANALYSE_RECURSION
      ANALYSE_STATE_MUTATION_AND_SIDE_EFFECTS
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_PROCEDURE_FROM_PROCEDURE_CALL
      DISTINGUISH_PARAMETER_FROM_ARGUMENT
      DISTINGUISH_VARIABLE_FROM_VALUE
      PRESERVE_LANGUAGE_VERSION_SCOPE_PARAMETER_PASSING_AND_RUNTIME_CONTEXT
      DISTINGUISH_CONTROL_FLOW_GRAPH_FROM_EXECUTED_PATH
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_PROCEDURAL_PROGRAMMING_INFERENCE
    }
  }

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

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