From 17af27949af34db7145f5ecd885ed1fd413b97ca Mon Sep 17 00:00:00 2001
From: Christoph Egger <Christoph.Egger@fau.de>
Date: Tue, 3 Nov 2015 16:53:09 +0100
Subject: [PATCH] =?UTF-8?q?Add=20gensym=20for=20CTL=20->=20=CE=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/lib/CoAlgFormula.ml | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/lib/CoAlgFormula.ml b/src/lib/CoAlgFormula.ml
index 4ee7797..8b68635 100644
--- a/src/lib/CoAlgFormula.ml
+++ b/src/lib/CoAlgFormula.ml
@@ -212,21 +212,25 @@ let convertToGML formula = (* tries to convert a formula to a pure GML formula *
   in
   convert_post helper formula
 
+let gensym = Stream.from (fun i -> Some (Printf.sprintf "#gensym%x#" i))
+
 let convertToMu formula =
-  let helper formula = match formula with
-  | AF f1 ->
-	 MU ((VAR ":genX"), (OR (f1, (AX ("", (VAR ":genX"))))))
-  | EF f1 ->
-	 MU ((VAR ":genX"), (OR (f1, (AX ("", (VAR ":genX"))))))
-  | AG f1 ->
-	 NU ((VAR ":genX"), (AND (f1, (AX ("", (VAR ":genX"))))))
-  | EG f1 ->
-	 NU ((VAR ":genX"), (AND (f1, (AX ("", (VAR ":genX"))))))
-  | AU (f1, f2) ->
-	 MU ((VAR ":genX"), (OR (f2, (AND (f1, (AX ("", (VAR ":genX"))))))))
-  | EU (f1, f2) ->
-	 MU ((VAR ":genX"), (OR (f2, (AND (f1, (EX ("", (VAR ":genX"))))))))
-  | _ -> formula
+  let helper formula =
+	let symbol = Stream.next gensym in
+	match formula with
+	| AF f1 ->
+	   MU ((VAR symbol), (OR (f1, (AX ("", (VAR symbol))))))
+	| EF f1 ->
+	   MU ((VAR symbol), (OR (f1, (AX ("", (VAR symbol))))))
+	| AG f1 ->
+	   NU ((VAR symbol), (AND (f1, (AX ("", (VAR symbol))))))
+	| EG f1 ->
+	   NU ((VAR symbol), (AND (f1, (AX ("", (VAR symbol))))))
+	| AU (f1, f2) ->
+	   MU ((VAR symbol), (OR (f2, (AND (f1, (AX ("", (VAR symbol))))))))
+	| EU (f1, f2) ->
+	   MU ((VAR symbol), (OR (f2, (AND (f1, (EX ("", (VAR symbol))))))))
+	| _ -> formula
   in
   convert_post helper formula
 
-- 
GitLab