var CLSetToString,CLToString,CToString,Constraint,ConstraintList,OM,OMNode,ProblemStore,alphaEquivalent,applyExpressionFunction,bindingConstraints1,bindingConstraints2,clearMetavariable,composeIterator,concatenateIterators,consistentPatterns,differenceIterator,expressionDepth,expressionFunction,expressionFunctionApplication,filterIterator,findDifferencesBetween,getSolution,isExpressionFunction,isExpressionFunctionApplication,isMetavariable,makeExpressionFunction,makeExpressionFunctionApplication,matchDebug,matchDebugOn,metavariableSymbol,multiReplace,newProblem,nextMatch,parentAddresses,partitionedAddresses,prefixIterator,ref,sameDepthAncestors,satisfiesBindingConstraints1,satisfiesBindingConstraints2,setMatchDebug,setMetavariable,subexpressionIterator,suffixIterator,trueValue,slice=[].slice,indexOf=[].indexOf||function(n){for(var t=0,e=this.length;t=0)return!1;c=n.name,indexOf.call(t,c)<0&&t.push(n.name)}else{if(p=n.name,indexOf.call(t,p)>=0)return!1;f=n.name,indexOf.call(o,f)<0&&o.push(n.name)}return!0},Constraint=function(){function n(n,t){this.pattern=n,this.expression=t}return n.prototype.copy=function(){return new n(this.pattern.copy(),this.expression.copy())},n.prototype.equals=function(n){return this.pattern.equals(n.pattern,!1)&&this.expression.equals(n.expression,!1)},n}(),ConstraintList=function(){function n(){var n,t,e,r,i,s,o,a,u,l,c,p,f;for(e=1<=arguments.length?slice.call(arguments,0):[],this.contents=e,this.nextNewVariableIndex=0,n=function(n){return function(t){if(/^v[0-9]+$/.test(t.name))return n.nextNewVariableIndex=Math.max(n.nextNewVariableIndex,parseInt(t.name.slice(1))+1)}}(this),f=function(n){return n.descendantsSatisfying(function(n){return"v"===n.type})},r=0,o=(l=this.contents).length;r-1&&s.contents.splice(e,1);return s},n.prototype.firstSatisfying=function(n){var t;return null!=(t=this.contents[this.indexAtWhich(n)])?t:null},n.prototype.firstPairSatisfying=function(n){var t,e,r,i,s,o,a,u,l,c;for(r=s=0,a=(l=this.contents).length;s=0)return!1;s.push(n.pattern.name)}return!0},n.prototype.lookup=function(n){var t,e,r,i;for(n instanceof OM||(n=OM.var(n)),setMetavariable(n),e=0,r=(i=this.contents).length;eo&&(r=(m=[i,r])[0],i=m[1],u=(v=[l,u])[0],l=v[1]),r.slice(0,-1),a=t.slice(0),a[u]=r.slice(0,-1),sameDepthAncestors(n,a);for(y=[],f=0,d=t.length;ft;e=0<=t?++n:--n)0<(r.subsetIndex&Math.pow(2,e))&&i.push(r.next.addresses[e]);return i}(),r.subsetIndex++,i):r.rest.length>0?(r.next=r.rest.shift(),r.subsetIndex=1,t()):null}},prefixIterator=function(n,t){var e;return e=!1,function(){return e?t():(e=!0,n)}},suffixIterator=function(n,t){var e;return e=!1,function(){var r;return null!==(r=n())||e||(r=t,e=!0),r}},composeIterator=function(n,t){return function(){var e;return(e=n())?t(e):null}},filterIterator=function(n,t){return function(){var e;for(e=n();e&&!t(e);)e=n();return e}},concatenateIterators=function(n,t){return function(){return n()||t()}},multiReplace=function(n,t,e){var r,i,s,o,a;for(a=n.copy(),i=0,s=t.length;i0&&!isExpressionFunctionApplication(n.pattern)})))return r=l.pattern,i=l.expression,r.type!==i.type?(matchDebug("\tnon-atomic case, type fail:",CToString(l)),[null,null]):(g=E(r),O=E(i),g.length!==O.length?(matchDebug("\tnon-atomic case, #children fail:",CToString(l)),[null,null]):(n=(D=n.minus(l)).plus.apply(D,function(){var n,t,e;for(e=[],h=n=0,t=g.length;n