Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
2188 views
1
'''
2
This file assumes that the conjecturing spkg is installed and that 'conjecturing.py' is loaded.
3
'''
4
5
def digits10(n):
6
return len(n.digits(10))
7
8
def digits2(n):
9
return len(n.digits(2))
10
11
def count_divisors(n):
12
return len(divisors(n))
13
14
def count_prime_divisors(n):
15
return len(factor(n))
16
17
def count_quadratic_residues(n):
18
return len(quadratic_residues(n))
19
20
def number(n):
21
return n
22
23
def automatedSearch(objects, invariants, universe, upperBound=True, steps=10, mainInvariant=0):
24
for _ in range(steps):
25
l = conjecture(objects, invariants, mainInvariant, upperBound=upperBound)
26
noCounterExample = True
27
for i in universe:
28
if any([not c.evaluate(Integer(i)) for c in l]):
29
print "Adding {}".format(i)
30
objects.append(i)
31
universe.remove(i)
32
noCounterExample = False
33
break
34
if noCounterExample:
35
print "No counterexample found"
36
break
37
return l
38
39
invariants = [('prime_pi',prime_pi), ('euler_phi', euler_phi), number, digits10, digits2, ('sigma', sigma), count_divisors, next_prime, previous_prime, count_quadratic_residues]
40
41
objects = [Integer(n) for n in [5, 12, 30, 50]]
42
universe = [Integer(n) for n in range(3, 1000001)]
43
44
for n in objects:
45
universe.remove(n)
46
47
conjectures = automatedSearch(objects, invariants, universe, steps=210)
48
49
print("The conjectures are stored in the variable conjectures.")
50
51