private Formula constructAnd ( final LinkedHashSet < ? extends Formula > operands ) { And tempAnd = null ; Map < LinkedHashSet < ? extends Formula > , And > opAndMap = this . andsN ; if ( operands . size ( ) > 1 ) { switch ( operands . size ( ) ) { case 2 : opAndMap = this . ands2 ; break ; case 3 : opAndMap = this . ands3 ; break ; case 4 : opAndMap = this . ands4 ; break ; default : break ; } tempAnd = opAndMap . get ( operands ) ; } if ( tempAnd != null ) return tempAnd ; final LinkedHashSet < ? extends Formula > condensedOperands = operands . size ( ) < 2 ? operands : this . condenseOperandsAnd ( operands ) ; if ( condensedOperands == null ) return this . falsum ( ) ; if ( condensedOperands . isEmpty ( ) ) return this . verum ( ) ; if ( condensedOperands . size ( ) == 1 ) return condensedOperands . iterator ( ) . next ( ) ; final And and ; Map < LinkedHashSet < ? extends Formula > , And > condAndMap = this . andsN ; switch ( condensedOperands . size ( ) ) { case 2 : condAndMap = this . ands2 ; break ; case 3 : condAndMap = this . ands3 ; break ; case 4 : condAndMap = this . ands4 ; break ; default : break ; } and = condAndMap . get ( condensedOperands ) ; if ( and == null ) { tempAnd = new And ( condensedOperands , this , this . cnfCheck ) ; opAndMap . put ( operands , tempAnd ) ; condAndMap . put ( condensedOperands , tempAnd ) ; return tempAnd ; } opAndMap . put ( operands , and ) ; return and ; }
Creates a new conjunction .