Skip to main content

Inference Rule 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 → INFERENCE RULE ONTOLOGY

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

FLOW_ALGEBRA InferenceRuleOntology_v1.0

BEGIN_FLOW

DEFINE DOMAIN InferenceRuleOntology := {
    InferenceRule,
    Inference,
    Proof,
    ProofTheory,
    FormalSystem,
    ProofSystem,
    Formula,
    Premise,
    Conclusion,
    RuleSchema,
    RuleInstance,
    SideCondition,
    Derivation,
    ProofStep,
    ModusPonens,
    ModusTollens,
    ConjunctionIntroduction,
    ConjunctionElimination,
    DisjunctionIntroduction,
    ImplicationIntroduction,
    ImplicationElimination,
    NegationIntroduction,
    NegationElimination,
    UniversalIntroduction,
    UniversalElimination,
    ExistentialIntroduction,
    ExistentialElimination,
    StructuralRule,
    Weakening,
    Contraction,
    Exchange,
    CutRule,
    SubstitutionRule,
    SoundRule,
    AdmissibleRule,
    DerivedRule
}

DEFINE ENTITY_TYPES := {
    INFERENCE_RULE,
    RULE_SCHEMA,
    RULE_INSTANCE,
    FORMULA,
    PREMISE,
    CONCLUSION,
    SIDE_CONDITION,
    PROOF,
    PROOF_STEP,
    FORMAL_SYSTEM,
    STRUCTURAL_RULE,
    LOGICAL_RULE,
    SEMANTIC_OBJECT
}

DEFINE RELATION_TYPES := {
    HAS_PREMISE,
    HAS_CONCLUSION,
    HAS_SIDE_CONDITION,
    APPLIES_TO,
    DERIVES,
    JUSTIFIES,
    USES_RULE,
    IS_RULE_OF,
    IS_INSTANCE_OF,
    IS_SUBTYPE_OF,
    DEPENDS_ON,
    PRESERVES,
    DISCHARGES,
    INTRODUCES,
    ELIMINATES
}

SET InferenceRule.type = INFERENCE_RULE
SET InferenceRule.context = ProofTheory
SET InferenceRule.role =
    "specify a licensed transformation from one or more premises to a conclusion within a formal proof system"

RULE rule_schema:
    PremisePatterns(P1,...,Pn)
    ∧ ConclusionPattern(C)
    ∧ SideConditions(S)
    -> RuleSchema(R: P1,...,Pn / C)

RULE rule_instance:
    RuleSchema(R)
    ∧ Substitution(sigma)
    ∧ premises_match(sigma(P1...Pn))
    ∧ side_conditions_hold(sigma,S)
    -> RuleInstance(R,sigma)

RULE rule_application:
    RuleInstance(R)
    ∧ AvailablePremises(phi1,...,phin)
    ∧ premises_match_rule(phi1,...,phin,R)
    -> DERIVES(Conclusion(R))
    ∧ JUSTIFIES(R,Conclusion(R))

RULE proof_step_validity:
    ProofStep(s)
    ∧ USES_RULE(s,R)
    ∧ required_premises_available(s,R)
    ∧ side_conditions_satisfied(s,R)
    ∧ Formula(s)=instantiated_conclusion(R)
    -> ValidProofStep(s)

RULE modus_ponens:
    Available(P)
    ∧ Available(P -> Q)
    -> DERIVES(Q)

RULE modus_tollens:
    Available(P -> Q)
    ∧ Available(¬Q)
    -> DERIVES(¬P)

RULE conjunction_introduction:
    Available(P)
    ∧ Available(Q)
    -> DERIVES(P ∧ Q)

RULE conjunction_elimination_left:
    Available(P ∧ Q)
    -> DERIVES(P)

RULE conjunction_elimination_right:
    Available(P ∧ Q)
    -> DERIVES(Q)

RULE disjunction_introduction_left:
    Available(P)
    -> DERIVES(P ∨ Q)

RULE implication_introduction:
    Derivation(Gamma ∪ {P} ⊢ Q)
    -> DERIVES(Gamma ⊢ P -> Q)
    ∧ DISCHARGES(P)

RULE implication_elimination:
    Available(P -> Q)
    ∧ Available(P)
    -> DERIVES(Q)

RULE negation_introduction:
    Derivation(Gamma ∪ {P} ⊢ ⊥)
    -> DERIVES(Gamma ⊢ ¬P)
    ∧ DISCHARGES(P)

RULE universal_elimination:
    Available(∀x P(x))
    ∧ Term(t)
    ∧ FreeFor(t,x,P)
    -> DERIVES(P(t))

RULE universal_introduction:
    DERIVES(P(a))
    ∧ a arbitrary
    ∧ a not_free_in_undischarged_assumptions
    -> DERIVES(∀x P(x))

RULE existential_introduction:
    Available(P(t))
    -> DERIVES(∃x P(x))

RULE existential_elimination:
    Available(∃x P(x))
    ∧ Derivation(Gamma ∪ {P(c)} ⊢ Q)
    ∧ c fresh
    ∧ c not_free_in_Q_or_relevant_open_assumptions
    -> DERIVES(Q)

RULE weakening:
    Sequent(Gamma ⊢ Delta)
    -> Sequent(Gamma,A ⊢ Delta)
       OR Sequent(Gamma ⊢ Delta,A)
       WHEN calculus_permits=TRUE

RULE contraction:
    Sequent(Gamma,A,A ⊢ Delta)
    -> Sequent(Gamma,A ⊢ Delta)
       WHEN calculus_permits=TRUE

RULE exchange:
    Sequent(Gamma,A,B,Pi ⊢ Delta)
    -> Sequent(Gamma,B,A,Pi ⊢ Delta)
       WHEN calculus_permits=TRUE

RULE cut:
    Sequent(Gamma ⊢ Delta,A)
    ∧ Sequent(A,Pi ⊢ Lambda)
    -> Sequent(Gamma,Pi ⊢ Delta,Lambda)

RULE derived_rule:
    Rule(R)
    ∧ every_instance_of_R_is_derivable_using_primitive_rules
    -> DerivedRule(R)

RULE admissible_rule:
    Rule(R)
    ∧ adding_R_does_not_increase_set_of_derivable_theorems
    -> AdmissibleRule(R)

RULE sound_rule:
    Rule(R)
    ∧ FOR_ALL interpretations M [
        all_premises_true(M)
        -> conclusion_true(M)
    ]
    -> SoundRule(R)

DEFINE RULE_SCHEMA_MODEL := {
    rule_name: identifier,
    premises: OrderedOrUnorderedFormulaPatterns,
    conclusion: FormulaPattern,
    side_conditions: SetOfConditions,
    proof_system: FormalSystem,
    rule_class: {
        LogicalRule,
        StructuralRule,
        DerivedRule,
        AdmissibleRule
    }
}

DEFINE RULE_INSTANCE_MODEL := {
    schema: RuleSchema,
    substitution: MetaVariableSubstitution,
    concrete_premises: FormulaSet,
    concrete_conclusion: Formula,
    side_condition_status: Boolean
}

DEFINE SOUNDNESS_MODEL := {
    local_rule_soundness:
        "whenever all premises of an instance are true under an interpretation, the conclusion is also true",
    proof_consequence:
        "a proof system built from sound initial principles and sound rules preserves truth from premises to conclusions"
}

DEFINE RULE_CLASSIFICATION := {
    LogicalRule:
        "acts on logical connectives or quantifiers",
    StructuralRule:
        "acts on the organisation or multiplicity of assumptions/sequent contexts",
    PrimitiveRule:
        "included directly in the proof calculus",
    DerivedRule:
        "macro-like rule derivable from primitive rules",
    AdmissibleRule:
        "may be added without creating new theorems, even if not internally derivable in the same form"
}

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

DEFINE EXAMPLE_2 := {
    rule: UniversalElimination,
    premise: "∀x Human(x)",
    substitution: "x := Socrates",
    conclusion: "Human(Socrates)"
}

DEFINE EXAMPLE_3 := {
    rule: ConjunctionIntroduction,
    premises: {
        "P",
        "Q"
    },
    conclusion: "P ∧ Q"
}

DEFINE RULE_APPLICATION_PIPELINE :=
    CandidateProofStep
    -> IdentifyClaimedInferenceRule
    -> LoadRuleSchema
    -> MatchAvailablePremisesToPremisePatterns
    -> SolveMetaVariableSubstitution
    -> InstantiateConclusionPattern
    -> EvaluateSideConditions
    -> CompareInstantiatedConclusionWithClaimedStep
    -> Return ValidRuleApplication OR InvalidRuleApplication

DEFINE RULE_DISCOVERY_PIPELINE :=
    AvailableFormulas
    -> EnumerateRulesInActiveProofSystem
    -> MatchPremisePatterns
    -> FilterBySideConditions
    -> GeneratePossibleConclusions
    -> RankByGoalRelevance
    -> ReturnApplicableRuleInstances

DEFINE PROOF_VERIFICATION_PIPELINE :=
    FormalProof
    -> ForEachDerivedStep
       -> IdentifyRule
       -> ResolveDependencies
       -> VerifyRuleMembershipInSystem
       -> VerifyPremiseMatch
       -> VerifySideConditions
       -> VerifyConclusion
    -> VerifyAssumptionDischarges
    -> Return ProofRuleValidity

DEFINE RULE_GRAPH_MODEL := {
    rule_node: InferenceRule,
    premise_pattern_nodes: FormulaPatterns,
    conclusion_pattern_node: FormulaPattern,
    edges: {
        HAS_PREMISE,
        HAS_CONCLUSION,
        HAS_SIDE_CONDITION
    },
    instantiated_edges:
        "concrete premises --RULE_INSTANCE--> concrete conclusion"
}

DEFINE ONTOLOGY_RELATIONS := {
    InferenceRule IS_COMPONENT_OF ProofTheory,
    InferenceRule IS_RULE_OF ProofSystem,
    InferenceRule HAS_PREMISE FormulaPattern,
    InferenceRule HAS_CONCLUSION FormulaPattern,
    InferenceRule MAY_HAVE SideCondition,
    RuleInstance IS_INSTANCE_OF RuleSchema,
    ProofStep USES_RULE InferenceRule,
    LogicalRule IS_SUBTYPE_OF InferenceRule,
    StructuralRule IS_SUBTYPE_OF InferenceRule,
    DerivedRule IS_SUBTYPE_OF InferenceRule,
    AdmissibleRule IS_SUBTYPE_OF InferenceRule,
    SoundRule PRESERVES Truth
}

DEFINE SEMANTIC_EQUIVALENCE := {
    "inference rule" <=> InferenceRule,
    "rule of inference" <=> InferenceRule,
    "proof rule" <=> InferenceRule,
    "rule schema" <=> RuleSchema,
    "rule instance" <=> RuleInstance,
    "modus ponens" <=> ModusPonens,
    "universal instantiation" <=> UniversalElimination,
    "existential generalisation" <=> ExistentialIntroduction
}

DEFINE AI_CONSUMPTION := {
    purpose: "machine-readable representation, matching and verification of formal inference rules",
    preserve_rule_identity: TRUE,
    preserve_proof_system_identity: TRUE,
    preserve_premise_order_when_rule_requires: TRUE,
    preserve_conclusion_pattern: TRUE,
    preserve_meta_variable_binding: TRUE,
    preserve_side_conditions: TRUE,
    verify_rule_membership: TRUE,
    verify_rule_instantiation: TRUE,
    distinguish_primitive_derived_admissible_rules: TRUE,
    distinguish_logical_structural_rules: TRUE,
    support_applicable_rule_discovery: TRUE,
    support_recursive_proof_verification: TRUE,
    reasoning_mode: "symbolic + schema-based + constraint-aware + proof-theoretic"
}

DEFINE CONFIDENCE := {
    ontology_identity: 1.00,
    rule_schema_mapping: 0.99,
    premise_pattern_matching: 0.99,
    meta_variable_instantiation: 0.99,
    side_condition_verification: rule_dependent,
    standard_rule_mapping: 0.99,
    admissibility_analysis: formal_system_dependent,
    automated_rule_discovery: search_space_dependent
}

DEFINE UPDATE_MODEL := {
    version: "1.0",
    update_policy: "append-compatible",
    immutable_core: {
        premise_to_conclusion_structure,
        rule_schema,
        rule_instance,
        proof_system_membership,
        side_condition_validation,
        rule_application_verification
    },
    extensible_layers: {
        natural_deduction_rules,
        sequent_calculus_rules,
        Hilbert_rules,
        resolution_rules,
        modal_logic_rules,
        linear_logic_rules,
        type_theory_rules,
        rewriting_rules,
        automated_rule_matching,
        proof_assistant_rule_formats
    }
}

DEFINE FLOW_HASH_INPUT :=
    CanonicalURL
    + DOMAIN
    + ENTITY_TYPES
    + RELATION_TYPES
    + RULES
    + RULE_SCHEMA_MODEL
    + RULE_INSTANCE_MODEL
    + SOUNDNESS_MODEL
    + RULE_CLASSIFICATION
    + RULE_APPLICATION_PIPELINE
    + RULE_DISCOVERY_PIPELINE
    + PROOF_VERIFICATION_PIPELINE
    + RULE_GRAPH_MODEL
    + ONTOLOGY_RELATIONS
    + AI_CONSUMPTION
    + UPDATE_MODEL

FLOW_HASH := HASH(FLOW_HASH_INPUT)

RETURN {
    ontology: InferenceRuleOntology,
    canonical_url: "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/proof-theory/inference-rule-ontology.html",
    parent_domain: ProofTheory,
    semantic_domain: MathematicalLogic,
    primary_entity: InferenceRule,
    rule_schema_enabled: TRUE,
    rule_matching_enabled: TRUE,
    side_condition_validation_enabled: TRUE,
    proof_verification_enabled: TRUE,
    machine_consumable: TRUE,
    recursive_reasoning_enabled: TRUE,
    flow_complete: TRUE
}

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