<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=An_example_script_for_provers</id>
	<title>An example script for provers - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=An_example_script_for_provers"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=An_example_script_for_provers&amp;action=history"/>
	<updated>2026-11-15T01:16:59Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=An_example_script_for_provers&amp;diff=16106&amp;oldid=prev</id>
		<title>Tammet: Uus lehekülg: &#039;&lt;pre&gt; #!/usr/bin/python3 # -*- coding: utf-8 -*- # # Runs prover on problems, collects results # # Call on the command line    import sys, csv import datetime import subprocess...&#039;</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=An_example_script_for_provers&amp;diff=16106&amp;oldid=prev"/>
		<updated>2019-09-29T19:18:43Z</updated>

		<summary type="html">&lt;p&gt;Uus lehekülg: &amp;#039;&amp;lt;pre&amp;gt; #!/usr/bin/python3 # -*- coding: utf-8 -*- # # Runs prover on problems, collects results # # Call on the command line    import sys, csv import datetime import subprocess...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python3&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
#&lt;br /&gt;
# Runs prover on problems, collects results&lt;br /&gt;
#&lt;br /&gt;
# Call on the command line &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import sys, csv&lt;br /&gt;
import datetime&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
# ====== configuration globals ======&lt;br /&gt;
&lt;br /&gt;
# problems.csv should contain problem names, &lt;br /&gt;
# one per line, without a folder and without the .p suffix, like this (remove #):&lt;br /&gt;
# NUM847+1 &lt;br /&gt;
# CSR028+3 &lt;br /&gt;
# NUM304+1&lt;br /&gt;
# ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
problems_filename=&amp;quot;problems.csv&amp;quot; &lt;br /&gt;
&lt;br /&gt;
# the Problems folder of TPTP:&lt;br /&gt;
&lt;br /&gt;
problem_path=&amp;quot;/opt/TPTP/Problems/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# summary results of running on problems:&lt;br /&gt;
&lt;br /&gt;
# NB! if you stop the runner and restart, it will continue&lt;br /&gt;
# from the last problem NOT in the outfile.&lt;br /&gt;
# I.e. to run again from scratch, remove outfile&lt;br /&gt;
&lt;br /&gt;
outfile=&amp;quot;example_result.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# folder for storing problem running logs:&lt;br /&gt;
&lt;br /&gt;
log_folder=&amp;quot;/tmp/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# time in seconds per problem:&lt;br /&gt;
&lt;br /&gt;
timeout=20&lt;br /&gt;
&lt;br /&gt;
# ====== globals set in code =========&lt;br /&gt;
&lt;br /&gt;
problem_list=[] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ====== top level =========&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
  global problems_list&lt;br /&gt;
  problem_list=read_problems()&lt;br /&gt;
  solved=read_solved()  &lt;br /&gt;
  #print(problem_list)&lt;br /&gt;
  i=0 &lt;br /&gt;
  of=open(outfile,&amp;quot;a&amp;quot;)&lt;br /&gt;
  while i&amp;lt;len(problem_list):    &lt;br /&gt;
    problem=problem_list[i]&lt;br /&gt;
    if not solved:&lt;br /&gt;
      pass&lt;br /&gt;
    elif solved and problem!=solved:&lt;br /&gt;
      i+=1&lt;br /&gt;
      continue&lt;br /&gt;
    else:&lt;br /&gt;
      solved=False&lt;br /&gt;
      i=i+1 &lt;br /&gt;
      problem=problem_list[i]&lt;br /&gt;
    #print(problem)&lt;br /&gt;
    res=runone(problem)&lt;br /&gt;
    if res[0]:&lt;br /&gt;
      of.write(problem+&amp;quot;,Proved,&amp;quot;+res[1]+&amp;quot;,&amp;quot;+res[2]+&amp;quot;,&amp;quot;+res[3]+&amp;quot;\n&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
      of.write(problem+&amp;quot;,Failed,&amp;quot;+res[1]+&amp;quot;,&amp;quot;+res[2]+&amp;quot;,&amp;quot;+str(timeout)+&amp;quot;\n&amp;quot;)        &lt;br /&gt;
    of.flush()    &lt;br /&gt;
    i+=1&lt;br /&gt;
  of.close()  &lt;br /&gt;
&lt;br /&gt;
def runone(problem):  &lt;br /&gt;
  global timeout&lt;br /&gt;
  proved=False&lt;br /&gt;
  timeline=&amp;quot;&amp;quot;&lt;br /&gt;
  pref=problem[:3]&lt;br /&gt;
  runnr=0&lt;br /&gt;
  timeline1=&amp;quot;&amp;quot;&lt;br /&gt;
  timeline2=&amp;quot;&amp;quot;&lt;br /&gt;
  path=problem_path+pref+&amp;quot;/&amp;quot;+problem+&amp;quot;.p&amp;quot;&lt;br /&gt;
  cmd=&amp;quot;timeout &amp;quot;+str(timeout)+&amp;quot; ../gkc_41 &amp;quot;+path  &lt;br /&gt;
  print(path)&lt;br /&gt;
  outfile=log_folder+problem&lt;br /&gt;
  of=open(outfile,&amp;quot;w&amp;quot;)&lt;br /&gt;
  of.write(cmd+&amp;quot;\n&amp;quot;)&lt;br /&gt;
  of.write(str(datetime.datetime.now())+&amp;quot;\n&amp;quot;)&lt;br /&gt;
  p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)&lt;br /&gt;
  for line in p.stdout.readlines():&lt;br /&gt;
    #print(&amp;quot;!!&amp;quot;+str(line))&lt;br /&gt;
    line=line.decode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
    of.write(line)&lt;br /&gt;
    if line.startswith(&amp;quot;**** run &amp;quot;):&lt;br /&gt;
      try:&lt;br /&gt;
        tmp=line.split()&lt;br /&gt;
        runnr=tmp[2]&lt;br /&gt;
      except:&lt;br /&gt;
        continue        &lt;br /&gt;
    elif line.startswith(&amp;quot;this run seconds:&amp;quot;):&lt;br /&gt;
      try:&lt;br /&gt;
        tmp=line.split()&lt;br /&gt;
        timeline1=tmp[3]&lt;br /&gt;
      except:&lt;br /&gt;
        timeline1=&amp;quot; &amp;quot;        &lt;br /&gt;
    elif line.startswith(&amp;quot;total seconds:&amp;quot;):&lt;br /&gt;
      try:&lt;br /&gt;
        tmp=line.split()&lt;br /&gt;
        timeline2=tmp[2]  &lt;br /&gt;
      except:&lt;br /&gt;
        timeline2=&amp;quot; &amp;quot;        &lt;br /&gt;
    elif line.startswith(&amp;quot;result: proof found&amp;quot;):&lt;br /&gt;
      proved=True&lt;br /&gt;
      #print(&amp;quot;Proved,&amp;quot;+str(runnr))      &lt;br /&gt;
    elif &amp;quot;maxresident)k&amp;quot; in line:&lt;br /&gt;
      line=line.replace(&amp;quot;user &amp;quot;,&amp;quot;,&amp;quot;)&lt;br /&gt;
      line=line.replace(&amp;quot;system &amp;quot;,&amp;quot;,&amp;quot;)&lt;br /&gt;
      line=line.replace(&amp;quot;elapsed &amp;quot;,&amp;quot;,&amp;quot;)&lt;br /&gt;
      line=line.replace(&amp;quot;%CPU &amp;quot;,&amp;quot;,&amp;quot;+str(datetime.datetime.now())+&amp;quot;,&amp;quot;)&lt;br /&gt;
      timeline=line  &lt;br /&gt;
  if proved:    &lt;br /&gt;
    print(&amp;quot;Proved,&amp;quot;+str(runnr)+&amp;quot;,&amp;quot;+timeline1+&amp;quot;,&amp;quot;+timeline2)&lt;br /&gt;
  else:&lt;br /&gt;
    print(&amp;quot;Failed,&amp;quot;+str(runnr)+&amp;quot;,&amp;quot;+timeline1+&amp;quot;,&amp;quot;+str(timeout))&lt;br /&gt;
  retval = p.wait()  &lt;br /&gt;
  of.close()&lt;br /&gt;
  return (proved,str(runnr),timeline1,timeline2)&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
def read_problems():   &lt;br /&gt;
  pfname=problems_filename&lt;br /&gt;
  problems=[]&lt;br /&gt;
  # --- read problems file ---&lt;br /&gt;
  try:&lt;br /&gt;
    csvfile=open(pfname)&lt;br /&gt;
    freader = csv.reader(csvfile)&lt;br /&gt;
    for row in freader:   &lt;br /&gt;
      niceprob=row[0].strip()&lt;br /&gt;
      if niceprob and len(niceprob)&amp;gt;6 and \&lt;br /&gt;
         niceprob[0].isupper() and niceprob[1].isupper() and niceprob[2].isupper():         &lt;br /&gt;
        problems.append(niceprob)&lt;br /&gt;
    csvfile.close()   &lt;br /&gt;
  except Exception as e:&lt;br /&gt;
    print(&amp;quot;Could not open or read the input file &amp;quot;+problems)&lt;br /&gt;
    return []&lt;br /&gt;
  return problems      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def read_solved():   &lt;br /&gt;
  pfname=outfile&lt;br /&gt;
  solved=[]&lt;br /&gt;
  last=&amp;quot;&amp;quot;&lt;br /&gt;
  try: &lt;br /&gt;
    csvfile=open(pfname)&lt;br /&gt;
    freader = csv.reader(csvfile)  &lt;br /&gt;
  except:&lt;br /&gt;
    print(&amp;quot;no solved file found&amp;quot;)  &lt;br /&gt;
    return None  &lt;br /&gt;
  # --- read problems file ---&lt;br /&gt;
  try:&lt;br /&gt;
    csvfile=open(pfname)&lt;br /&gt;
    freader = csv.reader(csvfile)&lt;br /&gt;
    for row in freader:&lt;br /&gt;
      if not row: continue&lt;br /&gt;
      niceprob=row[0].strip()&lt;br /&gt;
      if niceprob and len(niceprob)&amp;gt;6 and \&lt;br /&gt;
         niceprob[0].isupper() and niceprob[1].isupper() and niceprob[2].isupper():         &lt;br /&gt;
        solved.append(niceprob) &lt;br /&gt;
        last=niceprob&lt;br /&gt;
    csvfile.close()   &lt;br /&gt;
  except Exception as e:&lt;br /&gt;
    print(&amp;quot;Could not open or read the solved file &amp;quot;+pfname)&lt;br /&gt;
    return None&lt;br /&gt;
  return last  &lt;br /&gt;
&lt;br /&gt;
# ---- run top level ----&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>