public static double activatePropositionalNeuralNetwork(PropositionNeuralNetwork net) {
    { int numIn = net.input.length();
      int numHidden = net.hidden.length();
      Vector arguments = net.proposition.arguments;
      int stop = numIn - 1;
      Vector input = net.input;
      Vector hidden = net.hidden;
      two_D_array ih = net.ih;
      Vector ho = net.ho;
      double score = 0.0;
      double sum = 0.0;

      Logic.$ACTIVATED_NETWORKS$.push(net);
      (net.input.theArray)[0] = (FloatWrapper.wrapFloat(1.0));
      { int i = Stella.NULL_INTEGER;
        int iter000 = 1;
        int upperBound000 = stop;
        boolean unboundedP000 = upperBound000 == Stella.NULL_INTEGER;

        for (;unboundedP000 ||
                  (iter000 <= upperBound000); iter000 = iter000 + 1) {
          i = iter000;
          if (((FloatWrapper)(KeyValueList.dynamicSlotValue(((Proposition)((arguments.theArray)[(i - 1)])).dynamicSlots, Logic.SYM_LOGIC_MATCH_SCORE, Stella.NULL_FLOAT_WRAPPER))).wrapperValue != Stella.NULL_FLOAT) {
            (input.theArray)[i] = (FloatWrapper.wrapFloat(((FloatWrapper)(KeyValueList.dynamicSlotValue(((Proposition)((arguments.theArray)[(i - 1)])).dynamicSlots, Logic.SYM_LOGIC_MATCH_SCORE, Stella.NULL_FLOAT_WRAPPER))).wrapperValue));
          }
          else {
            (input.theArray)[i] = (FloatWrapper.wrapFloat(0.0));
          }
        }
      }
      { int i = Stella.NULL_INTEGER;
        int iter001 = 0;
        int upperBound001 = numHidden - 1;

        for (;iter001 <= upperBound001; iter001 = iter001 + 1) {
          i = iter001;
          { int j = Stella.NULL_INTEGER;
            int iter002 = 0;
            int upperBound002 = stop;
            boolean unboundedP001 = upperBound002 == Stella.NULL_INTEGER;

            for (;unboundedP001 ||
                      (iter002 <= upperBound002); iter002 = iter002 + 1) {
              j = iter002;
              sum = sum + (((FloatWrapper)((input.theArray)[j])).wrapperValue * ((FloatWrapper)((ih.theArray)[((j * ih.nofColumns) + i)])).wrapperValue);
            }
          }
          (hidden.theArray)[i] = (FloatWrapper.wrapFloat(1.0 / (1.0 + Math.exp((0 - sum)))));
          score = score + (((FloatWrapper)((hidden.theArray)[i])).wrapperValue * ((FloatWrapper)((ho.theArray)[i])).wrapperValue);
        }
      }
      if ((1.0 + Math.exp((0 - score))) == 0.0) {
        System.out.println("Sum is " + score);
      }
      net.output = 1.0 / (1.0 + Math.exp((0 - score)));
      KeyValueList.setDynamicSlotValue(net.proposition.dynamicSlots, Logic.SYM_LOGIC_MATCH_SCORE, FloatWrapper.wrapFloat(net.output), Stella.NULL_FLOAT_WRAPPER);
      return (net.output);
    }
  }