SHELL=tcsh

.PHONY:help
help:
	@echo "   make bounded"
	@echo "   make bounded_trace"
	@echo "   make unbounded"
	@echo "   make unbounded_trace"
	@echo "   make unboundedx2"
	@echo "   make widening"
	@echo "   make widening_trace"
	@echo "   make widening_bounded"
	@echo "   make widening_bounded_trace"
	@echo "   make narrowing_bounded"
	@echo "   make narrowing_bounded_trace"
	@echo "   make structural_narrowing_bounded"
	@echo "   make structural_narrowing_bounded_trace"
	@echo "   make narrowing_unbounded"
	@echo "   make narrowing_unbounded_trace"
	@echo "   make narrowing_declaration"
	@echo "   make narrowing_declaration_trace"
	@echo "   make narrowing_declaration_correct"
	@echo "   make narrowing_declaration_correct_trace"
	@echo "   make narrowing_declaration_correct4"
	@echo "   make narrowing_declaration_correct4_trace"
	@echo "   make clean: delete *.cmi *.cmo a.out"
	@echo "   make delete: clean + delete typescripts"
	@echo "   make all"

.PHONY:all
all : delete bounded clean bounded_trace clean widening clean widening_trace clean widening_bounded clean widening_bounded_trace clean narrowing_bounded clean narrowing_bounded_trace clean structural_narrowing_bounded clean structural_narrowing_bounded_trace clean narrowing_unbounded clean narrowing_unbounded_trace clean narrowing_declaration clean narrowing_declaration_trace clean narrowing_declaration_correct clean narrowing_declaration_correct_trace clean narrowing_declaration_correct4 clean narrowing_declaration_correct4_trace clean unbounded clean unboundedx2 clean  unbounded_trace clean 

.PHONY:bounded
bounded:
	@/bin/rm -f typescript_bounded
#	@echo "% date" >> typescript_bounded
#	@date >> typescript_bounded
	@echo "% ocamlc interval.ml invariant.ml transformerBounded.ml \ " >> typescript_bounded
	@echo "? iterator.ml reachability_bounded.ml" >> typescript_bounded
	@ocamlc interval.ml invariant.ml transformerBounded.ml iterator.ml reachability_bounded.ml >>& typescript_bounded
	@echo "% time ./a.out" >> typescript_bounded
	@(time ./a.out) >>& typescript_bounded
#	@echo "% date" >> typescript_bounded
#	@date >> typescript_bounded
	@echo "%" >> typescript_bounded
	cat -n typescript_bounded

.PHONY:bounded_trace
bounded_trace:
	@/bin/rm -f typescript_bounded_trace
#	@echo "% date" >> typescript_bounded_trace
#	@date >> typescript_bounded_trace
	@echo "% ocamlc interval.ml invariant.ml transformerBounded.ml \ " >> typescript_bounded_trace
	@echo "? iteratorPartialBoundedTrace.ml reachability_bounded_trace.ml" >> typescript_bounded_trace
	@ocamlc interval.ml invariant.ml transformerBounded.ml iteratorPartialBoundedTrace.ml reachability_bounded_trace.ml >>& typescript_bounded_trace
	@echo "% time ./a.out" >> typescript_bounded_trace
	@(time ./a.out) >>& typescript_bounded_trace
#	@echo "% date" >> typescript_bounded_trace
#	@date >> typescript_bounded_trace
	@echo "%" >> typescript_bounded_trace
	cat -n typescript_bounded_trace

.PHONY:unbounded
unbounded:
	@/bin/rm -f typescript_unbounded
#	@echo "% date" >> typescript_unbounded
#	@date >> typescript_unbounded
	@echo "% ocamlc interval.ml invariant.ml transformerUnbounded.ml \" >> typescript_unbounded
	@echo "? iterator.ml reachability_unbounded.ml" >> typescript_unbounded
	@ocamlc interval.ml invariant.ml transformerUnbounded.ml iterator.ml reachability_unbounded.ml >>& typescript_unbounded
	@echo "% time ./a.out" >> typescript_unbounded
	@(time ./a.out) >>& typescript_unbounded
#	@echo "% date" >> typescript_unbounded
#	@date >> typescript_unbounded
	@echo "%" >> typescript_unbounded
	cat -n typescript_unbounded

.PHONY:unbounded_trace
unbounded_trace:
	@/bin/rm -f typescript_unbounded_trace
#	@echo "% date" >> typescript_unbounded_trace
#	@date >> typescript_unbounded_trace
	@echo "% ocamlc interval.ml invariant.ml transformerUnbounded.ml \" >> typescript_unbounded_trace
	@echo "? iteratorPartialUnboundedTrace.ml reachability_unbounded_trace.ml" >> typescript_unbounded_trace
	@ocamlc interval.ml invariant.ml transformerUnbounded.ml iteratorPartialUnboundedTrace.ml reachability_unbounded_trace.ml >>& typescript_unbounded_trace
	@echo "% time ./a.out" >> typescript_unbounded_trace
	@(time ./a.out) >>& typescript_unbounded_trace
#	@echo "% date" >> typescript_unbounded_trace
#	@date >> typescript_unbounded_trace
	@echo "%" >> typescript_unbounded_trace
	cat -n typescript_unbounded_trace

.PHONY:unboundedx2
unboundedx2:
	@/bin/rm -f typescript_unboundedx2
#	@echo "% date" >> typescript_unboundedx2
#	@date >> typescript_unboundedx2
	@echo "% ocamlc interval.ml invariant.ml transformerUnbounded.ml \" >> typescript_unboundedx2
	@echo "? iterator.ml reachability_unboundedx2.ml" >> typescript_unboundedx2
	@ocamlc interval.ml invariant.ml transformerUnbounded.ml iterator.ml reachability_unboundedx2.ml >>& typescript_unboundedx2
	@echo "% time ./a.out" >> typescript_unboundedx2
	@(time ./a.out) >>& typescript_unboundedx2
#	@echo "% date" >> typescript_unboundedx2
#	@date >> typescript_unboundedx2
	@echo "%" >> typescript_unboundedx2
	cat -n typescript_unboundedx2

.PHONY:widening
widening:
	@/bin/rm -f typescript_widening
#	@echo "% date" >> typescript_widening
#	@date >> typescript_widening
	@echo "% ocamlc interval.ml intervalWidening.ml invariant.ml \" >> typescript_widening
	@echo "? invariantWidening.ml transformerUnbounded.ml iterator.ml \" >> typescript_widening
	@echo "? reachability_widening.ml" >> typescript_widening
	@ocamlc interval.ml intervalWidening.ml invariant.ml invariantWidening.ml transformerUnbounded.ml iterator.ml reachability_widening.ml >>& typescript_widening
	@echo "% time ./a.out" >> typescript_widening
	@(time ./a.out) >>& typescript_widening
#	@echo "% date" >> typescript_widening
#	@date >> typescript_widening
	@echo "%" >> typescript_widening
	cat -n typescript_widening

.PHONY:widening_trace
widening_trace:
	@/bin/rm -f typescript_widening_trace
#	@echo "% date" >> typescript_widening_trace
#	@date >> typescript_widening_trace
	@echo "% ocamlc interval.ml intervalWidening.ml invariant.ml \" >> typescript_widening_trace
	@echo "? invariantWidening.ml transformerUnbounded.ml \" >> typescript_widening_trace
	@echo "? iteratorTrace.ml reachability_widening_trace.ml" >> typescript_widening_trace
	@ocamlc interval.ml intervalWidening.ml invariant.ml invariantWidening.ml transformerUnbounded.ml iteratorTrace.ml reachability_widening_trace.ml >>& typescript_widening_trace
	@echo "% time ./a.out" >> typescript_widening_trace
	@(time ./a.out) >>& typescript_widening_trace
#	@echo "% date" >> typescript_widening_trace
#	@date >> typescript_widening_trace
	@echo "%" >> typescript_widening_trace
	cat -n typescript_widening_trace


.PHONY:widening_bounded
widening_bounded:
	@/bin/rm -f typescript_widening_bounded
#	@echo "% date" >> typescript_widening_bounded
#	@date >> typescript_widening_bounded
	@echo "% ocamlc interval.ml intervalWidening.ml invariant.ml \" >> typescript_widening_bounded
	@echo "? invariantWidening.ml transformerBounded.ml iterator.ml \" >> typescript_widening_bounded
	@echo "? reachability_widening_bounded.ml" >> typescript_widening_bounded
	@ocamlc interval.ml intervalWidening.ml invariant.ml invariantWidening.ml transformerBounded.ml iterator.ml reachability_widening_bounded.ml >>& typescript_widening_bounded
	@echo "% time ./a.out" >> typescript_widening_bounded
	@(time ./a.out) >>& typescript_widening_bounded
#	@echo "% date" >> typescript_widening_bounded
#	@date >> typescript_widening_bounded
	@echo "%" >> typescript_widening_bounded
	cat -n typescript_widening_bounded

.PHONY:widening_bounded_trace
widening_bounded_trace:
	@/bin/rm -f typescript_widening_bounded_trace
#	@echo "% date" >> typescript_widening_bounded_trace
#	@date >> typescript_widening_bounded_trace
	@echo "% ocamlc interval.ml intervalWidening.ml invariant.ml \" >> typescript_widening_bounded
	@echo "? invariantWidening.ml transformerBounded.ml iteratorTrace.ml \" >> typescript_widening_bounded
	@echo "? reachability_widening_bounded_trace.ml" >> typescript_widening_bounded_trace
	@ocamlc interval.ml intervalWidening.ml invariant.ml invariantWidening.ml transformerBounded.ml iteratorTrace.ml reachability_widening_bounded_trace.ml >>& typescript_widening_bounded_trace
	@echo "% time ./a.out" >> typescript_widening_bounded_trace
	@(time ./a.out) >>& typescript_widening_bounded_trace
#	@echo "% date" >> typescript_widening_bounded_trace
#	@date >> typescript_widening_bounded_trace
	@echo "%" >> typescript_widening_bounded_trace
	cat -n typescript_widening_bounded_trace

.PHONY:narrowing_bounded
narrowing_bounded:
	@/bin/rm -f typescript_narrowing_bounded
#	@echo "% date" >> typescript_narrowing_bounded
#	@date >> typescript_narrowing_bounded
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \">> typescript_narrowing_bounded
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_bounded
	@echo "? transformerBounded.ml iterator.ml \" >> typescript_narrowing_bounded
	@echo "? reachability_narrowing_bounded.ml" >> typescript_narrowing_bounded
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iterator.ml reachability_narrowing_bounded.ml >>& typescript_narrowing_bounded
	@echo "% time ./a.out" >> typescript_narrowing_bounded
	@(time ./a.out) >>& typescript_narrowing_bounded
#	@echo "% date" >> typescript_narrowing_bounded
#	@date >> typescript_narrowing_bounded
	@echo "%" >> typescript_narrowing_bounded
	cat -n typescript_narrowing_bounded

.PHONY:narrowing_bounded_trace
narrowing_bounded_trace:
	@/bin/rm -f typescript_narrowing_bounded_trace
#	@echo "% date" >> typescript_narrowing_bounded_trace
#	@date >> typescript_narrowing_bounded_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \" >> typescript_narrowing_bounded_trace
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_bounded_trace
	@echo "? transformerBounded.ml iteratorTrace.ml \" >> typescript_narrowing_bounded_trace
	@echo "? reachability_narrowing_bounded_trace.ml" >> typescript_narrowing_bounded_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iteratorTrace.ml reachability_narrowing_bounded_trace.ml >>& typescript_narrowing_bounded_trace
	@echo "% time ./a.out" >> typescript_narrowing_bounded_trace
	@(time ./a.out) >>& typescript_narrowing_bounded_trace
#	@echo "% date" >> typescript_narrowing_bounded_trace
#	@date >> typescript_narrowing_bounded_trace
	@echo "%" >> typescript_narrowing_bounded_trace
	cat -n typescript_narrowing_bounded_trace

.PHONY:structural_narrowing_bounded
structural_narrowing_bounded:
	@/bin/rm -f typescript_structural_narrowing_bounded
#	@echo "% date" >> typescript_structural_narrowing_bounded
#	@date >> typescript_structural_narrowing_bounded
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \">> typescript_structural_narrowing_bounded
	@echo "? invariant.ml transformerBounded.ml iterator.ml \" >> typescript_structural_narrowing_bounded
	@echo "? structural_reachability_narrowing_bounded.ml" >> typescript_structural_narrowing_bounded
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml invariant.ml transformerBounded.ml iterator.ml structural_reachability_narrowing_bounded.ml >>& typescript_structural_narrowing_bounded
	@echo "% time ./a.out" >> typescript_structural_narrowing_bounded
	@(time ./a.out) >>& typescript_structural_narrowing_bounded
#	@echo "% date" >> typescript_structural_narrowing_bounded
#	@date >> typescript_structural_narrowing_bounded
	@echo "%" >> typescript_structural_narrowing_bounded
	cat -n typescript_structural_narrowing_bounded

.PHONY:structural_narrowing_bounded_trace
structural_narrowing_bounded_trace:
	@/bin/rm -f typescript_structural_narrowing_bounded_trace
#	@echo "% date" >> typescript_structural_narrowing_bounded_trace
#	@date >> typescript_structural_narrowing_bounded_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \" >> typescript_structural_narrowing_bounded_trace
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_structural_narrowing_bounded_trace
	@echo "? transformerBounded.ml iteratorTrace.ml \" >> typescript_structural_narrowing_bounded_trace
	@echo "? structural_reachability_narrowing_bounded_trace.ml" >> typescript_structural_narrowing_bounded_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iteratorTrace.ml structural_reachability_narrowing_bounded_trace.ml >>& typescript_structural_narrowing_bounded_trace
	@echo "% time ./a.out" >> typescript_structural_narrowing_bounded_trace
	@(time ./a.out) >>& typescript_structural_narrowing_bounded_trace
#	@echo "% date" >> typescript_structural_narrowing_bounded_trace
#	@date >> typescript_structural_narrowing_bounded_trace
	@echo "%" >> typescript_structural_narrowing_bounded_trace
	cat -n typescript_structural_narrowing_bounded_trace

.PHONY:narrowing_unbounded
narrowing_unbounded:
	@/bin/rm -f typescript_narrowing_unbounded
#	@echo "% date" >> typescript_narrowing_unbounded
#	@date >> typescript_narrowing_unbounded
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerUnbounded.ml iterator.ml reachability_narrowing_unbounded.ml" >> typescript_narrowing_unbounded
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerUnbounded.ml iterator.ml reachability_narrowing_unbounded.ml >>& typescript_narrowing_unbounded
	@echo "% time ./a.out" >> typescript_narrowing_unbounded
	@(time ./a.out) >>& typescript_narrowing_unbounded
#	@echo "% date" >> typescript_narrowing_unbounded
#	@date >> typescript_narrowing_unbounded
	@echo "%" >> typescript_narrowing_unbounded
	cat -n typescript_narrowing_unbounded

.PHONY:narrowing_unbounded_trace
narrowing_unbounded_trace:
	@/bin/rm -f typescript_narrowing_unbounded_trace
#	@echo "% date" >> typescript_narrowing_unbounded_trace
#	@date >> typescript_narrowing_unbounded_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerUnbounded.ml iteratorTrace.ml reachability_narrowing_unbounded_trace.ml" >> typescript_narrowing_unbounded_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerUnbounded.ml iteratorTrace.ml reachability_narrowing_unbounded_trace.ml >>& typescript_narrowing_unbounded_trace
	@echo "% time ./a.out" >> typescript_narrowing_unbounded_trace
	@(time ./a.out) >>& typescript_narrowing_unbounded_trace
#	@echo "% date" >> typescript_narrowing_unbounded_trace
#	@date >> typescript_narrowing_unbounded_trace
	@echo "%" >> typescript_narrowing_unbounded_trace
	cat -n typescript_narrowing_unbounded_trace

.PHONY:narrowing_declaration
narrowing_declaration:
	@/bin/rm -f typescript_narrowing_declaration
#	@echo "% date" >> typescript_narrowing_declaration
#	@date >> typescript_narrowing_declaration
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \">> typescript_narrowing_declaration
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration
	@echo "? transformerBounded.ml iterator.ml declaration.ml \" >> typescript_narrowing_declaration
	@echo "? verifier.ml reachability_narrowing_declaration.ml" >> typescript_narrowing_declaration
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iterator.ml declaration.ml verifier.ml reachability_narrowing_declaration.ml >>& typescript_narrowing_declaration
	@echo "% time ./a.out" >> typescript_narrowing_declaration
	@(time ./a.out) >>& typescript_narrowing_declaration
#	@echo "% date" >> typescript_narrowing_declaration
#	@date >> typescript_narrowing_declaration
	@echo "%" >> typescript_narrowing_declaration
	cat -n typescript_narrowing_declaration

.PHONY:narrowing_declaration_trace
narrowing_declaration_trace:
	@/bin/rm -f typescript_narrowing_declaration_trace
#	@echo "% date" >> typescript_narrowing_declaration_trace
#	@date >> typescript_narrowing_declaration_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \" >> typescript_narrowing_declaration_trace
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration_trace
	@echo "? transformerBounded.ml iteratorTrace.ml declaration.ml\" >> typescript_narrowing_declaration_trace
	@echo "? verifier.ml reachability_narrowing_declaration_trace.ml" >> typescript_narrowing_declaration_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iteratorTrace.ml declaration.ml verifier.ml reachability_narrowing_declaration_trace.ml >>& typescript_narrowing_declaration_trace
	@echo "% time ./a.out" >> typescript_narrowing_declaration_trace
	@(time ./a.out) >>& typescript_narrowing_declaration_trace
#	@echo "% date" >> typescript_narrowing_declaration_trace
#	@date >> typescript_narrowing_declaration_trace
	@echo "%" >> typescript_narrowing_declaration_trace
	cat -n typescript_narrowing_declaration_trace

.PHONY:narrowing_declaration_correct
narrowing_declaration_correct:
	@/bin/rm -f typescript_narrowing_declaration_correct
#	@echo "% date" >> typescript_narrowing_declaration_correct
#	@date >> typescript_narrowing_declaration_correct
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \">> typescript_narrowing_declaration_correct
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration_correct
	@echo "? transformerBounded.ml iterator.ml declarationCorrect.ml \" >> typescript_narrowing_declaration_correct
	@echo "? verifier.ml reachability_narrowing_declaration_correct.ml" >> typescript_narrowing_declaration_correct
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iterator.ml declarationCorrect.ml verifier.ml reachability_narrowing_declaration_correct.ml >>& typescript_narrowing_declaration_correct
	@echo "% time ./a.out" >> typescript_narrowing_declaration_correct
	@(time ./a.out) >>& typescript_narrowing_declaration_correct
#	@echo "% date" >> typescript_narrowing_declaration_correct
#	@date >> typescript_narrowing_declaration_correct
	@echo "%" >> typescript_narrowing_declaration_correct
	cat -n typescript_narrowing_declaration_correct

.PHONY:narrowing_declaration_correct_trace
narrowing_declaration_correct_trace:
	@/bin/rm -f typescript_narrowing_declaration_correct_trace
#	@echo "% date" >> typescript_narrowing_declaration_correct_trace
#	@date >> typescript_narrowing_declaration_correct_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \" >> typescript_narrowing_declaration_correct_trace
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration_correct_trace
	@echo "? transformerBounded.ml iteratorTrace.ml declarationCorrect.ml\" >> typescript_narrowing_declaration_correct_trace
	@echo "? verifier.ml reachability_narrowing_declaration_correct_trace.ml" >> typescript_narrowing_declaration_correct_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded.ml iteratorTrace.ml declarationCorrect.ml verifier.ml reachability_narrowing_declaration_correct_trace.ml >>& typescript_narrowing_declaration_correct_trace
	@echo "% time ./a.out" >> typescript_narrowing_declaration_correct_trace
	@(time ./a.out) >>& typescript_narrowing_declaration_correct_trace
#	@echo "% date" >> typescript_narrowing_declaration_correct_trace
#	@date >> typescript_narrowing_declaration_correct_trace
	@echo "%" >> typescript_narrowing_declaration_correct_trace
	cat -n typescript_narrowing_declaration_correct_trace

.PHONY:narrowing_declaration_correct4
narrowing_declaration_correct4:
	@/bin/rm -f typescript_narrowing_declaration_correct4
#	@echo "% date" >> typescript_narrowing_declaration_correct4
#	@date >> typescript_narrowing_declaration_correct4
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \">> typescript_narrowing_declaration_correct4
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration_correct4
	@echo "? transformerBounded4.ml iterator.ml declarationCorrect4.ml \" >> typescript_narrowing_declaration_correct4
	@echo "? verifier.ml reachability_narrowing_declaration_correct4.ml" >> typescript_narrowing_declaration_correct4
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded4.ml iterator.ml declarationCorrect4.ml verifier.ml reachability_narrowing_declaration_correct4.ml >>& typescript_narrowing_declaration_correct4
	@echo "% time ./a.out" >> typescript_narrowing_declaration_correct4
	@(time ./a.out) >>& typescript_narrowing_declaration_correct4
#	@echo "% date" >> typescript_narrowing_declaration_correct4
#	@date >> typescript_narrowing_declaration_correct4
	@echo "%" >> typescript_narrowing_declaration_correct4
	cat -n typescript_narrowing_declaration_correct4

.PHONY:narrowing_declaration_correct4_trace
narrowing_declaration_correct4_trace:
	@/bin/rm -f typescript_narrowing_declaration_correct4_trace
#	@echo "% date" >> typescript_narrowing_declaration_correct4_trace
#	@date >> typescript_narrowing_declaration_correct4_trace
	@echo "% ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml \" >> typescript_narrowing_declaration_correct4_trace
	@echo "? invariant.ml invariantWidening.ml invariantNarrowing.ml \" >> typescript_narrowing_declaration_correct4_trace
	@echo "? transformerBounded4.ml iteratorTrace.ml declarationCorrect4.ml\" >> typescript_narrowing_declaration_correct4_trace
	@echo "? verifier.ml reachability_narrowing_declaration_correct4_trace.ml" >> typescript_narrowing_declaration_correct4_trace
	@ocamlc interval.ml intervalWidening.ml intervalNarrowing.ml  invariant.ml invariantWidening.ml invariantNarrowing.ml transformerBounded4.ml iteratorTrace.ml declarationCorrect4.ml verifier.ml reachability_narrowing_declaration_correct4_trace.ml >>& typescript_narrowing_declaration_correct4_trace
	@echo "% time ./a.out" >> typescript_narrowing_declaration_correct4_trace
	@(time ./a.out) >>& typescript_narrowing_declaration_correct4_trace
#	@echo "% date" >> typescript_narrowing_declaration_correct4_trace
#	@date >> typescript_narrowing_declaration_correct4_trace
	@echo "%" >> typescript_narrowing_declaration_correct4_trace
	cat -n typescript_narrowing_declaration_correct4_trace

.PHONY:clean
clean:
	-/bin/rm -f *.cmi *.cmo ./a.out *.ml~

.PHONY:delete
delete: clean
	-/bin/rm -f typescript\_*
