[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
List of possible algebraic transformations
Hello,
as I'm doing (part of) ooc's optimizers, I want to integrate
so called `algebraic transformations'.
In order to get a complete list of transformations, I include my
current working list for comments.
If anyone knows a transformation not in the list, or if anyone finds
a transformation which is not legal in all cases (or even errors in
the list!), please let me know.
So long
  Juergen Zimmermann
Here the list:
- integer types
  a + 0 = a
  0 + a = a
  a - 0 = a
  0 - a = a
  
  --a = a
  
  a *  1 = a
  1 * a = a
  a * (-1) = -a
  (-1) * a = -a
  
  a * 0 = 0
  0 * a = 0
  
  a DIV 1 = a
  a MOD 1 = 0;
  a DIV (-1) = -a
  a MOD (-1) = 0
  
- real types
  a + 0.0 = a
  0.0 + a = a
  a - 0.0 = a
  0.0 - a = a
  
  --a = a
  
  a * 1.0 = a
  1.0 * a = a
  a * (-1.0) = -a
  (-1.0) * a = -a
  
  a * 0.0 = 0
  0.0 * a = 0
  
  a / 1.0 = a
  a / (-1.0) = -a
- boolean types
  a & a = a
  a OR a = a
  ~~a = a
  
  a & TRUE = a
  TRUE & a = a
  FALSE & a = FALSE
  
  a OR FALSE = a
  FALSE OR a = a
  TRUE OR a = TRUE
- set types
  a - a = {}
  a + a = a
  a * a = a
  a / a = {}
  
  a - {} = a
  a + {} = a
  a * {} = a
  a / {} = ?
  
  {} - a = ?
  {} + a = a
  {} * a = {}
  {} / a = ?
  
  
-string types
  
 str = "" -> str[0] = 0X
 str # "" -> str[0] # 0X
 str >= "" -> TRUE
 str < ""  -> FALSE
 "" <= str -> TRUE
 "" > str  -> FALSE
 
 str ( < | > | # ) str -> FALSE
 str ( <= | >= | = ) str -> TRUE