From a85bb57d9a4c19d7c6a69f2947e327879f498bd8 Mon Sep 17 00:00:00 2001 From: JOLIMAITRE Matthieu Date: Sun, 10 Mar 2024 21:33:20 +0100 Subject: [PATCH] surete tp1 --- surete/tp1/Exercice2.pdf | Bin 0 -> 18091 bytes surete/tp1/sequential/Makefile | 22 ++++++++++++++++ surete/tp1/sequential/always.ec | 13 +++++++++ surete/tp1/sequential/bounds.ec | 17 ++++++++++++ surete/tp1/sequential/count_succ_true.ec | 15 +++++++++++ surete/tp1/sequential/count_true.ec | 13 +++++++++ surete/tp1/sequential/sequential.lus | 32 +++++++++++++++++++++++ surete/tp1/temp_prop/after.ec | 13 +++++++++ surete/tp1/temp_prop/always_since.ec | 14 ++++++++++ surete/tp1/temp_prop/build.sh | 15 +++++++++++ surete/tp1/temp_prop/nodes.lus | 30 +++++++++++++++++++++ surete/tp1/temp_prop/once_since.ec | 15 +++++++++++ 12 files changed, 199 insertions(+) create mode 100644 surete/tp1/Exercice2.pdf create mode 100644 surete/tp1/sequential/Makefile create mode 100644 surete/tp1/sequential/always.ec create mode 100644 surete/tp1/sequential/bounds.ec create mode 100644 surete/tp1/sequential/count_succ_true.ec create mode 100644 surete/tp1/sequential/count_true.ec create mode 100644 surete/tp1/sequential/sequential.lus create mode 100644 surete/tp1/temp_prop/after.ec create mode 100644 surete/tp1/temp_prop/always_since.ec create mode 100755 surete/tp1/temp_prop/build.sh create mode 100644 surete/tp1/temp_prop/nodes.lus create mode 100644 surete/tp1/temp_prop/once_since.ec diff --git a/surete/tp1/Exercice2.pdf b/surete/tp1/Exercice2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2877de8c07ccad294b096f5dcdd83befa5c5c185 GIT binary patch literal 18091 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

i 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 (pre o)); +tel + diff --git a/surete/tp1/sequential/bounds.ec b/surete/tp1/sequential/bounds.ec new file mode 100644 index 0000000..e68edf0 --- /dev/null +++ b/surete/tp1/sequential/bounds.ec @@ -0,0 +1,17 @@ +node bounds + (i: int) +returns + (min: int; + max: int); + +var + V18_prev_min: int; + V19_prev_max: int; + +let + min = (if (i < V18_prev_min) then i else V18_prev_min); + max = (if (i > V19_prev_max) then i else V19_prev_max); + V18_prev_min = (i -> (pre min)); + V19_prev_max = (i -> (pre max)); +tel + diff --git a/surete/tp1/sequential/count_succ_true.ec b/surete/tp1/sequential/count_succ_true.ec new file mode 100644 index 0000000..6508862 --- /dev/null +++ b/surete/tp1/sequential/count_succ_true.ec @@ -0,0 +1,15 @@ +node count_succ_true + (i: bool) +returns + (o: int); + +var + V12_prev_i: bool; + V13_prev_o: int; + +let + o = (if (i and V12_prev_i) then (V13_prev_o + 1) else V13_prev_o); + V12_prev_i = (false -> (pre i)); + V13_prev_o = (0 -> (pre o)); +tel + diff --git a/surete/tp1/sequential/count_true.ec b/surete/tp1/sequential/count_true.ec new file mode 100644 index 0000000..7b7f437 --- /dev/null +++ b/surete/tp1/sequential/count_true.ec @@ -0,0 +1,13 @@ +node count_true + (i: bool) +returns + (o: int); + +var + V8_prev: int; + +let + o = (if i then (V8_prev + 1) else V8_prev); + V8_prev = (0 -> (pre o)); +tel + diff --git a/surete/tp1/sequential/sequential.lus b/surete/tp1/sequential/sequential.lus new file mode 100644 index 0000000..d59a996 --- /dev/null +++ b/surete/tp1/sequential/sequential.lus @@ -0,0 +1,32 @@ +node always(i : bool) returns (o : bool); +var prev : bool; +let + prev = true -> pre o; + o = if i then prev else false; +tel + +node count_true(i : bool) returns (o : int); +var prev : int; +let + prev = 0 -> pre o; + o = if i then prev + 1 else prev; +tel + +node count_succ_true(i : bool) returns (o : int); +var + prev_i : bool; + prev_o : int; +let + prev_i = false -> pre i; + prev_o = 0 -> pre o; + o = if i and prev_i then prev_o + 1 else prev_o; +tel + +node bounds(i : int) returns (min, max : int); +var prev_min, prev_max : int; +let + prev_min = i -> pre min; + prev_max = i -> pre max; + min = if (i < prev_min) then i else prev_min; + max = if (i > prev_max) then i else prev_max; +tel diff --git a/surete/tp1/temp_prop/after.ec b/surete/tp1/temp_prop/after.ec new file mode 100644 index 0000000..bfb2cc1 --- /dev/null +++ b/surete/tp1/temp_prop/after.ec @@ -0,0 +1,13 @@ +node after + (a: bool) +returns + (o: bool); + +var + V4_prev_o: bool; + +let + o = (V4_prev_o or a); + V4_prev_o = (false -> (pre o)); +tel + diff --git a/surete/tp1/temp_prop/always_since.ec b/surete/tp1/temp_prop/always_since.ec new file mode 100644 index 0000000..ca4f6de --- /dev/null +++ b/surete/tp1/temp_prop/always_since.ec @@ -0,0 +1,14 @@ +node always_since + (a: bool; + b: bool) +returns + (o: bool); + +var + V9_prev_o: bool; + +let + o = (if b then a else (V9_prev_o and a)); + V9_prev_o = (false -> (pre o)); +tel + diff --git a/surete/tp1/temp_prop/build.sh b/surete/tp1/temp_prop/build.sh new file mode 100755 index 0000000..e089fea --- /dev/null +++ b/surete/tp1/temp_prop/build.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e +cd "$(dirname "$(realpath "$0")")" + + +if [ $# -lt 1 ] +then echo "Usage: ./build.sh " && exit 1 +fi + + +node="$1" +src=./nodes.lus + + +luciole $src "$node" diff --git a/surete/tp1/temp_prop/nodes.lus b/surete/tp1/temp_prop/nodes.lus new file mode 100644 index 0000000..01247a3 --- /dev/null +++ b/surete/tp1/temp_prop/nodes.lus @@ -0,0 +1,30 @@ + +node after (a: bool) returns (o: bool); +var prev_o: bool; +let + prev_o = false -> pre o; + o = prev_o or a; +tel; + +node always_since (a: bool; b: bool) returns (o: bool); +var prev_o: bool; +let + prev_o = false -> pre o; + o = if b then a else prev_o and a; +tel; + +node once_since(a: bool; reset: bool) returns (o: bool); +var a_happened: bool; +let + a_happened = a -> if reset then false else (pre a_happened or a); + o = (a and not reset) -> a_happened; +tel; + +node always_from_to(b: bool; reset: bool; c: bool) returns (x: bool); +var + c_happened: bool; + prev_b: bool; +let + c_happened = c -> if reset then false else (c or pre c_happened);* + prev_b = b -> if reset then true else (b and prev_b); +tel; diff --git a/surete/tp1/temp_prop/once_since.ec b/surete/tp1/temp_prop/once_since.ec new file mode 100644 index 0000000..a66656e --- /dev/null +++ b/surete/tp1/temp_prop/once_since.ec @@ -0,0 +1,15 @@ +node once_since + (a: bool; + reset: bool) +returns + (o: bool); + +var + V14_a_happened: bool; + +let + o = ((a and (not reset)) -> V14_a_happened); + V14_a_happened = (a -> (if reset then false else ((pre V14_a_happened) or a)) + ); +tel +