Skip to main content

Functional 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 — 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
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ