Skip to main content

Stack Ontology

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

FLOW ALGEBRA — STACK ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/data-structures/stack-ontology.html

FLOW STACK_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Data Structures"
    ONTOLOGY = "Stack Ontology"
    PURPOSE = "Formalise stack data structures, elements, top position, LIFO ordering, push, pop, peek, capacity, underflow, overflow, implementations, complexity and stack-state relationships."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    STACK
    ABSTRACT_STACK
    ARRAY_STACK
    LINKED_STACK
    BOUNDED_STACK
    UNBOUNDED_STACK
    MUTABLE_STACK
    IMMUTABLE_STACK
    PERSISTENT_STACK
    ELEMENT
    VALUE
    TOP_ELEMENT
    TOP_POSITION
    BOTTOM_ELEMENT
    SIZE
    CAPACITY
    EMPTY_STACK
    FULL_STACK
    OPERATION
    CREATE
    INITIALISE
    PUSH
    POP
    PEEK
    TOP
    IS_EMPTY
    IS_FULL
    CLEAR
    TRAVERSE
    ITERATE
    COPY
    STACK_STATE
    PREVIOUS_STATE
    NEXT_STATE
    LIFO_ORDERING
    UNDERFLOW
    OVERFLOW
    STACK_ERROR
    NODE
    NEXT_REFERENCE
    ARRAY
    INDEX
    MEMORY
    MEMORY_LOCATION
    ALLOCATION
    DEALLOCATION
    INVARIANT
    SIZE_INVARIANT
    TOP_INVARIANT
    CAPACITY_INVARIANT
    ORDERING_INVARIANT
    TIME_COMPLEXITY
    SPACE_COMPLEXITY
    IMPLEMENTATION
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    IMPLEMENTS
    PART_OF
    CONTAINS
    HAS_ELEMENT
    HAS_TOP
    HAS_BOTTOM
    HAS_SIZE
    HAS_CAPACITY
    HAS_STATE
    TRANSITIONS_TO
    PRECEDES
    FOLLOWS
    PUSHES
    POPS
    PEEKS
    READS
    ADDS
    REMOVES
    CLEARS
    TRAVERSES
    ITERATES
    STORED_IN
    HAS_NODE
    HAS_NEXT
    HAS_INDEX
    ALLOCATES
    DEALLOCATES
    HAS_ORDERING
    HAS_INVARIANT
    HAS_TIME_COMPLEXITY
    HAS_SPACE_COMPLEXITY
    HAS_IMPLEMENTATION
    HAS_CONFIGURATION
    FAILS_WITH
    DEPENDS_ON
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    STACK_SPECIFICATIONS
    ABSTRACT_DATA_TYPE_SPECIFICATIONS
    STACK_IMPLEMENTATIONS
    SOURCE_CODE
    ELEMENT_AND_VALUE_DATA
    TOP_POSITION_DATA
    SIZE_AND_CAPACITY_DATA
    OPERATION_TRACES
    PUSH_TRACES
    POP_TRACES
    ERROR_TRACES
    MEMORY_DATA
    INVARIANT_DEFINITIONS
    COMPLEXITY_ANALYSES
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_STACK_IDENTIFIERS
    NORMALISE_STACK_TYPES
    NORMALISE_ELEMENT_TYPES
    NORMALISE_TOP_POSITION
    NORMALISE_SIZE_AND_CAPACITY
    NORMALISE_OPERATION_NAMES
    NORMALISE_ERROR_TYPES
    NORMALISE_COMPLEXITY_NOTATION
    NORMALISE_MEMORY_UNITS
    NORMALISE_IMPLEMENTATION_NAMES
    NORMALISE_LANGUAGE_AND_RUNTIME_CONTEXT
    RESOLVE_STACK_AND_ELEMENT_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS STACK_REASONING_PIPELINE {
    STACK_REFERENCE
      -> STACK_IDENTIFICATION
      -> IMPLEMENTATION_RESOLUTION
      -> ELEMENT_AND_TOP_MAPPING
      -> OPERATION_MAPPING
      -> LIFO_ORDERING_ANALYSIS
      -> ERROR_AND_INVARIANT_ANALYSIS
      -> COMPLEXITY_ANALYSIS
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS PUSH_REASONING {
    STACK_STATE(T1)
      + PUSH(VALUE)
      -> CAPACITY_CHECK

    SPACE_AVAILABLE_OR_UNBOUNDED
      -> ADD_NEW_TOP_ELEMENT

    ADD_NEW_TOP_ELEMENT
      -> PREVIOUS_TOP_BECOMES_NEXT_ELEMENT

    RESULT
      -> SIZE = SIZE + 1
      -> STACK_STATE(T2)

    FULL_BOUNDED_STACK
      -> OVERFLOW_OR_DEFINED_IMPLEMENTATION_BEHAVIOUR
  }

  PROCESS POP_REASONING {
    STACK_STATE(T1)
      + POP
      -> EMPTY_CHECK

    NONEMPTY_STACK
      -> READ_TOP_ELEMENT
      -> REMOVE_TOP_ELEMENT

    REMOVE_TOP_ELEMENT
      -> NEXT_ELEMENT_BECOMES_TOP

    RESULT
      -> SIZE = SIZE - 1
      -> RETURN_REMOVED_VALUE
      -> STACK_STATE(T2)

    EMPTY_STACK
      -> UNDERFLOW_OR_DEFINED_IMPLEMENTATION_BEHAVIOUR
  }

  PROCESS PEEK_REASONING {
    STACK
      -> EMPTY_CHECK

    NONEMPTY_STACK
      -> TOP_ELEMENT
      -> RETURN_VALUE_WITHOUT_REMOVAL

    EMPTY_STACK
      -> UNDERFLOW_OR_DEFINED_IMPLEMENTATION_BEHAVIOUR
  }

  PROCESS ARRAY_STACK_REASONING {
    ARRAY_STACK
      -> BACKING_ARRAY

    TOP_POSITION
      -> ARRAY_INDEX

    PUSH
      -> INCREMENT_OR_SELECT_TOP_INDEX
      -> WRITE_ELEMENT

    POP
      -> READ_TOP_INDEX
      -> CLEAR_OR_IGNORE_SLOT
      -> DECREMENT_TOP_INDEX

    CAPACITY_EXCEEDED
      -> RESIZE_IF_DYNAMIC_IMPLEMENTATION
      OR -> OVERFLOW_IF_FIXED
  }

  PROCESS LINKED_STACK_REASONING {
    LINKED_STACK
      -> TOP_NODE

    PUSH
      -> ALLOCATE_NEW_NODE
      -> NEW_NODE.NEXT = OLD_TOP
      -> TOP = NEW_NODE

    POP
      -> OLD_TOP = TOP
      -> TOP = OLD_TOP.NEXT
      -> DEALLOCATE_OR_RELEASE_OLD_TOP_IF_REQUIRED

    EMPTY_STACK
      -> TOP = NULL_OR_SENTINEL
  }

  PROCESS LIFO_REASONING {
    PUSH(A)
      -> PUSH(B)

    IF NO_INTERVENING_POP_REMOVES_B
    THEN POP_RESULT = B BEFORE A

    STACK_HISTORY
      -> REVERSE_ORDER_OF_UNPOPPED_PUSHES
  }

  PROCESS INVARIANT_REASONING {
    STACK_STATE
      -> SIZE_CHECK

    SIZE
      -> REQUIRE SIZE >= 0

    BOUNDED_STACK
      -> REQUIRE SIZE <= CAPACITY

    EMPTY_STACK
      -> REQUIRE SIZE = 0

    NONEMPTY_STACK
      -> REQUIRE TOP_ELEMENT_EXISTS

    POST_OPERATION_STATE
      -> LIFO_AND_STRUCTURE_INVARIANT_CHECK
  }

  PROCESS COMPLEXITY_REASONING {
    STACK + IMPLEMENTATION + OPERATION
      -> INPUT_AND_CAPACITY_CONTEXT

    PUSH
      -> NORMAL_OPERATION_COST
      -> RESIZE_COST_IF_APPLICABLE

    POP
      -> REMOVAL_COST

    PEEK
      -> TOP_ACCESS_COST

    MEMORY_USAGE
      -> ELEMENT_STORAGE + IMPLEMENTATION_OVERHEAD

    COSTS
      -> TIME_AND_SPACE_COMPLEXITY
  }

  PROCESS PERSISTENT_STACK_REASONING {
    PERSISTENT_STACK_STATE(T1)
      + PUSH_OR_POP
      -> NEW_STACK_STATE(T2)

    T1
      -> PRESERVED

    T1 + T2
      -> STRUCTURAL_SHARING_IF_IMPLEMENTED

    NEW_TOP_PATH
      -> VERSIONED_STACK_STATE
  }

  RULES {
    IF PUSH_OCCURS
    THEN NEW_ELEMENT_BECOMES_TOP_UNLESS_OPERATION_FAILS

    IF POP_OCCURS_ON_NONEMPTY_STACK
    THEN REMOVE_AND_RETURN_CURRENT_TOP_ELEMENT

    IF PEEK_OCCURS
    THEN DO_NOT MODIFY_STACK_STATE

    IF STACK_IS_EMPTY
    THEN POP_OR_PEEK_MUST_FOLLOW_DEFINED_UNDERFLOW_BEHAVIOUR

    IF BOUNDED_STACK_IS_FULL
    THEN PUSH_MUST_FOLLOW_DEFINED_OVERFLOW_OR_RESIZE_BEHAVIOUR

    IF LIFO_ORDERING_IS_ASSERTED
    THEN PRESERVE OPERATION_HISTORY

    IF PERSISTENT_STACK_IS_UPDATED
    THEN PRESERVE PRIOR_STACK_STATE

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND STACK_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        STACK_IDENTITY_CERTAINTY,
        IMPLEMENTATION_CERTAINTY,
        ELEMENT_SEQUENCE_COMPLETENESS,
        TOP_POSITION_CERTAINTY,
        SIZE_AND_CAPACITY_CERTAINTY,
        OPERATION_TRACE_COMPLETENESS,
        INVARIANT_EVIDENCE_QUALITY,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF OPERATION_HISTORY_IS_PARTIAL
    THEN REDUCE_LIFO_SEQUENCE_CONFIDENCE

    IF IMPLEMENTATION_OR_CAPACITY_POLICY_IS_UNKNOWN
    THEN REDUCE_OVERFLOW_AND_COMPLEXITY_CONFIDENCE

    IF COMPLETE_OPERATION_TRACE_CONFIRMS_STACK_STATE
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        STACK_IDENTIFIER,
        ELEMENT_TYPE,
        IMPLEMENTATION,
        SIZE,
        CAPACITY_POLICY,
        LANGUAGE_RUNTIME_CONTEXT
      )

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

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    STACK != QUEUE
    STACK != ELEMENT
    TOP_ELEMENT != TOP_POSITION
    PUSH != INSERT_AT_ARBITRARY_POSITION
    POP != DELETE_ARBITRARY_ELEMENT
    PEEK != POP
    LIFO != FIFO
    EMPTY_STACK != NULL_STACK_REFERENCE
    SIZE != CAPACITY
    UNDERFLOW != OVERFLOW
    ARRAY_STACK != LINKED_STACK
    BOUNDED_STACK != UNBOUNDED_STACK
    PERSISTENT_STACK != MUTABLE_STACK
    POPPED_VALUE != CURRENT_TOP_AFTER_SUCCESSFUL_POP
    TIME_COMPLEXITY_DEPENDS_ON_IMPLEMENTATION_AND_RESIZE_POLICY
    MEMORY_BEHAVIOUR_DEPENDS_ON_LANGUAGE_RUNTIME_AND_IMPLEMENTATION
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_STACK_IDENTIFIER
    CHECK_STACK_TYPE
    CHECK_ELEMENT_TYPE
    CHECK_ELEMENT_SEQUENCE
    CHECK_TOP_ELEMENT_AND_POSITION
    CHECK_SIZE
    CHECK_CAPACITY
    CHECK_PUSH_RELATIONS
    CHECK_POP_RELATIONS
    CHECK_PEEK_RELATIONS
    CHECK_LIFO_ORDERING
    CHECK_UNDERFLOW_AND_OVERFLOW
    CHECK_ARRAY_IMPLEMENTATION_IF_APPLICABLE
    CHECK_LINKED_IMPLEMENTATION_IF_APPLICABLE
    CHECK_INVARIANTS
    CHECK_COMPLEXITY_CONTEXT
    CHECK_PERSISTENCE
    CHECK_LANGUAGE_RUNTIME_AND_CONFIGURATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_STACK_ENTITIES
    STACK_TYPE_RELATIONS
    ELEMENT_SEQUENCE_RELATIONS
    TOP_AND_BOTTOM_RELATIONS
    SIZE_AND_CAPACITY_RELATIONS
    PUSH_RELATIONS
    POP_RELATIONS
    PEEK_RELATIONS
    LIFO_ORDERING_RELATIONS
    STACK_STATE_TRANSITIONS
    UNDERFLOW_AND_OVERFLOW_RELATIONS
    ARRAY_STACK_RELATIONS
    LINKED_STACK_RELATIONS
    INVARIANT_RELATIONS
    TIME_COMPLEXITY_RELATIONS
    SPACE_COMPLEXITY_RELATIONS
    PERSISTENCE_AND_STRUCTURAL_SHARING_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON STACK_OPERATION {
      NORMALISE
      RESOLVE_STACK_AND_ELEMENT_IDENTITIES
      UPDATE_ELEMENT_SEQUENCE
      UPDATE_TOP
      UPDATE_SIZE_AND_CAPACITY
      UPDATE_STACK_STATE
      RECHECK_LIFO_AND_STRUCTURE_INVARIANTS
      UPDATE_CONFIDENCE
    }

    ON IMPLEMENTATION_CONFIGURATION_OR_RUNTIME_CHANGE {
      UPDATE_IMPLEMENTATION_CONTEXT
      REASSESS_COMPLEXITY
      REASSESS_OVERFLOW_AND_MEMORY_POLICY
      RECHECK_SEMANTIC_EQUIVALENCE
      RECOMPUTE_AFFECTED_RELATIONS
      UPDATE_CONFIDENCE
      PRESERVE_VERSION_HISTORY
    }

    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_STACK
      BY_STACK_TYPE
      BY_ELEMENT
      BY_TOP
      BY_OPERATION
      BY_PUSH
      BY_POP
      BY_PEEK
      BY_SIZE
      BY_CAPACITY
      BY_ERROR
      BY_INVARIANT
      BY_COMPLEXITY
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      TRACE_PUSH_OPERATIONS
      TRACE_POP_OPERATIONS
      TRACE_PEEK_OPERATIONS
      ANALYSE_ARRAY_STACKS
      ANALYSE_LINKED_STACKS
      ANALYSE_LIFO_ORDERING
      CHECK_STACK_INVARIANTS
      ANALYSE_COMPLEXITY
      ANALYSE_PERSISTENCE
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_STACK_FROM_QUEUE
      DISTINGUISH_TOP_ELEMENT_FROM_TOP_POSITION
      DISTINGUISH_PUSH_POP_AND_PEEK
      PRESERVE_ELEMENT_SEQUENCE_IMPLEMENTATION_CAPACITY_LANGUAGE_AND_RUNTIME_CONTEXT
      PRESERVE_LIFO_ORDERING_AND_STACK_STATE
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_STACK_INFERENCE
    }
  }

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

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