diff --git a/examples/regexp/Melichar2-94.i0.xml b/examples/regexp/Melichar2-94.i0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b49842f5a42deab8c73e499c230118d75fdbb85
--- /dev/null
+++ b/examples/regexp/Melichar2-94.i0.xml
@@ -0,0 +1,12 @@
+<regexp>
+	<concatenation>
+		<symbol>0</symbol>
+		<iteration>
+			<alternation>
+				<symbol>0</symbol>
+				<symbol>1</symbol>
+			</alternation>
+		</iteration>
+		<symbol>1</symbol>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/Melichar2-94.i1.xml b/examples/regexp/Melichar2-94.i1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5157b30dbb094a3a08976754480dd0c78ee0da0e
--- /dev/null
+++ b/examples/regexp/Melichar2-94.i1.xml
@@ -0,0 +1,12 @@
+<regexp>
+	<concatenation>
+		<symbol>1</symbol>
+		<iteration>
+			<alternation>
+				<symbol>0</symbol>
+				<symbol>1</symbol>
+			</alternation>
+		</iteration>
+		<symbol>1</symbol>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/Melichar2-94.xml b/examples/regexp/Melichar2-94.xml
new file mode 100644
index 0000000000000000000000000000000000000000..040b76e66d8b0816885e815a23a1823e58de5717
--- /dev/null
+++ b/examples/regexp/Melichar2-94.xml
@@ -0,0 +1,11 @@
+<regexp>
+	<concatenation>
+		<iteration>
+			<alternation>
+				<symbol>0</symbol>
+				<symbol>1</symbol>
+			</alternation>
+		</iteration>
+		<symbol>1</symbol>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/oppa-4-13.d0.xml b/examples/regexp/oppa-4-13.d0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b620f56281a379d4ad30da847eea20652b3eee4
--- /dev/null
+++ b/examples/regexp/oppa-4-13.d0.xml
@@ -0,0 +1,15 @@
+<regexp>
+	<alternation>
+		<concatenation>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+		</concatenation>
+		<concatenation>
+			<iteration>
+				<symbol>0</symbol>
+			</iteration>
+			<symbol>1</symbol>
+		</concatenation>
+		<epsilon></epsilon>
+	</alternation>
+</regexp>
diff --git a/examples/regexp/oppa-4-13.d00.xml b/examples/regexp/oppa-4-13.d00.xml
new file mode 100644
index 0000000000000000000000000000000000000000..18e9b91b6ec39acc7cf9a13d50ca2ddafb2ae4da
--- /dev/null
+++ b/examples/regexp/oppa-4-13.d00.xml
@@ -0,0 +1,8 @@
+<regexp>
+	<concatenation>
+		<iteration>
+			<symbol>0</symbol>
+		</iteration>
+		<symbol>1</symbol>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/oppa-4-14.d1.xml b/examples/regexp/oppa-4-14.d1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae5c5c2d3446b17100fd797d61230b1faab41fe6
--- /dev/null
+++ b/examples/regexp/oppa-4-14.d1.xml
@@ -0,0 +1,24 @@
+<regexp>
+	<concatenation>
+		<iteration>
+			<symbol>0</symbol>
+		</iteration>
+		<iteration>
+			<alternation>
+				<concatenation>
+					<symbol>0</symbol>
+					<iteration>
+						<symbol>1</symbol>
+					</iteration>
+					<symbol>0</symbol>
+				</concatenation>
+				<concatenation>
+					<symbol>1</symbol>
+					<iteration>
+						<symbol>0</symbol>
+					</iteration>
+				</concatenation>
+			</alternation>
+		</iteration>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/oppa-4-14.d10.xml b/examples/regexp/oppa-4-14.d10.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5632a3f9f7d87a4d0adf2cfddb779e6ee3049c66
--- /dev/null
+++ b/examples/regexp/oppa-4-14.d10.xml
@@ -0,0 +1,32 @@
+<regexp>
+	<concatenation>
+		<alternation>
+			<iteration>
+				<symbol>0</symbol>
+			</iteration>
+			<concatenation>
+				<iteration>
+					<symbol>1</symbol>
+				</iteration>
+				<symbol>0</symbol>
+			</concatenation>
+		</alternation>
+		<iteration>
+			<alternation>
+				<concatenation>
+					<symbol>0</symbol>
+					<iteration>
+						<symbol>1</symbol>
+					</iteration>
+					<symbol>0</symbol>
+				</concatenation>
+				<concatenation>
+					<symbol>1</symbol>
+					<iteration>
+						<symbol>0</symbol>
+					</iteration>
+				</concatenation>
+			</alternation>
+		</iteration>
+	</concatenation>
+</regexp>
diff --git a/examples/regexp/oppa-4-15.d100.xml b/examples/regexp/oppa-4-15.d100.xml
new file mode 100644
index 0000000000000000000000000000000000000000..943d2fae462d5e66129e9d561f2f9ed50cfdf6a1
--- /dev/null
+++ b/examples/regexp/oppa-4-15.d100.xml
@@ -0,0 +1,14 @@
+<regexp>
+	<alternation>
+		<concatenation>
+			<iteration>
+				<symbol>0</symbol>
+			</iteration>
+			<iteration>
+				<symbol>1</symbol>
+			</iteration>
+			<symbol>0</symbol>
+		</concatenation>
+		<epsilon></epsilon>
+	</alternation>
+</regexp>
diff --git a/examples/regexp/oppa-4-16.i1.xml b/examples/regexp/oppa-4-16.i1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b841de38596845b8874a6b44b27d9cf089c0286
--- /dev/null
+++ b/examples/regexp/oppa-4-16.i1.xml
@@ -0,0 +1,16 @@
+<regexp>
+	<alternation>
+		<concatenation>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+		</concatenation>
+		<concatenation>
+			<symbol>1</symbol>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+			<symbol>1</symbol>
+		</concatenation>
+	</alternation>
+</regexp>
diff --git a/examples/regexp/oppa-4-16.xml b/examples/regexp/oppa-4-16.xml
new file mode 100644
index 0000000000000000000000000000000000000000..968da499b3fe5cae6f7c3b0200c4ed5ef5025973
--- /dev/null
+++ b/examples/regexp/oppa-4-16.xml
@@ -0,0 +1,14 @@
+<regexp>
+	<alternation>
+		<concatenation>
+			<symbol>0</symbol>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+		</concatenation>
+		<concatenation>
+			<symbol>1</symbol>
+			<symbol>0</symbol>
+			<symbol>1</symbol>
+		</concatenation>
+	</alternation>
+</regexp>
diff --git a/tests.aderivation.aintegral.sh b/tests.aderivation.aintegral.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9b25a30dfd7a77041ef1b914fb80cb91423dc816
--- /dev/null
+++ b/tests.aderivation.aintegral.sh
@@ -0,0 +1,96 @@
+#!/usr/bin/env bash
+
+set -o pipefail
+
+EXECUTABLES="aepsilon atrim adeterminize aminimize anormalize adiff.automaton aderivation aintegral"
+TESTS_DIR="../examples/regexp"
+
+# ----------------------------
+
+for FILE in $EXECUTABLES; do
+	if [ ! -f bin/$FILE ]; then
+		echo "Executable" $FILE "is required for testing. Make sure it is in bin folder."
+		exit 1
+	fi
+done
+
+cd bin/
+
+# ----------------------------
+
+function regexpToMDFA {
+	echo "$1" | ./aconversion -t FSM | ./aepsilon | ./atrim | ./adeterminize -t FSM | ./aminimize | ./anormalize
+}
+
+function compareRegexp {
+    regexpToMDFA "$1" > tmp1.xml
+    regexpToMDFA "$2" > tmp2.xml
+
+	# relies on ret code by adiff.automaton
+	./adiff.automaton tmp1.xml tmp2.xml > /dev/null
+	RET=$?
+	rm tmp1.xml tmp2.xml
+
+	return $RET
+}
+
+
+# $1 - input regexp
+# $2 - output regexp
+function runTest {
+    compareRegexp "$1" "$2"
+
+	TEST_EXITVALUE=$?
+
+	if [ $TEST_EXITVALUE == 0 ]; then
+		echo -n "."
+	elif [ $TEST_EXITVALUE == 1 ]; then
+		echo -n "x"
+	elif [ $TEST_EXITVALUE == 2 ]; then
+		echo -n "T"
+	elif [ $TEST_EXITVALUE == 3 ]; then
+		echo -n "F"
+	else
+		echo -n "?"
+	fi
+
+}
+
+function runTestD {
+    FILE_REGEXP_ORIG=$(echo "$1")
+    FILE_REGEXP_RESULT=$(echo "$2")
+    shift 2
+
+    REGEXP_DERIVATIVE=$(cat $TESTS_DIR/$FILE_REGEXP_ORIG | ./aderivation $@) 
+    REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
+    runTest "$REGEXP_DERIVATIVE" "$REGEXP_RESULT"
+}
+
+function runTestI {
+    FILE_REGEXP_ORIG=$(echo "$1")
+    FILE_REGEXP_RESULT=$(echo "$2")
+    shift 2
+
+    REGEXP_INTEGRAL=$(cat $TESTS_DIR/$FILE_REGEXP_ORIG | ./aintegral $@) 
+    REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
+
+    runTest "$REGEXP_INTEGRAL" "$REGEXP_RESULT"
+}
+
+
+# derivatives
+echo "Derivatives"
+runTestD "oppa-4-13.xml" "oppa-4-13.d0.xml" "0"
+runTestD "oppa-4-13.xml" "oppa-4-13.d00.xml" "0" "0"
+runTestD "oppa-4-14.xml" "oppa-4-14.d1.xml" "1"
+runTestD "oppa-4-14.xml" "oppa-4-14.d10.xml" "1" "0"
+runTestD "oppa-4-15.xml" "oppa-4-15.d100.xml" "1" "0" "0"
+
+# integrals 
+echo ""
+echo "Integrals"
+runTestI "oppa-4-16.xml" "oppa-4-16.i1.xml" "1"
+runTestI "Melichar2-94.xml" "Melichar2-94.i0.xml" "0"
+runTestI "Melichar2-94.xml" "Melichar2-94.i1.xml" "1"
+
+echo ""