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