diff --git a/__pycache__/image_maker.cpython-39.pyc b/__pycache__/image_maker.cpython-39.pyc
deleted file mode 100644
index f8e8cdcd60249af089db19df421c4166cf98156a..0000000000000000000000000000000000000000
Binary files a/__pycache__/image_maker.cpython-39.pyc and /dev/null differ
diff --git a/__pycache__/logic.cpython-39.pyc b/__pycache__/logic.cpython-39.pyc
deleted file mode 100644
index 0e5a612df66d64a7a7f7804140de1d3b781e7477..0000000000000000000000000000000000000000
Binary files a/__pycache__/logic.cpython-39.pyc and /dev/null differ
diff --git a/__pycache__/parsing.cpython-39.pyc b/__pycache__/parsing.cpython-39.pyc
deleted file mode 100644
index d916578212688390b3b2924be2927dea4a3e1c27..0000000000000000000000000000000000000000
Binary files a/__pycache__/parsing.cpython-39.pyc and /dev/null differ
diff --git a/parsing.py b/parsing.py
index e9b7229ec9c59de8296a6eb47b2bffc1a777e2d1..5ea15e981c194ea03fd8cea1461c2708a555559e 100644
--- a/parsing.py
+++ b/parsing.py
@@ -9,16 +9,18 @@ def open_parantheses_counter(terme):
     counter = 0
     indexes = []
     for i in range(len(terme)):
-        if terme[i] == '(':
+        if terme[i] == '(' or terme[i]=='[' or terme[i]=='{':
             counter += 1
             indexes.append(i)
     return (counter, indexes)
+
+
 # comme celle d avant 
 def close_parantheses_counter(terme):
     counter = 0
     indexes = []
     for i in range(len(terme)):
-        if terme[i] == ')':
+        if terme[i] == ')' or terme[i]==']' or terme[i]=='}':
             counter += 1
             indexes.append(i)
     return (counter, indexes)
@@ -48,15 +50,17 @@ def parantheses_couples(terme):
 
 def findOpeningParanthesesIndex(terme, closeParentheseIndex):
     assert balancedParantheses(terme), "Not balanced Terme"
-    openParantheseIndex = closeParentheseIndex
-    counter = 1
-    while (counter > 0 ):
-        openParantheseIndex -=1
-        c = terme[openParantheseIndex]
-        if c == "(":
+    if terme[closeParentheseIndex]== ')':
+      openParantheseIndex = closeParentheseIndex
+      counter = 1
+      while (counter > 0 ):
+         openParantheseIndex -=1
+         c = terme[openParantheseIndex]
+         if c in open_list:
             counter -= 1
-        elif c == ")":
+         elif c in close_list:
             counter += 1
+    
     return openParantheseIndex
 
 
@@ -68,9 +72,9 @@ def findClosingParanthesesIndex(terme, openParentheseIndex):
     while (counter > 0 ):
         closeParantheseIndex +=1
         c = terme[closeParantheseIndex]
-        if c == "(":
+        if c == "(" or c=='{' or c=='[':
             counter += 1
-        elif c == ")":
+        elif c == ")" or c==']' or c=='}':
             counter -= 1
     return closeParantheseIndex
 
@@ -86,7 +90,7 @@ def getTermsFromParantheses(terme):
     #         terms.append(getTermFromParantheses(terme,indexes_of_open_parantheses[i]))
     i = 0
     while i < len(terme):
-        if terme[i] == '(':
+        if terme[i] == '(' or terme[i]=='{' or terme[i]=='[':
             terms.append(getTermFromParantheses(terme,i))
             i = findClosingParanthesesIndex(terme,i)
         else:
@@ -110,13 +114,13 @@ def remove_multiple_spaces(terme):
 def checkType(terme):
     if "#" == terme[0]:
         return ABS
-    elif  terme[0] == '(':
+    elif  terme[0] == '(' or terme[0]=='{' or terme[0]=='[':
         l = getTermsFromParantheses(terme)
-        if len(l) == 1 and terme[-1] == ')':
+        if len(l) == 1 and ( (terme[-1] == ')' or terme[-1]==']' or terme[-1]=='}')):
             return checkType(getTermFromParantheses(terme,0))
         else:
             return APP
-    elif not(any(charac in (terme) for charac in ['(',')',' ','#','.'])):
+    elif not(any(charac in (terme) for charac in ['(',')',' ','#','.', '[', ']','{','}'])):
         return VAR
     else:
         return APP
@@ -149,7 +153,7 @@ def extractOutputFromAbs(terme):
 def buildVar(terme):
     assert (checkType(terme) == VAR)
     # print(terme)
-    if terme[0]!='(':
+    if terme[0]!='(' and terme[0]!='{' and terme[0]!='[':
         if terme in variables:
             return variables[terme]
         else:
@@ -163,7 +167,7 @@ def buildAbs(terme):
     input = extractInputFromAbs(terme)
     output = extractOutputFromAbs(terme)
     # print(terme,"INPUT:", input,'OUTPUT:', output)
-    if terme [0]!= '(':
+    if not(terme [0] in open_list):
         return new_abs((buildTerm(input)),buildTerm(output))
     else:
         return buildTerm(getTermFromParantheses(terme,0))
@@ -173,13 +177,13 @@ def extract_terms(text):
     current_term = ""
     paranthesis_level = 0
     for i in range(len(text)):
-        if text[i] == "(":
+        if text[i] == "(" or text[i]=='{' or text[i]=='[' :
             if paranthesis_level == 0:
                 current_term = ""
             else:
               current_term += text[i]
             paranthesis_level += 1
-        elif text[i] == ")":
+        elif text[i] == ")" or text[i]==']' or text[i]=='}':
             paranthesis_level -= 1
             if paranthesis_level > 0:
                 current_term += text[i]
@@ -196,7 +200,7 @@ def extract_terms(text):
 def buildApp(terme):
     assert (checkType(terme) == APP)
     liste_de_termes = extract_terms(terme)
-    if terme[0]!='(':
+    if terme[0]!='(' and terme[0]!='{' and terme[0]!='[':
         n = len(liste_de_termes)
         if n == 0:
             return None
diff --git a/tests.py b/tests.py
index 46e35b5e2b6e4d95b967a157b3f04877ce9f4c12..59a6155865711ecd0543c0cd4c2602411e948d31 100644
--- a/tests.py
+++ b/tests.py
@@ -85,4 +85,6 @@ import parsing
 #beta_reduction_interactive_totale(parsing.parseTerm(input("Enter a term: ")))
 # beta_reduction_interactive_totale(parsing.parseTerm(input("Enter a term: ")))
 
-### ADD SAVE IMAGE CHOICE FOR BETA REDUCTION!!!!
\ No newline at end of file
+### ADD SAVE IMAGE CHOICE FOR BETA REDUCTION!!!!
+#print(parsing.buildTerm("(#x.[#y.(y n)])"))
+#print(parsing.buildTerm("(#x.[#y.(y n)])"))
\ No newline at end of file