//This file contains functions synthesizing logical formulas and enabling transmission of entangled literals function syntheticImplNARule(firstArg, secondArg) { var result = Vector.new(); if(firstArg[0][0] == 0) { result.add([3]); var i; for(i = 1; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(firstArg[1])); } return result; } function syntheticImplBRule(firstArg, secondArg) { var result = Vector.new(); result.add([3]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(secondArg[1])); return result; } function syntheticImplANBRule(firstArg, secondArg) { var result = Vector.new(); if(secondArg[0][0] == 0) { result.add([0,3]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 1; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(firstArg[1])); for(i = 0; i < secondArg[1].size; i++) { //do not let an entangled literal to be repeated if(result[1].find(secondArg[1][i]) == -1) result[1].add(deepCopyList(secondArg[1][i])); } } return result; } function syntheticAltARule(firstArg, secondArg) { var result = Vector.new(); result.add([2]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(firstArg[1])); return result; } function syntheticAltBRule(firstArg, secondArg) { var result = Vector.new(); result.add([2]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(secondArg[1])); return result; } function syntheticAltNANBRule(firstArg, secondArg) { var result = Vector.new(); if(firstArg[0][0] == 0 && secondArg[0][0] == 0) { result.add([0,2]); var i; for(i = 1; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 1; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(firstArg[1])); for(i = 0; i < secondArg[1].size; i++) { //do not let an entangled literal to be repeated if(result[1].find(secondArg[1][i]) == -1) result[1].add(deepCopyList(secondArg[1][i])); } } return result; } function syntheticConjNARule(firstArg, secondArg) { var result = Vector.new(); if(firstArg[0][0] == 0) { result.add([0,1]); var i; for(i = 1; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(firstArg[1])); } return result; } function syntheticConjNBRule(firstArg, secondArg) { var result = Vector.new(); if(secondArg[0][0] == 0) { result.add([0,1]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 1; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(secondArg[1])); } return result; } function syntheticConjABRule(firstArg, secondArg) { var result = Vector.new(); result.add([1]); var i; for(i = 0; i < firstArg[0].size; i++) result[0].add(firstArg[0][i]); for(i = 0; i < secondArg[0].size; i++) result[0].add(secondArg[0][i]); result.add(deepCopyList(secondArg[1])); for(i = 0; i < secondArg[1].size; i++) { //do not let an entangled literal to be repeated if(result[1].find(secondArg[1][i]) == -1) result[1].add(deepCopyList(secondArg[1][i])); } return result; } function syntheticNegRule(arg) { var result = Vector.new(); result.add([0,0]); var i; for(i = 0; i < arg[0].size; i++) result[0].add(arg[0][i]); result.add(deepCopyList(arg[1])); return result; }