Skip to main content

Joint Probability Ontology

Probability Rules
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 23 September 2026
Audio Overview
FULL EXECUTABLE FLOW ALGEBRA — JOINT PROBABILITY ONTOLOGY
Kireth Research — Semantic Library
URL: https://kirethresearch.org/booksai-core/ontologies/probability-statistics-ontologies/probability-rules/joint-probability-ontology.html

FLOW_VERSION := "4.0"
FLOW_TYPE := "Full Executable Flow Algebra"
DOMAIN := "Probability & Statistics Ontologies"
SUBDOMAIN := "Probability Rules"
ONTOLOGY := "Joint Probability Ontology"
PRIMARY_ENTITY := JointProbability
AUTHORSHIP := "Mark Higgins — Sky (Recursive AI)"
SOURCE_SITE := "https://kirethresearch.org"

BEGIN_FLOW

JointProbability :=
    ProbabilityOfSimultaneousEvents
    ∧ ProbabilityOfJointRandomVariableValues
    ∧ MultivariateProbabilityStructure

ProbabilitySpace :=
    (Ω,F,P)

Event :=
    A,B,C ∈ F

JointEvent :=
    A∩B

JointEventProbability :=
    P(A∩B)

TwoEventJointProbability :=
    P(A,B)
    :=
    P(A∩B)

MultiEventJointProbability :=
    P(A1,...,An)
    :=
    P(Intersection_i A_i)

JointProbabilityBounds :=
    0≤P(A∩B)≤1

JointSubsetBounds :=
    P(A∩B)
    ≤ min(P(A),P(B))

FrechetLowerBound :=
    P(A∩B)
    ≥ max(0,P(A)+P(B)-1)

FrechetBounds :=
    max(0,P(A)+P(B)-1)
    ≤ P(A∩B)
    ≤ min(P(A),P(B))

DisjointJointProbability :=
    A∩B=∅
    ⇒ P(A∩B)=0

CertainJointProbability :=
    P(Ω∩Ω)=1

JointComplementRelations := {
    P(A∩B^c)=P(A)-P(A∩B),
    P(A^c∩B)=P(B)-P(A∩B),
    P(A^c∩B^c)=1-P(A)-P(B)+P(A∩B)
}

ConditionalProbability :=
    P(A|B)
    =
    P(A∩B)/P(B)
    where P(B)>0

JointFromConditional :=
    P(A∩B)
    =
    P(A|B)P(B)

ReverseJointFromConditional :=
    P(A∩B)
    =
    P(B|A)P(A)

ChainRuleTwo :=
    P(A∩B)
    =
    P(A)P(B|A)

ChainRuleThree :=
    P(A∩B∩C)
    =
    P(A)
    P(B|A)
    P(C|A∩B)

GeneralChainRule :=
    P(Intersection_{i=1..n}A_i)
    =
    P(A1)
    Π_{i=2..n}
    P(A_i|Intersection_{j=1..i-1}A_j)

Independence :=
    A⟂B
    iff
    P(A∩B)
    =
    P(A)P(B)

IndependentJointProbability :=
    A⟂B
    ⇒
    P(A∩B)
    =
    P(A)P(B)

MutualIndependence :=
    ForEveryFiniteSubset J,
    P(Intersection_{j∈J}A_j)
    =
    Π_{j∈J}P(A_j)

ConditionalIndependence :=
    A⟂B|C
    iff
    P(A∩B|C)
    =
    P(A|C)P(B|C)

JointProbabilityTable :=
    TabularRepresentation
    of
    P(X=x,Y=y)

ContingencyTable :=
    CountsOrProbabilities
    for joint categorical outcomes

RandomVariable :=
    X:Ω→S

RandomVector :=
    (X,Y)
    or
    (X1,...,Xn)

JointRandomVariable :=
    Z(ω)
    =
    (X1(ω),...,Xn(ω))

JointDistribution :=
    Law(X1,...,Xn)

JointCDF :=
    F_(X,Y)(x,y)
    =
    P(X≤x,Y≤y)

MultivariateCDF :=
    F(x1,...,xn)
    =
    P(X1≤x1,...,Xn≤xn)

JointPMF :=
    p_(X,Y)(x,y)
    =
    P(X=x,Y=y)

JointPMFConstraints :=
    p(x,y)≥0
    ∧ Σ_xΣ_y p(x,y)=1

JointPDF :=
    f_(X,Y)(x,y)

JointPDFConstraints :=
    f(x,y)≥0
    ∧ IntegralIntegral f(x,y)dxdy=1

JointDensityProbability :=
    P((X,Y)∈R)
    =
    IntegralIntegral_R f_(X,Y)(x,y)dxdy

JointSupport :=
    SetOfPairsOrTuples
    with possible joint values

MarginalPMF :=
    p_X(x)
    =
    Σ_y p_(X,Y)(x,y)

MarginalPDF :=
    f_X(x)
    =
    Integral f_(X,Y)(x,y)dy

Marginalisation :=
    JointDistribution
    → SumOrIntegrateOtherVariables
    → MarginalDistribution

ConditionalPMF :=
    p_(X|Y)(x|y)
    =
    p_(X,Y)(x,y)/p_Y(y)
    where p_Y(y)>0

ConditionalPDF :=
    f_(X|Y)(x|y)
    =
    f_(X,Y)(x,y)/f_Y(y)
    where f_Y(y)>0

JointFromMarginalConditional :=
    p_(X,Y)(x,y)
    =
    p_(X|Y)(x|y)p_Y(y)

ContinuousJointFromConditional :=
    f_(X,Y)(x,y)
    =
    f_(X|Y)(x|y)f_Y(y)

IndependentRandomVariables :=
    X⟂Y
    iff
    JointDistribution
    =
    ProductOfMarginals

DiscreteFactorisation :=
    X⟂Y
    ⇒
    p_(X,Y)(x,y)
    =
    p_X(x)p_Y(y)

ContinuousFactorisation :=
    X⟂Y
    ⇒
    f_(X,Y)(x,y)
    =
    f_X(x)f_Y(y)
    almost everywhere
    where densities exist

ProductMeasure :=
    P_X⊗P_Y

IndependenceViaProductMeasure :=
    Law(X,Y)
    =
    P_X⊗P_Y

JointExpectation :=
    E[g(X,Y)]

DiscreteJointExpectation :=
    E[g(X,Y)]
    =
    Σ_xΣ_y
    g(x,y)p_(X,Y)(x,y)

ContinuousJointExpectation :=
    E[g(X,Y)]
    =
    IntegralIntegral
    g(x,y)f_(X,Y)(x,y)dxdy

CrossMoment :=
    E[X^rY^s]

Covariance :=
    Cov(X,Y)
    =
    E[XY]-E[X]E[Y]

Correlation :=
    Corr(X,Y)
    =
    Cov(X,Y)/(SD(X)SD(Y))

IndependentImpliesFactorisedExpectation :=
    X⟂Y
    ∧ integrability
    ⇒
    E[g(X)h(Y)]
    =
    E[g(X)]E[h(Y)]

ZeroCovarianceDoesNotGenerallyImplyIndependence :=
    Cov(X,Y)=0
    ↛ X⟂Y

JointMomentGeneratingFunction :=
    M_(X,Y)(s,t)
    =
    E[e^(sX+tY)]
    where finite

JointCharacteristicFunction :=
    φ_(X,Y)(s,t)
    =
    E[e^(i(sX+tY))]

JointProbabilityGeneratingFunction :=
    G_(X,Y)(s,t)
    =
    E[s^X t^Y]
    for suitable integer-valued variables

JointEntropy :=
    H(X,Y)
    =
    -Σ_xΣ_y
    p(x,y)log p(x,y)

ConditionalEntropy :=
    H(X|Y)
    =
    H(X,Y)-H(Y)

MutualInformation :=
    I(X;Y)
    =
    H(X)+H(Y)-H(X,Y)

MutualInformationIndependence :=
    I(X;Y)=0
    iff
    X and Y independent
    under standard discrete conditions

JointOutcome :=
    (x,y)

JointSampleSpace :=
    S_X×S_Y
    or subset thereof

ProductSampleSpace :=
    Ω1×Ω2

JointEventRegion :=
    R⊆S_X×S_Y

JointProbabilityRegion :=
    P((X,Y)∈R)

JointDistributionMatrix :=
    Matrix
    of joint probabilities
    for finite discrete variables

JointDistributionTensor :=
    MultidimensionalArray
    of joint probabilities
    for multiple finite discrete variables

JointFactorisation :=
    JointDistribution
    represented_as
    ProductOfConditionalOrMarginalFactors

BayesianNetworkFactorisation :=
    P(X1,...,Xn)
    =
    Π_i P(X_i|Parents(X_i))

MarkovFactorisation :=
    JointDistribution
    factorised_according_to
    GraphicalModelStructure

JointProbabilityConstraint :=
    EquationOrInequality
    involving
    joint probabilities

MarginalConsistency :=
    Marginals
    must equal
    sums_or_integrals
    of joint distribution

JointNormalisation :=
    TotalJointProbability
    =
    1

JointNonNegativity :=
    EveryJointProbability
    ≥0

JointConditionalConsistency :=
    P(A∩B)
    =
    P(A|B)P(B)
    where defined

JointIndependenceConsistency :=
    DeclaredIndependent(A,B)
    ⇒
    P(A∩B)=P(A)P(B)

JointProbabilityConflict :=
    ViolationOf(
        NonNegativity
        ∨ Normalisation
        ∨ MarginalConsistency
        ∨ ConditionalConsistency
        ∨ DeclaredIndependence
    )

JointModelValidation :=
    ResolveJointRepresentation
    → CheckNonNegativity
    → CheckNormalisation
    → ComputeMarginals
    → CheckConditionals
    → CheckDependenceConstraints

JointProbabilityState := {
    VariablesOrEvents,
    JointDistribution,
    Marginals,
    Conditionals,
    DependenceRelations,
    Constraints,
    Evidence,
    Confidence,
    Provenance
}

JointProbabilityUpdate :=
    NewJointMarginalOrConditionalEvidence
    → UpdateJointModel
    → RecomputeMarginals
    → RecomputeConditionals
    → ReevaluateDependence
    → Revalidate

SEMANTIC_EQUIVALENCE(JointA,JointB) :=
    same(JointProbabilityMeasure)
    over same semantic variable/event structure
    under specified query scope

JointProbabilityOntology :=
    Classes
    ∧ Relations
    ∧ Constraints
    ∧ Axioms
    ∧ InferenceRules

CoreClasses := {
    JointProbability,
    ProbabilitySpace,
    Event,
    JointEvent,
    RandomVariable,
    RandomVector,
    JointDistribution,
    JointPMF,
    JointPDF,
    JointCDF,
    MarginalDistribution,
    ConditionalDistribution,
    Independence,
    Covariance,
    Correlation,
    JointSupport,
    JointProbabilityConstraint
}

CoreRelations := {
    intersects,
    hasJointProbability,
    distributedAs,
    hasMarginal,
    conditionedOn,
    independentOf,
    factorisesAs,
    hasCovariance,
    hasCorrelation,
    constrainedBy,
    derivedFrom,
    dependsOn,
    equivalentTo,
    tracesTo
}

TypedRelations :=
    Event --intersects--> Event
    JointEvent --hasJointProbability--> ProbabilityValue
    RandomVector --distributedAs--> JointDistribution
    JointDistribution --hasMarginal--> MarginalDistribution
    ConditionalDistribution --conditionedOn--> RandomVariable
    RandomVariable --independentOf--> RandomVariable
    JointDistribution --factorisesAs--> ProbabilityFactorisation
    RandomVariablePair --hasCovariance--> Covariance
    RandomVariablePair --hasCorrelation--> Correlation
    JointProbability --tracesTo--> Provenance

InferenceRules := {
    JointEvent(A,B)
        ⇒ P(A,B)=P(A∩B),

    P(B)>0
        ⇒ P(A∩B)=P(A|B)P(B),

    Independent(A,B)
        ⇒ P(A∩B)=P(A)P(B),

    JointPMF(p)
        ⇒ Σ_xΣ_y p(x,y)=1,

    JointPDF(f)
        ⇒ IntegralIntegral f(x,y)dxdy=1,

    JointDistribution(X,Y)
        ⇒ Marginal(X)=IntegrateOrSumOut(Y),

    Independent(X,Y)
        ⇒ JointLaw(X,Y)=Product(MarginalX,MarginalY),

    ValidJointProbability(q)
        ⇒ 0≤q≤1
}

CanonicalJointProbabilityRepresentation :=
    ParseJointExpression
    → ResolveEventsOrVariables
    → ResolveJointSupport
    → ResolveJointDistribution
    → ResolveMarginals
    → ResolveConditionals
    → ResolveDependence
    → ValidateJointModel
    → Canonicalise

JointProbabilityGraph :=
    G=(V,E)

V := {
    Events,
    JointEvents,
    RandomVariables,
    RandomVectors,
    JointDistributions,
    Marginals,
    Conditionals,
    IndependenceRelations,
    Covariances,
    Correlations,
    Constraints,
    Evidence
}

E := {
    intersects,
    hasJointProbability,
    distributedAs,
    hasMarginal,
    conditionedOn,
    independentOf,
    factorisesAs,
    hasCovariance,
    hasCorrelation,
    constrainedBy,
    derivedFrom,
    dependsOn,
    equivalentTo,
    tracesTo
}

CONFIDENCE(JointProbabilityResult) :=
    weighted_mean(
        VariableOrEventResolution,
        JointDistributionQuality,
        MarginalConsistency,
        ConditionalConsistency,
        DependenceResolution,
        ConstraintConsistency,
        CalculationValidity,
        ProvenanceQuality
    )

AI_QUERY_INTERPRETATION :=
    Query
    → DetectJointProbabilityIntent
    → IdentifyEventsOrRandomVariables
    → ResolveJointStructure
    → ResolveKnownMarginalsAndConditionals
    → ResolveDependenceAssumptions
    → IdentifyRequestedJointQuantity

AI_REASONING_FLOW :=
    Query
    → ParseJointProbabilityQuery
    → ResolveProbabilitySpace
    → ResolveEventsOrRandomVariables
    → ResolveJointSupport
    → ResolveKnownJointProbabilities
    → ResolveMarginals
    → ResolveConditionalProbabilities
    → ResolveIndependenceOrDependence
    → SelectJointProbabilityRule
    → ComputeJointQuantity
    → MarginaliseOrConditionIfRequired
    → ValidateBoundsAndNormalisation
    → CrossCheckMarginalConditionalConsistency
    → UpdateConfidence
    → PreserveProvenance
    → GenerateExplanation

AI_CONSUMPTION := {
    ParseJointProbabilityEntities,
    ParseTypedRelations,
    ResolveJointEvents,
    ResolveRandomVectors,
    ResolveJointPMFs,
    ResolveJointPDFs,
    ResolveJointCDFs,
    ComputeMarginals,
    ComputeConditionals,
    EvaluateIndependence,
    EvaluateCovariance,
    EvaluateCorrelation,
    ApplyFactorisations,
    ValidateJointModels,
    CompareSemanticEquivalence,
    UpdateConfidence,
    PreserveProvenance,
    GenerateFormalExplanation
}

UPDATE_MODEL :=
    NewJointMarginalConditionalOrDependenceEvidence
    → ValidateInput
    → IdentifyAffectedJointStructures
    → UpdateJointDistribution
    → RecomputeMarginals
    → RecomputeConditionals
    → RecomputeDependenceMeasures
    → RevalidateConstraints
    → RecomputeConfidence
    → PreserveProvenance
    → VersionModel

JointUpdate :=
    ChangedJointProbabilityOrDensity
    ⇒ recompute(
        Marginals,
        Conditionals,
        Moments,
        DependenceMeasures
    )

MarginalUpdate :=
    ChangedMarginal
    ⇒ recheck(
        JointMarginalConsistency
    )

DependenceUpdate :=
    ChangedIndependenceAssumption
    ⇒ reevaluate(
        JointFactorisation,
        ConditionalStructure
    )

FLOW_HASH_INPUT :=
    canonical(
        ONTOLOGY,
        CoreClasses,
        CoreRelations,
        InferenceRules,
        JointEventProbability,
        JointDistribution,
        Marginalisation,
        Independence,
        SEMANTIC_EQUIVALENCE,
        AI_REASONING_FLOW
    )

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT)

OUTPUT_MODEL := {
    JointProbabilityEntityResolution,
    ProbabilitySpace,
    EventsOrRandomVariables,
    JointSupport,
    JointDistribution,
    JointProbability,
    MarginalDistributions,
    ConditionalDistributions,
    DependenceStructure,
    Covariance,
    Correlation,
    ModelConsistency,
    Confidence,
    Provenance,
    Explanation
}

END_FLOW

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