DIRS=$(shell ls i/f)
FFILES=$(shell ls i/f/*/* | sort -R)

TIM=30
all: e-par3 cvc-4 vam-26 vam-30 e-18 e-par2 z3-432 e-par0 z3-40 para-4  e-par1 spass-35 vam-18 z3-32 z3-40q ipr-1 metis-23  yic-1 cvc-3 alte p9-09.11a

e-par0: o/e-par0 $(patsubst i/f/%,o/e-par0/%,$(FFILES))
o/e-par0:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/e-par0/%: i/f/%
	@timeout $(TIM) runepar2.pl $(TIM) 0 $< 2 1 1 default | grep "file[(]'\|# SZS" > $@

e-par1: o/e-par1 $(patsubst i/f/%,o/e-par1/%,$(FFILES))
o/e-par1:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/e-par1/%: i/f/%
	@timeout $(TIM) runepar2.pl $(TIM) 0 $< 2 1 1 m10u2_184 | grep "file[(]'\|# SZS" > $@

e-par2: o/e-par2 $(patsubst i/f/%,o/e-par2/%,$(FFILES))
o/e-par2:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/e-par2/%: i/f/%
	@timeout $(TIM) runepar2.pl $(TIM) 0 $< 2 1 1 f6_40_128  | grep "file[(]'\|# SZS"> $@

e-par3: o/e-par3 $(patsubst i/f/%,o/e-par3/%,$(FFILES))
o/e-par3:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/e-par3/%: i/f/%
	@timeout $(TIM) runepar2.pl $(TIM) 0 $< 2 1 1 new_mzt_small  | grep "file[(]'\|# SZS"> $@

e-18: o/e-18 $(patsubst i/f/%,o/e-18/%,$(FFILES))
o/e-18:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/e-18/%: i/f/%
	@eproof_ram -s -R -xAuto -tAuto --cpu-limit=$(TIM) --tstp-format $<  | grep "file[(]'\|# SZS" > $@

vam-18: o/vam-18 $(patsubst i/f/%,o/vam-18/%,$(FFILES))
o/vam-18:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/vam-18/%: i/f/%
	@timeout $(TIM) vampire_1.8 --mode casc -t $(TIM) --proof tptp --output_axiom_names on $< | grep "file[(]'\|% SZS" > $@

vam-26: o/vam-26 $(patsubst i/f/%,o/vam-26/%,$(FFILES))
o/vam-26:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/vam-26/%: i/f/%
	@timeout $(TIM) vampire_2.6 --mode casc -t $(TIM) --proof tptp --output_axiom_names on $< | grep "file[(]'\|% SZS" > $@

vam-30: o/vam-30 $(patsubst i/f/%,o/vam-30/%,$(FFILES))
o/vam-30:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/vam-30/%: i/f/%
	@timeout $(TIM) vampire_3.0 --mode casc -t $(TIM) --proof tptp --output_axiom_names on $< | grep "file[(]'\|% SZS" > $@

z3-40: o/z3-40 $(patsubst i/f/%,o/z3-40/%,$(FFILES))
o/z3-40:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/z3-40/%: i/f/%
	@timeout $(TIM) z3-4.0 -tptp DISPLAY_UNSAT_CORE=true -T:$(TIM) $< > $@

z3-432: o/z3-432 $(patsubst i/f/%,o/z3-432/%,$(FFILES))
o/z3-432:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/z3-432/%: i/f/%
	@LD_LIBRARY_PATH=~/lib64 timeout $(TIM) z3_tptp-4.3 -c -t:$(TIM) $< > $@

z3-32: o/z3-32 $(patsubst i/f/%,o/z3-32/%,$(FFILES))
o/z3-32:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/z3-32/%: i/f/%
	@timeout $(TIM) z3-3.2 -tptp DISPLAY_UNSAT_CORE=true -T:$(TIM) $< > $@

z3-40q: o/z3-40q $(patsubst i/f/%,o/z3-40q/%,$(FFILES))
o/z3-40q:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/z3-40q/%: i/f/%
	@timeout $(TIM) z3-4.0 -tptp DISPLAY_UNSAT_CORE=true  ELIM_QUANTIFIERS=true PULL_NESTED_QUANTIFIERS=true -T:$(TIM) $< > $@

spass-35: o/spass-35 $(patsubst i/f/%,o/spass-35/%,$(FFILES))
o/spass-35:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/spass-35/%: i/f/%
	@timeout $(TIM) SPASS -TPTP -PGiven=0 -PProblem=0 -DocProof -TimeLimit=$(TIM) $< | grep "SPASS beiseite\|Formulae used in the proof" > $@

p9-09.11a: o/p9-09.11a $(patsubst i/f/%,o/p9-09.11a/%,$(FFILES))
o/p9-09.11a:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/p9-09.11a/%: i/f/%
	@timeout $(TIM) run-prover9 $< | grep "THEOREM PROVED" > $@

ipr-1: o/ipr-1 $(patsubst i/f/%,o/ipr-1/%,$(FFILES))
o/ipr-1:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/ipr-1/%: i/f/%
	@timeout $(TIM) iproveropt --clausifier /home/ami/cek/bin/vclausify_rel --tptp_safe_out true $< | grep "SZS status\|file" > $@

ipr-1sat: o/ipr-1sat $(patsubst i/f/%,o/ipr-1sat/%,$(FFILES))
o/ipr-1sat:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/ipr-1sat/%: i/f/%
	@timeout $(TIM) iproveropt --schedule sat --time_out_real $(TIM) --tptp_safe_out true $< | grep "SZS status\|file" > $@

para-4: o/para-4 $(patsubst i/f/%,o/para-4/%,$(FFILES))
o/para-4:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/para-4/%: i/f/%
	@paradox4 --tstp --no-progress --verbose 0 --time $(TIM) $< 2>&1 > $@

#| grep "SZS status\|Error\|ExitFailure" > $@

metis-23: o/metis-23 $(patsubst i/f/%,o/metis-23/%,$(FFILES))
o/metis-23:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/metis-23/%: i/f/%
	@timeout $(TIM) metis --show proof --time-limit $(TIM) $< | grep "SZS status\|^fof" | grep -v "fof[(]normalize" > $@

cvc-4: o/cvc-4 $(patsubst i/f/%,o/cvc-4/%,$(FFILES))
o/cvc-4:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/cvc-4/%: i/f/%
	@timeout $(TIM) run-cvc4 $(TIM) $< > $@

why: i/w $(patsubst i/f/%,i/w/%.why,$(FFILES))
i/w:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
i/w/%.why: i/f/%
	@grep -v conjecture $< | sort | uniq > /tmp/$(shell basename $<)
	@grep conjecture $< >> /tmp/$(shell basename $<)
	@sed -i "s/(\([0-9]\)/(renamed\1/g;s/, \([0-9]\)/, renamed\1/g;s/=\([0-9]\)/=renamed\1/g" /tmp/$(shell basename $<)
	@why3 -F tptp /tmp/$(shell basename $<) &> $@
	@sed -i "s/[(][*] use tptp.Univ [*][)]/type iType/g" $@
	@rm /tmp/$(shell basename $<)

yic-1: o/yic-1 $(patsubst i/f/%,o/yic-1/%,$(FFILES))
o/yic-1:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/yic-1/%: i/w/%.why
	@timeout $(TIM) why3 -P yices -m 10000 -t $(TIM) $< > $@

cvc-3: o/cvc-3 $(patsubst i/f/%,o/cvc-3/%,$(FFILES))
o/cvc-3:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/cvc-3/%: i/w/%.why
	@timeout $(TIM) why3 -P cvc3 -m 10000 -t $(TIM) $< > $@

alte: o/alte $(patsubst i/f/%,o/alte/%,$(FFILES))
o/alte:
	@echo $@; for i in $(DIRS); do mkdir -p $@/$$i; done
o/alte/%: i/w/%.why
	@timeout $(TIM) why3 -P alt-ergo -m 10000 -t $(TIM) $< > $@

