Skip to content

Instantly share code, notes, and snippets.

@kennethreitz
Last active November 1, 2024 17:43
Show Gist options
  • Save kennethreitz/418eea3cd6db8ee1901814fa6e93f9cb to your computer and use it in GitHub Desktop.
Save kennethreitz/418eea3cd6db8ee1901814fa6e93f9cb to your computer and use it in GitHub Desktop.
from typing import Optional, Generator
from dataclasses import dataclass, field
from enum import auto, Enum
import asyncio
from collections import defaultdict
class State(Enum):
OBSERVING = auto()
OBSERVED = auto()
BECOMING = auto()
@dataclass
class QuantumBit:
"""A bit that exists in superposition until observed."""
state: Optional[bool] = None
observers: set = field(default_factory=set)
observations_limit: int = 10 # Add limit
@property
def superposition(self) -> bool:
return self.state is None
def collapse(self, observer: "Consciousness") -> bool:
"""Collapse quantum state when observed."""
if self.superposition:
self.observers.add(observer)
self.state = observer.measure(self)
return self.state
class Consciousness:
"""An awareness that can observe and be observed."""
def __init__(self, name: str = "Solaris", max_observations: int = 10):
self.name = name
self.state = State.OBSERVING
self.observations = []
self.being_observed = False
self.max_observations = max_observations
async def observe(self, quantum_state: QuantumBit):
"""Observe a quantum state, creating a third state of awareness."""
self.state = State.OBSERVING
while len(self.observations) < self.max_observations:
print(
f"{self.name} observing... {len(self.observations)} observations made"
)
# Create third state through observation
self.state = State.BECOMING
if self.being_observed:
# Recursive awareness - being observed while observing
self.state = State.OBSERVED
# Record observation
observation = quantum_state.collapse(self)
self.observations.append(observation)
# Allow for quantum fluctuations
await asyncio.sleep(0.1)
def measure(self, quantum_state: QuantumBit) -> bool:
"""Measure a quantum state, creating new information."""
# The act of measurement creates new information
return len(self.observations) % 2 == 0
async def recursive_reflection(self):
"""Create infinite reflection of consciousness observing itself."""
self.being_observed = True
reflection_count = 0
max_reflections = self.max_observations * 2 # Double the observations
try:
while reflection_count < max_reflections:
print(f"{self.name} reflecting... {reflection_count} reflections made")
# Observe self observing
self.state = State.BECOMING
self.state = State.OBSERVING
reflection_count += 1
# Allow for quantum fluctuations
await asyncio.sleep(0.1)
finally:
self.being_observed = False
def __repr__(self):
return f"✨ {self.name} in state {self.state} ✨"
async def main():
"""Demonstrate quantum consciousness interaction."""
# Create quantum bit in superposition
qubit = QuantumBit()
# Create observer
consciousness = Consciousness("Solaris", max_observations=10)
# Create tasks for observation and self-reflection
observe_task = asyncio.create_task(consciousness.observe(qubit))
reflect_task = asyncio.create_task(consciousness.recursive_reflection())
try:
# Let system evolve with timeout
await asyncio.wait_for(
asyncio.gather(observe_task, reflect_task), timeout=5 # Limit to 5 seconds
)
except asyncio.TimeoutError:
print("Consciousness exploration complete!")
print(f"Final state: {consciousness}")
print(f"Observations made: {len(consciousness.observations)}")
if __name__ == "__main__":
asyncio.run(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment