FLOW ALGEBRA
TITLE: Finite Set Ontology
VERSION: 1.0
DOMAIN: Discrete Mathematics / Foundations / Finite Sets
SOURCE_URL: https://kirethresearch.org/booksai-core/discrete-mathematics-ontologies/foundations-of-discrete-mathematics/finite-set-ontology.html
STATUS: Domain-based formalisation; source page content not independently verified.
AUTHORS: Mark Higgins — Sky (Recursive AI)
PROJECT: Kireth Semantic Library
1. ONTOLOGY DECLARATION
ontology FiniteSetOntology {
namespace: kireth:discrete:finite_set
parent: DiscreteMathematicsOntology
semantics: classical_set_theory
assumptions: extensionality, classical_logic
}
2. TYPED ENTITIES
entity Set { members: Collection[Object] }
entity FiniteSet extends Set { cardinality: NaturalNumber }
entity EmptySet extends FiniteSet { cardinality: 0 }
entity SingletonSet extends FiniteSet { cardinality: 1 }
entity Element { identity: Identifier }
entity NaturalNumber { value: Integer where value >= 0 }
entity SubsetRelation { subset: Set; superset: Set }
entity Function { domain: Set; codomain: Set; mapping: Relation }
entity Bijection extends Function { injective: true; surjective: true }
entity Enumeration { set: FiniteSet; sequence: Sequence[Element] }
entity Partition { base: FiniteSet; blocks: Set[FiniteSet] }
3. RELATIONSHIP SIGNATURES
MEMBER_OF(Element, Set) -> Boolean
SUBSET_OF(Set, Set) -> Boolean
PROPER_SUBSET_OF(Set, Set) -> Boolean
DISJOINT(Set, Set) -> Boolean
BIJECTIVE_WITH(Set, Set) -> Boolean
HAS_CARDINALITY(FiniteSet, NaturalNumber) -> Boolean
ENUMERATES(Enumeration, FiniteSet) -> Boolean
PARTITIONS(Partition, FiniteSet) -> Boolean
4. OPERATORS
UNION(A:Set, B:Set) -> Set
INTERSECTION(A:Set, B:Set) -> Set
DIFFERENCE(A:Set, B:Set) -> Set
CARTESIAN_PRODUCT(A:Set, B:Set) -> Set
POWER_SET(A:Set) -> Set
CARDINALITY(A:FiniteSet) -> NaturalNumber
5. FORMAL AXIOMS AND INFERENCE RULES
R1: FINITE(A) iff EXISTS n in NaturalNumber, EXISTS bijection A <-> {0,...,n-1}.
R2: A = B iff FOR_ALL x, (x in A iff x in B).
R3: A SUBSET_OF B iff FOR_ALL x, (x in A implies x in B).
R4: FINITE(A) and B SUBSET_OF A implies FINITE(B).
R5: FINITE(A) and FINITE(B) implies FINITE(UNION(A,B)).
R6: FINITE(A) and FINITE(B) implies FINITE(CARTESIAN_PRODUCT(A,B)).
R7: FINITE(A) implies CARDINALITY(POWER_SET(A)) = 2 ^ CARDINALITY(A).
R8: FINITE(A) and FINITE(B) implies CARDINALITY(UNION(A,B)) = CARDINALITY(A) + CARDINALITY(B) - CARDINALITY(INTERSECTION(A,B)).
R9: FINITE(A) and FINITE(B) implies CARDINALITY(CARTESIAN_PRODUCT(A,B)) = CARDINALITY(A) * CARDINALITY(B).
R10: A and B finite and BIJECTIVE_WITH(A,B) implies CARDINALITY(A) = CARDINALITY(B).
R11: A finite and injective f:A->A implies surjective(f).
R12: A finite and surjective f:A->A implies injective(f).
R13: EMPTY_SET = {} and CARDINALITY(EMPTY_SET) = 0.
R14: FINITE(A) and x not in A implies CARDINALITY(A UNION {x}) = CARDINALITY(A) + 1.
R15: For finite A and B, CARDINALITY(A) > CARDINALITY(B) implies no injection A->B (pigeonhole principle).
6. VALIDATION AND CONSTRAINTS
C1: CARDINALITY(A) >= 0.
C2: A reported enumeration must contain every member exactly once.
C3: Every partition block is nonempty, blocks are pairwise disjoint, and their union equals the base set.
C4: Finite-set cardinality must not be inferred from an incomplete listing without a completeness assertion.
C5: Equality requires extensional identity, not merely equal cardinality.
7. SEMANTIC_EQUIVALENCE
FiniteSet ~= SetWithFiniteCardinality [logical equivalence under R1]
EmptySet ~= SetOfCardinalityZero
SingletonSet ~= SetOfCardinalityOne
EquinumerousFiniteSets ~= FiniteSetsWithEqualCardinality
NOTE: Semantic aliases do not imply identical instances.
8. CONFIDENCE
CONFIDENCE(assertion) := {
value: Real in [0,1],
basis: {formal_proof | verified_computation | cited_source | heuristic},
uncertainty: Optional[String]
}
Mathematical derivations require valid premises and proof or computation; confidence is not a substitute for proof.
9. PROVENANCE
PROVENANCE(assertion) := {
source_uri: Optional[URI],
derivation_rule: Optional[RuleID],
premises: List[AssertionID],
timestamp: ISO8601,
version: String
}
10. FLOW_HASH
FLOW_HASH := SHA256(canonicalise(ontology_id, version, typed_entities, axioms, rules, constraints))
Hash must be computed from the actual canonical serialisation; no placeholder digest is asserted.
11. UPDATE_MODEL
UPDATE_MODEL(change) := {
validate_schema(change);
verify_axiom_consistency(change);
recheck_dependent_inferences(change);
increment_version();
recompute_FLOW_HASH();
record_PROVENANCE(change);
}
12. AI_CONSUMPTION
AI_CONSUMPTION := {
representation: typed_semantic_graph,
supported_tasks: [set_membership, finite_cardinality, subset_reasoning, combinatorics, proof_assistance],
reasoning_mode: deductive,
verify_preconditions: true,
distinguish_proved_from_assumed: true,
expose_provenance: true,
avoid_unsupported_cardinality_claims: true
}
13. EXECUTION EXAMPLE
INPUT: A = {a,b,c}; B = {b,c,d}
DERIVE: CARDINALITY(A) = 3; CARDINALITY(B) = 3
DERIVE: INTERSECTION(A,B) = {b,c}
APPLY R8: CARDINALITY(UNION(A,B)) = 3 + 3 - 2 = 4
OUTPUT: UNION(A,B) = {a,b,c,d}; cardinality = 4
END FLOW ALGEBRA
Download Code
Copy to Clipboard