AI SEARCH
FLOW ALGEBRA — FUNCTIONAL PROGRAMMING ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/programming/functional-programming-ontology.html
FLOW FUNCTIONAL_PROGRAMMING_ONTOLOGY {
META {
DOMAIN = "Computing Ontologies"
SUBDOMAIN = "Programming"
ONTOLOGY = "Functional Programming Ontology"
PURPOSE = "Formalise functional programming concepts including pure functions, expressions, immutability, higher-order functions, recursion, closures, algebraic data types, evaluation strategies and compositional relationships."
LOCALE = "en-GB"
}
ENTITY_TYPES {
FUNCTIONAL_PROGRAMMING
PROGRAMMING_PARADIGM
PROGRAMMING_LANGUAGE
PROGRAM
EXPRESSION
VALUE
VARIABLE
BINDING
IMMUTABLE_BINDING
FUNCTION
PURE_FUNCTION
IMPURE_FUNCTION
FIRST_CLASS_FUNCTION
HIGHER_ORDER_FUNCTION
ANONYMOUS_FUNCTION
LAMBDA_EXPRESSION
FUNCTION_APPLICATION
PARAMETER
ARGUMENT
RETURN_VALUE
CLOSURE
LEXICAL_SCOPE
ENVIRONMENT
FREE_VARIABLE
BOUND_VARIABLE
RECURSION
TAIL_RECURSION
MUTUAL_RECURSION
COMPOSITION
PARTIAL_APPLICATION
CURRYING
MEMOISATION
REFERENTIAL_TRANSPARENCY
IMMUTABILITY
SIDE_EFFECT
EFFECT
LAZY_EVALUATION
EAGER_EVALUATION
STRICT_EVALUATION
NON_STRICT_EVALUATION
THUNK
PATTERN_MATCHING
PATTERN
GUARD
ALGEBRAIC_DATA_TYPE
PRODUCT_TYPE
SUM_TYPE
RECORD_TYPE
TUPLE
LIST
OPTION_TYPE
RESULT_TYPE
TYPE
TYPE_VARIABLE
PARAMETRIC_POLYMORPHISM
GENERIC_FUNCTION
TYPE_INFERENCE
FUNCTOR
APPLICATIVE
MONAD
MONOID
FOLD
MAP_OPERATION
FILTER_OPERATION
REDUCE_OPERATION
SEQUENCE
RECURSIVE_STRUCTURE
PERSISTENT_DATA_STRUCTURE
STATE
STATE_TRANSITION
IO_EFFECT
EXCEPTION
ERROR
RUNTIME
LANGUAGE_VERSION
CONFIGURATION
EVIDENCE
CONFIDENCE_SCORE
PROVENANCE_RECORD
}
RELATIONSHIPS {
IS_A
INSTANCE_OF
PART_OF
CONTAINS
DEFINES
BINDS
REFERENCES
HAS_TYPE
HAS_VALUE
HAS_PARAMETER
HAS_ARGUMENT
APPLIES_TO
RETURNS
CALLS
CAPTURES
CLOSES_OVER
RECURSES_ON
COMPOSES_WITH
PARTIALLY_APPLIES
CURRIES_TO
MEMOISES
EVALUATES_TO
HAS_EFFECT
PRODUCES_EFFECT
PRESERVES
MATCHES
HAS_PATTERN
HAS_GUARD
CONSTRUCTS
DECONSTRUCTS
MAPS
FILTERS
FOLDS
REDUCES
TRANSFORMS
HAS_STATE
TRANSITIONS_TO
HAS_LANGUAGE_VERSION
HAS_CONFIGURATION
DEPENDS_ON
PRECEDES
FOLLOWS
DERIVED_FROM
INFERRED_FROM
HAS_EVIDENCE
HAS_CONFIDENCE
HAS_PROVENANCE
SEMANTICALLY_EQUIVALENT_TO
}
INPUTS {
SOURCE_CODE
LANGUAGE_SPECIFICATIONS
LANGUAGE_VERSION_DATA
FUNCTION_DEFINITIONS
EXPRESSION_TREES
TYPE_INFORMATION
BINDING_DATA
SCOPE_DATA
CLOSURE_DATA
CALL_GRAPHS
EVALUATION_TRACES
EFFECT_DATA
PATTERN_MATCH_DATA
ALGEBRAIC_DATA_TYPE_DEFINITIONS
RECURSION_TRACES
RUNTIME_DATA
CONFIGURATION_DATA
ONTOLOGY_TERMS
}
NORMALISE {
STANDARDISE_FUNCTIONAL_IDENTIFIERS
NORMALISE_LANGUAGE_NAMES
NORMALISE_LANGUAGE_VERSIONS
NORMALISE_FUNCTION_SIGNATURES
NORMALISE_VARIABLE_AND_BINDING_IDENTIFIERS
NORMALISE_TYPE_NAMES
NORMALISE_TYPE_VARIABLES
NORMALISE_EVALUATION_STRATEGIES
NORMALISE_EFFECT_TYPES
NORMALISE_PATTERN_FORMS
NORMALISE_ADT_CONSTRUCTORS
RESOLVE_FUNCTION_BINDING_AND_TYPE_IDENTITIES
ALIGN_ONTOLOGY_TERMS
REMOVE_DUPLICATES
VALIDATE_METADATA
PRESERVE_PROVENANCE
}
PROCESS FUNCTIONAL_REASONING_PIPELINE {
SOURCE_OR_EXPRESSION_DATA
-> LANGUAGE_AND_VERSION_RESOLUTION
-> EXPRESSION_MAPPING
-> BINDING_AND_SCOPE_RESOLUTION
-> FUNCTION_RELATION_MAPPING
-> TYPE_RESOLUTION
-> EVALUATION_STRATEGY_MAPPING
-> EFFECT_AND_STATE_MAPPING
-> VALIDATION
-> OUTPUT
}
PROCESS FUNCTION_APPLICATION_REASONING {
FUNCTION_APPLICATION
-> FUNCTION_EXPRESSION
FUNCTION_EXPRESSION
-> FUNCTION_VALUE
ARGUMENT_EXPRESSIONS
-> EVALUATION_ACCORDING_TO_STRATEGY
FUNCTION_VALUE + ARGUMENT_VALUES_OR_THUNKS
-> PARAMETER_BINDING
PARAMETER_BINDING
-> FUNCTION_BODY_EVALUATION
FUNCTION_BODY_EVALUATION
-> RESULT_VALUE_OR_EFFECT_OR_ERROR
}
PROCESS CLOSURE_REASONING {
FUNCTION_DEFINITION
-> FREE_VARIABLE_ANALYSIS
FREE_VARIABLES
-> LEXICAL_ENVIRONMENT
FUNCTION_VALUE + CAPTURED_ENVIRONMENT
-> CLOSURE
CLOSURE_APPLICATION
-> CAPTURED_BINDING_RESOLUTION
}
PROCESS PURE_FUNCTION_REASONING {
FUNCTION
-> INPUT_DEPENDENCY_ANALYSIS
INPUT_DEPENDENCY_ANALYSIS
-> EFFECT_ANALYSIS
NO_OBSERVABLE_SIDE_EFFECTS + OUTPUT_DEPENDS_ONLY_ON_ARGUMENTS
-> PURE_FUNCTION_CANDIDATE
PURE_FUNCTION_CANDIDATE
-> REFERENTIAL_TRANSPARENCY_CHECK
}
PROCESS HIGHER_ORDER_REASONING {
FUNCTION
-> PARAMETER_AND_RETURN_TYPE_ANALYSIS
FUNCTION_PARAMETER_OR_FUNCTION_RETURN
-> HIGHER_ORDER_FUNCTION
HIGHER_ORDER_FUNCTION
-> FUNCTION_COMPOSITION_OR_TRANSFORMATION
}
PROCESS RECURSION_REASONING {
FUNCTION_CALL_GRAPH
-> SELF_OR_MUTUAL_CALL_CYCLE
SELF_CALL
-> RECURSION
MULTIPLE_FUNCTION_CALL_CYCLE
-> MUTUAL_RECURSION
TAIL_POSITION_SELF_CALL
-> TAIL_RECURSION_CANDIDATE
}
PROCESS CURRYING_REASONING {
MULTI_ARGUMENT_FUNCTION
-> CURRYING_TRANSFORMATION
CURRYING_TRANSFORMATION
-> NESTED_SINGLE_ARGUMENT_FUNCTIONS
PARTIAL_ARGUMENT_SET
-> PARTIAL_APPLICATION
PARTIAL_APPLICATION
-> NEW_FUNCTION_VALUE
}
PROCESS PATTERN_MATCH_REASONING {
SCRUTINEE_VALUE
-> PATTERN_SEQUENCE
PATTERN_SEQUENCE
-> PATTERN_COMPATIBILITY_CHECK
MATCHING_PATTERN
-> VARIABLE_BINDINGS
VARIABLE_BINDINGS + GUARD_IF_PRESENT
-> SELECTED_BRANCH
NO_MATCH
-> FALLBACK_OR_MATCH_ERROR
}
PROCESS ALGEBRAIC_DATA_TYPE_REASONING {
ADT_DEFINITION
-> CONSTRUCTOR_SET
CONSTRUCTOR_APPLICATION
-> ADT_VALUE
ADT_VALUE
-> PATTERN_DECONSTRUCTION
PATTERN_DECONSTRUCTION
-> CONSTRUCTOR_AND_FIELD_BINDINGS
}
PROCESS EVALUATION_STRATEGY_REASONING {
EXPRESSION
-> LANGUAGE_EVALUATION_STRATEGY
EAGER_OR_STRICT
-> EVALUATE_ARGUMENT_BEFORE_APPLICATION
LAZY_OR_NON_STRICT
-> DELAY_EXPRESSION
DELAY_EXPRESSION
-> THUNK
THUNK_DEMAND
-> EVALUATE_AND_OPTIONALLY_MEMOISE
}
PROCESS EFFECT_REASONING {
EXPRESSION
-> EFFECT_ANALYSIS
PURE_EXPRESSION
-> VALUE
EFFECTFUL_EXPRESSION
-> EFFECT_REPRESENTATION
EFFECT_REPRESENTATION
-> RUNTIME_INTERPRETATION_OR_SEQUENCING
EFFECT_EXECUTION
-> VALUE_AND_OR_EXTERNAL_STATE_CHANGE
}
RULES {
IF FUNCTION_IS_CLASSIFIED_AS_PURE
THEN REQUIRE NO_OBSERVABLE_SIDE_EFFECTS_AND_ARGUMENT_DETERMINED_RESULT_CONTEXT
IF EXPRESSION_IS_REFERENTIALLY_TRANSPARENT
THEN REPLACEMENT_BY_EQUAL_VALUE_MUST_PRESERVE_OBSERVABLE_PROGRAM_MEANING_IN_CONTEXT
IF FUNCTION_CAPTURES_FREE_VARIABLES
THEN PRESERVE CLOSURE_ENVIRONMENT_AND_BINDING_CONTEXT
IF FUNCTION_IS_HIGHER_ORDER
THEN REQUIRE FUNCTION_AS_ARGUMENT_OR_RESULT_OR_EQUIVALENT_FUNCTION_VALUE_CONTEXT
IF TAIL_RECURSION_IS_ASSERTED
THEN REQUIRE RECURSIVE_CALL_IN_TAIL_POSITION
IF LAZY_EVALUATION_IS_USED
THEN DO_NOT_ASSUME ARGUMENT_EXPRESSION_IS_EVALUATED_IMMEDIATELY
IF IMMUTABILITY_IS_ASSERTED
THEN DISTINGUISH BINDING_IMMUTABILITY_FROM DEEP_OBJECT_IMMUTABILITY
IF SEMANTIC_IDENTIFIERS_DIFFER
AND FUNCTIONAL_REFERENT_IS_SAME
THEN APPLY SEMANTIC_EQUIVALENCE
}
CONFIDENCE {
CONFIDENCE_SCORE =
WEIGHT(
LANGUAGE_VERSION_CERTAINTY,
FUNCTION_RESOLUTION_COMPLETENESS,
SCOPE_AND_BINDING_COMPLETENESS,
TYPE_INFORMATION_COMPLETENESS,
EVALUATION_STRATEGY_CERTAINTY,
EFFECT_ANALYSIS_QUALITY,
RUNTIME_TRACE_QUALITY,
PROVENANCE_COMPLETENESS
)
LEVELS {
HIGH
MODERATE
LOW
INSUFFICIENT
}
IF EFFECTS_OR_RUNTIME_CONTEXT_ARE_UNKNOWN
THEN REDUCE_PURITY_INFERENCE_CONFIDENCE
IF EVALUATION_STRATEGY_IS_UNKNOWN
THEN REDUCE_EXECUTION_ORDER_INFERENCE_CONFIDENCE
IF REPRODUCIBLE_EVALUATION_TRACE_CONFIRMS_BEHAVIOUR
THEN INCREASE CONFIDENCE_SCORE
}
SEMANTIC_EQUIVALENCE {
EQUIVALENCE_KEY =
NORMALISE(
ENTITY_TYPE,
PROGRAMMING_LANGUAGE,
LANGUAGE_VERSION,
MODULE_OR_NAMESPACE,
FUNCTION_SIGNATURE_OR_BINDING,
TYPE_AND_SCOPE_CONTEXT
)
IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
THEN A SEMANTICALLY_EQUIVALENT_TO B
ELSE PRESERVE_DISTINCT_ENTITIES
}
REASONING_CONSTRAINTS {
FUNCTION != FUNCTION_APPLICATION
PARAMETER != ARGUMENT
VARIABLE != VALUE
BINDING != MUTABLE_STORAGE_LOCATION_IN_ALL_LANGUAGES
PURE_FUNCTION != FUNCTION_WITHOUT_INTERNAL_COMPUTATION
REFERENTIAL_TRANSPARENCY != GENERAL_DETERMINISM_WITHOUT_CONTEXT
IMMUTABLE_BINDING != NECESSARILY_DEEPLY_IMMUTABLE_VALUE
HIGHER_ORDER_FUNCTION != FIRST_CLASS_FUNCTION_AS_IDENTICAL_CONCEPT
CURRYING != PARTIAL_APPLICATION
RECURSION != ITERATION
TAIL_RECURSION != GUARANTEED_CONSTANT_STACK_WITHOUT_IMPLEMENTATION_SUPPORT
LAZY_EVALUATION != NO_EVALUATION
MONAD != SIDE_EFFECT
ALGEBRAIC_DATA_TYPE != ALGEBRAIC_STRUCTURE_IN_ALL_MATHEMATICAL_SENSES
LANGUAGE_VERSION_AND_RUNTIME_AFFECT_FUNCTIONAL_SEMANTICS
EFFECTS_MAY_REQUIRE_RUNTIME_CONTEXT
PROVENANCE_MUST_BE_PRESERVED
UNCERTAINTY_MUST_NOT_BE_DISCARDED
}
VALIDATION {
CHECK_ENTITY_TYPES
CHECK_RELATION_DOMAINS_AND_RANGES
CHECK_LANGUAGE_AND_VERSION
CHECK_FUNCTION_IDENTITIES
CHECK_PARAMETER_AND_ARGUMENT_RELATIONS
CHECK_BINDINGS_AND_SCOPES
CHECK_CLOSURE_RELATIONS
CHECK_TYPE_RELATIONS
CHECK_PURITY_AND_EFFECT_RELATIONS
CHECK_HIGHER_ORDER_RELATIONS
CHECK_RECURSION
CHECK_CURRYING_AND_PARTIAL_APPLICATION
CHECK_PATTERN_MATCHING
CHECK_ADT_RELATIONS
CHECK_EVALUATION_STRATEGY
CHECK_RUNTIME_CONTEXT
CHECK_CONFIGURATION
CHECK_PROVENANCE
CHECK_CONFIDENCE
CHECK_SEMANTIC_CONSISTENCY
}
OUTPUTS {
NORMALISED_FUNCTIONAL_PROGRAMMING_ENTITIES
FUNCTION_RELATIONS
FUNCTION_APPLICATION_RELATIONS
BINDING_AND_SCOPE_RELATIONS
CLOSURE_RELATIONS
PURE_FUNCTION_RELATIONS
REFERENTIAL_TRANSPARENCY_RELATIONS
HIGHER_ORDER_FUNCTION_RELATIONS
RECURSION_RELATIONS
CURRYING_AND_PARTIAL_APPLICATION_RELATIONS
PATTERN_MATCH_RELATIONS
ALGEBRAIC_DATA_TYPE_RELATIONS
EVALUATION_STRATEGY_RELATIONS
EFFECT_RELATIONS
PROGRAM_STATE_TRANSITIONS
CONFIDENCE_SCORES
EVIDENCE_LINKS
PROVENANCE_RECORDS
EXPLANATION_PATHS
}
UPDATE_MODEL {
ON SOURCE_TYPE_OR_BINDING_CHANGE {
NORMALISE
RESOLVE_FUNCTIONS_BINDINGS_AND_SCOPES
UPDATE_TYPE_RELATIONS
UPDATE_CALL_GRAPH
UPDATE_CLOSURE_RELATIONS
UPDATE_EFFECT_ANALYSIS
UPDATE_EVALUATION_RELATIONS
RECOMPUTE_AFFECTED_RELATIONS
UPDATE_CONFIDENCE
PRESERVE_VERSION_HISTORY
}
ON NEW_RUNTIME_OR_EVALUATION_TRACE {
LINK_EVIDENCE
UPDATE_FUNCTION_APPLICATION_RELATIONS
UPDATE_EFFECT_RELATIONS
UPDATE_PROGRAM_STATE
REASSESS_PURITY_AND_EVALUATION_HYPOTHESES
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_FUNCTION
BY_EXPRESSION
BY_BINDING
BY_SCOPE
BY_CLOSURE
BY_TYPE
BY_PURITY
BY_EFFECT
BY_RECURSION
BY_PATTERN
BY_ADT
BY_EVALUATION_STRATEGY
BY_LANGUAGE
BY_CONFIDENCE
}
REASON {
APPLY_RELATIONSHIPS
APPLY_RULES
TRACE_FUNCTION_APPLICATION
ANALYSE_CLOSURES
ANALYSE_PURITY_AND_REFERENTIAL_TRANSPARENCY
ANALYSE_HIGHER_ORDER_FUNCTIONS
ANALYSE_RECURSION
ANALYSE_CURRYING_AND_PARTIAL_APPLICATION
TRACE_PATTERN_MATCHING
ANALYSE_ALGEBRAIC_DATA_TYPES
ANALYSE_EVALUATION_STRATEGIES
ANALYSE_EFFECTS
CHECK_SEMANTIC_EQUIVALENCE
PRESERVE_UNCERTAINTY
TRACE_EVIDENCE
TRACE_PROVENANCE
GENERATE_EXPLANATION_PATH
}
RESPONSE_POLICY {
DISTINGUISH_FUNCTION_FROM_FUNCTION_APPLICATION
DISTINGUISH_CURRYING_FROM_PARTIAL_APPLICATION
DISTINGUISH_IMMUTABLE_BINDING_FROM_DEEP_IMMUTABILITY
PRESERVE_LANGUAGE_VERSION_SCOPE_TYPE_EVALUATION_AND_EFFECT_CONTEXT
DISTINGUISH_PURITY_FROM_UNOBSERVED_EFFECTS
RETURN_CONFIDENCE_WHEN_AVAILABLE
RETURN_PROVENANCE_WHEN_AVAILABLE
AVOID_UNSUPPORTED_FUNCTIONAL_PROGRAMMING_INFERENCE
}
}
TERMINAL {
RESULT =
VALIDATED(
SEMANTICALLY_NORMALISED(
EVIDENCE_LINKED(
CONFIDENCE_AWARE(
FUNCTIONAL_PROGRAMMING_KNOWLEDGE
)
)
)
)
}
}
END FLOW
Download Code
Copy to Clipboard