From 1331c16424852d824055dfd5e0caeb62c42ce22a Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr>
Date: Wed, 23 Feb 2022 17:54:49 +0100
Subject: [PATCH] Solving bug on proverif: arithmetic ops had no diviser

---
 .../avatartranslator/AvatarArithmeticOp.java     |  2 +-
 .../AvatarStateMachineElement.java               |  2 +-
 .../toproverif/AVATAR2ProVerif.java              | 16 +++++++++++++---
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/main/java/avatartranslator/AvatarArithmeticOp.java b/src/main/java/avatartranslator/AvatarArithmeticOp.java
index 051e56af12..19f10503e8 100644
--- a/src/main/java/avatartranslator/AvatarArithmeticOp.java
+++ b/src/main/java/avatartranslator/AvatarArithmeticOp.java
@@ -53,7 +53,7 @@ public class AvatarArithmeticOp extends AvatarTerm {
     AvatarTerm term2;
     String operator;
 
-    private static final String [] knownOp = {"+", "-", "*"};
+    private static final String [] knownOp = {"+", "-", "*", "/"};
 
     public AvatarArithmeticOp (AvatarTerm _term1, AvatarTerm _term2, String _operator, Object _referenceObject) {
         super (_term1.getName () + _operator + _term2.getName (), _referenceObject);
diff --git a/src/main/java/avatartranslator/AvatarStateMachineElement.java b/src/main/java/avatartranslator/AvatarStateMachineElement.java
index 64384093f1..7cd31738a3 100644
--- a/src/main/java/avatartranslator/AvatarStateMachineElement.java
+++ b/src/main/java/avatartranslator/AvatarStateMachineElement.java
@@ -196,7 +196,7 @@ public abstract class AvatarStateMachineElement extends AvatarElement {
 
         return false;
     }
-    
+
 
     public boolean inAnUpperStateOf(AvatarState _state) {
         if (_state == null) {
diff --git a/src/main/java/avatartranslator/toproverif/AVATAR2ProVerif.java b/src/main/java/avatartranslator/toproverif/AVATAR2ProVerif.java
index 01d12b6d73..57953a87f0 100755
--- a/src/main/java/avatartranslator/toproverif/AVATAR2ProVerif.java
+++ b/src/main/java/avatartranslator/toproverif/AVATAR2ProVerif.java
@@ -231,10 +231,14 @@ public class AVATAR2ProVerif implements AvatarTranslator {
     protected static String translateTerm (AvatarTerm term, Map<AvatarAttribute, Integer> attributeCmp) {
         if (term instanceof AvatarAttribute) {
             AvatarAttribute attr = (AvatarAttribute) term;
+
             if (attributeCmp != null) {
+                TraceManager.addDev("Mae Attr name 1");
                 return AVATAR2ProVerif.makeAttrName (attr.getBlock ().getName (), attr.getName (), attributeCmp.get (attr).toString ());
-            } else
-                return AVATAR2ProVerif.makeAttrName (attr.getBlock ().getName (), attr.getName ());
+            } else {
+                TraceManager.addDev("Mae Attr name 2");
+                return AVATAR2ProVerif.makeAttrName(attr.getBlock().getName(), attr.getName());
+            }
         }
 
         if (term instanceof AvatarConstant) {
@@ -259,16 +263,18 @@ public class AVATAR2ProVerif implements AvatarTranslator {
 
                     return sb.toString ();
                 } else {
+                    TraceManager.addDev("ERROR=ZERO");
                     // TODO: raise error
                     return ZERO;
                 }
-            } catch (NumberFormatException e) { }
+            } catch (NumberFormatException e) {  TraceManager.addDev("ERROR=NFE");}
 
             return constant.getName ();
         }
 
         if (term instanceof AvatarArithmeticOp) {
             AvatarArithmeticOp op = (AvatarArithmeticOp) term;
+            TraceManager.addDev("TERM=" + op.toString());
             if (op.getOperator ().compareTo ("+") == 0) {
                 AvatarTerm t1, t2;
                 t1 = op.getTerm1 ();
@@ -279,6 +285,7 @@ public class AVATAR2ProVerif implements AvatarTranslator {
                     t2 = t;
                 } else if (!(t2 instanceof AvatarConstant)) {
                     // TODO: raise error
+                    TraceManager.addDev("ERROR= t2!=constant");
                     return null;
                 }
 
@@ -299,16 +306,19 @@ public class AVATAR2ProVerif implements AvatarTranslator {
                         return sb.toString ();
                     } else {
                         // TODO: raise error
+                        TraceManager.addDev("ERROR= max int");
                         return AVATAR2ProVerif.translateTerm(t1, attributeCmp);
                     }
                 } catch (NumberFormatException e) { 
                     // TODO: raise error
+                    TraceManager.addDev("ERROR= NumberFormatException");
                     return AVATAR2ProVerif.translateTerm(t1, attributeCmp);
                 }
 
 
             } else {
                 // TODO: raise error
+                TraceManager.addDev("ERROR= not a +");
                 return null;
             }
         }
-- 
GitLab