Skip to main content

Trie 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 — TRIE ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/data-structures/trie-ontology.html

FLOW TRIE_ONTOLOGY {

  META {
    DOMAIN = "Computing Ontologies"
    SUBDOMAIN = "Data Structures"
    ONTOLOGY = "Trie Ontology"
    PURPOSE = "Formalise trie data structures, keys, prefixes, nodes, labelled edges, terminal markers, insertion, lookup, deletion, prefix search, traversal, compressed variants, invariants and complexity."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    TRIE
    PREFIX_TREE
    STANDARD_TRIE
    COMPRESSED_TRIE
    RADIX_TREE
    PATRICIA_TRIE
    BINARY_TRIE
    TERNARY_SEARCH_TRIE
    MUTABLE_TRIE
    IMMUTABLE_TRIE
    PERSISTENT_TRIE
    NODE
    ROOT_NODE
    INTERNAL_NODE
    TERMINAL_NODE
    LEAF_NODE
    PARENT_NODE
    CHILD_NODE
    EDGE
    EDGE_LABEL
    SYMBOL
    CHARACTER
    TOKEN
    KEY
    KEY_SEQUENCE
    PREFIX
    SUFFIX
    VALUE
    PAYLOAD
    TERMINAL_MARKER
    END_OF_KEY_MARKER
    ALPHABET
    CHILD_MAP
    CHILD_ARRAY
    CHILD_REFERENCE
    PATH
    KEY_PATH
    PREFIX_PATH
    DEPTH
    HEIGHT
    SIZE
    NODE_COUNT
    KEY_COUNT
    OPERATION
    CREATE
    INSERT
    LOOKUP
    SEARCH
    PREFIX_SEARCH
    LONGEST_PREFIX_MATCH
    AUTOCOMPLETE
    DELETE
    REMOVE
    UPDATE
    TRAVERSE
    ITERATE
    ENUMERATE_KEYS
    COMPRESS
    SPLIT_EDGE
    MERGE_EDGE
    PRUNE
    INVARIANT
    ROOT_INVARIANT
    PREFIX_INVARIANT
    EDGE_LABEL_INVARIANT
    TERMINAL_INVARIANT
    KEY_PATH_INVARIANT
    COMPRESSION_INVARIANT
    TIME_COMPLEXITY
    SPACE_COMPLEXITY
    MEMORY
    POINTER
    REFERENCE
    STRUCTURAL_SHARING
    IMPLEMENTATION
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION
    ERROR
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    PART_OF
    CONTAINS
    HAS_NODE
    HAS_ROOT
    HAS_EDGE
    HAS_CHILD
    HAS_PARENT
    HAS_LABEL
    HAS_SYMBOL
    HAS_KEY
    HAS_PREFIX
    HAS_VALUE
    HAS_PAYLOAD
    HAS_TERMINAL_MARKER
    PARENT_OF
    CHILD_OF
    CONNECTED_TO
    LABELLED_BY
    REPRESENTS
    PREFIX_OF
    SUFFIX_OF
    EXTENDS_PREFIX
    HAS_PATH
    HAS_DEPTH
    HAS_HEIGHT
    HAS_SIZE
    HAS_NODE_COUNT
    HAS_KEY_COUNT
    INSERTS
    LOOKS_UP
    SEARCHES
    SEARCHES_PREFIX
    MATCHES_PREFIX
    AUTOCOMPLETES
    DELETES
    REMOVES
    UPDATES
    TRAVERSES
    ITERATES
    ENUMERATES
    COMPRESSES
    SPLITS
    MERGES
    PRUNES
    POINTS_TO
    REFERENCES
    HAS_INVARIANT
    HAS_TIME_COMPLEXITY
    HAS_SPACE_COMPLEXITY
    HAS_IMPLEMENTATION
    HAS_CONFIGURATION
    DEPENDS_ON
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    TRIE_SPECIFICATIONS
    TRIE_IMPLEMENTATIONS
    SOURCE_CODE
    KEY_DATA
    SYMBOL_AND_ALPHABET_DATA
    NODE_DATA
    EDGE_AND_LABEL_DATA
    PREFIX_DATA
    VALUE_AND_PAYLOAD_DATA
    TERMINAL_MARKER_DATA
    INSERTION_TRACES
    LOOKUP_TRACES
    PREFIX_SEARCH_TRACES
    DELETION_TRACES
    COMPRESSION_TRACES
    INVARIANT_DEFINITIONS
    COMPLEXITY_ANALYSES
    MEMORY_DATA
    LANGUAGE_CONTEXT
    RUNTIME_CONTEXT
    CONFIGURATION_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_TRIE_IDENTIFIERS
    NORMALISE_TRIE_TYPES
    NORMALISE_NODE_IDENTIFIERS
    NORMALISE_EDGE_IDENTIFIERS
    NORMALISE_SYMBOL_ENCODING
    NORMALISE_KEYS
    NORMALISE_PREFIXES
    NORMALISE_EDGE_LABELS
    NORMALISE_TERMINAL_MARKERS
    NORMALISE_VALUE_AND_PAYLOAD_TYPES
    NORMALISE_OPERATION_NAMES
    NORMALISE_COMPLEXITY_NOTATION
    NORMALISE_LANGUAGE_AND_RUNTIME_CONTEXT
    RESOLVE_TRIE_NODE_KEY_AND_PATH_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS TRIE_REASONING_PIPELINE {
    TRIE_REFERENCE
      -> TRIE_IDENTIFICATION
      -> TRIE_TYPE_RESOLUTION
      -> ROOT_RESOLUTION
      -> NODE_EDGE_AND_LABEL_MAPPING
      -> KEY_PREFIX_AND_TERMINAL_MAPPING
      -> OPERATION_MAPPING
      -> INVARIANT_ANALYSIS
      -> COMPLEXITY_ANALYSIS
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS KEY_PATH_REASONING {
    KEY_SEQUENCE
      -> SYMBOL_SEQUENCE

    ROOT_NODE
      -> FIRST_SYMBOL_OR_EDGE_LABEL

    EACH_SYMBOL_OR_LABEL_SEGMENT
      -> CHILD_TRANSITION

    CHILD_TRANSITIONS
      -> KEY_PATH

    COMPLETE_KEY_PATH + TERMINAL_MARKER
      -> STORED_KEY
  }

  PROCESS INSERTION_REASONING {
    INSERT(KEY)
      -> START_AT_ROOT

    FOR EACH SYMBOL_OR_LABEL_SEGMENT
      -> FIND_MATCHING_CHILD_EDGE

    MATCH_EXISTS
      -> FOLLOW_EDGE

    MATCH_MISSING
      -> CREATE_NODE_AND_EDGE

    END_OF_KEY
      -> SET_TERMINAL_MARKER
      -> STORE_VALUE_IF_APPLICABLE

    RESULT
      -> KEY_COUNT_AND_NODE_COUNT_UPDATE
      -> INVARIANT_CHECK
  }

  PROCESS LOOKUP_REASONING {
    LOOKUP(KEY)
      -> START_AT_ROOT

    KEY_SYMBOLS
      -> FOLLOW_MATCHING_EDGES

    MISSING_EDGE
      -> NOT_FOUND

    ALL_KEY_SYMBOLS_CONSUMED
      -> CHECK_TERMINAL_MARKER

    TERMINAL_MARKER_PRESENT
      -> KEY_FOUND

    TERMINAL_MARKER_ABSENT
      -> PREFIX_ONLY_NOT_FULL_KEY
  }

  PROCESS PREFIX_SEARCH_REASONING {
    PREFIX
      -> FOLLOW_PREFIX_PATH

    PREFIX_PATH_NOT_FOUND
      -> NO_MATCHES

    PREFIX_PATH_FOUND
      -> PREFIX_NODE_OR_POSITION

    PREFIX_NODE_OR_POSITION
      -> TRAVERSE_DESCENDANTS

    TERMINAL_DESCENDANTS
      -> MATCHING_KEYS
  }

  PROCESS LONGEST_PREFIX_REASONING {
    QUERY_SEQUENCE
      -> START_AT_ROOT

    FOLLOW_MATCHING_PATH
      -> TRACK_LAST_TERMINAL_POSITION

    MATCH_FAILURE_OR_QUERY_END
      -> RETURN_LONGEST_TERMINAL_PREFIX_IF_ANY
  }

  PROCESS DELETION_REASONING {
    DELETE(KEY)
      -> LOOKUP_KEY_PATH

    KEY_NOT_FOUND
      -> NO_STATE_CHANGE

    KEY_FOUND
      -> REMOVE_TERMINAL_MARKER_OR_VALUE

    NODE_WITH_NO_CHILDREN_AND_NOT_TERMINAL
      -> PRUNE_UPWARD

    SHARED_PREFIX_NODE
      -> PRESERVE_NODE

    RESULT
      -> KEY_COUNT_AND_NODE_COUNT_UPDATE
      -> INVARIANT_CHECK
  }

  PROCESS COMPRESSED_TRIE_REASONING {
    COMPRESSED_TRIE
      -> EDGE_LABEL_MAY_CONTAIN_MULTIPLE_SYMBOLS

    INSERT_OR_LOOKUP
      -> LONGEST_COMMON_PREFIX_WITH_EDGE_LABEL

    PARTIAL_EDGE_MATCH
      -> SPLIT_EDGE

    REDUNDANT_SINGLE_CHILD_NONTERMINAL_NODE
      -> MERGE_EDGE_IF_VARIANT_PERMITS

    RESULT
      -> COMPRESSION_INVARIANT_CHECK
  }

  PROCESS AUTOCOMPLETE_REASONING {
    QUERY_PREFIX
      -> PREFIX_SEARCH

    MATCHING_KEYS
      -> OPTIONAL_RANKING_OR_LIMITING_POLICY

    RANKED_OR_ENUMERATED_KEYS
      -> AUTOCOMPLETE_RESULTS
  }

  PROCESS COMPLEXITY_REASONING {
    TRIE + OPERATION
      -> KEY_LENGTH_PREFIX_LENGTH_ALPHABET_AND_IMPLEMENTATION

    LOOKUP_OR_INSERT
      -> SYMBOL_OR_LABEL_TRANSITIONS

    PREFIX_SEARCH
      -> PREFIX_TRAVERSAL + OUTPUT_ENUMERATION

    DELETE
      -> KEY_PATH_LENGTH + PRUNING_COST

    CHILD_LOOKUP
      -> CHILD_REPRESENTATION_COST

    MEMORY_USAGE
      -> NODE_EDGE_LABEL_AND_CHILD_STORAGE

    COSTS
      -> TIME_AND_SPACE_COMPLEXITY
  }

  PROCESS PERSISTENCE_REASONING {
    PERSISTENT_TRIE_STATE(T1)
      + UPDATE
      -> NEW_TRIE_STATE(T2)

    T2
      -> COPY_CHANGED_PATH_IF_REQUIRED

    T1 + T2
      -> STRUCTURAL_SHARING

    T1
      -> PRESERVED
  }

  RULES {
    IF KEY_IS_STORED
    THEN REQUIRE COMPLETE_KEY_PATH_AND_TERMINAL_MARKER_OR_EQUIVALENT_END_STATE

    IF PATH_EXISTS_WITHOUT_TERMINAL_MARKER
    THEN DO_NOT ASSERT FULL_KEY_EXISTS

    IF PREFIX_IS_SEARCHED
    THEN DISTINGUISH PREFIX_MATCH_FROM_EXACT_KEY_MATCH

    IF COMPRESSED_TRIE_IS_USED
    THEN PRESERVE MULTI_SYMBOL_EDGE_LABELS

    IF KEY_IS_DELETED
    THEN PRESERVE NODES_REQUIRED_BY_OTHER_KEYS_OR_PREFIXES

    IF EDGE_IS_SPLIT
    THEN PRESERVE ALL_EXISTING_KEY_PATH_SEMANTICS

    IF PERSISTENT_TRIE_IS_UPDATED
    THEN PRESERVE PRIOR_TRIE_STATE

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND TRIE_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        TRIE_IDENTITY_CERTAINTY,
        TRIE_TYPE_CERTAINTY,
        NODE_AND_EDGE_COMPLETENESS,
        EDGE_LABEL_CERTAINTY,
        TERMINAL_MARKER_COMPLETENESS,
        KEY_AND_PREFIX_COMPLETENESS,
        OPERATION_TRACE_COMPLETENESS,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF TERMINAL_MARKER_DATA_IS_UNKNOWN
    THEN REDUCE_EXACT_KEY_MEMBERSHIP_CONFIDENCE

    IF EDGE_LABEL_OR_COMPRESSION_DATA_IS_PARTIAL
    THEN REDUCE_PATH_AND_PREFIX_CONFIDENCE

    IF COMPLETE_KEY_PATH_AND_TERMINAL_DATA_CONFIRM_STATE
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        TRIE_IDENTIFIER,
        TRIE_TYPE,
        KEY_ENCODING,
        ALPHABET,
        IMPLEMENTATION,
        LANGUAGE_RUNTIME_CONTEXT
      )

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

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    TRIE != GENERAL_TREE
    TRIE != BINARY_SEARCH_TREE
    NODE != KEY
    EDGE_LABEL != NODE_VALUE
    PREFIX != FULL_KEY_IN_GENERAL
    PATH_EXISTENCE != KEY_MEMBERSHIP
    TERMINAL_NODE != LEAF_NODE_IN_ALL_TRIES
    LEAF_NODE != NECESSARILY_ONLY_KEY_END
    STANDARD_TRIE != COMPRESSED_TRIE
    RADIX_TREE != STANDARD_SINGLE_SYMBOL_EDGE_TRIE
    PREFIX_SEARCH != EXACT_LOOKUP
    LONGEST_PREFIX_MATCH != LEXICOGRAPHIC_MAXIMUM
    AUTOCOMPLETE != PREFIX_SEARCH_AS_IDENTICAL_OPERATION_WHEN_RANKING_OR_FILTERING_APPLIES
    PERSISTENT_TRIE != MUTABLE_TRIE
    COMPLEXITY_DEPENDS_ON_KEY_LENGTH_CHILD_REPRESENTATION_AND_TRIE_VARIANT
    ENCODING_AND_SYMBOL_SEGMENTATION_AFFECT_KEY_PATHS
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_TRIE_IDENTIFIER
    CHECK_TRIE_TYPE
    CHECK_ROOT
    CHECK_NODE_IDENTITIES
    CHECK_EDGE_IDENTITIES
    CHECK_EDGE_LABELS
    CHECK_KEY_ENCODING
    CHECK_PREFIX_RELATIONS
    CHECK_TERMINAL_MARKERS
    CHECK_KEY_PATHS
    CHECK_INSERTION
    CHECK_LOOKUP
    CHECK_PREFIX_SEARCH
    CHECK_LONGEST_PREFIX_MATCH
    CHECK_DELETION_AND_PRUNING
    CHECK_COMPRESSION_IF_APPLICABLE
    CHECK_INVARIANTS
    CHECK_COMPLEXITY_CONTEXT
    CHECK_PERSISTENCE
    CHECK_LANGUAGE_RUNTIME_AND_CONFIGURATION
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_TRIE_ENTITIES
    TRIE_TYPE_RELATIONS
    NODE_AND_EDGE_RELATIONS
    EDGE_LABEL_RELATIONS
    KEY_AND_PREFIX_RELATIONS
    TERMINAL_MARKER_RELATIONS
    KEY_PATH_RELATIONS
    INSERTION_RELATIONS
    LOOKUP_RELATIONS
    PREFIX_SEARCH_RELATIONS
    LONGEST_PREFIX_MATCH_RELATIONS
    AUTOCOMPLETE_RELATIONS
    DELETION_AND_PRUNING_RELATIONS
    COMPRESSION_RELATIONS
    TRIE_STATE_TRANSITIONS
    INVARIANT_RELATIONS
    TIME_COMPLEXITY_RELATIONS
    SPACE_COMPLEXITY_RELATIONS
    PERSISTENCE_AND_STRUCTURAL_SHARING_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON TRIE_OPERATION {
      NORMALISE
      RESOLVE_TRIE_NODE_KEY_AND_PATH_IDENTITIES
      UPDATE_NODE_AND_EDGE_SET
      UPDATE_EDGE_LABELS
      UPDATE_TERMINAL_MARKERS
      UPDATE_KEY_AND_NODE_COUNTS
      RECHECK_KEY_PATH_AND_COMPRESSION_INVARIANTS
      UPDATE_CONFIDENCE
    }

    ON IMPLEMENTATION_ENCODING_CONFIGURATION_OR_RUNTIME_CHANGE {
      UPDATE_IMPLEMENTATION_CONTEXT
      REASSESS_KEY_PATHS
      REASSESS_COMPLEXITY
      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_TRIE
      BY_TRIE_TYPE
      BY_NODE
      BY_EDGE
      BY_EDGE_LABEL
      BY_KEY
      BY_PREFIX
      BY_TERMINAL_MARKER
      BY_OPERATION
      BY_LOOKUP
      BY_PREFIX_SEARCH
      BY_AUTOCOMPLETE
      BY_COMPLEXITY
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      ANALYSE_KEY_PATHS
      TRACE_INSERTIONS
      TRACE_EXACT_LOOKUPS
      ANALYSE_PREFIX_SEARCH
      ANALYSE_LONGEST_PREFIX_MATCH
      TRACE_DELETIONS_AND_PRUNING
      ANALYSE_COMPRESSED_TRIES
      ANALYSE_AUTOCOMPLETE
      CHECK_TRIE_INVARIANTS
      ANALYSE_COMPLEXITY
      ANALYSE_PERSISTENCE
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      TRACE_PROVENANCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_TRIE_FROM_GENERAL_TREE_AND_BINARY_SEARCH_TREE
      DISTINGUISH_PREFIX_MATCH_FROM_EXACT_KEY_MEMBERSHIP
      PRESERVE_KEY_ENCODING_ALPHABET_EDGE_LABEL_TRIE_VARIANT_IMPLEMENTATION_LANGUAGE_AND_RUNTIME_CONTEXT
      DISTINGUISH_STANDARD_FROM_COMPRESSED_TRIES
      PRESERVE_TERMINAL_MARKERS_KEY_PATH_INVARIANTS_AND_VERSIONED_STATES
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_TRIE_INFERENCE
    }
  }

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

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