diff --git a/examples/mnist/mnist.why b/examples/mnist/mnist.why
new file mode 100644
index 0000000000000000000000000000000000000000..bb17f9a2124636eb21c2d34fb15577a919d113e4
--- /dev/null
+++ b/examples/mnist/mnist.why
@@ -0,0 +1,19 @@
+theory MNIST
+  use ieee_float.Float64
+  use int.Int
+  use nn.NeuralNetwork
+  use dataset.DatasetCSV
+  use robust.RobustDatasetCSV
+
+  constant min_label : label_ = 0
+  constant max_label : label_ = 9
+
+  predicate valid_label (l: label_) =
+    RobustDatasetCSV.valid_label min_label max_label l
+
+  goal robustness:
+    let nn = read_neural_network "nets/MNIST_256_2.onnx" ONNX in
+    let dataset = read_dataset_csv "csv/mnist_test.csv" in
+    let eps = (0.0100000000000000002081668171172168513294309377670288085937500000:t) in
+    robust valid_label nn dataset eps
+end
diff --git a/examples/mnist/property.why b/examples/mnist/property.why
deleted file mode 100644
index da1190ca4d67dd97e170b17140e7810df7840bfc..0000000000000000000000000000000000000000
--- a/examples/mnist/property.why
+++ /dev/null
@@ -1,39 +0,0 @@
-theory MNIST
-  use ieee_float.Float64
-  use int.Int
-  use interpretation.Vector
-  use interpretation.NeuralNetwork
-  use interpretation.Dataset
-
-  type image = vector t
-  type label_ = int
-
-  predicate valid_image (i: image) =
-    forall v: index. valid_index i v -> (0.0: t) .<= i[v] .<= (1.0: t)
-
-  predicate valid_label (l: label_) = 0 <= l <= 9
-
-  predicate advises (n: nn) (i: image) (l: label_) =
-    valid_label l ->
-    forall j: int. valid_label j ->  j <> l -> (n@@i)[l] .> (n@@i)[j]
-
-  predicate bounded_by_epsilon (i: image) (eps: t) =
-    forall v: index. valid_index i v -> .- eps .<= i[v] .<= eps
-
-  predicate robust_around (n: nn) (eps: t) (l: label_) (i: image) =
-    forall perturbed_image: image.
-      has_length perturbed_image (length i) ->
-      valid_image perturbed_image ->
-      let perturbation = perturbed_image - i in
-      bounded_by_epsilon perturbation eps ->
-      advises n perturbed_image l
-
-  predicate robust (n: nn) (d: dataset label_ image) (eps: t) =
-    Dataset.forall_ d (robust_around n eps)
-
-  goal robustness:
-    let nn = read_neural_network "nets/MNIST_256_2.onnx" ONNX in
-    let dataset = read_dataset "csv/mnist_test.csv" CSV in
-    let eps = (0.0100000000000000002081668171172168513294309377670288085937500000:t) in
-    robust nn dataset eps
-end