From b4e4172fd48edbfc831867d397846157f45a8575 Mon Sep 17 00:00:00 2001
From: Michele Alberti <michele.alberti@cea.fr>
Date: Wed, 25 Oct 2023 12:05:34 +0200
Subject: [PATCH] [tests] Add test case for the new option --goal.

---
 tests/goal.t | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)
 create mode 100644 tests/goal.t

diff --git a/tests/goal.t b/tests/goal.t
new file mode 100644
index 0000000..dffe781
--- /dev/null
+++ b/tests/goal.t
@@ -0,0 +1,85 @@
+Test verify
+  $ . ./setup_env.sh
+
+  $ bin/Marabou --version
+  1.0.+
+
+  $ cat > file.mlw <<EOF
+  > theory T1
+  >   use ieee_float.Float64
+  >   use bool.Bool
+  >   use int.Int
+  >   use interpretation.Vector
+  >   use interpretation.NeuralNetwork
+  > 
+  >   constant nn: nn = read_neural_network "TestNetwork.nnet" NNet
+  > 
+  >   goal G1:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) ->
+  >       (0.0:t) .< (nn@@i)[0] .< (0.5:t)
+  > 
+  >   goal H1:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       ((0.0:t) .< (nn@@i)[0] \/ (0.5:t) .< (nn@@i)[0]) /\ (0.0:t) .< (nn@@i)[1] .< (0.5:t)
+  > 
+  >   goal I1:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       (nn@@i)[1] .< (nn@@i)[0] \/ (nn@@i)[0] .< (nn@@i)[1]
+  > 
+  >   goal J1:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       ((0.0:t) .<= i[0] .<= (0.5:t) \/ (0.75:t) .<= i[0] .<= (1.0:t)) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       (nn@@i)[1] .< (nn@@i)[0] \/ (nn@@i)[0] .< (nn@@i)[1]
+  > end
+  > theory T2
+  >   use ieee_float.Float64
+  >   use bool.Bool
+  >   use int.Int
+  >   use interpretation.Vector
+  >   use interpretation.NeuralNetwork
+  > 
+  >   constant nn: nn = read_neural_network "TestNetwork.nnet" NNet
+  > 
+  >   goal G2:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) ->
+  >       (0.0:t) .< (nn@@i)[0] .< (0.5:t)
+  > 
+  >   goal H2:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       ((0.0:t) .< (nn@@i)[0] \/ (0.5:t) .< (nn@@i)[0]) /\ (0.0:t) .< (nn@@i)[1] .< (0.5:t)
+  > 
+  >   goal I2:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       (0.0:t) .<= i[0] .<= (0.5:t) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       (nn@@i)[1] .< (nn@@i)[0] \/ (nn@@i)[0] .< (nn@@i)[1]
+  > 
+  >   goal J2:
+  >     forall i: vector t.
+  >       has_length i 5 ->
+  >       ((0.0:t) .<= i[0] .<= (0.5:t) \/ (0.75:t) .<= i[0] .<= (1.0:t)) /\ (0.5:t) .<= i[1] .<= (1.0:t) ->
+  >       (nn@@i)[1] .< (nn@@i)[0] \/ (nn@@i)[0] .< (nn@@i)[1]
+  > end
+  > EOF
+
+  $ caisar verify --prover=Marabou -g T1:G1 file.mlw 2>&1 | ./filter_tmpdir.sh
+  Goal G1: Unknown ()
+  Goal G2: Unknown ()
+  Goal H2: Unknown ()
+  Goal I2: Unknown ()
+  Goal J2: Unknown ()
+
+  $ caisar verify --prover=Marabou -g T1: -g T2:H2,J2 file.mlw 2>&1 | ./filter_tmpdir.sh
+  Goal H2: Unknown ()
+  Goal J2: Unknown ()
-- 
GitLab