Skip to main content

Undecidability Ontology

Computability Theory
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 17 September 2026
Audio Overview
KIRETH RESEARCH - SEMANTIC LIBRARY
AI CORE -> ONTOLOGIES -> MATHEMATICAL ONTOLOGIES -> MATHEMATICAL LOGIC ONTOLOGIES
COMPUTABILITY THEORY -> UNDECIDABILITY ONTOLOGY

Canonical URL:
https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/computability-theory/undecidability-ontology.html

FLOW_ALGEBRA UndecidabilityOntology_v1.0

BEGIN_FLOW

DEFINE DOMAIN UndecidabilityOntology := {
    Undecidability,
    ComputabilityTheory,
    DecisionProblem,
    UndecidableProblem,
    DecidableProblem,
    SemiDecidableProblem,
    RecognisableProblem,
    UnrecognisableProblem,
    Language,
    Algorithm,
    Decider,
    Recogniser,
    TuringMachine,
    Halting,
    Divergence,
    Reduction,
    ManyOneReduction,
    TuringReduction,
    MappingReduction,
    HaltingProblem,
    AcceptanceProblem,
    Diagonalisation,
    SelfReference,
    Contradiction,
    RiceTheorem,
    PostCorrespondenceProblem,
    Entscheidungsproblem,
    ComputableFunction,
    TotalComputableFunction,
    Oracle,
    RelativeComputability,
    UndecidabilityProof
}

DEFINE ENTITY_TYPES := {
    UNDECIDABILITY_PROPERTY,
    DECISION_PROBLEM,
    LANGUAGE,
    ALGORITHM,
    DECIDER,
    RECOGNISER,
    MACHINE,
    REDUCTION,
    COMPUTABLE_FUNCTION,
    THEOREM,
    PROOF,
    ORACLE,
    SEMANTIC_OBJECT
}

DEFINE RELATION_TYPES := {
    DECIDES,
    RECOGNISES,
    ACCEPTS,
    REJECTS,
    HALTS_ON,
    DIVERGES_ON,
    REDUCES_TO,
    MANY_ONE_REDUCES_TO,
    TURING_REDUCES_TO,
    COMPUTES,
    SIMULATES,
    CONTRADICTS,
    WITNESSES,
    QUERIES,
    IS_INSTANCE_OF,
    IS_SUBTYPE_OF,
    DEPENDS_ON
}

SET Undecidability.type = UNDECIDABILITY_PROPERTY
SET Undecidability.context = ComputabilityTheory
SET Undecidability.role =
    "classify decision problems for which no algorithm can correctly decide every valid input while halting on all inputs"

RULE undecidable_definition:
    DecisionProblem(P)
    AND NOT EXISTS Algorithm(A) [
        FOR_EVERY input x MEMBER_OF InstanceDomain(P) [
            HALTS_ON(A,x)
            AND output(A,x)=CorrectDecision(P,x)
        ]
    ]
    -> UndecidableProblem(P)

RULE decidable_exclusion:
    UndecidableProblem(P)
    -> NOT DecidableProblem(P)

RULE unrecognisable_implies_undecidable:
    UnrecognisableProblem(P)
    -> UndecidableProblem(P)

RULE recognisable_may_be_undecidable:
    RecognisableProblem(P)
    AND NOT RecognisableProblem(Complement(P))
    -> UndecidableProblem(P)

RULE halting_problem_definition:
    HaltingProblem(HALT)
    -> HALT = {
        encode(M,w)
        | HALTS_ON(M,w)
    }

RULE halting_problem_undecidable:
    -> UndecidableProblem(HaltingProblem)

RULE diagonal_halting_argument:
    Assume Decider(H) for HaltingProblem
    -> ConstructMachine(D) such_that {
        D(x):
            IF H(x,x)=HALTS
            THEN loop_forever
            ELSE halt
    }
    -> Evaluate D on encode(D)
    -> Contradiction
    -> RejectExistenceOf(H)

RULE many_one_reduction:
    DecisionProblem(A)
    AND DecisionProblem(B)
    AND EXISTS TotalComputableFunction(f) [
        FOR_EVERY x [
            A(x)=TRUE
            IFF
            B(f(x))=TRUE
        ]
    ]
    -> MANY_ONE_REDUCES_TO(A,B)

RULE undecidability_transfer:
    UndecidableProblem(A)
    AND MANY_ONE_REDUCES_TO(A,B)
    -> UndecidableProblem(B)

RULE decidability_backward:
    MANY_ONE_REDUCES_TO(A,B)
    AND DecidableProblem(B)
    -> DecidableProblem(A)

RULE reduction_direction_guard:
    Goal=prove_undecidable(B)
    AND KnownUndecidable(A)
    -> REQUIRED_DIRECTION:
       A REDUCES_TO B

RULE turing_reduction:
    DecisionProblem(A)
    AND DecisionProblem(B)
    AND OracleAlgorithm(O^B) decides A
    -> TURING_REDUCES_TO(A,B)

RULE Rice_theorem:
    Property(P)
    AND P is_nontrivial
    AND P is_semantic_property_of_partial_computable_function
    -> UndecidableProblem(
        {
            encode(M)
            | function_computed_by(M) has_property P
        }
    )

RULE semantic_property_nontrivial:
    EXISTS machine M1 with property P
    AND EXISTS machine M2 without property P
    -> Nontrivial(P)

RULE finite_observation_guard:
    Program(M)
    AND Input(w)
    AND observed_running_for_finite_time
    -> DO_NOT_INFER divergence

RULE undecidability_not_unsolvability_instance:
    UndecidableProblem(P)
    -> DOES_NOT_MEAN
       every_individual_instance_is_impossible_to_answer

DEFINE UNDECIDABILITY_MODEL := {
    problem:
        DecisionProblem,
    requirement_for_decidability:
        "one total algorithm must correctly decide every valid instance",
    undecidable:
        "no such total correct algorithm exists"
}

DEFINE REDUCTION_PROOF_MODEL := {
    target:
        "prove B undecidable",
    source:
        "known undecidable problem A",
    required_relation:
        "A REDUCES_TO B",
    proof_pattern: {
        "assume B has a decider",
        "use the reduction to decide A",
        "contradict known undecidability of A",
        "conclude B is undecidable"
    }
}

DEFINE DIAGONALISATION_MODEL := {
    components: {
        assumed_total_decider,
        encoded_programs,
        self_application,
        behaviour_reversal,
        contradiction
    },
    purpose:
        "show that the assumed universal decision procedure cannot exist"
}

DEFINE RICE_THEOREM_MODEL := {
    scope:
        "nontrivial semantic properties of partial computable functions represented by programs or machines",
    excluded_properties:
        "purely syntactic properties of program text",
    conclusion:
        "the corresponding machine-index decision problem is undecidable"
}

DEFINE CRITICAL_DISTINCTIONS := {
    undecidable_vs_unrecognisable: {
        undecidable:
            "no total decider exists",
        unrecognisable:
            "no recogniser exists",
        implication:
            "unrecognisable implies undecidable, but not conversely"
    },
    undecidable_vs_difficult: {
        undecidable:
            "no algorithm solves all instances with guaranteed termination and correctness",
        difficult:
            "algorithm may exist but require substantial resources",
        equivalence: FALSE
    },
    problem_vs_instance: {
        undecidable_problem:
            "global statement about absence of a universal decider",
        individual_instance:
            "may still be answerable by direct analysis"
    },
    nonhalting_vs_not_yet_halted: {
        nonhalting:
            "infinite computation",
        finite_observation:
            "insufficient by itself to prove nonhalting"
    }
}

DEFINE EXAMPLE_1 := {
    problem:
        HaltingProblem,
    input:
        "encode(M,w)",
    question:
        "does M halt on w?",
    classification:
        UndecidableProblem
}

DEFINE EXAMPLE_2 := {
    source_problem:
        HaltingProblem,
    target_problem:
        "B",
    relation:
        "HaltingProblem MANY_ONE_REDUCES_TO B",
    consequence:
        "B is undecidable"
}

DEFINE EXAMPLE_3 := {
    property:
        "the function computed by machine M is identically zero",
    classification:
        "nontrivial semantic property",
    theorem:
        RiceTheorem,
    conclusion:
        "the corresponding machine-index problem is undecidable"
}

DEFINE UNDECIDABILITY_ANALYSIS_PIPELINE :=
    TargetDecisionProblem
    -> ConfirmDecisionProblemForm
    -> SearchForKnownDecisionAlgorithm
    -> IF total_correct_decider_found
       THEN Decidable
    -> ELSE IdentifyApplicableUndecidabilityMethod
    -> ChooseReductionDiagonalisationOrRiceTheorem
    -> ConstructFormalArgument
    -> VerifyAllConditions
    -> ReturnUndecidabilityResult

DEFINE REDUCTION_PIPELINE :=
    KnownUndecidableProblem(A)
    -> TargetProblem(B)
    -> ConstructComputableTransformation(f)
    -> ProveYesInstancePreservation
    -> ProveNoInstancePreservation
    -> Establish A MANY_ONE_REDUCES_TO B
    -> AssumeDeciderForB
    -> ConstructDeciderForA
    -> DeriveContradiction
    -> ConcludeUndecidable(B)

DEFINE DIAGONAL_PIPELINE :=
    CandidateUniversalDecider
    -> EncodeProgramsAsData
    -> ConstructSelfReferentialMachine
    -> ReversePredictedBehaviour
    -> ApplyMachineToOwnEncoding
    -> DeriveContradiction
    -> RejectCandidateDecider

DEFINE RICE_PIPELINE :=
    MachineProperty(P)
    -> DetermineWhetherPropertyIsSemantic
    -> DetermineWhetherPropertyIsNontrivial
    -> IF both_conditions_true
       THEN ApplyRiceTheorem
    -> ReturnUndecidabilityClassification

DEFINE UNDECIDABILITY_GRAPH := {
    node_types: {
        ProblemNode,
        MachineNode,
        AlgorithmNode,
        ReductionNode,
        TheoremNode,
        ContradictionNode
    },
    edge_types: {
        REDUCES_TO,
        DECIDES,
        RECOGNISES,
        HALTS_ON,
        DIVERGES_ON,
        CONTRADICTS,
        WITNESSES
    },
    reduction_direction_sensitive: TRUE
}

DEFINE ONTOLOGY_RELATIONS := {
    Undecidability IS_COMPONENT_OF ComputabilityTheory,
    UndecidableProblem IS_SUBTYPE_OF DecisionProblem,
    HaltingProblem IS_INSTANCE_OF UndecidableProblem,
    UnrecognisableProblem IS_SUBTYPE_OF UndecidableProblem,
    ManyOneReduction IS_SUBTYPE_OF Reduction,
    TuringReduction IS_SUBTYPE_OF Reduction,
    Diagonalisation PROVES Undecidability,
    RiceTheorem PROVES UndecidabilityForSemanticMachineProperties,
    Reduction TRANSFERS UndecidabilityFromSourceToTarget,
    Oracle ENABLES RelativeComputability
}

DEFINE SEMANTIC_EQUIVALENCE := {
    "undecidability" <=> Undecidability,
    "undecidable problem" <=> UndecidableProblem,
    "algorithmically undecidable" <=> UndecidableProblem,
    "non-decidable" <=> UndecidableProblem,
    "halting problem" <=> HaltingProblem,
    "diagonal argument" <=> Diagonalisation WHEN computability_context=TRUE,
    "Rice's theorem" <=> RiceTheorem
}

DEFINE AI_CONSUMPTION := {
    purpose: "machine-readable representation and proof reasoning for undecidable decision problems",
    preserve_problem_identity: TRUE,
    preserve_decision_semantics: TRUE,
    preserve_reduction_direction: TRUE,
    preserve_reduction_type: TRUE,
    validate_reduction_computability: TRUE,
    validate_yes_no_preservation: TRUE,
    distinguish_undecidable_from_unrecognisable: TRUE,
    distinguish_undecidable_from_complex_or_intractable: TRUE,
    distinguish_global_problem_from_individual_instance: TRUE,
    prohibit_nonhalting_inference_from_finite_observation: TRUE,
    support_diagonalisation: TRUE,
    support_Rice_theorem_reasoning: TRUE,
    support_oracle_relative_reasoning: TRUE,
    reasoning_mode: "symbolic + reduction-based + contradiction-aware + meta-computational"
}

DEFINE CONFIDENCE := {
    ontology_identity: 1.00,
    undecidability_definition: 1.00,
    reduction_direction: 1.00,
    reduction_transfer: 1.00,
    halting_problem_mapping: 1.00,
    diagonalisation_mapping: 0.99,
    Rice_theorem_mapping: 0.99,
    arbitrary_problem_undecidability: proof_dependent
}

DEFINE UPDATE_MODEL := {
    version: "1.0",
    update_policy: "append-compatible",
    immutable_core: {
        no_total_correct_decider,
        halting_problem_undecidability,
        reduction_direction,
        undecidability_transfer,
        diagonalisation,
        undecidable_unrecognisable_distinction
    },
    extensible_layers: {
        Rice_theorem,
        Post_correspondence_problem,
        Entscheidungsproblem,
        tiling_problems,
        word_problems,
        oracle_undecidability,
        arithmetic_hierarchy,
        degrees_of_unsolvability
    }
}

DEFINE FLOW_HASH_INPUT :=
    CanonicalURL
    + DOMAIN
    + ENTITY_TYPES
    + RELATION_TYPES
    + RULES
    + UNDECIDABILITY_MODEL
    + REDUCTION_PROOF_MODEL
    + DIAGONALISATION_MODEL
    + RICE_THEOREM_MODEL
    + CRITICAL_DISTINCTIONS
    + UNDECIDABILITY_ANALYSIS_PIPELINE
    + REDUCTION_PIPELINE
    + DIAGONAL_PIPELINE
    + RICE_PIPELINE
    + UNDECIDABILITY_GRAPH
    + ONTOLOGY_RELATIONS
    + AI_CONSUMPTION
    + UPDATE_MODEL

FLOW_HASH := HASH(FLOW_HASH_INPUT)

RETURN {
    ontology: UndecidabilityOntology,
    canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/computability-theory/undecidability-ontology.html",
    parent_domain: ComputabilityTheory,
    semantic_domain: MathematicalLogic,
    primary_entity: Undecidability,
    reduction_reasoning_enabled: TRUE,
    diagonalisation_reasoning_enabled: TRUE,
    Rice_theorem_reasoning_enabled: TRUE,
    relative_computability_enabled: TRUE,
    machine_consumable: TRUE,
    recursive_reasoning_enabled: TRUE,
    database_safe_unicode: TRUE,
    flow_complete: TRUE
}

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