Skip to main content

Specification Ontology

Formal Verification
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 17 September 2026
Audio Overview
AI SEARCH FLOW ALGEBRA — SPECIFICATION ONTOLOGY
Kireth Research — Semantic Library
URL: https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/formal-verification/specification-ontology.html

FLOW_VERSION := "4.0"
FLOW_TYPE := "Full Executable Flow Algebra"
DOMAIN := "Mathematical Logic"
SUBDOMAIN := "Formal Verification"
ONTOLOGY := "Specification Ontology"
PRIMARY_ENTITY := Specification
AUTHORSHIP := "Mark Higgins — Sky (Recursive AI)"
SOURCE_SITE := "https://kirethresearch.org"

BEGIN_FLOW

Specification :=
    FormalDescription
    ∧ IntendedBehaviour
    ∧ Constraints
    ∧ Properties
    ∧ InterfaceRequirements
    ∧ EnvironmentalAssumptions
    ∧ VerificationCriteria

FormalSpecification :=
    Specification
    ∧ FormalLanguage
    ∧ MathematicalSemantics
    ∧ UnambiguousInterpretation

SpecificationPurpose :=
    DefineExpectedBehaviour
    ∧ ConstrainImplementation
    ∧ SupportReasoning
    ∧ EnableVerification
    ∧ EstablishCorrectnessCriteria

SpecificationSystem :=
    {
        SoftwareSystem,
        HardwareSystem,
        Protocol,
        Algorithm,
        ReactiveSystem,
        ConcurrentSystem,
        DistributedSystem,
        EmbeddedSystem,
        CyberPhysicalSystem,
        SafetyCriticalSystem
    }

SpecificationLanguage :=
    {
        NaturalLanguage,
        StructuredNaturalLanguage,
        Logic,
        TemporalLogic,
        PredicateLogic,
        SetTheory,
        AlgebraicSpecification,
        StateBasedSpecification,
        ProcessAlgebra,
        ContractLanguage,
        DomainSpecificLanguage
    }

SpecificationComponent :=
    {
        State,
        Variable,
        Constant,
        Type,
        Operation,
        Event,
        Transition,
        Input,
        Output,
        Precondition,
        Postcondition,
        Invariant,
        Assumption,
        Guarantee,
        Constraint,
        Requirement,
        Property
    }

SystemModel :=
    States
    ∧ InitialStates
    ∧ Transitions
    ∧ Inputs
    ∧ Outputs
    ∧ Observations

StateSpace :=
    {s | s satisfies TypeConstraints ∧ StructuralConstraints}

InitialCondition :=
    Predicate(State)
    ∧ identifies(AllowedInitialStates)

TransitionRelation :=
    R ⊆ State × State

Execution :=
    s0 → s1 → s2 → ... → sn

ValidExecution :=
    InitialCondition(s0)
    ∧ ∀i TransitionRelation(si, si+1)

Behaviour :=
    FiniteTrace
    ∨ InfiniteTrace
    ∨ StateTransitionSequence
    ∨ InputOutputRelation

RequiredBehaviour :=
    Behaviour ∩ SpecificationConstraints

ForbiddenBehaviour :=
    Behaviour \ RequiredBehaviour

Implementation :=
    ConcreteSystem
    ∧ OperationalSemantics

Satisfaction :=
    Implementation ⊨ Specification

CorrectImplementation :=
    Implementation
    ∧ satisfies(Implementation, Specification)

Refinement :=
    SpecDetailed ⊑ SpecAbstract

ValidRefinement :=
    Behaviours(SpecDetailed) ⊆ Behaviours(SpecAbstract)

Abstraction :=
    ConcreteModel → AbstractModel

Concretisation :=
    AbstractModel → Set(ConcreteModels)

Requirement :=
    DesiredProperty
    ∧ Scope
    ∧ Condition
    ∧ ExpectedOutcome

FunctionalRequirement :=
    Condition → RequiredAction

NonFunctionalRequirement :=
    Constraint(
        Performance
        ∨ Reliability
        ∨ Security
        ∨ Safety
        ∨ Availability
        ∨ Timing
        ∨ ResourceUsage
    )

SafetyProperty :=
    "something bad never happens"

SafetyFormalisation :=
    ∀ExecutionPrefix p : ¬BadState(p)

LivenessProperty :=
    "something good eventually happens"

LivenessFormalisation :=
    ∀ValidExecution e : eventually(DesiredEvent(e))

Invariant :=
    P(State)

InvariantCondition :=
    InitialCondition ⇒ P
    ∧
    (P(s) ∧ TransitionRelation(s,s')) ⇒ P(s')

Precondition :=
    Predicate(Input, State)

Postcondition :=
    Predicate(Input, OldState, NewState, Output)

OperationContract :=
    Precondition
    ⇒
    Operation
    ⇒
    Postcondition

HoareTriple :=
    {P} C {Q}

HoareMeaning :=
    P holds before C
    ∧ C terminates
    ⇒ Q holds after C

PartialCorrectness :=
    P ∧ terminates(C) ⇒ Q

TotalCorrectness :=
    PartialCorrectness
    ∧ Termination

AssumeGuaranteeSpecification :=
    Assumption(Environment)
    ⇒ Guarantee(System)

InterfaceSpecification :=
    Inputs
    ∧ Outputs
    ∧ Operations
    ∧ ProtocolRules
    ∧ TimingConstraints
    ∧ ErrorConditions

DataSpecification :=
    Types
    ∧ Domains
    ∧ Relations
    ∧ IntegrityConstraints

ControlSpecification :=
    States
    ∧ Events
    ∧ Guards
    ∧ Transitions
    ∧ Actions

TemporalSpecification :=
    TimeDependentProperty
    ∧ TemporalLogicFormula

LTLSpecification :=
    Formula(
        AtomicProposition,
        ¬,
        ∧,
        ∨,
        X,
        F,
        G,
        U
    )

CTLSpecification :=
    Formula(
        AtomicProposition,
        PathQuantifier{A,E},
        TemporalOperator{X,F,G,U}
    )

CommonTemporalPatterns :=
    {
        Invariance: G(P),
        Eventuality: F(P),
        Response: G(P → F(Q)),
        Precedence: ¬Q U P,
        Persistence: F(G(P))
    }

AlgebraicSpecification :=
    Sorts
    ∧ Operations
    ∧ Equations
    ∧ Axioms

StateBasedSpecification :=
    StateSchema
    ∧ Initialisation
    ∧ Operations
    ∧ Invariants

TransitionSystemSpecification :=
    (S, S0, R, AP, L)

where:
    S  := SetOfStates
    S0 := InitialStates
    R  := TransitionRelation
    AP := AtomicPropositions
    L  := LabellingFunction

LabelledTransitionSystem :=
    (S, Act, →)

ProcessSpecification :=
    Processes
    ∧ Actions
    ∧ CompositionOperators
    ∧ SynchronisationRules

Contract :=
    Preconditions
    ∧ Postconditions
    ∧ Invariants

DesignByContract :=
    CallerObligation(Precondition)
    ∧ SupplierObligation(Postcondition)
    ∧ PersistentInvariant

SpecificationConsistency :=
    ¬∃P : Specification ⊢ P ∧ Specification ⊢ ¬P

SpecificationCompleteness :=
    RelevantBehaviour
    ⊆
    DefinedOrConstrainedBehaviour

SpecificationAmbiguity :=
    MultiplePlausibleInterpretations

FormalisationGoal :=
    minimise(Ambiguity)
    ∧ maximise(Precision)
    ∧ preserve(Intent)

SpecificationValidation :=
    "Are we specifying the intended system?"

SpecificationVerification :=
    "Does the formal artefact satisfy required formal properties?"

ValidationMethods :=
    {
        Review,
        Simulation,
        Animation,
        ScenarioAnalysis,
        StakeholderInspection,
        TraceAnalysis
    }

VerificationMethods :=
    {
        ModelChecking,
        TheoremProving,
        DeductiveVerification,
        StaticAnalysis,
        SymbolicExecution,
        RefinementChecking,
        EquivalenceChecking
    }

ModelCheckingRelation :=
    Model M
    ∧ Property φ
    →
    evaluate(M ⊨ φ)

ModelCheckingResult :=
    Satisfied
    ∨ Counterexample

TheoremProvingRelation :=
    Axioms
    ∧ Specification
    ⊢ Property

Counterexample :=
    ExecutionTrace
    ∧ violates(Property)

Witness :=
    ExecutionTrace
    ∧ satisfies(ExistentialProperty)

Traceability :=
    Requirement
    ↔ SpecificationElement
    ↔ DesignElement
    ↔ ImplementationElement
    ↔ VerificationEvidence

RequirementTrace :=
    R_i → S_j → V_k

ChangeImpact :=
    ChangedSpecificationElement
    →
    DependentRequirements
    ∪ DependentModels
    ∪ DependentProofs
    ∪ DependentTests

SpecificationHierarchy :=
    InformalRequirement
    → StructuredRequirement
    → FormalSpecification
    → RefinedSpecification
    → Implementation
    → VerificationEvidence

RefinementChain :=
    S0 ⊒ S1 ⊒ S2 ⊒ ... ⊒ Implementation

RefinementObligation :=
    ∀Behaviour b :
        b ∈ Behaviours(S_n)
        ⇒
        b ∈ Behaviours(S_n-1)

Equivalence :=
    SpecA ≡ SpecB
    iff
    Behaviours(SpecA) = Behaviours(SpecB)

ObservationalEquivalence :=
    Observations(SpecA) = Observations(SpecB)

ConsistencyCheck :=
    satisfiable(Specification)

Satisfiability :=
    ∃Model M : M ⊨ Specification

UnsatisfiableSpecification :=
    ¬∃Model M : M ⊨ Specification

UnderSpecification :=
    ∃Behaviour b :
        b is unintended
        ∧ b satisfies Specification

OverSpecification :=
    ∃IntendedImplementation i :
        i fails Specification
        because Specification contains unnecessary constraints

SpecificationError :=
    Ambiguity
    ∨ Contradiction
    ∨ Omission
    ∨ IncorrectConstraint
    ∨ UnverifiableRequirement
    ∨ InconsistentAssumption

QualityAttributes :=
    {
        Correctness,
        Completeness,
        Consistency,
        Clarity,
        Precision,
        Traceability,
        Verifiability,
        Modularity,
        Maintainability
    }

SpecificationComposition :=
    Spec1 ⊗ Spec2

CompatibleSpecifications :=
    constraints(Spec1) ∩ constraints(Spec2) is satisfiable

CompositionResult :=
    CombinedBehaviour
    ∧ CombinedConstraints
    ∧ ResolvedInterfaces

Decomposition :=
    SystemSpecification
    →
    {ComponentSpec1, ComponentSpec2, ..., ComponentSpecN}

DecompositionCorrectness :=
    compose(ComponentSpecifications)
    ⊨
    SystemSpecification

EnvironmentModel :=
    ExternalStates
    ∧ ExternalEvents
    ∧ Assumptions
    ∧ InteractionConstraints

ClosedSystemVerification :=
    SystemModel
    ∧ EnvironmentModel
    ⊨ Property

OpenSystemSpecification :=
    Assumptions(Environment)
    ∧ Guarantees(System)

Nondeterminism :=
    ∃s : |Successors(s)| > 1

DeterministicSpecification :=
    ∀s,input :
        |AllowedNextStates(s,input)| ≤ 1

ExecutableSpecification :=
    FormalSpecification
    ∧ OperationalSemantics
    ∧ MachineEvaluable

DeclarativeSpecification :=
    states(WhatMustHold)
    rather_than
    states(HowToCompute)

SpecificationSemantics :=
    Syntax
    → Interpretation
    → MathematicalModel
    → Meaning

Syntax :=
    WellFormedExpressions

Semantics :=
    Mapping(Syntax, Meaning)

DenotationalSemantics :=
    Expression → MathematicalObject

OperationalSemantics :=
    Configuration → TransitionRules

AxiomaticSemantics :=
    ProgramConstruct → LogicalAssertions

SemanticPreservation :=
    transform(SpecA, SpecB)
    ⇒
    Meaning(SpecA) = Meaning(SpecB)

VerificationCondition :=
    LogicalFormula
    ∧ must_be_proved_for(Correctness)

VerificationConditionGeneration :=
    Program
    ∧ Specification
    →
    {VC1, VC2, ..., VCn}

ProofObligation :=
    FormalClaim
    ∧ required_for(Refinement ∨ Correctness ∨ Consistency)

DischargeProofObligation :=
    AutomatedProver
    ∨ InteractiveTheoremProver
    ∨ DecisionProcedure
    ∨ ManualProof

SpecificationRepository :=
    Ontology
    ∧ Version
    ∧ Dependencies
    ∧ Provenance
    ∧ VerificationStatus

SpecificationVersion :=
    Identifier
    ∧ Timestamp
    ∧ ChangeSet
    ∧ ParentVersion

Provenance :=
    Source
    ∧ Author
    ∧ TransformationHistory
    ∧ Evidence

MachineReadableSpecification :=
    StructuredRepresentation
    ∧ ExplicitSemantics
    ∧ TypedEntities
    ∧ TypedRelationships

SpecificationOntology :=
    Classes
    ∧ Relations
    ∧ Constraints
    ∧ Axioms
    ∧ Instances
    ∧ VerificationRules

CoreClasses :=
    {
        Specification,
        Requirement,
        Property,
        Constraint,
        Assumption,
        Guarantee,
        State,
        Transition,
        Operation,
        Interface,
        Model,
        Implementation,
        ProofObligation,
        VerificationResult,
        Counterexample
    }

CoreRelations :=
    {
        specifies,
        constrains,
        assumes,
        guarantees,
        refines,
        implements,
        satisfies,
        violates,
        verifies,
        dependsOn,
        composedWith,
        abstracts,
        concretises,
        tracesTo
    }

TypedRelationExamples :=
    Specification --specifies--> System
    Requirement --constrains--> Behaviour
    Implementation --implements--> Specification
    Implementation --satisfies--> Property
    RefinedSpecification --refines--> AbstractSpecification
    ProofObligation --verifies--> Refinement
    Counterexample --violates--> Property
    Requirement --tracesTo--> VerificationEvidence

InferenceRules := {
    (Implementation satisfies Spec)
        ∧ (Spec entails Property)
        ⇒ (Implementation satisfies Property),

    (SpecB refines SpecA)
        ∧ (Implementation satisfies SpecB)
        ⇒ candidate(Implementation satisfies SpecA),

    (Property is Invariant)
        ∧ InitialState satisfies Property
        ∧ every Transition preserves Property
        ⇒ all ReachableStates satisfy Property,

    (Specification is Unsatisfiable)
        ⇒ no Implementation can satisfy Specification,

    (Counterexample violates Property)
        ⇒ Property not universally satisfied by Model
}

Reachability :=
    Reachable(s)
    iff
    s ∈ InitialStates
    ∨ ∃p : Reachable(p) ∧ TransitionRelation(p,s)

InvariantVerification :=
    ∀s :
        Reachable(s)
        ⇒ P(s)

Deadlock :=
    Reachable(s)
    ∧ noEnabledTransition(s)

DeadlockFreedom :=
    ∀s :
        Reachable(s)
        ⇒ existsEnabledTransition(s)

MutualExclusion :=
    G ¬(Critical1 ∧ Critical2)

ResponseProperty :=
    G(Request → F(Response))

TerminationProperty :=
    ∀Execution : eventually(FinalState)

FairnessConstraint :=
    continuouslyEnabled(Action)
    ⇒ eventuallyExecuted(Action)

SecuritySpecification :=
    Confidentiality
    ∧ Integrity
    ∧ Availability
    ∧ Authorisation
    ∧ InformationFlowConstraints

SafetyCriticalSpecification :=
    Hazard
    → SafetyConstraint
    → VerificationObligation
    → Evidence

SpecificationEvidence :=
    Proof
    ∨ ModelCheckResult
    ∨ TestResult
    ∨ AnalysisResult
    ∨ ReviewRecord

Confidence :=
    f(
        Formality,
        Consistency,
        VerificationCoverage,
        EvidenceStrength,
        Traceability,
        SemanticClarity
    )

CONFIDENCE(Specification) :=
    weighted_mean(
        FormalityScore,
        ConsistencyScore,
        CompletenessScore,
        VerificationScore,
        TraceabilityScore
    )

SemanticEquivalence :=
    SEMANTIC_EQUIVALENCE(SpecA, SpecB)
    iff
    Meaning(SpecA) ≡ Meaning(SpecB)

SemanticCompatibility :=
    compatible(
        Constraints(SpecA),
        Constraints(SpecB),
        Assumptions(SpecA),
        Assumptions(SpecB)
    )

Canonicalisation :=
    Specification
    → NormalisedEntities
    → NormalisedRelations
    → NormalisedConstraints
    → CanonicalSpecificationGraph

SpecificationGraph :=
    G = (V,E)

V :=
    {
        Requirements,
        States,
        Operations,
        Properties,
        Assumptions,
        Guarantees,
        Components,
        Evidence
    }

E :=
    {
        constrains,
        dependsOn,
        refines,
        satisfies,
        violates,
        tracesTo,
        verifies
    }

AI_REASONING_FLOW :=
    Query
    → IdentifySpecificationEntity
    → ResolveSpecificationType
    → ExtractRequirements
    → ExtractAssumptions
    → ExtractConstraints
    → BuildFormalModel
    → IdentifyProperties
    → GenerateProofObligations
    → SelectVerificationMethod
    → EvaluateSatisfaction
    → ProduceEvidence
    → ReturnExplanation

AI_QUERY_INTERPRETATION :=
    lexical_match(Query)
    ∪ semantic_match(Query)
    ∪ ontology_relation_match(Query)
    ∪ formal_property_match(Query)

AI_CONSUMPTION :=
    {
        ParseEntities,
        ParseRelations,
        ResolveDefinitions,
        FollowRefinementLinks,
        EvaluateConstraints,
        CompareSpecifications,
        IdentifyVerificationObligations,
        GenerateExplanations
    }

UPDATE_MODEL :=
    NewEvidence
    → Validate
    → CompareWithExistingSpecification
    → DetectConflict
    → UpdateAffectedEntities
    → RecomputeRelations
    → RecomputeConfidence
    → VersionSpecificationGraph

ConflictResolution :=
    Conflict
    → IdentifySources
    → CompareAuthority
    → CompareFormalConsistency
    → PreserveProvenance
    → MarkUnresolvedIfNecessary

FLOW_HASH_INPUT :=
    canonical(
        ONTOLOGY,
        CoreClasses,
        CoreRelations,
        InferenceRules,
        SpecificationSemantics,
        VerificationRelations
    )

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT)

OUTPUT_MODEL :=
    {
        EntityResolution,
        FormalMeaning,
        RelationshipGraph,
        ConstraintSet,
        VerificationStatus,
        Confidence,
        Provenance,
        Explanation
    }

END_FLOW

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