File size: 3,524 Bytes
63d3857
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81


from sqlalchemy import Column, Integer, String, Text, ForeignKey, Index, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
from sqlalchemy import DateTime

Base = declarative_base()

class Universe(Base):  # type: ignore[valid-type]
    """Universe model: represents a mathematical universe."""
    __tablename__ = 'universes'
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, unique=True, index=True)
    description = Column(Text)
    universe_type = Column(String, default="generic", index=True)  # e.g., group theory, geometry
    version = Column(Integer, default=1)
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())

    __table_args__ = (
        UniqueConstraint('name', 'version', name='uix_universe_name_version'),
        Index('ix_universe_type_version', 'universe_type', 'version'),
    )

class Axiom(Base):  # type: ignore[valid-type]
    """Axiom model: represents an axiom in a universe."""
    __tablename__ = 'axioms'
    id = Column(Integer, primary_key=True, index=True)
    universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
    statement = Column(Text, index=True)
    is_active = Column(Integer, default=1, index=True)  # for axiom evolution
    parent_axiom_id = Column(Integer, ForeignKey('axioms.id'), nullable=True, index=True)  # lineage tracking
    version = Column(Integer, default=1)
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())

    __table_args__ = (
        Index('ix_axiom_universe_id_is_active', 'universe_id', 'is_active'),
        Index('ix_axiom_parent_axiom_id', 'parent_axiom_id'),
        UniqueConstraint('universe_id', 'statement', 'version', name='uix_axiom_universe_statement_version'),
    )

class Theorem(Base):  # type: ignore[valid-type]
    """Theorem model: represents a derived theorem."""
    __tablename__ = 'theorems'
    id = Column(Integer, primary_key=True, index=True)
    universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
    statement = Column(Text, index=True)
    proof = Column(Text)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    __table_args__ = (
        Index('ix_theorem_universe_id_statement', 'universe_id', 'statement'),
    )

class Proof(Base):  # type: ignore[valid-type]
    """Proof model: represents a proof for an axiom."""
    __tablename__ = 'proofs'
    id = Column(Integer, primary_key=True, index=True)
    axiom_id = Column(Integer, ForeignKey('axioms.id'), index=True)
    content = Column(Text)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    __table_args__ = (
        Index('ix_proof_axiom_id', 'axiom_id'),
    )

class AnalysisResult(Base):  # type: ignore[valid-type]
    """AnalysisResult model: stores analysis results for universes."""
    __tablename__ = 'analysis_results'
    id = Column(Integer, primary_key=True, index=True)
    universe_id = Column(Integer, ForeignKey('universes.id'), index=True)
    result = Column(Text)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

    __table_args__ = (
        Index('ix_analysisresult_universe_id', 'universe_id'),
    )