% -*- root: main.tex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Temporary Macros for Outline Comparison %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\isIncluded}[1]{\textcolor{blue}{#1}} \newcommand{\notIncluded}[1]{\textcolor{red}{#1}} \newcommand{\xplural}{s\xspace} \xspaceaddexceptions{\xplural} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % COMMENTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %editing/highlighting sections \newcommand{\AHchange}[1]{\textcolor{blue}{#1}} \newcommand{\secrev}[1]{\color{red}#1\color{black}} \newcommand{\draft}{0} %%% Change this to non-zero to remove comments \ifnum\draft=0 \newcommand{\currentWork}[1]{\textcolor{red}{#1}} \newcommand{\BG}[1]{\todo[inline]{\textbf{Boris says:$\,$} #1}} \newcommand{\SF}[1]{\todo{\textbf{Su says:$\,$} #1}} \newcommand{\OK}[1]{\todo[color=gray]{\textbf{Oliver says:$\,$} #1}} \newcommand{\AH}[1]{\todo[inline, backgroundcolor=cyan, caption={}]{\textbf{Aaron says:$\,$} #1}} \newcommand{\AR}[1]{\todo[inline,color=green]{\textbf{Atri says:$\,$} #1}} \newcommand{\BGdel}[2]{\todo[inline]{\textbf{Boris deleted [#2]: {#1}}}} \else \newcommand{\BG}[1]{} \newcommand{\SF}[1]{} \newcommand{\OK}[1]{} \newcommand{\AH}[1]{} \newcommand{\AR}[1]{} \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % THEOREM LIKE ENVIRONMENTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %v---what is this? \DeclareMathAlphabet{\mathbbold}{U}{bbold}{m}{n} \newtheorem{Theorem}{Theorem}[section] \newtheorem{Definition}[Theorem]{Definition} \newtheorem{Lemma}[Theorem]{Lemma} \newtheorem{Proposition}[Theorem]{Proposition} \newtheorem{Corollary}[Theorem]{Corollary} \newtheorem{Example}[Theorem]{Example} \newtheorem{hypo}[Theorem]{Conjecture}%used in mult_distinct_p.tex \newtheorem{Problem}[Theorem]{Problem} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rel model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Need to have all Rel stuff in one place \newcommand{\tup}{t} \newcommand{\rel}{R} \newcommand{\reli}{S}%<----better names? \newcommand{\relii}{T} \newcommand{\db}{D} \newcommand{\query}{Q} \newcommand{\qhard}{\query_{hard}} \newcommand{\tset}{\mathcal{T}}%the set of tuples in a database \newcommand{\join}{\mathlarger\Join} \newcommand{\select}{\sigma} \newcommand{\project}{\pi} \newcommand{\union}{\cup} \newcommand{\rename}{\mathlarger\rho} \newcommand{\sch}{sch} \newcommand{\attr}[1]{attr\left(#1\right)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TERMINOLOGY AND ABBREVIATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Perhaps PDB abbreviations should go here? %Two-step (intensional evaluation model) \newcommand{\termStepOne}{Lineage Computation\xspace} \newcommand{\abbrStepOne}{LC\xspace} \newcommand{\termStepTwo}{Expectation Computation\xspace} \newcommand{\abbrStepTwo}{EC\xspace} % \newcommand{\expectProblem}{\textsc{Expected Result Multiplicity Problem}\xspace} \newcommand{\termSMB}{standard monomial basis\xspace} \newcommand{\abbrSMB}{SMB\xspace}%we already have this; one has to go \newcommand{\termSOP}{sum of products\xspace} \newcommand{\abbrSOP}{SOP\xspace} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Function Names and Typesetting % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\domain}{\func{Dom}} \newcommand{\func}[1]{\textsc{#1}\xspace} \newcommand{\isInd}[1]{\func{isInd}\inparen{#1}} \newcommand{\polyf}{\func{poly}} \newcommand{\evalmp}{\func{eval}} \newcommand{\degree}{\func{deg}} \newcommand{\size}{\func{size}} \newcommand{\depth}{\func{depth}} \newcommand{\topord}{\func{TopOrd}} \newcommand{\smbOf}[1]{\func{\abbrSMB}\inparen{#1}} %Verify if we need the above... %saving \treesize for now to keep latex from breaking \newcommand{\treesize}{\func{size}} %I believe this is used in the algo psuedocode \newcommand{\sign}{\func{sgn}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SEMIRINGS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\udom}{\mathcal{U}} \newcommand{\domK}{K} \newcommand{\semK}{\mathcal{K}} \newcommand{\semB}{\mathbb{B}} \newcommand{\semN}{\mathbb{N}} \newcommand{\semNX}{\mathbb{N}[\vct{X}]} \newcommand{\onesymbol}{\mathbbold{1}} \newcommand{\zerosymbol}{\mathbbold{0}} \newcommand{\multsymb}{\otimes} \newcommand{\addsymbol}{\oplus} \newcommand{\addK}{\addsymbol_{\semK}} \newcommand{\multK}{\multsymb_{\semK}} \newcommand{\oneK}{\onesymbol_{\semK}} \newcommand{\zeroK}{\zerosymbol_{\semK}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Incomplete DB/PDBs % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\idb}{{\Omega}} \newcommand{\pd}{{\mathcal{P}}}%pd for probability distribution \newcommand{\pdassign}{\mathcal{P}} \newcommand{\pdb}{\mathcal{D}} \newcommand{\dbbase}{\db_\idb} \newcommand{\dbbaseName}{deterministic bounding database\xspace} \newcommand{\pxdb}{\pdb_{\semNX}} \newcommand{\pndb}{\pdb_{\semN}} \newcommand{\nxdb}{D(\vct{X})}%\mathbb{N}[\vct{X}] db--Are we currently using this? \newcommand{\valworlds}{\eta}%valid worlds--in particular referring to something like a BIDB, where not all worlds have Pr[w] > 0. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Bag c-TIDB Notation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\bound}{c} \newcommand{\tupsetsize}{n} \newcommand{\tupset}{D} \newcommand{\gentupset}{\overline{D}} \newcommand{\world}{\inset{0,\ldots, c}} \newcommand{\worldvec}{\vct{W}} \newcommand{\worlds}{\world^\tupset} \newcommand{\bpd}{\mathcal{P}}%bpd for bag probability distribution %BIDB \newcommand{\block}{B} \newcommand{\bivar}{x_{\block, i}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Binary-BIDB Notation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\onebidbworlds}[1]{\bigtimes_{\tup\in #1}\inset{0, \bound_\tup}} %PDB Abbreviations \newcommand{\abbrOneBIDB}{\text{Binary-BIDB}\xspace} \newcommand{\abbrPDB}{\textnormal{PDB}\xspace} \newcommand{\abbrBPDB}{\textnormal{bag-PDB}\xspace} \newcommand{\abbrTIDB}{\textnormal{TIDB}\xspace}%replace \ti with this \newcommand{\abbrCTIDB}{\textnormal{$\bound$-TIDB}\xspace} \newcommand{\abbrTIDBs}{\textnormal{TIDBs}\xspace}%replace \ti with this \newcommand{\abbrBIDB}{\textnormal{BIDB}\xspace} \newcommand{\ti}{TIDB\xspace} \newcommand{\tis}{TIDBs\xspace} \newcommand{\bi}{BIDB\xspace} \newcommand{\bis}{BIDBs\xspace} \newcommand{\abbrNXPDB}{$\semNX$-encoded PDB\xspace} %not sure if we use these; arguably the above abbrev macros should have a name change \newcommand{\tiabb}{ti} \newcommand{\biabb}{bi} \newcommand{\biwset}{\idb_{\biabb}} \newcommand{\biord}{\leq_{x_\block}} \newcommand{\tiwset}{\idb_{\tiabb}} \newcommand{\bipd}{\pd_{\biabb}} \newcommand{\tipd}{\pd_{\tiabb}} \newcommand{\bipdb}{\pdb_{\biabb}} \newcommand{\tipdb}{\pdb_{\tiabb}} %-------------------------------- \newcommand{\probDist}{\vct{\probOf}}%<---I don't think we need this. \newcommand{\probAllTup}{\vct{\prob}}%<---I was using simply \vct{\prob}; decide on a convention \newcommand{\wSet}{\Omega}%<---We have \idb, the set of possible worlds; decide on one of these %Is this being used? \newcommand{\pdbx}{X_{DB}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Math Symbols, Functions/Operators, Containers % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Number Sets \newcommand{\domR}{\mathbb{R}} \newcommand{\domN}{\mathbb{N}} %Probability, Expectation \newcommand{\expct}{\mathop{\mathbb{E}}}%why not just call this \expect \newcommand{\probOf}{Pr}%probability function %Functions/Operators \newcommand{\abs}[1]{\left|#1\right|} \newcommand{\suchthat}{\;s.t.\;} %such that \newcommand{\comprehension}[2]{\left\{\;#1\;|\;#2\;\right\}} \newcommand{\eval}[1]{\llbracket #1 \rrbracket}%evaluation double brackets \newcommand{\evald}[2]{\eval{{#1}}_{#2}} %Containers \newcommand{\pbox}[1]{\left[#1\right]}%<---used for expectation \newcommand{\pbrace}[1]{\left\{#1\right\}} %consider replacing \pbrace with what is below \newcommand{\inparen}[1]{\left({#1}\right)} \newcommand{\inset}[1]{\left\{{#1}\right\}}%we already have this as \pbrace; need to pick one \newcommand{\intuple}[1]{\left\langle{#1}\right\rangle} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Variable, Polynomial and Vector Notation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Instance Variables \newcommand{\prob}{p} \newcommand{\wElem}{w} %an element of \vct{w} \newcommand{\worldinst}{W} %Polynomial Variables \newcommand{\pVar}{X}%<----not used but recomment instituting this--pVar for polyVar \newcommand{\kElem}{k}%the kth element<---where and how are we using this? %Random Variables \newcommand{\randWorld}{W} \newcommand{\rvworld}{\vct{\randWorld}} \newcommand{\randDB}{\vct{\db}} \newcommand{\rvW}{W}%\rvW for random variable of type World<---this is the same as \randWorld %One of these needs to go...I think... \newcommand{\randomvar}{W}%this little guy needs a home! %Container for Polynomial Params \newcommand{\polyinput}[2]{\left(#1,\ldots, #2\right)}%do we still use this? %Number of Variables--this could easily be number of tups--maybe move to Rel Model? \newcommand{\numvar}{n} %Number of blocks (BIDB) \newcommand{\numblock}{m} %Vector \newcommand{\vct}[1]{{\bf #1}} %norm \newcommand{\norm}[1]{\left\lVert#1\right\rVert} %using \wVec for world bit vector notation<-----Is this still the case? %Polynomial \newcommand{\hideg}{K} \newcommand{\poly}{\Phi} \newcommand{\genpoly}{\phi} \newcommand{\vars}[1]{\func{Vars}\inparen{#1}} \newcommand{\polyOf}[1]{\poly[#1]} \newcommand{\polyqdt}[3]{\polyOf{#1,#2,#3}} \newcommand{\apolyqdt}{\polyqdt{\query}{\tupset}{\tup}} \newcommand{\nxpolyqdt}{\polyqdt{\query}{\db_{\semNX}}{\tup}} \newcommand{\tupvar}[2]{X_{#1,#2}} \newcommand{\atupvar}{\tupvar{\rel}{\tup}} \newcommand{\polyX}{\poly\inparen{\vct{\pVar}}}%<---let's see if this proves handy \newcommand{\rpoly}{\widetilde{\poly}}%r for reduced as in reduced 'Q' \newcommand{\refpoly}[1]{\poly_{#1R}} \newcommand{\rpolyX}{\rpoly\inparen{\pVar}}%<---if this isn't something we use much, we can get rid of it \newcommand{\biDisProd}{\mathcal{B}}%bidb disjoint tuple products (def 2.5) \newcommand{\rExp}{\mathcal{T}}%the set of variables to reduce all exponents to 1 via modulus operation; I think \mathcal T collides with the notation used for the set of tuples in D \newcommand{\polyForTuple}{\poly_{\tup}}%do we use this?<--S 2 %Do we use this? \newcommand{\out}{output}%output aggregation over the output vector \newcommand{\prel}{\mathcal{\rel}}%What is this? \newcommand{\linsett}[3]{\Phi_{#1,#2}^{#3}}%Where is this used? \newcommand{\wbit}{w}%don't think we need this one %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Graph Notation % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\vset}{V} \newcommand{\edgeSet}{E} \newcommand{\gtype}[1]{\inparen{#1}} \newcommand{\esetType}[1]{\edgeSet^{\gtype{#1}}}%edge set for induced graph G^{\inparen{\ell}} \newcommand{\graph}[1]{G^{(#1)}} \newcommand{\numocc}[2]{\#\left(#1,#2\right)} \newcommand{\eset}[1]{E^{(#1)}_S} %edge set for arbitrary subgraph %I don't think we use these anymore \newcommand{\linsys}[1]{LS(\graph{#1})} \newcommand{\lintime}[1]{LT^{\graph{#1}}} \newcommand{\aug}[1]{AUG^{\graph{#1}}} \newcommand{\mtrix}[1]{M_{#1}} \newcommand{\dtrm}[1]{Det\left(#1\right)} \newcommand{\tuple}[1]{\left<#1\right>} \newcommand{\indicator}[1]{\onesymbol_{#1}} %---------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Circuit Notation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\circuit}{\vari{C}} \newcommand{\circuitset}[1]{\vari{CSet}\inparen{#1}} \newcommand{\circmult}{\times} \newcommand{\circplus}{+} \newcommand{\rinput}{\vari{R}} \newcommand{\linput}{\vari{L}} \newcommand{\inp}{\vari{input}} \newcommand{\inputs}{\vari{inputs}}%do we use this? \newcommand{\subcircuit}{\vari{S}}%does this clash/conflict with \coeffset? \newcommand{\gate}{\vari{g}} \newcommand{\lwght}{\vari{Lweight}} \newcommand{\rwght}{\vari{Rweight}} \newcommand{\prt}{\vari{partial}} \newcommand{\degval}{\vari{degree}} \newcommand{\type}{\vari{type}} \newcommand{\val}{\vari{val}} %types of C \newcommand{\var}{\textsc{var}\xspace} \newcommand{\tnum}{\textsc{num}\xspace} %Do we use this? \newcommand{\subgraph}{\vari{S}_{\equivtree(\circuit)}} %----- \newcommand{\cost}{\func{Cost}} \newcommand{\nullval}{NULL} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Datalog %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\dlImp}[0]{\,\ensuremath{\mathtt{{:}-}}\,} \newcommand{\dlDontcare}{\_} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Query Classes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\qClass}{\mathcal{Q}} \newcommand{\raPlus}{\ensuremath{\mathcal{RA}^{+}}\xspace} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % COMPLEXITY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\bigO}[1]{O\inparen{#1}} \newcommand{\littleo}[1]{o\inparen{#1}} \newcommand{\bigOmega}[1]{\Omega\inparen{#1}} \newcommand{\littleomega}[1]{\omega\inparen{#1}} \newcommand{\np}{{\sf NP}\xspace} \newcommand{\polytime}{{\sf P}\xspace} \newcommand{\sharpp}{\#{\sf P}\xspace} \newcommand{\sharpphard}{\#{\sf P}-hard\xspace} \newcommand{\sharpwone}{\#{\sf W}[1]\xspace} \newcommand{\sharpwzero}{\#{\sf W}[0]\xspace} \newcommand{\sharpwonehard}{\#{\sf W}[1]-hard\xspace} \newcommand{\ptime}{{\sf PTIME}\xspace} \newcommand{\timeOf}[1]{T_{#1}} \newcommand{\qruntime}[1]{T_{det}\inparen{#1}} \newcommand{\optquery}[1]{\func{OPT}\inparen{#1}} \newcommand{\qruntimenoopt}[1]{T_{det}\inparen{#1}}%need to get rid of this--needs to be propagated \newcommand{\jointime}[1]{T_{join}(#1)} \newcommand{\kmatchtime}{T_{match}\inparen{k, G}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Approx Alg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\randvar}{\vari{Y}} \newcommand{\coeffset}{S} \newcommand{\distinctvars}{d} \newcommand{\coeffitem}[1]{c_{#1}\cdot\prob^{\distinctvars_{#1}}} \newcommand{\unidist}[1]{Uniform\left(#1\right)} \newcommand{\samplesize}{N} \newcommand{\setsize}{m} \newcommand{\empmean}{\overline{\vct{\randvar}}} \newcommand{\setsum}{SUM} \newcommand{\ave}[1]{AVG(#1)} \newcommand{\hoeffestsum}{EST_{\setsum}} \newcommand{\error}{\epsilon} \newcommand{\conf}{\delta} %Pseudo Code Notation \newcommand{\plus}{\texttt{+}} \newcommand{\mult}{\texttt{\times}} \newcommand{\algname}[1]{\textsc{#1}\xspace} \newcommand{\approxq}{\algname{Approximate$\rpoly$}} \newcommand{\onepass}{\algname{OnePass}} \newcommand{\sampmon}{\algname{SampleMonomial}} %I don't think we use reduce anymore \newcommand{\reduce}{\algname{Reduce}} \newcommand{\ceil}[1]{\left\lceil #1 \right\rceil} \newcommand{\vari}[1]{\texttt{#1}\xspace} \newcommand{\accum}{\vari{acc}} \newcommand{\numsamp}{\vari{N}}%we have \samplesize above; we can get rid of one of these \newcommand{\numedge}{m}%we have set size above; we can get rid of one of these \newcommand{\bivec}{\vari{b}_{\vari{vec}}}%Section 3--proof in appendix for last theorem %Major cleaning needed to get rid of obsolete notation like expression trees, etc. %I don't know that we use any of the expression tree macros anymore; if we do, they would be predominantly in S 3 and 4 and their respective appendices %expression tree T \newcommand{\etree}{\vari{T}} \newcommand{\stree}{\vari{S}} \newcommand{\lchild}{\vari{L}} \newcommand{\rchild}{\vari{R}} %I don't think we talk of T but of C; let's update this. These should be used only in S 2 and S4 %members of T \newcommand{\wght}{\vari{weight}} \newcommand{\vpartial}{\vari{partial}} %%%%%%% \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} %\newcommand{\smb}{\poly\left(\vct{X}\right)}%smb for standard monomial basis; S 2<---this command is, I believe, unnecessary %not sure if we use this %not sure if we use this \newcommand{\etreeset}[1]{\vari{ET}\left(#1\right)} %verify this %\expandtree is a placeholder until I change other files with the new macro name \expansion \newcommand{\expandtree}[1]{\vari{E}(#1)} \newcommand{\expansion}[1]{\vari{E}(#1)} %not sure if we use this; I think the only occurrence would be in the def section of S 4 \newcommand{\elist}[1]{\vari{List}\pbox{#1}} %not sure if we use this anymore either \newcommand{\equivtree}{\vari{EET}} %expandtree tuple elements: \newcommand{\monom}{\vari{v}} \newcommand{\encMon}{\monom_{\vari{m}}} \newcommand{\lencMon}{\monom_{\vari{m}_\linput}} \newcommand{\rencMon}{\monom_{\vari{m}_\rinput}} \newcommand{\coef}{\vari{c}} %---------------------------------- % REPRESENTATIONS--this might be Boris' or Atri's stuff; verify if these macros are current \newcommand{\rmod}{Mod}%mod function which transforms N[X]-DB to N-DB (S 2 and App A) \newcommand{\reprs}{\mathcal{M}}%used to define Representation System in App A \newcommand{\repr}{M} %not sure about these? Perhaps in appendix B for \assign and S 5 for \support? \newcommand{\assign}{\psi}%assignment function from a world vector to polynomial output in App A \newcommand{\support}[1]{supp({#1})} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\eps}{\epsilon}%<----this is already defined as \error; need to pick one %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Forcing Layouts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\trimfigurespacing}{\vspace*{-5mm}} \newcommand{\mypar}[1]{\smallskip\noindent\textbf{{#1}.}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Proof/Section Headings % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Is this being used? \newcommand{\caseheading}[1]{\smallskip \noindent \textbf{#1}.~} %%%%% %%%Adding stuff below so that long chain of display equatoons can be split across pages \allowdisplaybreaks %Macro for mult complexity \newcommand{\multc}[2]{\overline{\mathcal{M}}\left({#1},{#2}\right)} %consider perhaps putting the tikz code into a separate file. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tikz Graph Symbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Shift macro \newcommand{\patternshift}[1]{\hspace*{-0.5mm}\raisebox{-0.35mm}{#1}\hspace*{-0.5mm} } %Global styles \tikzset{ default_node/.style={align=center, inner sep=0pt}, pattern_node/.style={fill=gray!50, draw=black, semithick, inner sep=0pt, minimum size = 2pt, circle}, tree_node/.style={default_node, draw=black, black, circle, text width=0.5cm, font=\bfseries, minimum size=0.65cm}, gen_tree_node/.style={default_node, draw, circle, text width=0.5cm, font=\bfseries, minimum size=0.65cm}, highlight_color/.style={black}, wght_color/.style={black}, highlight_treenode/.style={tree_node, draw=black, black}, edge from parent path={(\tikzparentnode) -- (\tikzchildnode)} } %Subgraph patterns \newcommand{\ed}{\patternshift{ \begin{tikzpicture}[every path/.style={thick, draw}]%[baseline=0.00005cm] %\begin{scope}[yshift=-5cm] \node at (0, 0)[pattern_node](bottom){}; \node [above=0.07cm of bottom, pattern_node] (top){}; \draw (top) -- (bottom); % \node at (0, -2)[pattern_node, blue](b2){}; % \node [above=0.07cm of b2, pattern_node, blue] (t2){}; % \draw (t2) -- (b2); %\end{scope} \end{tikzpicture} } } \newcommand{\kmatch}{\ed\cdots\ed^\kElem} \newcommand{\twodis}{\patternshift{ \begin{tikzpicture}[every path/.style={thick, draw}] \node at (0, 0) [pattern_node] (bottom1) {}; \node[above=0.07cm of bottom1, pattern_node] (top1) {} edge (bottom1); \node at (0.14, 0) [pattern_node] (bottom2) {}; \node [above=0.07cm of bottom2, pattern_node] (top2) {} edge (bottom2); \end{tikzpicture} } } \newcommand{\twopath}{\patternshift{ \begin{tikzpicture}[every path/.style={thick, draw}] \node at (0, 0.08) [pattern_node] (top){}; \node [below left=0.095cm and 0.05cm of top, pattern_node](left){}; \node[below right=0.095cm and 0.05cm of top, pattern_node](right){}; \draw (top) -- (left); \draw (top) -- (right); \end{tikzpicture} } } \newcommand{\threedis}{\patternshift{ \begin{tikzpicture}[every path/.style={thick, draw}] \node at (0, 0) [pattern_node] (bottom1) {}; \node[above=0.07cm of bottom1, pattern_node] (top1) {} edge (bottom1); \node at (0.14, 0) [pattern_node] (bottom2) {}; \node [above=0.07cm of bottom2, pattern_node] (top2) {} edge (bottom2); \node at (0.28, 0) [pattern_node] (bottom3) {}; \node [above=0.07cm of bottom3, pattern_node] (top3) {} edge (bottom3); \end{tikzpicture} } } \newcommand{\tri}{\patternshift{ \begin{tikzpicture}[every path/.style={ thick, draw}] \node at (0, 0.08) [pattern_node] (top){}; \node [below left=0.08cm and 0.01cm of top, pattern_node](left){} edge (top); \node[below right=0.08cm and 0.01cm of top, pattern_node](right){} edge (top) edge (left); \end{tikzpicture} } } \newcommand{\twopathdis}{\ed~\twopath} \newcommand{\threepath}{\patternshift{ \begin{tikzpicture}[every path/.style={thick, draw}] \node at (0, 0) [pattern_node] (node1a) {}; \node [above=0.07cm of node1a, pattern_node] (node1b) {} edge (node1a); \node [right=0.099cm of node1a, pattern_node] (node2b) {}; %edge [semithick] (node1b); \node [above=0.07cm of node2b, pattern_node] (node3b) {} edge (node2b); \draw (node1b) -- (node3b); \end{tikzpicture} } } \newcommand{\oneint}{\patternshift{ \begin{tikzpicture}[level/.style={sibling distance=0.14cm, level distance=0.15cm}, every path/.style={thick, draw}] \node at (0, 0) [pattern_node] {} [grow=down] child{node [pattern_node]{}} child {node [pattern_node] {}} child{node [pattern_node] {}}; \end{tikzpicture} } } \newcommand{\bsym}[1]{\boldsymbol{#1}}%b for bold; sym for symbol \newcommand{\sg}[1]{S^{(#1)}} %%% Local Variables: %%% mode: latex %%% TeX-master: "main" %%% End: