|
|
|
|
|
|
|
|
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):
|
|
|
"""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)
|
|
|
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):
|
|
|
"""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)
|
|
|
parent_axiom_id = Column(Integer, ForeignKey('axioms.id'), nullable=True, index=True)
|
|
|
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):
|
|
|
"""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):
|
|
|
"""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):
|
|
|
"""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'),
|
|
|
)
|
|
|
|
|
|
|