From: Mart Lubbers Date: Fri, 23 Oct 2015 07:43:54 +0000 (+0200) Subject: cleaned up old directory X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=8e32acecac66ad7de8666ff492b62cc9b9c7dd38;p=master.git cleaned up old directory --- diff --git a/ar/assignments/.gitignore b/ar/assignments/.gitignore deleted file mode 100644 index 9aa6a64..0000000 --- a/ar/assignments/.gitignore +++ /dev/null @@ -1 +0,0 @@ -output.log diff --git a/ar/assignments/1.tex b/ar/assignments/1.tex deleted file mode 100644 index 8506da9..0000000 --- a/ar/assignments/1.tex +++ /dev/null @@ -1,114 +0,0 @@ -\section{Problem 1} -{\em -Six trucks have to deliver pallets of obscure building blocks to a magic -factory. Every truck has a capacity of 7800 kg and can carry at most -eight pallets. In total, the following has to be delivered: -\begin{itemize} - \item Four pallets of nuzzles, each of weight 700 kg. - \item A number of pallets of prittles, each of weight 800 kg. - \item Eight pallets of skipples, each of weight 1000 kg. - \item Ten pallets of crottles, each of weight 1500 kg. - \item Five pallets of dupples, each of weight 100 kg. -\end{itemize} -Prittles and crottles are an explosive combination: they are not allowed to be -put in the same truck. - -Skipples need to be cooled; only two of the six trucks have facility for -cooling skipples. Dupples are very valuable; to distribute the risk of loss no -two pallets of dupples may be in the same truck. - -Investigate what is the maximum number of pallets of prittles that can be -delivered, and show how for that number all pallets may be divided over the six -trucks. -} - -\newpage -\subsection{Formal definition} -For every truck $t_i$ for $i\in T$ where $T=\{1,\ldots,6\}$ in combination with -every nuzzle $n$, prittle $p$, skipple $s$, crottle $c$ and dupple $d$ we -declare a variable that holds the amount of that type of building block in that -truck. We group all pallets $r\in P$ where $P=\{n,p,s,c,d\}$. We also -define function $w(r)$ that defines the weight of the pallet and $n(r)$ that -defines the number of pallets needed. - -This leads to the following formalization where we maximize $n(p)$. - -\begin{align} - \bigwedge^{T}_{i=1}\Biggl( - & \bigwedge_{r\in P}t_{i}r\geq0\\ - & \wedge \sum_{r\in P}t_{i}r\leq8\\ - & \wedge \left(\sum_{r\in P}t_{i}r\cdot w(r)\right)\leq7800)\\ - & \wedge (t_{i}p=0\vee t_{i}c=0)\\ - & \wedge t_{i}d\leq1\\ - & \wedge (t_{i}=t_{1} \vee t_{i}=t_{2} \vee t_{i}s=0)\Biggr)\wedge\\ - \bigwedge_{r\in P}\Biggl( - & \left(\sum^{T}_{i=1}t_{i}r\right)=n(r)\Biggr) -\end{align} - -Every numbered subformula describes a constraint from the problem description. -We can separated the subformulas in formulas going over all trucks and formulas -going over all pallets. - -\begin{itemize} - \item \textbf{Trucks} - \begin{enumerate} - \item Makes sure you can not have a negative number of pallets - in a truck by stating that the number of pallets in a - truck is not smaller then $0$. - \item Makes sure you can not have more then $8$ pallets in a - truck by stating that the sum of all pallets in a truck - is not bigger then $8$. - \item Makes sure the weight will never go over the maximum - weight per truck by stating that all the pallets times - their weight in a truck will not go over $7800$kg. - \item Makes sure prittles and crottles are never together in a - truck by stating that either the number of prittles is - zero or the number of crottles is zero in a truck. - \item Makes sure that skipples are only in the first two cooled - trucks by stating that if the truck number not one or - two the number of skipples is zero. - \end{enumerate} - \item \textbf{Pallets} - \begin{enumerate} - \setcounter{enumi}{6} - \item Makes sure that all mandatory pallets are transported by - summing over all trucks and assuring the number of the - pallets of that type is exactly $n(r)$. - \end{enumerate} -\end{itemize} - -\subsection{SMT format solution} -The formula is easily convertable to SMT format and is listed in -Listing~\ref{listing:a1.smt}. The maximization is done by incrementing a -special variable called \texttt{} which is an instantiation of $n(p)$. -When the iteration yields unsat we know that the current number minus one is -the maximum amount of prittles the trucks can carry. The maximization is done -with a bash script shown in Listing~\ref{listing:1.bash}. - -\lstinputlisting[language=bash, - caption={Iteratively find the largest solution for problem 1}, - label={listing:1.bash}]{src/a1.bash} - -\subsection{Solution} -The bash script finds and shows the maximal solution of $18$ prittles. Finding -this solution takes less then $0.12$ seconds and is shown in Table~\ref{tab:s1}. - -\begin{table}[H] - \begin{tabular}{|l|lllll|l|l|} - \hline - Truck & Nuzzles & Prittles & Skipples & Crottles & Dupples & - Weight & Pallets\\ - \hline - 1 & 0 & 0 & 4 & 2 & 1 & 7100 & 7\\ - 2 & 0 & 3 & 4 & 0 & 1 & 6500 & 8\\ - 3 & 0 & 8 & 0 & 0 & 0 & 6400 & 7\\ - 4 & 0 & 7 & 0 & 0 & 1 & 5700 & 8\\ - 5 & 0 & 0 & 0 & 5 & 1 & 7600 & 6\\ - 6 & 4 & 0 & 0 & 3 & 1 & 7400 & 8\\ - \hline - total & 4 & 18 & 8 & 10 & 5 & &\\ - \hline - \end{tabular} - \caption{Solution visualization for problem 1} -\label{tab:s1} -\end{table} diff --git a/ar/assignments/2.tex b/ar/assignments/2.tex deleted file mode 100644 index 7fd4047..0000000 --- a/ar/assignments/2.tex +++ /dev/null @@ -1,121 +0,0 @@ -\section{Problem 2} -{\em - Give a chip design containing three power components and eight regular -components satisfying the following constraints: - -\begin{itemize} - \item The width of the chip is 29 and the height is 22. - \item All power components have width 4 and height 2. - \item The sizes of the eight regular components are $9\times7$, - $12\times6,$ $10\times7,$ $18\times5,$ $20\times4,$ - $10\times6,$ $8\times6$ and $10\times8$ respectively. - \item All components may be turned 90, but may not overlap. - \item In order to get power, all regular components should directly be - connected to a power component, that is, an edge of the - component should have at least one point in common with an edge - of the power component. - \item Due to limits on heat production the power components should be - not too close: their centres should differ at least $17$ in - either the $x$ direction or the $y$ direction (or both). -\end{itemize} -} - -\newpage -\subsection{Formal definition} -For every component $c_{i}$ for $i\in PC\cup RC$ where $PC=\{1,\ldots,3\}$ and -$RC=\{4,\ldots,11\}$ we define a width, a height, an $x$ and a $y$ variables -$c_{i}w$, $c_{i}h$, $c_{i}x$ and $c_{i}y$. $c_ih$ does not necessarily have the -specified height of the components since the components may be rotated. For the -specified width and height we introduce the functions $h(c)$ and $w(c)$ that -return the specified width and height. - -This leads to the following formalization. - -\begin{align} - \bigwedge_{i\in PC\cup RC}\Biggl( - & (c_{i}h=h(i)\vee c_{i}h=w(i))\wedge(c_{i}w=w(i)\vee c_{i}w=h(i))\\ - & \wedge 29-c_{i}w\geq c_{i}x>0\wedge 22-c_{i}h\geq c_{i}y>0\\ - & \wedge \bigwedge_{j\in PC\cup RC}\Bigl(j\geq i\\ - \nonumber & \qquad\qquad\qquad \vee c_{i}x>c_{j}x+c_{j}w\\ - \nonumber & \qquad\qquad\qquad \vee c_{i}x+c_{j}wc_{j}y+c_{j}h\\ - \nonumber & \qquad\qquad\qquad - \vee c_{i}y+c_{j}h17\\ - \nonumber & \vee c_{j}x+\nicefrac{c_{j}w}{2}- - c_{i}x+\nicefrac{c_{i}w}{2}>17\\ - \nonumber & \vee c_{i}y+\nicefrac{c_{i}h}{2}- - c_{j}y+\nicefrac{c_{j}h}{2}>17\\ - \nonumber & \vee c_{j}y+\nicefrac{c_{j}h}{2}- - c_{i}y+\nicefrac{c_{i}h}{2}>17\Biggr)\wedge\\ - \bigwedge_{i\in RC}\bigvee_{j\in PC}\neg\Biggl( - & (c_{i}x-1>c_{j}x+c_{j}w\\ - \nonumber & \vee c_{i}x+1+c_{j}wc_{j}y+c_{j}h\\ - \nonumber & \vee c_{i}y+1+c_{j}h0\wedge j_{i}+ij_{k}+k\Biggr)\\ - & \wedge \bigwedge_{i\in J'}\bigwedge_{k\in J'} - i=j\vee j_{i}>j_{k}+k \vee j_{i}+i50$ and some other -$a_i= a_j\wedge i\neq j$ for all $i$. This is expressed in -Equation~\ref{eq:4pst} - -\begin{equation}\label{eq:4pst} - \bigvee_{k=2}^{I-1}\left( - (i_Na_k >= 50)\wedge - \left(\bigvee_{j=2}^{I-1}(i_Na_k=i_Na_j)\wedge(k\neq j)\right) - \right) -\end{equation} - -\paragraph{Total} -To tie this all together we just put $\wedge$ in between and that results in: -$$\text{precondition }\wedge\text{ program }\wedge\text{ postcondition}$$ - -\subsection{SMT format solution} -Naming the precondition, program and postcondition respectively $p_1, p_2, p_3$ -we can easily convert it to a SMT format. The converting is tedious and takes a -lot of time and therefore an automatization script has been created that is -visible in the appendices in Listing~\ref{listing:4.py}. The script -automatically assumes $11$ iterations and $7$ $a_i$ variables but via command -line arguments this is easily extendable. To determine the minimal number of -iterations a simple bash script can be made that iteratively increases the -iterations as shown in Listing~\ref{listing:4bash}. The shortest solution with -length $11$ is found in around $30$ seconds. Finding the smallest solution -length incrementally takes around $75$ seconds. - -\begin{lstlisting}[language=bash, - caption={Iteratively find the shortest solution},label={listing:4bash}] -i=1 -while [ "$(python a4.py $i | yices-smt)" = "unsat" ] -do - echo $((++i)); -done -\end{lstlisting} - -\subsection{Solution} -The iterative solution terminates with $i=11$ so the minimum number of steps -required is $11$. When we rerun the solution with $11$ steps and the -\texttt{-m} flag we can see the solution as in Table~\ref{tab:s4}. -The bold cells represent the $a_i$ after applying the function. After ten -iterations cell $a_2$ and $a_6$ both hold $54$ thus satisfying the problem -specification. -\begin{table}[H] - \begin{tabular}{c|c|ccccc} - \# & $i$ & $a_2$ & $a_3$ & $a_4$ & $a_5$ & $a_6$\\ - \hline - $0$ & - & $2$ & $3$ & $4$ & $5$ & $6$\\ - $1$ & $4$ & $2$ & $3$ & $\bm{8}$ & $5$ & $6$\\ - $2$ & $5$ & $2$ & $3$ & $8$ & $\bm{14}$ & $6$\\ - $3$ & $2$ & $\bm{4}$ & $3$ & $8$ & $14$ & $6$\\ - $4$ & $4$ & $4$ & $3$ & $\bm{17}$ & $14$ & $6$\\ - $5$ & $5$ & $4$ & $3$ & $17$ & $\bm{23}$ & $6$\\ - $6$ & $6$ & $4$ & $3$ & $17$ & $23$ & $\bm{30}$\\ - $7$ & $5$ & $4$ & $3$ & $17$ & $\bm{47}$ & $30$\\ - $8$ & $4$ & $4$ & $3$ & $\bm{50}$ & $47$ & $30$\\ - $9$ & $3$ & $4$ & $\bm{54}$ & $50$ & $47$ & $30$\\ - $10$ & $6$ & $4$ & $54$ & $50$ & $47$ & $\bm{54}$ - \end{tabular} -\caption{Solution table for problem 4} -\label{tab:s4} -\end{table} diff --git a/ar/assignments/Makefile b/ar/assignments/Makefile deleted file mode 100644 index 4cfb119..0000000 --- a/ar/assignments/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -LATEX:=pdflatex - -DOCUMENT:=ar -SOURCES:=$(filter-out preamble.tex,$(shell ls *.tex)) - -.SECONDARY: $(addsuffix .fmt,$(DOCUMENT)) - -all: $(DOCUMENT).pdf - -%.pdf: %.tex %.fmt $(SOURCES) - $(LATEX) $(basename $@) - $(LATEX) $(basename $@) - -%.fmt: preamble.tex - $(LATEX) -ini -jobname="$(basename $@)" "&$(LATEX) $<\dump" - -clean: - $(RM) -v $(addprefix $(DOCUMENT).,fmt aux bbl blg dvi log out toc pdf) diff --git a/ar/assignments/a.tex b/ar/assignments/a.tex deleted file mode 100644 index e0ac8a3..0000000 --- a/ar/assignments/a.tex +++ /dev/null @@ -1,22 +0,0 @@ -\section{Appendix} -\begin{lstlisting}[caption={Benchmark system}] -OS: Linux 3.16.0-4-amd64 #1 SMP Debian 3.16 x86_64 GNU/Linux -CPU: 3600MHz AMD FX(tm)-4100 Quad-Core Processor -RAM: 8GB -\end{lstlisting} - -\newpage -\lstinputlisting[language=lisp,caption={a1.smt}, - label={listing:a1.smt}]{src/a1.smt} - -\newpage -\lstinputlisting[language=python,caption={a2.py}, - label={listing:a2.py}]{src/a2.py} - -\newpage -\lstinputlisting[language=python,caption={a3.py}, - label={listing:a3.py}]{src/a3.py} - -\newpage -\lstinputlisting[language=python,caption={a4.py}, - label={listing:a4.py}]{src/a4.py} diff --git a/ar/assignments/ar.tex b/ar/assignments/ar.tex deleted file mode 100644 index 94e25f9..0000000 --- a/ar/assignments/ar.tex +++ /dev/null @@ -1,21 +0,0 @@ -%&ar -\begin{document} -\maketitle -\tableofcontents - -\newpage -\input{1.tex} - -\newpage -\input{2.tex} - -\newpage -\input{3.tex} - -\newpage -\input{4.tex} - -\newpage -\input{a.tex} - -\end{document} diff --git a/ar/assignments/preamble.tex b/ar/assignments/preamble.tex deleted file mode 100644 index a401ca6..0000000 --- a/ar/assignments/preamble.tex +++ /dev/null @@ -1,30 +0,0 @@ -\documentclass{article} - -\usepackage{hyperref} -\usepackage{a4wide} -\usepackage{bm} -\usepackage{float} -\usepackage{graphicx} -\usepackage{amsmath} -\usepackage{listings} -\usepackage{nicefrac} - -\everymath{\displaystyle\allowdisplaybreaks} - -\lstset{% - basicstyle=\scriptsize, - breakatwhitespace=true, - breaklines=true, - keepspaces=true, - numbers=left, - numberstyle=\tiny, - frame=L, - showspaces=false, - showstringspaces=false, - showtabs=false, - tabsize=2 -} - -\author{Mart Lubbers (s4109503)} -\title{Automated reasoning Assignment 1} -\date{\today} diff --git a/ar/assignments/prnijm.pdf b/ar/assignments/prnijm.pdf deleted file mode 100644 index a65fb82..0000000 Binary files a/ar/assignments/prnijm.pdf and /dev/null differ diff --git a/ar/assignments/s2.png b/ar/assignments/s2.png deleted file mode 100644 index 2876b39..0000000 Binary files a/ar/assignments/s2.png and /dev/null differ diff --git a/ar/assignments/s3.png b/ar/assignments/s3.png deleted file mode 100644 index 46e9e75..0000000 Binary files a/ar/assignments/s3.png and /dev/null differ diff --git a/ar/assignments/src/a1.bash b/ar/assignments/src/a1.bash deleted file mode 100644 index 847616c..0000000 --- a/ar/assignments/src/a1.bash +++ /dev/null @@ -1,5 +0,0 @@ -i=1 -while [ $(sed "s//$i/g" a1.smt | yices-smt) = "sat" ]; do - i=$((i+1)) -done -sed "s//$((i-1))/g" a1.smt | yices-smt -m diff --git a/ar/assignments/src/a1.smt b/ar/assignments/src/a1.smt deleted file mode 100644 index cf5342e..0000000 --- a/ar/assignments/src/a1.smt +++ /dev/null @@ -1,60 +0,0 @@ -(benchmark a1.smt -:logic QF_UFLIA -:extrafuns ( - (t1p Int) (t1n Int) (t1s Int) (t1c Int) (t1d Int) - (t2p Int) (t2n Int) (t2s Int) (t2c Int) (t2d Int) - (t3p Int) (t3n Int) (t3s Int) (t3c Int) (t3d Int) - (t4p Int) (t4n Int) (t4s Int) (t4c Int) (t4d Int) - (t5p Int) (t5n Int) (t5s Int) (t5c Int) (t5d Int) - (t6p Int) (t6n Int) (t6s Int) (t6c Int) (t6d Int) -) -:formula -(and - (>= t1p 0) (>= t1n 0) (>= t1s 0) (>= t1c 0) (>= t1d 0) - (>= t2p 0) (>= t2n 0) (>= t2s 0) (>= t2c 0) (>= t2d 0) - (>= t3p 0) (>= t3n 0) (>= t3s 0) (>= t3c 0) (>= t3d 0) - (>= t4p 0) (>= t4n 0) (>= t4s 0) (>= t4c 0) (>= t4d 0) - (>= t5p 0) (>= t5n 0) (>= t5s 0) (>= t5c 0) (>= t5d 0) - (>= t6p 0) (>= t6n 0) (>= t6s 0) (>= t6c 0) (>= t6d 0) - - (<= (+ t1p t1n t1s t1c t1d) 8) - (<= (+ t2p t2n t2s t2c t2d) 8) - (<= (+ t3p t3n t3s t3c t3d) 8) - (<= (+ t4p t4n t4s t4c t4d) 8) - (<= (+ t5p t5n t5s t5c t5d) 8) - (<= (+ t6p t6n t6s t6c t6d) 8) - - (<= (+ (* t1n 700) (* t1p 800) (* t1s 1000) (* t1c 1500) (* t1d 100)) 7800) - (<= (+ (* t2n 700) (* t2p 800) (* t2s 1000) (* t2c 1500) (* t2d 100)) 7800) - (<= (+ (* t3n 700) (* t3p 800) (* t3s 1000) (* t3c 1500) (* t3d 100)) 7800) - (<= (+ (* t4n 700) (* t4p 800) (* t4s 1000) (* t4c 1500) (* t4d 100)) 7800) - (<= (+ (* t5n 700) (* t5p 800) (* t5s 1000) (* t5c 1500) (* t5d 100)) 7800) - (<= (+ (* t6n 700) (* t6p 800) (* t6s 1000) (* t6c 1600) (* t6d 100)) 7800) - - (or (= 0 t1p) (= 0 t1c)) - (or (= 0 t2p) (= 0 t2c)) - (or (= 0 t3p) (= 0 t3c)) - (or (= 0 t4p) (= 0 t4c)) - (or (= 0 t5p) (= 0 t5c)) - (or (= 0 t6p) (= 0 t6c)) - - (<= t1d 1) - (<= t2d 1) - (<= t3d 1) - (<= t4d 1) - (<= t5d 1) - (<= t6d 1) - - (= t3s 0) - (= t4s 0) - (= t5s 0) - (= t6s 0) - - (= (+ t1n t2n t3n t4n t5n t6n) 4) - (= (+ t1s t2s t3s t4s t5s t6s) 8) - (= (+ t1c t2c t3c t4c t5c t6c) 10) - (= (+ t1d t2d t3d t4d t5d t6d) 5) - - (>= (+ t1p t2p t3p t4p t5p t6p) ) -) -) diff --git a/ar/assignments/src/a2.bash b/ar/assignments/src/a2.bash deleted file mode 100644 index 5462573..0000000 --- a/ar/assignments/src/a2.bash +++ /dev/null @@ -1 +0,0 @@ -python3 a2.py | yices-smt -m diff --git a/ar/assignments/src/a2.py b/ar/assignments/src/a2.py deleted file mode 100644 index e5852e6..0000000 --- a/ar/assignments/src/a2.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python3 -pc = [(4, 2), (4, 2), (4, 2)] -rc = [(9, 7), (12, 6), (10, 7), (18, 5), (20, 4), (10, 6), (8, 6), (10, 8)] -mx = 29 -my = 22 -pd = 17 - -# Print preamble -print("(benchmark a4.smt") -print(":logic QF_UFLIA") - -# Print variables -print(":extrafuns (") -for i, (w, h) in enumerate(pc+rc, 1): - print("(c{:02d}x Int)".format(i), end=' ') - print("(c{:02d}y Int)".format(i), end=' ') - print("(c{:02d}w Int)".format(i), end=' ') - print("(c{:02d}h Int)".format(i)) -print(")") - -print(":formula") -print("(and") - -# Print the PC and RC subformulas -for i, (w, h) in enumerate(pc+rc, 1): - # Print the width and height - print(( - '(or ' - '(and (= c{0:02d}w {1}) (= c{0:02d}h {2})) ' - '(and (= c{0:02d}w {2}) (= c{0:02d}h {1})))').format(i, w-1, h-1)) - - # Print the bounds of the coordinates - print(( - '(> c{0:02d}x 0) (> c{0:02d}y 0)' - '(<= (+ c{0:02d}x c{0:02d}w) {1}) (<= (+ c{0:02d}y c{0:02d}h) {2})' - ).format(i, mx, my)) - - # Print the non overlap with others - for j in range(1, 1+len(pc+rc)): - if i != j: - print(( - '(or ' - '(> c{0:02d}x (+ c{1:02d}x c{1:02d}w)) (< (+ c{0:02d}x c{0:02d}w) c{1:02d}x) ' - '(> c{0:02d}y (+ c{1:02d}y c{1:02d}h)) (< (+ c{0:02d}y c{0:02d}h) c{1:02d}y)' - ')').format(i, j)) - - # Print the PC distance to eachother -for i, _ in enumerate(pc, 1): - for j, _ in enumerate(pc, 1): - if i != j: - print(( - '(or ' - '(> (- (+ c{0:02d}x (/ c{0:02d}w 2) ) (+ c{1:02d}x (/ c{1:02d}w 2) ) ) {2} ) ' - '(> (- (+ c{1:02d}x (/ c{1:02d}w 2)) (+ c{0:02d}x (/ c{0:02d}w 2))) {2}) ' - '(> (- (+ c{0:02d}y (/ c{0:02d}h 2)) (+ c{1:02d}y (/ c{1:02d}h 2))) {2}) ' - '(> (- (+ c{1:02d}y (/ c{1:02d}h 2)) (+ c{0:02d}y (/ c{0:02d}h 2))) {2})' - ')').format(i, j, pd)) - - # Print the constraint that they have to be connected to a ps -for i, _ in enumerate(rc, 1+len(pc)): - print('(or') - for j, _ in enumerate(pc, 1): - print(( - '(not (or ' - '(> c{0:02d}x (+ c{1:02d}x 1 c{1:02d}w)) (< (+ c{0:02d}x c{0:02d}w) (- c{1:02d}x 1)) ' - '(> c{0:02d}y (+ c{1:02d}y 1 c{1:02d}h)) (< (+ c{0:02d}y c{0:02d}h) (- c{1:02d}y 1))' - '))').format(i, j)) - print(')') - -# Close the and,benchmark parenthesis -print("))") diff --git a/ar/assignments/src/a3.bash b/ar/assignments/src/a3.bash deleted file mode 100644 index 115f1fd..0000000 --- a/ar/assignments/src/a3.bash +++ /dev/null @@ -1,5 +0,0 @@ -i=1 -while [ $(python3 a3.py $i | yices-smt) = "unsat" ]; do - i=$((i+1)) -done -python3 a3.py $i | yices-smt -m diff --git a/ar/assignments/src/a3.py b/ar/assignments/src/a3.py deleted file mode 100644 index a295c8d..0000000 --- a/ar/assignments/src/a3.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 -import sys - -if len(sys.argv) != 2: - print("usage: {} maxjobstart".format(sys.argv[0])) - exit() - -maxjobstart = sys.argv[1] -jobs = 12 -J = range(1, jobs+1) -Jprime = {5, 7, 10} -pi = { - 3: {1,2}, - 5: {3,4}, - 7: {3,4,6}, - 9: {5,8}, - 11: {10}, - 12: {9,11} -} - -# Print preamble -print("(benchmark a4.smt") -print(":logic QF_UFLIA") - -# Print variables -print(":extrafuns (") -for i in J: - print("(j{} Int)".format(i), end=' ') -print("\n)") - -print(":formula") -print("(and") -for i in J: - # Make sure the times are positive and within the bound - print("(> j{0} 0) (<= (+ j{0} {0}) {1})".format(i, maxjobstart)) - # Make sure the dependencies are done when a task is scheduled - for k in pi.get(i, {}): - print("(>= j{0} (+ j{1} {1}))".format(i, k)) -# Make sure the shared resources are not used by two tasks at once -for i in Jprime: - for k in Jprime: - if i != k: - print("(or (>= j{0} (+ j{1} {1}))".format(i,k), end=' ') - print("(<= (+ j{0} {0}) j{1}))".format(i,k)) - -# Close the and,benchmark parenthesis -print("))") diff --git a/ar/assignments/src/a4.bash b/ar/assignments/src/a4.bash deleted file mode 100644 index 569e152..0000000 --- a/ar/assignments/src/a4.bash +++ /dev/null @@ -1,5 +0,0 @@ -i=1 -while [ $(python3 a4.py $i | yices-smt) = "unsat" ]; do - i=$((i+1)) -done -python3 a3.py $i | yices-smt -m diff --git a/ar/assignments/src/a4.py b/ar/assignments/src/a4.py deleted file mode 100644 index 51d5347..0000000 --- a/ar/assignments/src/a4.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python3 -import sys -iterations = int(sys.argv[1]) if len(sys.argv) > 1 else 11 -numa = int(sys.argv[2]) if len(sys.argv) > 2 else 7 - -##Print preamble -print("(benchmark a4.smt") -print(":logic QF_UFLIA") - -##Print variables -print(":extrafuns (") -print("(a{} Int)".format(1)) -print("(a{} Int)".format(numa)) -for i in range(iterations): - for v in range(2,numa): - print("(i{}a{} Int) ".format(i,v)) - print("(c{} Int)".format(i)) -print(")") - -##Print preconditions -print(":formula") -print("(and") -print("(= c0 0)") -print("(= a1 1)") -print("(= a{0} {0})".format(numa, numa)) -for i in range(2,numa): - print("(= i0a{0} {0})".format(i)) - -##Print iterations -for i in range(1, iterations): - print("(or") - for v in range(2, numa): - print("(and") - print("(= c{} {})".format(i, v)) - for ov in [k for k in range(2, numa) if k != v]: - print("(= i{0}a{1} i{2}a{1})".format(i, ov, i-1)) - im1 = 'a1' if v == 2 else 'i{}a{}'.format(i, v-1) - ip1 = 'a{}'.format(numa) if v == numa-1 else 'i{}a{}'.format(i-1, v+1) - print("(= i{}a{} (+ {} {}))".format(i, v, im1, ip1)) - print(")") - print("(and") - print("(= c{} 0)".format(i)) - for ov in range(2, numa): - print("(= i{0}a{1} i{2}a{1})".format(i, ov, i-1)) - print(")") - print(")") - - -## Post conditions -print("(or") -for v in range(2, numa): - print("(and (>= i{}a{} 50)".format(iterations-1, v)) - print("(or") - for ov in [k for k in range(2, numa) if k != v]: - print("(= i{0}a{1} i{0}a{2})".format(iterations-1, v, ov)) - print("))") -print(")") - -## Close the and,benchmark parenthesis -print("))")