def theorize(theory=THEORY, **options): """Make conjectures based on atlas and update atlas based on theorems.""" with atlas.chdir(theory): world = DB('world') diverge_conjectures = 'diverge_conjectures.facts' diverge_theorems = 'diverge_theorems.facts' equal_conjectures = 'equal_conjectures.facts' nless_theorems = 'nless_theorems.facts' assert already_exists(world), 'First build world map' options.setdefault('log_file', 'theorize.log') with atlas.load(theory, world, **options) as db: db.conjecture(diverge_conjectures, equal_conjectures) with pomagma.util.temp_copy(diverge_conjectures) as temp: theorem_count = theorist.try_prove_diverge( diverge_conjectures, temp, diverge_theorems, **options) if theorem_count > 0: db.assume(diverge_theorems) db.dump(world) with pomagma.util.temp_copy(equal_conjectures) as temp: theorem_count = theorist.try_prove_nless( theory, world, equal_conjectures, temp, nless_theorems, **options) if theorem_count > 0: with atlas.load(theory, world, **options) as db: db.assume(nless_theorems) db.dump(world)
def init(theory, **options): ''' Initialize world map for given theory. Options: log_level, log_file ''' log_file = options.setdefault('log_file', 'init.log') world_size = pomagma.util.MIN_SIZES[theory] pomagma.util.log_print('initialize to {}'.format(world_size), log_file) with atlas.chdir(theory, init=True): survey = 'survey.h5' world = 'world.h5' with pomagma.util.temp_copy(survey) as temp: surveyor.init(theory, temp, world_size, **options) with atlas.load(theory, survey, **options) as db: assert not os.path.exists(world), world db.validate() db.dump(world)
def init(theory=THEORY, **options): """Initialize world map for given theory. Options: log_level, log_file """ log_file = options.setdefault('log_file', 'init.log') world_size = pomagma.util.MIN_SIZES[theory] pomagma.util.log_print('initialize to {}'.format(world_size), log_file) with atlas.chdir(theory, init=True): survey = DB('survey') world = DB('world') normal = DB('world.normal') with pomagma.util.temp_copy(survey) as temp: surveyor.init(theory, temp, world_size, **options) with atlas.load(theory, survey, **options) as db: assert not already_exists(world), world assert not already_exists(normal), normal db.validate() db.dump(world) db.dump(normal)