public static boolean equivalentCommutativePropositionsP(Proposition self, Proposition other, KeyValueMap mapping) {
    { boolean testValue000 = false;

      testValue000 = self.operator == other.operator;
      if (testValue000) {
        testValue000 = self.arguments.length() == other.arguments.length();
        if (testValue000) {
          { boolean alwaysP000 = true;

            { Stella_Object arg1 = null;
              Vector vector000 = self.arguments;
              int index000 = 0;
              int length000 = vector000.length();

              loop000 : for (;index000 < length000; index000 = index000 + 1) {
                arg1 = (vector000.theArray)[index000];
                { boolean testValue001 = false;

                  { boolean foundP000 = false;

                    { Stella_Object arg2 = null;
                      Vector vector001 = other.arguments;
                      int index001 = 0;
                      int length001 = vector001.length();

                      loop001 : for (;index001 < length001; index001 = index001 + 1) {
                        arg2 = (vector001.theArray)[index001];
                        if (Logic.equivalentFormulaeP(arg1, arg2, mapping)) {
                          foundP000 = true;
                          break loop001;
                        }
                      }
                    }
                    testValue001 = foundP000;
                  }
                  testValue001 = !testValue001;
                  if (testValue001) {
                    alwaysP000 = false;
                    break loop000;
                  }
                }
              }
            }
            testValue000 = alwaysP000;
          }
        }
      }
      { boolean value000 = testValue000;

        return (value000);
      }
    }
  }