Skip to main content

Proof Tree Ontology

Proof 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
PROOF THEORY → PROOF TREE ONTOLOGY

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

FLOW_ALGEBRA ProofTreeOntology_v1.0

BEGIN_FLOW

DEFINE DOMAIN ProofTreeOntology := {
    ProofTree,
    Proof,
    FormalProof,
    ProofTheory,
    Tree,
    Root,
    Leaf,
    InternalNode,
    ParentNode,
    ChildNode,
    Branch,
    Path,
    Depth,
    Height,
    Formula,
    Judgement,
    Sequent,
    Premise,
    Assumption,
    Axiom,
    Conclusion,
    InferenceRule,
    RuleApplication,
    Derivation,
    Subproof,
    Dependency,
    NaturalDeduction,
    SequentCalculus,
    Tableau,
    Resolution,
    ProofSearch,
    ProofVerification,
    OpenBranch,
    ClosedBranch,
    ValidProof,
    InvalidProof
}

DEFINE ENTITY_TYPES := {
    PROOF_TREE,
    PROOF,
    TREE_NODE,
    ROOT_NODE,
    LEAF_NODE,
    INTERNAL_NODE,
    FORMULA,
    JUDGEMENT,
    SEQUENT,
    INFERENCE_RULE,
    RULE_APPLICATION,
    BRANCH,
    PATH,
    SUBPROOF,
    VERIFICATION_RESULT,
    SEMANTIC_OBJECT
}

DEFINE RELATION_TYPES := {
    HAS_ROOT,
    HAS_LEAF,
    HAS_CHILD,
    HAS_PARENT,
    HAS_BRANCH,
    HAS_PREMISE,
    HAS_CONCLUSION,
    USES_RULE,
    DERIVES,
    DEPENDS_ON,
    PRECEDES,
    SUPPORTS,
    EXPANDS_TO,
    CLOSES,
    IS_SUBTREE_OF,
    IS_INSTANCE_OF,
    IS_SUBTYPE_OF
}

SET ProofTree.type = PROOF_TREE
SET ProofTree.parent = Proof
SET ProofTree.context = ProofTheory
SET ProofTree.role =
    "represent a formal derivation as a tree whose nodes are formulas, judgements or sequents and whose edges encode applications of inference rules"

RULE root_definition:
    ProofTree(T)
    ∧ unique_node(r)
    ∧ no_parent(r)
    -> HAS_ROOT(T,r)
    ∧ Root(r)

RULE leaf_definition:
    ProofTree(T)
    ∧ Node(l)
    ∧ no_children(l)
    -> Leaf(l)
    ∧ HAS_LEAF(T,l)

RULE internal_node:
    Node(n)
    ∧ EXISTS child c [
        HAS_CHILD(n,c)
    ]
    -> InternalNode(n)

RULE parent_child_inverse:
    HAS_CHILD(p,c)
    -> HAS_PARENT(c,p)

RULE rule_application:
    InferenceRule(R)
    ∧ PremiseNodes(p1,...,pn)
    ∧ ConclusionNode(c)
    ∧ R(p1,...,pn => c)
    -> USES_RULE(c,R)
    ∧ FOR_ALL i [
        HAS_CHILD(c,pi)
    ]

RULE proof_tree_orientation:
    ProofTree(T)
    -> root(T)=final_conclusion
       AND leaves(T)=initial_axioms_premises_or_open_assumptions
       WHEN orientation="conclusion-rooted"

RULE derivation_validity:
    ProofTree(T)
    ∧ FOR_ALL internal_node n [
        EXISTS rule R [
            USES_RULE(n,R)
            ∧ children(n) satisfy premises_of(R)
            ∧ n satisfies conclusion_of(R)
            ∧ side_conditions(R,n)=TRUE
        ]
    ]
    ∧ valid_leaves(T)
    -> ValidProof(T)

RULE invalid_tree:
    ProofTree(T)
    ∧ EXISTS internal_node n [
        no_valid_rule_justifies(n,children(n))
    ]
    -> InvalidProof(T)

RULE subtree:
    ProofTree(T)
    ∧ Node(n)
    -> descendants_plus_node(n)
       forms Subproof(T_n)
    ∧ IS_SUBTREE_OF(T_n,T)

RULE dependency:
    HAS_CHILD(parent,child)
    -> DEPENDS_ON(parent,child)
       WHEN parent_is_derived_from_child=TRUE

RULE path:
    Nodes(n0,...,nk)
    ∧ consecutive_parent_child_relations
    -> Path(n0,...,nk)

RULE branch:
    Path(root,...,leaf)
    -> Branch(root,...,leaf)

RULE depth:
    Root(r)
    -> Depth(r)=0

RULE child_depth:
    HAS_CHILD(p,c)
    -> Depth(c)=Depth(p)+1
       WHEN tree_orientation_root_to_leaves=TRUE

RULE height:
    ProofTree(T)
    -> Height(T)
       = max_path_length(root(T),leaf(T))

RULE tableau_branch_closure:
    TableauProofTree(T)
    ∧ Branch(B)
    ∧ EXISTS phi [
        phi occurs_on B
        ∧ ¬phi occurs_on B
    ]
    -> ClosedBranch(B)

RULE tableau_open_branch:
    TableauProofTree(T)
    ∧ Branch(B)
    ∧ NOT ClosedBranch(B)
    -> OpenBranch(B)

DEFINE PROOF_TREE_MODEL := {
    root:
        "final conclusion or target judgement under the selected orientation",
    leaves:
        "axioms, premises, assumptions or terminal proof-search states",
    internal_nodes:
        "derived formulas, judgements or sequents",
    edges:
        "dependency links generated by inference-rule applications",
    branching:
        "one conclusion may depend on multiple premise nodes"
}

DEFINE NODE_SCHEMA := {
    node_id: unique_identifier,
    content: {
        Formula,
        Judgement,
        Sequent
    },
    node_type: {
        Root,
        Leaf,
        InternalNode
    },
    inference_rule: optional_InferenceRule,
    parent: optional_NodeID,
    children: OrderedOrUnorderedNodeIDs,
    assumptions_in_scope: SetOfAssumptions,
    side_conditions: SetOfConditions
}

DEFINE RULE_APPLICATION_SCHEMA := {
    rule: InferenceRule,
    premise_nodes: SetOrSequenceOfNodeIDs,
    conclusion_node: NodeID,
    side_conditions: SetOfConditions,
    valid: Boolean
}

DEFINE ORIENTATION_MODEL := {
    conclusion_rooted: {
        root: Conclusion,
        edges:
            "derived conclusion -> supporting premises",
        leaves:
            "initial proof resources"
    },
    premise_rooted_visualisation: {
        root_or_roots:
            "initial resources",
        edges:
            "premises -> derived conclusions",
        note:
            "orientation may vary in diagrams; semantic dependency direction must be preserved independently of drawing direction"
    }
}

DEFINE EXAMPLE_1 := {
    conclusion: "Q",
    premises: {
        "P",
        "P → Q"
    },
    rule: ModusPonens,
    tree: {
        root: "Q",
        children: {
            "P",
            "P → Q"
        }
    }
}

DEFINE EXAMPLE_2 := {
    conclusion: "P ∧ Q",
    rule: ConjunctionIntroduction,
    children: {
        "P",
        "Q"
    }
}

DEFINE EXAMPLE_3 := {
    proof_system: SequentCalculus,
    root: "Γ ⊢ Δ",
    children:
        "premise sequents required by the final applied rule",
    interpretation:
        "recursively expanding children exposes the full derivation"
}

DEFINE TREE_CONSTRUCTION_PIPELINE :=
    FinalConclusion
    -> IdentifyFinalInferenceRule
    -> GenerateRequiredPremiseNodes
    -> AttachPremisesAsChildren
    -> ForEachNonInitialPremise
       -> IdentifyItsInferenceRule
       -> RecursivelyGenerateChildren
    -> StopAtAxiomsPremisesOrPermittedAssumptions
    -> AnnotateScopesAndSideConditions
    -> ReturnProofTree

DEFINE PROOF_PARSE_PIPELINE :=
    ProofArtifact
    -> IdentifyNodes
    -> IdentifyRuleApplications
    -> ResolveParentChildEdges
    -> IdentifyRoot
    -> IdentifyLeaves
    -> ResolveBranches
    -> ResolveSubproofs
    -> AnnotateDependencies
    -> ConstructTypedProofTree

DEFINE VERIFICATION_PIPELINE :=
    CandidateProofTree
    -> VerifyUniqueRoot
    -> VerifyAcyclicTreeStructure
    -> VerifyEveryNonRootNodeHasOneParent
    -> ValidateLeaves
    -> ForEachInternalNode
       -> ResolveInferenceRule
       -> ValidateChildPremises
       -> ValidateNodeConclusion
       -> ValidateSideConditions
       -> ValidateAssumptionScope
    -> VerifyRootMatchesTarget
    -> Return ValidProof OR InvalidProof

DEFINE PROOF_SEARCH_PIPELINE :=
    GoalNode
    -> SelectApplicableRulesWhoseConclusionMatchesGoal
    -> ForEachRule
       -> GeneratePremiseChildGoals
       -> RecursivelyExpandChildGoals
    -> DetectAxiomPremiseAssumptionLeaves
    -> BacktrackFailedBranches
    -> SelectClosedSuccessfulDerivationTree
    -> VerifyTree
    -> ReturnProofTree

DEFINE PROOF_TREE_GRAPH_MODEL := {
    graph_type:
        DirectedTree,
    nodes:
        ProofNodes,
    edges:
        DependencyEdges,
    root_count: 1,
    cycle_allowed: FALSE,
    semantic_direction:
        "derived node depends on supporting child nodes",
    recursive_structure: TRUE
}

DEFINE ONTOLOGY_RELATIONS := {
    ProofTree IS_SUBTYPE_OF Proof,
    ProofTree IS_COMPONENT_OF ProofTheory,
    ProofTree HAS_ROOT ConclusionNode,
    ProofTree HAS_LEAF InitialNode,
    InternalNode USES_RULE InferenceRule,
    InternalNode HAS_CHILD PremiseNode,
    ChildNode SUPPORTS ParentNode,
    Subproof IS_SUBTREE_OF ProofTree,
    Branch IS_PATH_IN ProofTree,
    NaturalDeduction MAY_BE_REPRESENTED_BY ProofTree,
    SequentCalculus MAY_BE_REPRESENTED_BY ProofTree,
    Tableau IS_SUBTYPE_OF TreeBasedProofSystem,
    ProofSearch CONSTRUCTS ProofTree
}

DEFINE SEMANTIC_EQUIVALENCE := {
    "proof tree" <=> ProofTree,
    "derivation tree" <=> ProofTree WHEN formal_proof_context=TRUE,
    "inference tree" <=> ProofTree,
    "proof branch" <=> Branch,
    "subproof tree" <=> Subproof,
    "root conclusion" <=> Root WHEN conclusion_rooted_orientation=TRUE,
    "leaf premise" <=> Leaf WHEN initial_resource_context=TRUE
}

DEFINE AI_CONSUMPTION := {
    purpose: "machine-readable representation, construction and verification of tree-structured formal proofs",
    preserve_node_identity: TRUE,
    preserve_formula_or_judgement_identity: TRUE,
    preserve_rule_identity: TRUE,
    preserve_parent_child_relations: TRUE,
    preserve_dependency_direction: TRUE,
    preserve_assumption_scope: TRUE,
    distinguish_semantic_dependency_from_visual_orientation: TRUE,
    require_acyclic_structure: TRUE,
    require_unique_root: TRUE,
    support_recursive_subproofs: TRUE,
    support_branch_analysis: TRUE,
    support_tree_based_proof_search: TRUE,
    support_tableau_branch_closure: TRUE,
    reasoning_mode: "symbolic + recursive + graph-structured + dependency-aware"
}

DEFINE CONFIDENCE := {
    ontology_identity: 1.00,
    proof_tree_structure_mapping: 0.99,
    root_leaf_classification: 0.99,
    rule_application_mapping: proof_system_dependent,
    dependency_resolution: 0.99,
    branch_analysis: 0.99,
    tableau_closure_detection: 0.99,
    automated_tree_search: search_space_dependent
}

DEFINE UPDATE_MODEL := {
    version: "1.0",
    update_policy: "append-compatible",
    immutable_core: {
        unique_root,
        node_identity,
        parent_child_dependency,
        inference_rule_annotation,
        acyclic_structure,
        leaf_initial_resource_relation
    },
    extensible_layers: {
        natural_deduction_trees,
        sequent_calculus_trees,
        semantic_tableaux,
        resolution_trees,
        proof_DAGs,
        shared_subproofs,
        compressed_proof_trees,
        interactive_proof_visualisation,
        automated_proof_search_trees
    }
}

DEFINE FLOW_HASH_INPUT :=
    CanonicalURL
    + DOMAIN
    + ENTITY_TYPES
    + RELATION_TYPES
    + RULES
    + PROOF_TREE_MODEL
    + NODE_SCHEMA
    + RULE_APPLICATION_SCHEMA
    + ORIENTATION_MODEL
    + TREE_CONSTRUCTION_PIPELINE
    + PROOF_PARSE_PIPELINE
    + VERIFICATION_PIPELINE
    + PROOF_SEARCH_PIPELINE
    + PROOF_TREE_GRAPH_MODEL
    + ONTOLOGY_RELATIONS
    + AI_CONSUMPTION
    + UPDATE_MODEL

FLOW_HASH := HASH(FLOW_HASH_INPUT)

RETURN {
    ontology: ProofTreeOntology,
    canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/proof-theory/proof-tree-ontology.html",
    parent_domain: ProofTheory,
    semantic_domain: MathematicalLogic,
    primary_entity: ProofTree,
    graph_structure: DirectedTree,
    recursive_structure_enabled: TRUE,
    dependency_reasoning_enabled: TRUE,
    branch_analysis_enabled: TRUE,
    proof_verification_enabled: TRUE,
    proof_search_enabled: TRUE,
    machine_consumable: TRUE,
    flow_complete: TRUE
}

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