nglformulaparser
Advanced tools
Comparing version 0.0.1 to 0.0.2
@@ -6,4 +6,4 @@ "use strict";module.exports = (function(){"use strict"; /* | ||
*/function peg$subclass(child,parent){function ctor(){this.constructor = child;}ctor.prototype = parent.prototype;child.prototype = new ctor();}function peg$SyntaxError(message,expected,found,location){this.message = message;this.expected = expected;this.found = found;this.location = location;this.name = "SyntaxError";if(typeof Error.captureStackTrace === "function"){Error.captureStackTrace(this,peg$SyntaxError);}}peg$subclass(peg$SyntaxError,Error);function peg$parse(input){var options=arguments.length > 1?arguments[1]:{},parser=this,peg$FAILED={},peg$startRuleFunctions={nglFormula:peg$parsenglFormula},peg$startRuleFunction=peg$parsenglFormula,peg$c0=function peg$c0(d){ //return getAllVariables(d) | ||
return d;},peg$c1="|",peg$c2={type:"literal",value:"|",description:"\"|\""},peg$c3=function peg$c3(left,right){return {junctor:"or",left:left,right:right};},peg$c4="&",peg$c5={type:"literal",value:"&",description:"\"&\""},peg$c6=function peg$c6(left,right){return {junctor:"and",left:left,right:right};},peg$c7="!",peg$c8={type:"literal",value:"!",description:"\"!\""},peg$c9=function peg$c9(variable,scope){return {quantifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c10="(",peg$c11={type:"literal",value:"(",description:"\"(\""},peg$c12=")",peg$c13={type:"literal",value:")",description:"\")\""},peg$c14=function peg$c14(variable,scope){return {quatifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c15=function peg$c15(tuple,scope){return {quatifier:"existential",quantifiedVariables:tuple,scope:scope};},peg$c16="&~",peg$c17={type:"literal",value:"&~",description:"\"&~\""},peg$c18=function peg$c18(relation,varsTuple,scope){var q1=varsTuple;var q2=getAllVariables(scope);if(diffArray(q2,q1).length === 0){ //return diffArray(q2,q1) | ||
return d;},peg$c1="|",peg$c2={type:"literal",value:"|",description:"\"|\""},peg$c3=function peg$c3(left,right){return {junctor:"or",left:left,right:right};},peg$c4="&",peg$c5={type:"literal",value:"&",description:"\"&\""},peg$c6=function peg$c6(left,right){return {junctor:"and",left:left,right:right};},peg$c7="!",peg$c8={type:"literal",value:"!",description:"\"!\""},peg$c9=function peg$c9(variable,scope){return {quantifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c10="(",peg$c11={type:"literal",value:"(",description:"\"(\""},peg$c12=")",peg$c13={type:"literal",value:")",description:"\")\""},peg$c14=function peg$c14(tuple,scope){return {quantifier:"existential",quantifiedVariables:tuple,scope:scope};},peg$c15="&~",peg$c16={type:"literal",value:"&~",description:"\"&~\""},peg$c17=function peg$c17(relation,varsTuple,scope){var q1=varsTuple;var q2=getAllVariables(scope);if(diffArray(q2,q1).length === 0){ //return diffArray(q2,q1) | ||
return {guard:"negation",guardingRelation:relation,guardingVariables:varsTuple,scope:scope};}else { //fail | ||
throw new Error("The formula contains unguarded variables!");}},peg$c19=function peg$c19(disjunction){return disjunction;},peg$c20={type:"other",description:"atom"},peg$c21={type:"other",description:"equality"},peg$c22=function peg$c22(equalityNoPars){return equalityNoPars;},peg$c23={type:"other",description:"equalityNoPars"},peg$c24="=",peg$c25={type:"literal",value:"=",description:"\"=\""},peg$c26=function peg$c26(term1,term2){return {relation:"Eq",arity:2,tuple:{term1:term1,term2:term2}};},peg$c27={type:"other",description:"quaternaryAtom"},peg$c28=function peg$c28(rel,tuple){return {relation:rel,arity:4,tuple:tuple};},peg$c29={type:"other",description:"ternaryAtom"},peg$c30=function peg$c30(rel,tuple){return {relation:rel,arity:3,tuple:tuple};},peg$c31={type:"other",description:"binaryAtom"},peg$c32=function peg$c32(rel,tuple){return {relation:rel,arity:2,tuple:tuple};},peg$c33={type:"other",description:"unaryAtom"},peg$c34=function peg$c34(rel,tuple){return {relation:rel,arity:1,tuple:tuple};},peg$c35={type:"other",description:"unaryAtomNoPars"},peg$c36=function peg$c36(rel,term1){return {relation:rel,arity:1,term1:term1};},peg$c37={type:"other",description:"nularyAtom"},peg$c38=function peg$c38(rel){return {relation:rel,arity:0,tuple:{}};},peg$c39={type:"other",description:"nularyAtomNoPars"},peg$c40=function peg$c40(rel){return {relation:rel,arity:0};},peg$c41={type:"other",description:"variableQuaternaryTuple"},peg$c42=",",peg$c43={type:"literal",value:",",description:"\",\""},peg$c44=function peg$c44(var1,var2,var3,var4){return [var1,var2,var3,var4];},peg$c45={type:"other",description:"variableTernaryTuple"},peg$c46=function peg$c46(var1,var2,var3){return [var1,var2,var3];},peg$c47={type:"other",description:"variableBinaryTuple"},peg$c48=function peg$c48(var1,var2){return [var1,var2];},peg$c49={type:"other",description:"variableUnaryTuple"},peg$c50=function peg$c50(var1){return [var1];},peg$c51={type:"other",description:"quaternaryTuple"},peg$c52=function peg$c52(term1,term2,term3,term4){return {term1:term1,term2:term2,term3:term3,term4:term4};},peg$c53={type:"other",description:"ternaryTuple"},peg$c54=function peg$c54(term1,term2,term3){return {term1:term1,term2:term2,term3:term3};},peg$c55={type:"other",description:"binaryTuple"},peg$c56=function peg$c56(term1,term2){return {term1:term1,term2:term2};},peg$c57={type:"other",description:"unaryTuple"},peg$c58=function peg$c58(term){return {term1:term};},peg$c59=function peg$c59(term){return {term1:term};},peg$c60={type:"other",description:"nularyTuple"},peg$c61=function peg$c61(){return {tuple:{}};},peg$c62={type:"other",description:"term"},peg$c63={type:"other",description:"relation"},peg$c64=/^[P-S]/,peg$c65={type:"class",value:"[P-S]",description:"[P-S]"},peg$c66=function peg$c66(relationString,index){return relationString.join('') + index;},peg$c67={type:"other",description:"variable"},peg$c68=/^[ux-z]/,peg$c69={type:"class",value:"[ux-z]",description:"[ux-z]"},peg$c70=function peg$c70(variableString,index){return variableString.join('') + index;},peg$c71={type:"other",description:"constant"},peg$c72=/^[a-e]/,peg$c73={type:"class",value:"[a-e]",description:"[a-e]"},peg$c74=function peg$c74(constantString,index){return constantString.join('') + index;},peg$c75={type:"other",description:"index"},peg$c76=/^[0-9]/,peg$c77={type:"class",value:"[0-9]",description:"[0-9]"},peg$c78=function peg$c78(digits){return digits.join('');},peg$c79={type:"other",description:"whitespace"},peg$c80=/^[ \t\n\r]/,peg$c81={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1,seenCR:false}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$resultsCache={},peg$result;if("startRule" in options){if(!(options.startRule in peg$startRuleFunctions)){throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");}peg$startRuleFunction = peg$startRuleFunctions[options.startRule];}function text(){return input.substring(peg$savedPos,peg$currPos);}function location(){return peg$computeLocation(peg$savedPos,peg$currPos);}function expected(description){throw peg$buildException(null,[{type:"other",description:description}],input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function error(message){throw peg$buildException(message,null,input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function peg$computePosDetails(pos){var details=peg$posDetailsCache[pos],p,ch;if(details){return details;}else {p = pos - 1;while(!peg$posDetailsCache[p]) {p--;}details = peg$posDetailsCache[p];details = {line:details.line,column:details.column,seenCR:details.seenCR};while(p < pos) {ch = input.charAt(p);if(ch === "\n"){if(!details.seenCR){details.line++;}details.column = 1;details.seenCR = false;}else if(ch === "\r" || ch === "\u2028" || ch === "\u2029"){details.line++;details.column = 1;details.seenCR = true;}else {details.column++;details.seenCR = false;}p++;}peg$posDetailsCache[pos] = details;return details;}}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return {start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}};}function peg$fail(expected){if(peg$currPos < peg$maxFailPos){return;}if(peg$currPos > peg$maxFailPos){peg$maxFailPos = peg$currPos;peg$maxFailExpected = [];}peg$maxFailExpected.push(expected);}function peg$buildException(message,expected,found,location){function cleanupExpected(expected){var i=1;expected.sort(function(a,b){if(a.description < b.description){return -1;}else if(a.description > b.description){return 1;}else {return 0;}});while(i < expected.length) {if(expected[i - 1] === expected[i]){expected.splice(i,1);}else {i++;}}}function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase();}return s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\x08/g,'\\b').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\f/g,'\\f').replace(/\r/g,'\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return '\\x0' + hex(ch);}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return '\\x' + hex(ch);}).replace(/[\u0100-\u0FFF]/g,function(ch){return "\\u0" + hex(ch);}).replace(/[\u1000-\uFFFF]/g,function(ch){return "\\u" + hex(ch);});}var expectedDescs=new Array(expected.length),expectedDesc,foundDesc,i;for(i = 0;i < expected.length;i++) {expectedDescs[i] = expected[i].description;}expectedDesc = expected.length > 1?expectedDescs.slice(0,-1).join(", ") + " or " + expectedDescs[expected.length - 1]:expectedDescs[0];foundDesc = found?"\"" + stringEscape(found) + "\"":"end of input";return "Expected " + expectedDesc + " but " + foundDesc + " found.";}if(expected !== null){cleanupExpected(expected);}return new peg$SyntaxError(message !== null?message:buildMessage(expected,found),expected,found,location);}function peg$parsenglFormula(){var s0,s1;var key=peg$currPos * 33 + 0,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parsedisjunction();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c0(s1);}s0 = s1;peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsedisjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 1,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseconjunction();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 124){s4 = peg$c1;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c2);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsedisjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c3(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseconjunction();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 2,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseprimary();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 38){s4 = peg$c4;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c5);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseconjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c6(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseprimary();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseexistential(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11;var key=peg$currPos * 33 + 3,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s6 = peg$c10;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){s8 = peg$parseprimary();if(s8 === peg$FAILED){s8 = peg$parseexistential();}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s10 = peg$c12;peg$currPos++;}else {s10 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c14(s4,s8);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariableTuple();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c15(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseguardedNegation(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 4,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsevariableTuple();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.substr(peg$currPos,2) === peg$c16){s4 = peg$c16;peg$currPos += 2;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c17);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseguardedNegation();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c18(s1,s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseprimary(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 5,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsedisjunction();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c19(s4);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseexistential();if(s0 === peg$FAILED){s0 = peg$parseguardedNegation();if(s0 === peg$FAILED){s0 = peg$parseatom();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseatom(){var s0,s1;var key=peg$currPos * 33 + 6,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseequality();if(s0 === peg$FAILED){s0 = peg$parsequaternaryAtom();if(s0 === peg$FAILED){s0 = peg$parseternaryAtom();if(s0 === peg$FAILED){s0 = peg$parsebinaryAtom();if(s0 === peg$FAILED){s0 = peg$parseunaryAtom();if(s0 === peg$FAILED){s0 = peg$parsenularyAtom();}}}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c20);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequality(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 7,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parseequalityNoPars();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s4 = peg$c12;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c22(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseequalityNoPars();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c21);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequalityNoPars(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 8,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 61){s4 = peg$c24;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c25);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseterm();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c26(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c23);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 9,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsequaternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c28(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c27);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 10,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c30(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c29);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 11,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsebinaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c32(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c31);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 12,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseunaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c34(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c33);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 13,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c36(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c35);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtom(){var s0,s1,s2,s3,s4,s5,s6;var key=peg$currPos * 33 + 14,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s4 = peg$c10;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s4 = [s4,s5,s6];s3 = s4;}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}if(s3 === peg$FAILED){s3 = peg$parse_();}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c38(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c37);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 15,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c40(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c39);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTuple(){var s0;var key=peg$currPos * 33 + 16,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsevariableQuaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableTernaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableBinaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableUnaryTuple();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableQuaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 17,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c42;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s12 = peg$c42;peg$currPos++;}else {s12 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s12 !== peg$FAILED){s13 = peg$parse_();if(s13 !== peg$FAILED){s14 = peg$parsevariable();if(s14 !== peg$FAILED){s15 = peg$parse_();if(s15 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c44(s2,s6,s10,s14);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c42;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parsevariable();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c44(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c41);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTernaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 18,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c42;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c46(s2,s6,s10);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c46(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c45);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableBinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 19,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c48(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c48(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c47);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableUnaryTuple(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 20,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c50(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s5 = peg$c12;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c50(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c49);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsetuple(){var s0;var key=peg$currPos * 33 + 21,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsequaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parseternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsebinaryTuple();if(s0 === peg$FAILED){s0 = peg$parseunaryTuple();if(s0 === peg$FAILED){s0 = peg$parsenularyTuple();}}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 22,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c42;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s11 = peg$c42;peg$currPos++;}else {s11 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){s13 = peg$parseterm();if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c52(s1,s5,s9,s13);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c42;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parseterm();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c52(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c51);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 23,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c42;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c54(s1,s5,s9);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c54(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c53);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 24,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c56(s1,s5);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c56(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c55);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 25,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c58(s1);}s0 = s1;if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c59(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c57);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 26,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c61();s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c60);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseterm(){var s0,s1;var key=peg$currPos * 33 + 27,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseconstant();if(s0 === peg$FAILED){s0 = peg$parsevariable();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c62);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parserelation(){var s0,s1,s2;var key=peg$currPos * 33 + 28,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c64.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c65);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c64.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c65);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c66(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c63);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariable(){var s0,s1,s2;var key=peg$currPos * 33 + 29,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c68.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c69);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c68.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c69);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c70(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c67);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconstant(){var s0,s1,s2;var key=peg$currPos * 33 + 30,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c72.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c73);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c72.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c73);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c74(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c71);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseindex(){var s0,s1,s2;var key=peg$currPos * 33 + 31,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c76.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c77);}}while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c76.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c77);}}}if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c78(s1);}s0 = s1;peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c75);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parse_(){var s0,s1;var key=peg$currPos * 33 + 32,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = [];if(peg$c80.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c81);}}while(s1 !== peg$FAILED) {s0.push(s1);if(peg$c80.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c81);}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c79);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function getAllVariables(_x){var _again=true;_function: while(_again) {var formula=_x;_again = false;if(formula.relation){var vars=[];var tuple=formula.tuple;for(var key in tuple) {vars.push(tuple[key]);}return vars;}else if(formula.junctor){return getAllVariables(formula.left).concat(getAllVariables(formula.right));}else if(formula.quantifier || formula.guard){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else {return 'exception';}}}function diffArray(a,b){var seen=[],diff=[];for(var i=0;i < b.length;i++) seen[b[i]] = true;for(var i=0;i < a.length;i++) if(!seen[a[i]])diff.push(a[i]);return diff;}peg$result = peg$startRuleFunction();if(peg$result !== peg$FAILED && peg$currPos === input.length){return peg$result;}else {if(peg$result !== peg$FAILED && peg$currPos < input.length){peg$fail({type:"end",description:"end of input"});}throw peg$buildException(null,peg$maxFailExpected,peg$maxFailPos < input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos < input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos + 1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos));}}return {SyntaxError:peg$SyntaxError,parse:peg$parse};})(); | ||
throw new Error("The formula contains unguarded variables!");}},peg$c18=function peg$c18(disjunction){return disjunction;},peg$c19={type:"other",description:"atom"},peg$c20={type:"other",description:"equality"},peg$c21=function peg$c21(equalityNoPars){return equalityNoPars;},peg$c22={type:"other",description:"equalityNoPars"},peg$c23="=",peg$c24={type:"literal",value:"=",description:"\"=\""},peg$c25=function peg$c25(term1,term2){return {relation:"Eq",arity:2,tuple:{term1:term1,term2:term2}};},peg$c26={type:"other",description:"quaternaryAtom"},peg$c27=function peg$c27(rel,tuple){return {relation:rel,arity:4,tuple:tuple};},peg$c28={type:"other",description:"ternaryAtom"},peg$c29=function peg$c29(rel,tuple){return {relation:rel,arity:3,tuple:tuple};},peg$c30={type:"other",description:"binaryAtom"},peg$c31=function peg$c31(rel,tuple){return {relation:rel,arity:2,tuple:tuple};},peg$c32={type:"other",description:"unaryAtom"},peg$c33=function peg$c33(rel,tuple){return {relation:rel,arity:1,tuple:tuple};},peg$c34={type:"other",description:"unaryAtomNoPars"},peg$c35=function peg$c35(rel,term1){return {relation:rel,arity:1,term1:term1};},peg$c36={type:"other",description:"nularyAtom"},peg$c37=function peg$c37(rel){return {relation:rel,arity:0,tuple:{}};},peg$c38={type:"other",description:"nularyAtomNoPars"},peg$c39=function peg$c39(rel){return {relation:rel,arity:0};},peg$c40={type:"other",description:"variableQuaternaryTuple"},peg$c41=",",peg$c42={type:"literal",value:",",description:"\",\""},peg$c43=function peg$c43(var1,var2,var3,var4){return [var1,var2,var3,var4];},peg$c44={type:"other",description:"variableTernaryTuple"},peg$c45=function peg$c45(var1,var2,var3){return [var1,var2,var3];},peg$c46={type:"other",description:"variableBinaryTuple"},peg$c47=function peg$c47(var1,var2){return [var1,var2];},peg$c48={type:"other",description:"variableUnaryTuple"},peg$c49=function peg$c49(var1){return [var1];},peg$c50={type:"other",description:"quaternaryTuple"},peg$c51=function peg$c51(term1,term2,term3,term4){return {term1:term1,term2:term2,term3:term3,term4:term4};},peg$c52={type:"other",description:"ternaryTuple"},peg$c53=function peg$c53(term1,term2,term3){return {term1:term1,term2:term2,term3:term3};},peg$c54={type:"other",description:"binaryTuple"},peg$c55=function peg$c55(term1,term2){return {term1:term1,term2:term2};},peg$c56={type:"other",description:"unaryTuple"},peg$c57=function peg$c57(term){return {term1:term};},peg$c58=function peg$c58(term){return {term1:term};},peg$c59={type:"other",description:"nularyTuple"},peg$c60=function peg$c60(){return {tuple:{}};},peg$c61={type:"other",description:"term"},peg$c62={type:"other",description:"relation"},peg$c63=/^[P-S]/,peg$c64={type:"class",value:"[P-S]",description:"[P-S]"},peg$c65=function peg$c65(relationString,index){return relationString.join('') + index;},peg$c66={type:"other",description:"variable"},peg$c67=/^[ux-z]/,peg$c68={type:"class",value:"[ux-z]",description:"[ux-z]"},peg$c69=function peg$c69(variableString,index){return variableString.join('') + index;},peg$c70={type:"other",description:"constant"},peg$c71=/^[a-e]/,peg$c72={type:"class",value:"[a-e]",description:"[a-e]"},peg$c73=function peg$c73(constantString,index){return constantString.join('') + index;},peg$c74={type:"other",description:"index"},peg$c75=/^[0-9]/,peg$c76={type:"class",value:"[0-9]",description:"[0-9]"},peg$c77=function peg$c77(digits){return digits.join('');},peg$c78={type:"other",description:"whitespace"},peg$c79=/^[ \t\n\r]/,peg$c80={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1,seenCR:false}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$resultsCache={},peg$result;if("startRule" in options){if(!(options.startRule in peg$startRuleFunctions)){throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");}peg$startRuleFunction = peg$startRuleFunctions[options.startRule];}function text(){return input.substring(peg$savedPos,peg$currPos);}function location(){return peg$computeLocation(peg$savedPos,peg$currPos);}function expected(description){throw peg$buildException(null,[{type:"other",description:description}],input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function error(message){throw peg$buildException(message,null,input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function peg$computePosDetails(pos){var details=peg$posDetailsCache[pos],p,ch;if(details){return details;}else {p = pos - 1;while(!peg$posDetailsCache[p]) {p--;}details = peg$posDetailsCache[p];details = {line:details.line,column:details.column,seenCR:details.seenCR};while(p < pos) {ch = input.charAt(p);if(ch === "\n"){if(!details.seenCR){details.line++;}details.column = 1;details.seenCR = false;}else if(ch === "\r" || ch === "\u2028" || ch === "\u2029"){details.line++;details.column = 1;details.seenCR = true;}else {details.column++;details.seenCR = false;}p++;}peg$posDetailsCache[pos] = details;return details;}}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return {start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}};}function peg$fail(expected){if(peg$currPos < peg$maxFailPos){return;}if(peg$currPos > peg$maxFailPos){peg$maxFailPos = peg$currPos;peg$maxFailExpected = [];}peg$maxFailExpected.push(expected);}function peg$buildException(message,expected,found,location){function cleanupExpected(expected){var i=1;expected.sort(function(a,b){if(a.description < b.description){return -1;}else if(a.description > b.description){return 1;}else {return 0;}});while(i < expected.length) {if(expected[i - 1] === expected[i]){expected.splice(i,1);}else {i++;}}}function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase();}return s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\x08/g,'\\b').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\f/g,'\\f').replace(/\r/g,'\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return '\\x0' + hex(ch);}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return '\\x' + hex(ch);}).replace(/[\u0100-\u0FFF]/g,function(ch){return "\\u0" + hex(ch);}).replace(/[\u1000-\uFFFF]/g,function(ch){return "\\u" + hex(ch);});}var expectedDescs=new Array(expected.length),expectedDesc,foundDesc,i;for(i = 0;i < expected.length;i++) {expectedDescs[i] = expected[i].description;}expectedDesc = expected.length > 1?expectedDescs.slice(0,-1).join(", ") + " or " + expectedDescs[expected.length - 1]:expectedDescs[0];foundDesc = found?"\"" + stringEscape(found) + "\"":"end of input";return "Expected " + expectedDesc + " but " + foundDesc + " found.";}if(expected !== null){cleanupExpected(expected);}return new peg$SyntaxError(message !== null?message:buildMessage(expected,found),expected,found,location);}function peg$parsenglFormula(){var s0,s1;var key=peg$currPos * 33 + 0,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parsedisjunction();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c0(s1);}s0 = s1;peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsedisjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 1,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseconjunction();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 124){s4 = peg$c1;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c2);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsedisjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c3(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseconjunction();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 2,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseprimary();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 38){s4 = peg$c4;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c5);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseconjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c6(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseprimary();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseexistential(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11;var key=peg$currPos * 33 + 3,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s6 = peg$c10;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){s8 = peg$parseprimary();if(s8 === peg$FAILED){s8 = peg$parseexistential();}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s10 = peg$c12;peg$currPos++;}else {s10 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s8);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariableTuple();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c14(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseguardedNegation(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 4,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsevariableTuple();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.substr(peg$currPos,2) === peg$c15){s4 = peg$c15;peg$currPos += 2;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c16);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseguardedNegation();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c17(s1,s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseprimary(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 5,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsedisjunction();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c18(s4);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseexistential();if(s0 === peg$FAILED){s0 = peg$parseguardedNegation();if(s0 === peg$FAILED){s0 = peg$parseatom();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseatom(){var s0,s1;var key=peg$currPos * 33 + 6,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseequality();if(s0 === peg$FAILED){s0 = peg$parsequaternaryAtom();if(s0 === peg$FAILED){s0 = peg$parseternaryAtom();if(s0 === peg$FAILED){s0 = peg$parsebinaryAtom();if(s0 === peg$FAILED){s0 = peg$parseunaryAtom();if(s0 === peg$FAILED){s0 = peg$parsenularyAtom();}}}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c19);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequality(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 7,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parseequalityNoPars();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s4 = peg$c12;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c21(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseequalityNoPars();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c20);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequalityNoPars(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 8,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 61){s4 = peg$c23;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c24);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseterm();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c25(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c22);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 9,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsequaternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c27(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c26);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 10,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c29(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c28);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 11,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsebinaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c31(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c30);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 12,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseunaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c33(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c32);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 13,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c35(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c34);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtom(){var s0,s1,s2,s3,s4,s5,s6;var key=peg$currPos * 33 + 14,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s4 = peg$c10;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s4 = [s4,s5,s6];s3 = s4;}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}if(s3 === peg$FAILED){s3 = peg$parse_();}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c37(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c36);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 15,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c39(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c38);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTuple(){var s0;var key=peg$currPos * 33 + 16,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsevariableQuaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableTernaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableBinaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableUnaryTuple();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableQuaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 17,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c41;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s12 = peg$c41;peg$currPos++;}else {s12 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s12 !== peg$FAILED){s13 = peg$parse_();if(s13 !== peg$FAILED){s14 = peg$parsevariable();if(s14 !== peg$FAILED){s15 = peg$parse_();if(s15 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c43(s2,s6,s10,s14);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c41;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parsevariable();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c43(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c40);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTernaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 18,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c41;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c45(s2,s6,s10);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c45(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c44);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableBinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 19,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c47(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c47(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c46);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableUnaryTuple(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 20,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c49(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s5 = peg$c12;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c49(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c48);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsetuple(){var s0;var key=peg$currPos * 33 + 21,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsequaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parseternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsebinaryTuple();if(s0 === peg$FAILED){s0 = peg$parseunaryTuple();if(s0 === peg$FAILED){s0 = peg$parsenularyTuple();}}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 22,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c41;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s11 = peg$c41;peg$currPos++;}else {s11 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){s13 = peg$parseterm();if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c51(s1,s5,s9,s13);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c41;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parseterm();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c51(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c50);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 23,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c41;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c53(s1,s5,s9);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c53(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c52);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 24,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c55(s1,s5);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c55(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c54);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 25,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c57(s1);}s0 = s1;if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c58(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c56);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 26,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c60();s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c59);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseterm(){var s0,s1;var key=peg$currPos * 33 + 27,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseconstant();if(s0 === peg$FAILED){s0 = peg$parsevariable();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c61);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parserelation(){var s0,s1,s2;var key=peg$currPos * 33 + 28,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c63.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c64);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c63.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c64);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c65(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c62);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariable(){var s0,s1,s2;var key=peg$currPos * 33 + 29,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c67.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c68);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c67.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c68);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c69(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c66);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconstant(){var s0,s1,s2;var key=peg$currPos * 33 + 30,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c71.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c72);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c71.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c72);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c73(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c70);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseindex(){var s0,s1,s2;var key=peg$currPos * 33 + 31,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c75.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c76);}}while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c75.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c76);}}}if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c77(s1);}s0 = s1;peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c74);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parse_(){var s0,s1;var key=peg$currPos * 33 + 32,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = [];if(peg$c79.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c80);}}while(s1 !== peg$FAILED) {s0.push(s1);if(peg$c79.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c80);}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c78);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function getAllVariables(_x){var _again=true;_function: while(_again) {var formula=_x;_again = false;if(formula.relation){var vars=[];var tuple=formula.tuple;for(var key in tuple) {vars.push(tuple[key]);}return vars;}else if(formula.junctor){return getAllVariables(formula.left).concat(getAllVariables(formula.right));}else if(formula.quantifier){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else if(formula.guard){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else {return 'exception';}}}function diffArray(a,b){var seen=[],diff=[];for(var i=0;i < b.length;i++) seen[b[i]] = true;for(var i=0;i < a.length;i++) if(!seen[a[i]])diff.push(a[i]);return diff;}peg$result = peg$startRuleFunction();if(peg$result !== peg$FAILED && peg$currPos === input.length){return peg$result;}else {if(peg$result !== peg$FAILED && peg$currPos < input.length){peg$fail({type:"end",description:"end of input"});}throw peg$buildException(null,peg$maxFailExpected,peg$maxFailPos < input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos < input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos + 1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos));}}return {SyntaxError:peg$SyntaxError,parse:peg$parse};})(); |
@@ -6,4 +6,4 @@ "use strict";module.exports = (function(){"use strict"; /* | ||
*/function peg$subclass(child,parent){function ctor(){this.constructor = child;}ctor.prototype = parent.prototype;child.prototype = new ctor();}function peg$SyntaxError(message,expected,found,location){this.message = message;this.expected = expected;this.found = found;this.location = location;this.name = "SyntaxError";if(typeof Error.captureStackTrace === "function"){Error.captureStackTrace(this,peg$SyntaxError);}}peg$subclass(peg$SyntaxError,Error);function peg$parse(input){var options=arguments.length > 1?arguments[1]:{},parser=this,peg$FAILED={},peg$startRuleFunctions={nglFormula:peg$parsenglFormula},peg$startRuleFunction=peg$parsenglFormula,peg$c0=function peg$c0(d){ //return getAllVariables(d) | ||
return d;},peg$c1="|",peg$c2={type:"literal",value:"|",description:"\"|\""},peg$c3=function peg$c3(left,right){return {junctor:"or",left:left,right:right};},peg$c4="&",peg$c5={type:"literal",value:"&",description:"\"&\""},peg$c6=function peg$c6(left,right){return {junctor:"and",left:left,right:right};},peg$c7="!",peg$c8={type:"literal",value:"!",description:"\"!\""},peg$c9=function peg$c9(variable,scope){return {quantifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c10="(",peg$c11={type:"literal",value:"(",description:"\"(\""},peg$c12=")",peg$c13={type:"literal",value:")",description:"\")\""},peg$c14=function peg$c14(variable,scope){return {quatifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c15=function peg$c15(tuple,scope){return {quatifier:"existential",quantifiedVariables:tuple,scope:scope};},peg$c16="&~",peg$c17={type:"literal",value:"&~",description:"\"&~\""},peg$c18=function peg$c18(relation,varsTuple,scope){var q1=varsTuple;var q2=getAllVariables(scope);if(diffArray(q2,q1).length === 0){ //return diffArray(q2,q1) | ||
return d;},peg$c1="|",peg$c2={type:"literal",value:"|",description:"\"|\""},peg$c3=function peg$c3(left,right){return {junctor:"or",left:left,right:right};},peg$c4="&",peg$c5={type:"literal",value:"&",description:"\"&\""},peg$c6=function peg$c6(left,right){return {junctor:"and",left:left,right:right};},peg$c7="!",peg$c8={type:"literal",value:"!",description:"\"!\""},peg$c9=function peg$c9(variable,scope){return {quantifier:"existential",quantifiedVariables:[variable],scope:scope};},peg$c10="(",peg$c11={type:"literal",value:"(",description:"\"(\""},peg$c12=")",peg$c13={type:"literal",value:")",description:"\")\""},peg$c14=function peg$c14(tuple,scope){return {quantifier:"existential",quantifiedVariables:tuple,scope:scope};},peg$c15="&~",peg$c16={type:"literal",value:"&~",description:"\"&~\""},peg$c17=function peg$c17(relation,varsTuple,scope){var q1=varsTuple;var q2=getAllVariables(scope);if(diffArray(q2,q1).length === 0){ //return diffArray(q2,q1) | ||
return {guard:"negation",guardingRelation:relation,guardingVariables:varsTuple,scope:scope};}else { //fail | ||
throw new Error("The formula contains unguarded variables!");}},peg$c19=function peg$c19(disjunction){return disjunction;},peg$c20={type:"other",description:"atom"},peg$c21={type:"other",description:"equality"},peg$c22=function peg$c22(equalityNoPars){return equalityNoPars;},peg$c23={type:"other",description:"equalityNoPars"},peg$c24="=",peg$c25={type:"literal",value:"=",description:"\"=\""},peg$c26=function peg$c26(term1,term2){return {relation:"Eq",arity:2,tuple:{term1:term1,term2:term2}};},peg$c27={type:"other",description:"quaternaryAtom"},peg$c28=function peg$c28(rel,tuple){return {relation:rel,arity:4,tuple:tuple};},peg$c29={type:"other",description:"ternaryAtom"},peg$c30=function peg$c30(rel,tuple){return {relation:rel,arity:3,tuple:tuple};},peg$c31={type:"other",description:"binaryAtom"},peg$c32=function peg$c32(rel,tuple){return {relation:rel,arity:2,tuple:tuple};},peg$c33={type:"other",description:"unaryAtom"},peg$c34=function peg$c34(rel,tuple){return {relation:rel,arity:1,tuple:tuple};},peg$c35={type:"other",description:"unaryAtomNoPars"},peg$c36=function peg$c36(rel,term1){return {relation:rel,arity:1,term1:term1};},peg$c37={type:"other",description:"nularyAtom"},peg$c38=function peg$c38(rel){return {relation:rel,arity:0,tuple:{}};},peg$c39={type:"other",description:"nularyAtomNoPars"},peg$c40=function peg$c40(rel){return {relation:rel,arity:0};},peg$c41={type:"other",description:"variableQuaternaryTuple"},peg$c42=",",peg$c43={type:"literal",value:",",description:"\",\""},peg$c44=function peg$c44(var1,var2,var3,var4){return [var1,var2,var3,var4];},peg$c45={type:"other",description:"variableTernaryTuple"},peg$c46=function peg$c46(var1,var2,var3){return [var1,var2,var3];},peg$c47={type:"other",description:"variableBinaryTuple"},peg$c48=function peg$c48(var1,var2){return [var1,var2];},peg$c49={type:"other",description:"variableUnaryTuple"},peg$c50=function peg$c50(var1){return [var1];},peg$c51={type:"other",description:"quaternaryTuple"},peg$c52=function peg$c52(term1,term2,term3,term4){return {term1:term1,term2:term2,term3:term3,term4:term4};},peg$c53={type:"other",description:"ternaryTuple"},peg$c54=function peg$c54(term1,term2,term3){return {term1:term1,term2:term2,term3:term3};},peg$c55={type:"other",description:"binaryTuple"},peg$c56=function peg$c56(term1,term2){return {term1:term1,term2:term2};},peg$c57={type:"other",description:"unaryTuple"},peg$c58=function peg$c58(term){return {term1:term};},peg$c59=function peg$c59(term){return {term1:term};},peg$c60={type:"other",description:"nularyTuple"},peg$c61=function peg$c61(){return {tuple:{}};},peg$c62={type:"other",description:"term"},peg$c63={type:"other",description:"relation"},peg$c64=/^[P-S]/,peg$c65={type:"class",value:"[P-S]",description:"[P-S]"},peg$c66=function peg$c66(relationString,index){return relationString.join('') + index;},peg$c67={type:"other",description:"variable"},peg$c68=/^[ux-z]/,peg$c69={type:"class",value:"[ux-z]",description:"[ux-z]"},peg$c70=function peg$c70(variableString,index){return variableString.join('') + index;},peg$c71={type:"other",description:"constant"},peg$c72=/^[a-e]/,peg$c73={type:"class",value:"[a-e]",description:"[a-e]"},peg$c74=function peg$c74(constantString,index){return constantString.join('') + index;},peg$c75={type:"other",description:"index"},peg$c76=/^[0-9]/,peg$c77={type:"class",value:"[0-9]",description:"[0-9]"},peg$c78=function peg$c78(digits){return digits.join('');},peg$c79={type:"other",description:"whitespace"},peg$c80=/^[ \t\n\r]/,peg$c81={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1,seenCR:false}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$resultsCache={},peg$result;if("startRule" in options){if(!(options.startRule in peg$startRuleFunctions)){throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");}peg$startRuleFunction = peg$startRuleFunctions[options.startRule];}function text(){return input.substring(peg$savedPos,peg$currPos);}function location(){return peg$computeLocation(peg$savedPos,peg$currPos);}function expected(description){throw peg$buildException(null,[{type:"other",description:description}],input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function error(message){throw peg$buildException(message,null,input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function peg$computePosDetails(pos){var details=peg$posDetailsCache[pos],p,ch;if(details){return details;}else {p = pos - 1;while(!peg$posDetailsCache[p]) {p--;}details = peg$posDetailsCache[p];details = {line:details.line,column:details.column,seenCR:details.seenCR};while(p < pos) {ch = input.charAt(p);if(ch === "\n"){if(!details.seenCR){details.line++;}details.column = 1;details.seenCR = false;}else if(ch === "\r" || ch === "\u2028" || ch === "\u2029"){details.line++;details.column = 1;details.seenCR = true;}else {details.column++;details.seenCR = false;}p++;}peg$posDetailsCache[pos] = details;return details;}}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return {start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}};}function peg$fail(expected){if(peg$currPos < peg$maxFailPos){return;}if(peg$currPos > peg$maxFailPos){peg$maxFailPos = peg$currPos;peg$maxFailExpected = [];}peg$maxFailExpected.push(expected);}function peg$buildException(message,expected,found,location){function cleanupExpected(expected){var i=1;expected.sort(function(a,b){if(a.description < b.description){return -1;}else if(a.description > b.description){return 1;}else {return 0;}});while(i < expected.length) {if(expected[i - 1] === expected[i]){expected.splice(i,1);}else {i++;}}}function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase();}return s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\x08/g,'\\b').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\f/g,'\\f').replace(/\r/g,'\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return '\\x0' + hex(ch);}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return '\\x' + hex(ch);}).replace(/[\u0100-\u0FFF]/g,function(ch){return "\\u0" + hex(ch);}).replace(/[\u1000-\uFFFF]/g,function(ch){return "\\u" + hex(ch);});}var expectedDescs=new Array(expected.length),expectedDesc,foundDesc,i;for(i = 0;i < expected.length;i++) {expectedDescs[i] = expected[i].description;}expectedDesc = expected.length > 1?expectedDescs.slice(0,-1).join(", ") + " or " + expectedDescs[expected.length - 1]:expectedDescs[0];foundDesc = found?"\"" + stringEscape(found) + "\"":"end of input";return "Expected " + expectedDesc + " but " + foundDesc + " found.";}if(expected !== null){cleanupExpected(expected);}return new peg$SyntaxError(message !== null?message:buildMessage(expected,found),expected,found,location);}function peg$parsenglFormula(){var s0,s1;var key=peg$currPos * 33 + 0,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parsedisjunction();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c0(s1);}s0 = s1;peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsedisjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 1,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseconjunction();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 124){s4 = peg$c1;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c2);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsedisjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c3(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseconjunction();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 2,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseprimary();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 38){s4 = peg$c4;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c5);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseconjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c6(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseprimary();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseexistential(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11;var key=peg$currPos * 33 + 3,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s6 = peg$c10;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){s8 = peg$parseprimary();if(s8 === peg$FAILED){s8 = peg$parseexistential();}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s10 = peg$c12;peg$currPos++;}else {s10 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c14(s4,s8);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariableTuple();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c15(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseguardedNegation(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 4,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsevariableTuple();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.substr(peg$currPos,2) === peg$c16){s4 = peg$c16;peg$currPos += 2;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c17);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseguardedNegation();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c18(s1,s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseprimary(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 5,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsedisjunction();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c19(s4);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseexistential();if(s0 === peg$FAILED){s0 = peg$parseguardedNegation();if(s0 === peg$FAILED){s0 = peg$parseatom();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseatom(){var s0,s1;var key=peg$currPos * 33 + 6,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseequality();if(s0 === peg$FAILED){s0 = peg$parsequaternaryAtom();if(s0 === peg$FAILED){s0 = peg$parseternaryAtom();if(s0 === peg$FAILED){s0 = peg$parsebinaryAtom();if(s0 === peg$FAILED){s0 = peg$parseunaryAtom();if(s0 === peg$FAILED){s0 = peg$parsenularyAtom();}}}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c20);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequality(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 7,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parseequalityNoPars();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s4 = peg$c12;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c22(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseequalityNoPars();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c21);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequalityNoPars(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 8,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 61){s4 = peg$c24;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c25);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseterm();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c26(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c23);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 9,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsequaternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c28(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c27);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 10,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c30(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c29);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 11,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsebinaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c32(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c31);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 12,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseunaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c34(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c33);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 13,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c36(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c35);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtom(){var s0,s1,s2,s3,s4,s5,s6;var key=peg$currPos * 33 + 14,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s4 = peg$c10;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s4 = [s4,s5,s6];s3 = s4;}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}if(s3 === peg$FAILED){s3 = peg$parse_();}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c38(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c37);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 15,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c40(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c39);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTuple(){var s0;var key=peg$currPos * 33 + 16,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsevariableQuaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableTernaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableBinaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableUnaryTuple();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableQuaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 17,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c42;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s12 = peg$c42;peg$currPos++;}else {s12 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s12 !== peg$FAILED){s13 = peg$parse_();if(s13 !== peg$FAILED){s14 = peg$parsevariable();if(s14 !== peg$FAILED){s15 = peg$parse_();if(s15 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c44(s2,s6,s10,s14);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c42;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parsevariable();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c44(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c41);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTernaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 18,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c42;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c46(s2,s6,s10);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c46(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c45);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableBinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 19,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c42;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c48(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c48(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c47);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableUnaryTuple(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 20,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c50(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s5 = peg$c12;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c50(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c49);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsetuple(){var s0;var key=peg$currPos * 33 + 21,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsequaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parseternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsebinaryTuple();if(s0 === peg$FAILED){s0 = peg$parseunaryTuple();if(s0 === peg$FAILED){s0 = peg$parsenularyTuple();}}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 22,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c42;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s11 = peg$c42;peg$currPos++;}else {s11 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){s13 = peg$parseterm();if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c52(s1,s5,s9,s13);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c42;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parseterm();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c52(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c51);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 23,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c42;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c54(s1,s5,s9);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c42;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c54(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c53);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 24,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c42;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c56(s1,s5);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c42;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c43);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c56(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c55);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 25,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c58(s1);}s0 = s1;if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c59(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c57);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 26,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c61();s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c60);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseterm(){var s0,s1;var key=peg$currPos * 33 + 27,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseconstant();if(s0 === peg$FAILED){s0 = peg$parsevariable();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c62);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parserelation(){var s0,s1,s2;var key=peg$currPos * 33 + 28,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c64.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c65);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c64.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c65);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c66(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c63);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariable(){var s0,s1,s2;var key=peg$currPos * 33 + 29,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c68.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c69);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c68.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c69);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c70(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c67);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconstant(){var s0,s1,s2;var key=peg$currPos * 33 + 30,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c72.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c73);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c72.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c73);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c74(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c71);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseindex(){var s0,s1,s2;var key=peg$currPos * 33 + 31,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c76.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c77);}}while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c76.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c77);}}}if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c78(s1);}s0 = s1;peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c75);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parse_(){var s0,s1;var key=peg$currPos * 33 + 32,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = [];if(peg$c80.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c81);}}while(s1 !== peg$FAILED) {s0.push(s1);if(peg$c80.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c81);}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c79);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function getAllVariables(_x){var _again=true;_function: while(_again) {var formula=_x;_again = false;if(formula.relation){var vars=[];var tuple=formula.tuple;for(var key in tuple) {vars.push(tuple[key]);}return vars;}else if(formula.junctor){return getAllVariables(formula.left).concat(getAllVariables(formula.right));}else if(formula.quantifier || formula.guard){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else {return 'exception';}}}function diffArray(a,b){var seen=[],diff=[];for(var i=0;i < b.length;i++) seen[b[i]] = true;for(var i=0;i < a.length;i++) if(!seen[a[i]])diff.push(a[i]);return diff;}peg$result = peg$startRuleFunction();if(peg$result !== peg$FAILED && peg$currPos === input.length){return peg$result;}else {if(peg$result !== peg$FAILED && peg$currPos < input.length){peg$fail({type:"end",description:"end of input"});}throw peg$buildException(null,peg$maxFailExpected,peg$maxFailPos < input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos < input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos + 1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos));}}return {SyntaxError:peg$SyntaxError,parse:peg$parse};})(); | ||
throw new Error("The formula contains unguarded variables!");}},peg$c18=function peg$c18(disjunction){return disjunction;},peg$c19={type:"other",description:"atom"},peg$c20={type:"other",description:"equality"},peg$c21=function peg$c21(equalityNoPars){return equalityNoPars;},peg$c22={type:"other",description:"equalityNoPars"},peg$c23="=",peg$c24={type:"literal",value:"=",description:"\"=\""},peg$c25=function peg$c25(term1,term2){return {relation:"Eq",arity:2,tuple:{term1:term1,term2:term2}};},peg$c26={type:"other",description:"quaternaryAtom"},peg$c27=function peg$c27(rel,tuple){return {relation:rel,arity:4,tuple:tuple};},peg$c28={type:"other",description:"ternaryAtom"},peg$c29=function peg$c29(rel,tuple){return {relation:rel,arity:3,tuple:tuple};},peg$c30={type:"other",description:"binaryAtom"},peg$c31=function peg$c31(rel,tuple){return {relation:rel,arity:2,tuple:tuple};},peg$c32={type:"other",description:"unaryAtom"},peg$c33=function peg$c33(rel,tuple){return {relation:rel,arity:1,tuple:tuple};},peg$c34={type:"other",description:"unaryAtomNoPars"},peg$c35=function peg$c35(rel,term1){return {relation:rel,arity:1,term1:term1};},peg$c36={type:"other",description:"nularyAtom"},peg$c37=function peg$c37(rel){return {relation:rel,arity:0,tuple:{}};},peg$c38={type:"other",description:"nularyAtomNoPars"},peg$c39=function peg$c39(rel){return {relation:rel,arity:0};},peg$c40={type:"other",description:"variableQuaternaryTuple"},peg$c41=",",peg$c42={type:"literal",value:",",description:"\",\""},peg$c43=function peg$c43(var1,var2,var3,var4){return [var1,var2,var3,var4];},peg$c44={type:"other",description:"variableTernaryTuple"},peg$c45=function peg$c45(var1,var2,var3){return [var1,var2,var3];},peg$c46={type:"other",description:"variableBinaryTuple"},peg$c47=function peg$c47(var1,var2){return [var1,var2];},peg$c48={type:"other",description:"variableUnaryTuple"},peg$c49=function peg$c49(var1){return [var1];},peg$c50={type:"other",description:"quaternaryTuple"},peg$c51=function peg$c51(term1,term2,term3,term4){return {term1:term1,term2:term2,term3:term3,term4:term4};},peg$c52={type:"other",description:"ternaryTuple"},peg$c53=function peg$c53(term1,term2,term3){return {term1:term1,term2:term2,term3:term3};},peg$c54={type:"other",description:"binaryTuple"},peg$c55=function peg$c55(term1,term2){return {term1:term1,term2:term2};},peg$c56={type:"other",description:"unaryTuple"},peg$c57=function peg$c57(term){return {term1:term};},peg$c58=function peg$c58(term){return {term1:term};},peg$c59={type:"other",description:"nularyTuple"},peg$c60=function peg$c60(){return {tuple:{}};},peg$c61={type:"other",description:"term"},peg$c62={type:"other",description:"relation"},peg$c63=/^[P-S]/,peg$c64={type:"class",value:"[P-S]",description:"[P-S]"},peg$c65=function peg$c65(relationString,index){return relationString.join('') + index;},peg$c66={type:"other",description:"variable"},peg$c67=/^[ux-z]/,peg$c68={type:"class",value:"[ux-z]",description:"[ux-z]"},peg$c69=function peg$c69(variableString,index){return variableString.join('') + index;},peg$c70={type:"other",description:"constant"},peg$c71=/^[a-e]/,peg$c72={type:"class",value:"[a-e]",description:"[a-e]"},peg$c73=function peg$c73(constantString,index){return constantString.join('') + index;},peg$c74={type:"other",description:"index"},peg$c75=/^[0-9]/,peg$c76={type:"class",value:"[0-9]",description:"[0-9]"},peg$c77=function peg$c77(digits){return digits.join('');},peg$c78={type:"other",description:"whitespace"},peg$c79=/^[ \t\n\r]/,peg$c80={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},peg$currPos=0,peg$savedPos=0,peg$posDetailsCache=[{line:1,column:1,seenCR:false}],peg$maxFailPos=0,peg$maxFailExpected=[],peg$silentFails=0,peg$resultsCache={},peg$result;if("startRule" in options){if(!(options.startRule in peg$startRuleFunctions)){throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");}peg$startRuleFunction = peg$startRuleFunctions[options.startRule];}function text(){return input.substring(peg$savedPos,peg$currPos);}function location(){return peg$computeLocation(peg$savedPos,peg$currPos);}function expected(description){throw peg$buildException(null,[{type:"other",description:description}],input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function error(message){throw peg$buildException(message,null,input.substring(peg$savedPos,peg$currPos),peg$computeLocation(peg$savedPos,peg$currPos));}function peg$computePosDetails(pos){var details=peg$posDetailsCache[pos],p,ch;if(details){return details;}else {p = pos - 1;while(!peg$posDetailsCache[p]) {p--;}details = peg$posDetailsCache[p];details = {line:details.line,column:details.column,seenCR:details.seenCR};while(p < pos) {ch = input.charAt(p);if(ch === "\n"){if(!details.seenCR){details.line++;}details.column = 1;details.seenCR = false;}else if(ch === "\r" || ch === "\u2028" || ch === "\u2029"){details.line++;details.column = 1;details.seenCR = true;}else {details.column++;details.seenCR = false;}p++;}peg$posDetailsCache[pos] = details;return details;}}function peg$computeLocation(startPos,endPos){var startPosDetails=peg$computePosDetails(startPos),endPosDetails=peg$computePosDetails(endPos);return {start:{offset:startPos,line:startPosDetails.line,column:startPosDetails.column},end:{offset:endPos,line:endPosDetails.line,column:endPosDetails.column}};}function peg$fail(expected){if(peg$currPos < peg$maxFailPos){return;}if(peg$currPos > peg$maxFailPos){peg$maxFailPos = peg$currPos;peg$maxFailExpected = [];}peg$maxFailExpected.push(expected);}function peg$buildException(message,expected,found,location){function cleanupExpected(expected){var i=1;expected.sort(function(a,b){if(a.description < b.description){return -1;}else if(a.description > b.description){return 1;}else {return 0;}});while(i < expected.length) {if(expected[i - 1] === expected[i]){expected.splice(i,1);}else {i++;}}}function buildMessage(expected,found){function stringEscape(s){function hex(ch){return ch.charCodeAt(0).toString(16).toUpperCase();}return s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\x08/g,'\\b').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\f/g,'\\f').replace(/\r/g,'\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(ch){return '\\x0' + hex(ch);}).replace(/[\x10-\x1F\x80-\xFF]/g,function(ch){return '\\x' + hex(ch);}).replace(/[\u0100-\u0FFF]/g,function(ch){return "\\u0" + hex(ch);}).replace(/[\u1000-\uFFFF]/g,function(ch){return "\\u" + hex(ch);});}var expectedDescs=new Array(expected.length),expectedDesc,foundDesc,i;for(i = 0;i < expected.length;i++) {expectedDescs[i] = expected[i].description;}expectedDesc = expected.length > 1?expectedDescs.slice(0,-1).join(", ") + " or " + expectedDescs[expected.length - 1]:expectedDescs[0];foundDesc = found?"\"" + stringEscape(found) + "\"":"end of input";return "Expected " + expectedDesc + " but " + foundDesc + " found.";}if(expected !== null){cleanupExpected(expected);}return new peg$SyntaxError(message !== null?message:buildMessage(expected,found),expected,found,location);}function peg$parsenglFormula(){var s0,s1;var key=peg$currPos * 33 + 0,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parsedisjunction();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c0(s1);}s0 = s1;peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsedisjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 1,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseconjunction();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 124){s4 = peg$c1;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c2);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsedisjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c3(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseconjunction();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconjunction(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 2,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseprimary();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 38){s4 = peg$c4;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c5);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseconjunction();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c6(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseprimary();}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseexistential(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11;var key=peg$currPos * 33 + 3,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariable();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s6 = peg$c10;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){s8 = peg$parseprimary();if(s8 === peg$FAILED){s8 = peg$parseexistential();}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s10 = peg$c12;peg$currPos++;}else {s10 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c9(s4,s8);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 33){s2 = peg$c7;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c8);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsevariableTuple();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseexistential();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c14(s4,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseguardedNegation(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 4,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsevariableTuple();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.substr(peg$currPos,2) === peg$c15){s4 = peg$c15;peg$currPos += 2;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c16);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseprimary();if(s6 === peg$FAILED){s6 = peg$parseguardedNegation();}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c17(s1,s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseprimary(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 5,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){s4 = peg$parsedisjunction();if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c18(s4);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseexistential();if(s0 === peg$FAILED){s0 = peg$parseguardedNegation();if(s0 === peg$FAILED){s0 = peg$parseatom();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseatom(){var s0,s1;var key=peg$currPos * 33 + 6,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseequality();if(s0 === peg$FAILED){s0 = peg$parsequaternaryAtom();if(s0 === peg$FAILED){s0 = peg$parseternaryAtom();if(s0 === peg$FAILED){s0 = peg$parsebinaryAtom();if(s0 === peg$FAILED){s0 = peg$parseunaryAtom();if(s0 === peg$FAILED){s0 = peg$parsenularyAtom();}}}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c19);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequality(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 7,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 40){s2 = peg$c10;peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s2 !== peg$FAILED){s3 = peg$parseequalityNoPars();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s4 = peg$c12;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c21(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$parseequalityNoPars();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c20);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseequalityNoPars(){var s0,s1,s2,s3,s4,s5,s6,s7;var key=peg$currPos * 33 + 8,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 61){s4 = peg$c23;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c24);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parseterm();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c25(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c22);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 9,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsequaternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c27(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c26);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 10,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseternaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c29(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c28);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 11,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parsebinaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c31(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c30);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtom(){var s0,s1,s2;var key=peg$currPos * 33 + 12,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseunaryTuple();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c33(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c32);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 13,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c35(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c34);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtom(){var s0,s1,s2,s3,s4,s5,s6;var key=peg$currPos * 33 + 14,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s4 = peg$c10;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s6 = peg$c12;peg$currPos++;}else {s6 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s6 !== peg$FAILED){s4 = [s4,s5,s6];s3 = s4;}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}}else {peg$currPos = s3;s3 = peg$FAILED;}if(s3 === peg$FAILED){s3 = peg$parse_();}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c37(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c36);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyAtomNoPars(){var s0,s1,s2;var key=peg$currPos * 33 + 15,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parserelation();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c39(s1);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c38);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTuple(){var s0;var key=peg$currPos * 33 + 16,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsevariableQuaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableTernaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableBinaryTuple();if(s0 === peg$FAILED){s0 = peg$parsevariableUnaryTuple();}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableQuaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 17,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c41;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s12 = peg$c41;peg$currPos++;}else {s12 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s12 !== peg$FAILED){s13 = peg$parse_();if(s13 !== peg$FAILED){s14 = peg$parsevariable();if(s14 !== peg$FAILED){s15 = peg$parse_();if(s15 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c43(s2,s6,s10,s14);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c41;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parsevariable();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c43(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c40);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableTernaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 18,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s8 = peg$c41;peg$currPos++;}else {s8 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s8 !== peg$FAILED){s9 = peg$parse_();if(s9 !== peg$FAILED){s10 = peg$parsevariable();if(s10 !== peg$FAILED){s11 = peg$parse_();if(s11 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c45(s2,s6,s10);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parsevariable();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c45(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c44);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableBinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 19,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s4 = peg$c41;peg$currPos++;}else {s4 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s4 !== peg$FAILED){s5 = peg$parse_();if(s5 !== peg$FAILED){s6 = peg$parsevariable();if(s6 !== peg$FAILED){s7 = peg$parse_();if(s7 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c47(s2,s6);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parsevariable();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c47(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c46);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariableUnaryTuple(){var s0,s1,s2,s3,s4,s5;var key=peg$currPos * 33 + 20,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parse_();if(s1 !== peg$FAILED){s2 = peg$parsevariable();if(s2 !== peg$FAILED){s3 = peg$parse_();if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c49(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parsevariable();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s5 = peg$c12;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s5 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c49(s3);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c48);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsetuple(){var s0;var key=peg$currPos * 33 + 21,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}s0 = peg$parsequaternaryTuple();if(s0 === peg$FAILED){s0 = peg$parseternaryTuple();if(s0 === peg$FAILED){s0 = peg$parsebinaryTuple();if(s0 === peg$FAILED){s0 = peg$parseunaryTuple();if(s0 === peg$FAILED){s0 = peg$parsenularyTuple();}}}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsequaternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17;var key=peg$currPos * 33 + 22,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c41;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s11 = peg$c41;peg$currPos++;}else {s11 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){s13 = peg$parseterm();if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c51(s1,s5,s9,s13);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s13 = peg$c41;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s13 !== peg$FAILED){s14 = peg$parse_();if(s14 !== peg$FAILED){s15 = peg$parseterm();if(s15 !== peg$FAILED){s16 = peg$parse_();if(s16 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s17 = peg$c12;peg$currPos++;}else {s17 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s17 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c51(s3,s7,s11,s15);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c50);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseternaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;var key=peg$currPos * 33 + 23,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s7 = peg$c41;peg$currPos++;}else {s7 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){s9 = peg$parseterm();if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c53(s1,s5,s9);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s9 = peg$c41;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s9 !== peg$FAILED){s10 = peg$parse_();if(s10 !== peg$FAILED){s11 = peg$parseterm();if(s11 !== peg$FAILED){s12 = peg$parse_();if(s12 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s13 = peg$c12;peg$currPos++;}else {s13 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s13 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c53(s3,s7,s11);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c52);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsebinaryTuple(){var s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;var key=peg$currPos * 33 + 24,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s3 = peg$c41;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){s5 = peg$parseterm();if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c55(s1,s5);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){s3 = peg$parseterm();if(s3 !== peg$FAILED){s4 = peg$parse_();if(s4 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 44){s5 = peg$c41;peg$currPos++;}else {s5 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c42);}}if(s5 !== peg$FAILED){s6 = peg$parse_();if(s6 !== peg$FAILED){s7 = peg$parseterm();if(s7 !== peg$FAILED){s8 = peg$parse_();if(s8 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s9 = peg$c12;peg$currPos++;}else {s9 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s9 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c55(s3,s7);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c54);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseunaryTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 25,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = peg$parseterm();if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c57(s1);}s0 = s1;if(s0 === peg$FAILED){s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parseterm();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c58(s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c56);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsenularyTuple(){var s0,s1,s2,s3;var key=peg$currPos * 33 + 26,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;if(input.charCodeAt(peg$currPos) === 40){s1 = peg$c10;peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c11);}}if(s1 !== peg$FAILED){s2 = peg$parse_();if(s2 !== peg$FAILED){if(input.charCodeAt(peg$currPos) === 41){s3 = peg$c12;peg$currPos++;}else {s3 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c13);}}if(s3 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c60();s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c59);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseterm(){var s0,s1;var key=peg$currPos * 33 + 27,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$parseconstant();if(s0 === peg$FAILED){s0 = peg$parsevariable();}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c61);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parserelation(){var s0,s1,s2;var key=peg$currPos * 33 + 28,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c63.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c64);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c63.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c64);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c65(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c62);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parsevariable(){var s0,s1,s2;var key=peg$currPos * 33 + 29,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c67.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c68);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c67.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c68);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c69(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c66);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseconstant(){var s0,s1,s2;var key=peg$currPos * 33 + 30,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c71.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c72);}}if(s2 !== peg$FAILED){while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c71.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c72);}}}}else {s1 = peg$FAILED;}if(s1 !== peg$FAILED){s2 = peg$parseindex();if(s2 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c73(s1,s2);s0 = s1;}else {peg$currPos = s0;s0 = peg$FAILED;}}else {peg$currPos = s0;s0 = peg$FAILED;}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c70);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parseindex(){var s0,s1,s2;var key=peg$currPos * 33 + 31,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = peg$currPos;s1 = [];if(peg$c75.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c76);}}while(s2 !== peg$FAILED) {s1.push(s2);if(peg$c75.test(input.charAt(peg$currPos))){s2 = input.charAt(peg$currPos);peg$currPos++;}else {s2 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c76);}}}if(s1 !== peg$FAILED){peg$savedPos = s0;s1 = peg$c77(s1);}s0 = s1;peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c74);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function peg$parse_(){var s0,s1;var key=peg$currPos * 33 + 32,cached=peg$resultsCache[key];if(cached){peg$currPos = cached.nextPos;return cached.result;}peg$silentFails++;s0 = [];if(peg$c79.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c80);}}while(s1 !== peg$FAILED) {s0.push(s1);if(peg$c79.test(input.charAt(peg$currPos))){s1 = input.charAt(peg$currPos);peg$currPos++;}else {s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c80);}}}peg$silentFails--;if(s0 === peg$FAILED){s1 = peg$FAILED;if(peg$silentFails === 0){peg$fail(peg$c78);}}peg$resultsCache[key] = {nextPos:peg$currPos,result:s0};return s0;}function getAllVariables(_x){var _again=true;_function: while(_again) {var formula=_x;_again = false;if(formula.relation){var vars=[];var tuple=formula.tuple;for(var key in tuple) {vars.push(tuple[key]);}return vars;}else if(formula.junctor){return getAllVariables(formula.left).concat(getAllVariables(formula.right));}else if(formula.quantifier){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else if(formula.guard){_x = formula.scope;_again = true;vars = tuple = key = undefined;continue _function;}else {return 'exception';}}}function diffArray(a,b){var seen=[],diff=[];for(var i=0;i < b.length;i++) seen[b[i]] = true;for(var i=0;i < a.length;i++) if(!seen[a[i]])diff.push(a[i]);return diff;}peg$result = peg$startRuleFunction();if(peg$result !== peg$FAILED && peg$currPos === input.length){return peg$result;}else {if(peg$result !== peg$FAILED && peg$currPos < input.length){peg$fail({type:"end",description:"end of input"});}throw peg$buildException(null,peg$maxFailExpected,peg$maxFailPos < input.length?input.charAt(peg$maxFailPos):null,peg$maxFailPos < input.length?peg$computeLocation(peg$maxFailPos,peg$maxFailPos + 1):peg$computeLocation(peg$maxFailPos,peg$maxFailPos));}}return {SyntaxError:peg$SyntaxError,parse:peg$parse};})(); |
{ | ||
"name": "nglformulaparser", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "nglformulaparser", | ||
@@ -5,0 +5,0 @@ "main": "lib/nglformulaparser.js", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
110352
24
1