From 4fe79fd1c712f81a68e9feda2bd9e53bf58799ca Mon Sep 17 00:00:00 2001 From: Aaron Huber Date: Wed, 9 Jun 2021 12:42:26 -0400 Subject: [PATCH] Notation changes started. --- .../ICDT/ICDT-submission-review.docx | Bin 0 -> 27891 bytes Reviewer Comments/PODS/Reviewer Comments.docx | Bin 0 -> 17392 bytes app_one-pass-analysis.tex | 2 +- app_one-pass-eval-notes.tex | 4 +- approx_alg.tex | 2 +- intro-new.tex | 14 +- macros.tex | 552 ++++++++++-------- poly-form.tex | 26 +- prob-def.tex | 9 +- ra-to-poly.tex | 32 +- 10 files changed, 334 insertions(+), 307 deletions(-) create mode 100644 Reviewer Comments/ICDT/ICDT-submission-review.docx create mode 100644 Reviewer Comments/PODS/Reviewer Comments.docx diff --git a/Reviewer Comments/ICDT/ICDT-submission-review.docx b/Reviewer Comments/ICDT/ICDT-submission-review.docx new file mode 100644 index 0000000000000000000000000000000000000000..298c043c49d9dc39f062cb113884afc6f104fa99 GIT binary patch literal 27891 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 literal 0 HcmV?d00001 diff --git a/Reviewer Comments/PODS/Reviewer Comments.docx b/Reviewer Comments/PODS/Reviewer Comments.docx new file mode 100644 index 0000000000000000000000000000000000000000..be86e966f2b04e233b8d03b0f1a25c36a11f1f4e GIT binary patch literal 17392 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 0$, $\expct\pbox{W^k} = \expct\pbox{W}$, which means that $\expct\pbox{\Phi^2}$ simplifies to: \begin{footnotesize} \begin{equation*} -\expct\pbox{L_a^2}\expct\pbox{L_b} + \expct\pbox{L_b}\expct\pbox{L_d} + \expct\pbox{L_b}\expct\pbox{L_c} + 2\expct\pbox{L_a}\expct\pbox{L_b}\expct\pbox{L_d} + 2\expct\pbox{L_a}\expct\pbox{L_b}\expct\pbox{L_c} + 2\expct\pbox{L_b}\expct\pbox{L_d}\expct\pbox{L_c} +\expct\pbox{L_a}\expct\pbox{L_b} + \expct\pbox{L_b}\expct\pbox{L_d} + \expct\pbox{L_b}\expct\pbox{L_c} + 2\expct\pbox{L_a}\expct\pbox{L_b}\expct\pbox{L_d} + 2\expct\pbox{L_a}\expct\pbox{L_b}\expct\pbox{L_c} + 2\expct\pbox{L_b}\expct\pbox{L_d}\expct\pbox{L_c} \end{equation*} \end{footnotesize} \noindent This property leads us to consider a structure related to the lineage polynomial. @@ -197,7 +197,7 @@ For any polynomial $\poly(\vct{X})$, define the \emph{reduced polynomial} $\rpol With $\Phi^2$ as an example, we have: \begin{align*} \widetilde{\Phi^2}(L_a, L_b, L_c, L_d) -=&\; L_aL_b + L_bL_d + L_bW_c + 2L_aL_bL_d + 2L_aL_bL_c + 2L_bL_cL_d +=&\; L_aL_b + L_bL_d + L_bL_c + 2L_aL_bL_d + 2L_aL_bL_c + 2L_bL_cL_d \end{align*} It can be verified that the reduced polynomial is a closed form of the expected count (i.e., $\expct\pbox{\Phi^2} = \widetilde{\Phi^2}(\probOf\pbox{L_a=1}, \probOf\pbox{L_b=1}, \probOf\pbox{L_c=1}), \probOf\pbox{L_d=1})$). In fact, we show in \Cref{lem:exp-poly-rpoly} that this equivalence holds for {\em all} UCQs over TIDB/BIDB. diff --git a/macros.tex b/macros.tex index bef95a4..8496de9 100644 --- a/macros.tex +++ b/macros.tex @@ -1,41 +1,201 @@ % -*- root: main.tex -*- -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% NOTATION -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%Circuits -\newcommand{\caseheading}[1]{\smallskip \noindent \textbf{#1}.~} -%%%%% -\newcommand{\wElem}{w} %an element of \vct{w} -\newcommand{\suchthat}{\;|\;} %such that -\newcommand{\kElem}{k}%the kth element -%RA-to-Poly Notation -\newcommand{\polyinput}[2]{\left(#1,\ldots, #2\right)} -\newcommand{\numvar}{n} + +\newcommand{\xplural}{s\xspace} +\xspaceaddexceptions{\xplural} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% COMMENTS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\BG}[1]{\todo{\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[backgroundcolor=cyan]{\textbf{Aaron says:$\,$} #1}} +\newcommand{\AR}[1]{\todo[color=green]{\textbf{Atri says:$\,$} #1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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 + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Rel model +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Need to have all Rel stuff in one place +\newcommand{\tup}{t} \newcommand{\rel}{R} -\newcommand{\prel}{\mathcal{\rel}} -\newcommand{\reli}{S} +\newcommand{\reli}{S}%<----better names? \newcommand{\relii}{T} \newcommand{\db}{D} -\newcommand{\idb}{\Omega} -\newcommand{\pdb}{\mathcal{D}} -\newcommand{\pxdb}{\mathbf{D}} -\newcommand{\nxdb}{D(\vct{X})}%\mathbb{N}[\vct{X}] db -\newcommand{\tset}{\mathcal{T}}%the set of tuples in a database -\newcommand{\pd}{\vct{P}}%pd for probability distribution -\newcommand{\eval}[1]{\llbracket #1 \rrbracket}%evaluation double brackets -\newcommand{\evald}[2]{\eval{{#1}}_{#2}} -\newcommand{\linsett}[3]{\Phi_{#1,#2}^{#3}} \newcommand{\query}{Q} - +\newcommand{\tset}{\mathcal{T}}%the set of tuples in a database \newcommand{\join}{\Join} \newcommand{\select}{\sigma} \newcommand{\project}{\pi} \newcommand{\union}{\cup} \newcommand{\sch}{sch} \newcommand{\attr}[1]{attr\left(#1\right)} -\newcommand{\rw}{\textbf{W}}%\rw for random world + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TERMINOLOGY AND ABBREVIATIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Perhaps PDB abbreviations should go here? +\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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Function Names and Typesetting % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\domain}{\func{Dom}} +\newcommand{\func}[1]{\textsc{#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}\xspace} +\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{\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{\pdb}{\mathcal{D}} +\newcommand{\pxdb}{\pdb_{\semNX}}%<---changed from the origninal \mathbf{\db} +\newcommand{\nxdb}{D(\vct{X})}%\mathbb{N}[\vct{X}] db--Are we currently using this? + +%BIDB +\newcommand{\block}{b} +\newcommand{\bivar}{x_{\block, i}} + +%PDB Abbreviations +\newcommand{\abbrPDB}{\textnormal{PDB}\xspace} +\newcommand{\ti}{TIDB\xspace} +\newcommand{\tis}{TIDBs\xspace} +\newcommand{\bi}{BIDB\xspace} +\newcommand{\bis}{BIDBs\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}}%Consider changing this to \domR +\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}{\;|\;} %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 + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Variable, Polynomial and Vector Notation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Instance Variables +\newcommand{\prob}{p} +\newcommand{\wElem}{w} %an element of \vct{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{\randDB}{\overline{\db}} +\newcommand{\rvW}{W}%\rvW for random variable of type World +%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} +%Vector +\newcommand{\vct}[1]{{\bf #1}} +%using \wVec for world bit vector notation<-----Is this still the case? +%Polynomial +\newcommand{\poly}{\Phi} +\newcommand{\polyX}{\poly\inparen{\pVar}}%<---let's see if this proves handy +\newcommand{\rpoly}{\widetilde{\poly}}%r for reduced as in reduced 'Q' +\newcommand{\rpolyX}{\rpoly\inparen{\pVar}}%<---if this isn't something we use much, we can get rid of it +\newcommand{\polyForTuple}{\poly_{\tup}}%do we use this? +%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{\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}}} @@ -43,12 +203,34 @@ \newcommand{\dtrm}[1]{Det\left(#1\right)} \newcommand{\tuple}[1]{\left<#1\right>} \newcommand{\indicator}[1]{\onesymbol\inparen{#1}} +%---------------------------------------------- + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Circuit Notation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\circuit}{\vari{C}} +\newcommand{\circuitset}[1]{\vari{CSet}\inparen{#1}} +\newcommand{\circmult}{\times} +\newcommand{\circplus}{+} +%formally \rchild and \lchild +\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}} +%Do we use this? +\newcommand{\subgraph}{\vari{S}_{\equivtree(\circuit)}} +%----- +\newcommand{\cost}{\func{Cost}} +\newcommand{\nullval}{NULL} + -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Query Classes -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\qClass}{\mathcal{Q}} -\newcommand{\raPlus}{\ensuremath{\mathcal{RA}^{+}}\xspace} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Datalog @@ -56,9 +238,24 @@ \newcommand{\dlImp}[0]{\,\ensuremath{\mathtt{{:}-}}\,} \newcommand{\dlDontcare}{\_} -%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Query Classes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\qClass}{\mathcal{Q}} +\newcommand{\raPlus}{\ensuremath{\mathcal{RA}^{+}}\xspace} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% COMPLEXITY +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\sharpphard}{\#P-hard\xspace} +\newcommand{\sharpwonehard}{\#W[1]-hard\xspace} +\newcommand{\ptime}{PTIME\xspace} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Approx Alg -%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\randvar}{Y} \newcommand{\coeffset}{S} \newcommand{\distinctvars}{d} @@ -74,6 +271,7 @@ \newcommand{\conf}{\delta} + %Pseudo Code Notation \newcommand{\plus}{\texttt{+}} \newcommand{\mult}{\texttt{\times}} @@ -81,18 +279,23 @@ \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}} -\newcommand{\numedge}{m} -\newcommand{\bivec}{\vari{b}_{\vari{vec}}} +\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{\val}{\vari{val}} \newcommand{\wght}{\vari{weight}} @@ -103,77 +306,82 @@ %%%%%%% \renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}} -\newcommand{\smb}{\poly\left(\vct{X}\right)}%smb for standard monomial basis -\newcommand{\smbOf}[1]{\textsc{SMB}(#1)} +%\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{\coef}{\vari{c}} %---------------------------------- -\newcommand{\abs}[1]{\left|#1\right|} -\newcommand{\func}[1]{\textsc{#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}\xspace} -%saving \treesize for now to keep latex from breaking -\newcommand{\treesize}{\func{size}} -\newcommand{\sign}{\func{sgn}} -%Random Variable -\newcommand{\randomvar}{W} -\newcommand{\domain}{\func{Dom}} -%PDBs -\newcommand{\pdbx}{X_{DB}} -\newcommand{\prob}{p} -\newcommand{\probOf}{P} -\newcommand{\probDist}{\vct{\probOf}} -\newcommand{\probAllTup}{\vct{\prob}} -\newcommand{\wSet}{\Omega} -\newcommand{\ti}{TIDB\xspace} -\newcommand{\tis}{TIDBs\xspace} -\newcommand{\bi}{BIDB\xspace} -\newcommand{\bis}{BIDBs\xspace} -\newcommand{\tiabb}{ti} -\newcommand{\biabb}{bi} -\newcommand{\biwset}{\idb_{\biabb}} -\newcommand{\block}{b} -\newcommand{\biord}{\leq_{x_\block}} -\newcommand{\tiwset}{\idb_{\tiabb}} -\newcommand{\bipd}{\pd_{\biabb}} -\newcommand{\tipd}{\pd_{\tiabb}} -\newcommand{\bipdb}{\pdb_{\biabb}} -\newcommand{\bivar}{x_{\block, i}} -\newcommand{\tipdb}{\pdb_{\tiabb}} -% REPRESENTATIONS -\newcommand{\rmod}{Mod} -\newcommand{\reprs}{\mathcal{M}} + + + +% 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} -%Polynomial Reformulation -\newcommand{\wbit}{w} -\newcommand{\expct}{\mathop{\mathbb{E}}} -\newcommand{\pbox}[1]{\left[#1\right]} -\newcommand{\pbrace}[1]{\left\{#1\right\}} -\newcommand{\vct}[1]{{\bf #1}} -%using \wVec for world bit vector notation -\newcommand{\poly}{Q} -\newcommand{\rpoly}{\widetilde{Q}}%r for reduced as in reduced 'Q' -\newcommand{\polyForTuple}{\poly_{\tup}} -\newcommand{\out}{output}%output aggregation over the output vector -\newcommand{\numocc}[2]{\#\left(#1,#2\right)} + + + + + + + + + + + +%not sure about these? Perhaps in appendix B for \assign and S 5 for \support? +\newcommand{\assign}{\varphi} +\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. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %Graph Symbols +% Tikz Graph Symbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Shift macro \newcommand{\patternshift}[1]{\hspace*{-0.5mm}\raisebox{-0.35mm}{#1}\hspace*{-0.5mm} } @@ -264,172 +472,6 @@ \newcommand{\sg}[1]{S^{(#1)}} - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% COMMENTS -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand{\BG}[1]{\todo{\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[backgroundcolor=cyan]{\textbf{Aaron says:$\,$} #1}} -\newcommand{\SR}[1]{\todo[backgroundcolor=white]{\textbf{Note to self:$\,$} #1}} -\newcommand{\AR}[1]{\todo[color=green]{\textbf{Atri says:$\,$} #1}} - -%\newcommand{\AR}[1]{} -%\newcommand{\AH}[1]{} -%\newcommand{\SF}[1]{} -%\newcommand{\BG}[1]{} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%Revision Parameters -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\revision}[1]{\color{blue}{#1}\color{black}\xspace} -\newcommand{\oldstuff}[1]{\color{gray}{#1}\color{black}\xspace} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%Circuit Notation -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\circuit}{\vari{C}} -\newcommand{\circuitset}[1]{\vari{CSet}(#1)} -\newcommand{\circmult}{\times} -\newcommand{\circplus}{+} -%formally \rchild and \lchild -\newcommand{\rinput}{\vari{R}} -\newcommand{\linput}{\vari{L}} -\newcommand{\inp}{\vari{input}} -\newcommand{\inputs}{\vari{inputs}} -\newcommand{\subcircuit}{\vari{S}} -\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{\subgraph}{\vari{S}_{\equivtree(\circuit)}} -\newcommand{\cost}{\func{Cost}} -\newcommand{\nullval}{NULL} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%Sets -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\reals}{\mathbb{R}} -% -%borrowed from Su and Boris; Ihave them here for reference purposes. -%needs to be cleaned up -% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% THEOREM LIKE ENVIRONMENTS -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\DeclareMathAlphabet{\mathbbold}{U}{bbold}{m}{n} - -\newtheorem{Theorem}{Theorem}[section] -\newtheorem{Definition}[Theorem]{Definition} -\newtheorem{Lemma}[Theorem]{Lemma} -\newtheorem{Proposition}[Theorem]{Proposition} -\newtheorem{Property}[Theorem]{Property} -\newtheorem{Corollary}[Theorem]{Corollary} -\newtheorem{Claim}[Theorem]{Claim} -\newtheorem{Example}[Theorem]{Example} -\newtheorem{Axiom}[Theorem]{Axiom} -\newtheorem{Question}[Theorem]{Question} -\newtheorem{Assumption}[Theorem]{Assumption} -\newtheorem{hypo}[Theorem]{Conjecture} - - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Rel model -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand{\tup}{t} -\newcommand{\comprehension}[2]{\left\{\;#1\;|\;#2\;\right\}} - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% SEMIRINGS -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\udom}{\mathcal{U}} -\newcommand{\semN}{\mathbb{N}} -\newcommand{\domN}{\mathbb{N}} -\newcommand{\semB}{\mathbb{B}} -\newcommand{\semNX}{\mathbb{N}[\vct{X}]} -\newcommand{\domK}{K} -\newcommand{\semK}{\mathcal{K}} - -\newcommand{\support}[1]{supp({#1})} - -\newcommand{\onesymbol}{\mathbbold{1}} -\newcommand{\zerosymbol}{\mathbbold{0}} -\newcommand{\multsymb}{\otimes} -\newcommand{\addsymbol}{\oplus} -\newcommand{\addormultsymbol}{\bigcdot} -\newcommand{\monsymbol}{\ominus} - -\newcommand{\addK}{\addsymbol_{\semK}} -\newcommand{\multK}{\multsymb_{\semK}} -\newcommand{\genopK}{\odot_{\semK}} -\newcommand{\monK}{\monsymbol_{\semK}} -\newcommand{\oneK}{\onesymbol_{\semK}} -\newcommand{\zeroK}{\zerosymbol_{\semK}} -\newcommand{\addOf}[1]{\addsymbol_{#1}} -\newcommand{\multOf}[1]{\multsymb_{#1}} -\newcommand{\monOf}[1]{\monsymbol_{#1}} -\newcommand{\oneOf}[1]{\onesymbol_{#1}} -\newcommand{\zeroOf}[1]{\zerosymbol_{#1}} - -\newcommand{\dbDomK}[1]{\mathcal{DB}_{#1}} - -\newcommand{\assign}{\varphi} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% COMPLEXITY -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\sharpphard}{\#P-hard\xspace} -\newcommand{\sharpwonehard}{\#W[1]-hard\xspace} -\newcommand{\ptime}{PTIME\xspace} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TERMINOLOGY AND ABBREVIATIONS -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\expectProblem}{\textsc{Expected Result Multiplicity Problem}\xspace} -\newcommand{\termSMB}{standard monomial basis\xspace} -\newcommand{\abbrSMB}{SMB\xspace} -\newcommand{\termSOP}{sum of products\xspace} -\newcommand{\abbrSOP}{SOP} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\eps}{\epsilon} -\newcommand{\inparen}[1]{\left({#1}\right)} -\newcommand{\inset}[1]{\left\{{#1}\right\}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Forcing Layouts -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\trimfigurespacing}{\vspace*{-5mm}} -\newcommand{\mypar}[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)} - - %%% Local Variables: %%% mode: latex %%% TeX-master: "main" diff --git a/poly-form.tex b/poly-form.tex index 68dbc73..f6ca5c9 100644 --- a/poly-form.tex +++ b/poly-form.tex @@ -6,19 +6,19 @@ We now introduce some terminology % for polynomials and develop a reduced form (a closed form of the polynomial's expectation) for polynomials over probability distributions derived from a \bi or \ti. %We will use $(X + Y)^2$ as a running example. -Note that a polynomial over $\vct{X}=(X_1,\dots,X_n)$ is formally defined as: +Note that a polynomial over $\vct{X}=(X_1,\dots,X_n)$ is formally defined as (with $c_\vct{i} \in \domN$): \begin{equation} \label{eq:sop-form} -Q(X_1,\dots,X_n)=\sum_{\vct{d}=(d_1,\dots,d_n)\in \semN^n} c_{\vct{d}}\cdot \prod_{i=1}^n X_i^{d_i}. +\poly\inparen{X_1,\dots,X_n}=\sum_{\vct{d}=(d_1,\dots,d_n)\in \semN^n} c_{\vct{d}}\cdot \prod_{i=1}^n X_i^{d_i}. \end{equation} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{Definition}[Standard Monomial Basis]\label{def:smb} -From above, the term $\prod_{i=1}^n X_i^{d_i}$ is a {\em monomial}. A polynomial $Q(\vct{X})$ is in standard monomial basis (SMB) when we keep only the terms with $c_{\vct{i}}\ne 0$ from \Cref{eq:sop-form}. +From above, the term $\prod_{i=1}^n X_i^{d_i}$ is a {\em monomial}. A polynomial $\poly\inparen{\vct{X}}$ is in standard monomial basis (\abbrSMB) when we keep only the terms with $c_{\vct{i}}\ne 0$ from \Cref{eq:sop-form}. \end{Definition} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% We consider \abbrSMB as the default representation of a polynomial. -We use $\smbOf{\poly}$ to denote the SMB form of a polynomial $\poly$. +We use $\smbOf{\poly}$ to denote the \abbrSMB form of a polynomial $\poly$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{Definition}[Degree]\label{def:degree} @@ -29,21 +29,7 @@ The degree of polynomial $\poly(\vct{X})$ is the largest $\sum_{i=1}^n d_i$ such The degree of the polynomial $X^2+2XY+Y^2$ is $2$. Product terms in lineage arise only from join operations (\Cref{fig:nxDBSemantics}), so intuitively, the degree of a lineage polynomial is analogous to the largest number of joins in any clause of the UCQ query that created it. In this paper we consider only finite degree polynomials. -We call a polynomial $\query(\vct{X})$ a \emph{\bi-lineage polynomial} (resp., \emph{\ti-lineage polynomial}, or simply lineage polynomial), if -%\AH{Why is it required for the tuple to be n-ary? I think this slightly confuses me since we have n tuples.} -% OK: agreed w/ AH, this can be treated as implicit -there exists a $\raPlus$ query $\query$, \bi $\pxdb$ (\ti $\pxdb$, or $\semNX$-PDB $\pxdb$), and tuple $\tup$ such that $\query(\vct{X}) = \query(\pxdb)(\tup)$. % Before proceeding, note that the following is assume that polynomials are \bis (which subsume \tis as a special case). - -%\SF{Where is $\block_{i, j}$ used? Is it $X_{\block_{1, 1}}$ or $X_{\block_1, 1}$ ?} -% and the probability distribution of $\pxdb$ is uniquely determined based on a probability vector $\vct{p}$ that associates each tuple a probability -% variables are independent of each other (or disjoint if they are from the same block) and each variable $X$ is associated with a probability $\vct{p}(X) = \pd[X = 1]$. Thus, we are dealing with polynomials $\poly(\vct{X})$ that are annotations of a tuple in the result of a query $\query$ over a BIDB $\pxdb$ where $\vct{X}$ is the set of variables that occur in annotations of tuples of $\pxdb$. - -% While the definition of polynomial $\poly(\vct{X})$ over a $\bi$ input doesn't change, we introduce an alternative notation which will come in handy. Given $\ell$ blocks, we write $\poly(\vct{X})$ = $\poly(X_{\block_1, 1},\ldots, X_{\block_1, \abs{\block_1}},$ $\ldots, X_{\block_\ell, \abs{\block_\ell}})$, where $\abs{\block_i}$ denotes the size of $\block_i$, and $\block_{i, j}$ denotes tuple $j$ residing in block $i$ for $j$ in $[\abs{\block_i}]$. -% The number of tuples in the $\bi$ instance can be (trivially) computed as $\numvar = \sum\limits_{i = 1}^{\ell}\abs{\block_i}$ . - - - - +We call a polynomial $\poly\inparen{\vct{X}}$ a \emph{\bi-lineage polynomial} (resp., \emph{\ti-lineage polynomial}, or simply lineage polynomial), if there exists a \AH{Which formalism? UCQ?}$\raPlus$ query $\query$, \bi $\pxdb$ (\ti $\pxdb$, or $\semNX$-PDB $\pxdb$), and tuple $\tup$ such that $\poly\inparen{\vct{X}} = \query(\pxdb)(\tup)$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{Definition}[Modding with a set]\label{def:mod-set} @@ -126,7 +112,7 @@ Consider $\poly(X, Y) = (X + Y)(X + Y)$ where $X$ and $Y$ are from different blo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{Definition}[Valid Worlds] For probability distribution $\probDist$, % and its corresponding probability mass function $\probOf$, -the set of valid worlds $\eta$ consists of all the worlds with probability value greater than $0$; i.e., for variable vector $\vct{W}$ +the set of valid worlds $\eta$ consists of all the worlds with probability value greater than $0$; i.e., for random world variable vector $\vct{W}$ \[ \eta = \comprehension{\vct{w}}{\probOf[\vct{W} = \vct{w}] > 0} \] diff --git a/prob-def.tex b/prob-def.tex index 1a09f32..d271fc7 100644 --- a/prob-def.tex +++ b/prob-def.tex @@ -11,7 +11,7 @@ We represent query polynomials via {\em arithmetic circuits}~\cite{arith-complex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{Definition}[Circuit]\label{def:circuit} -A circuit $\circuit$ is a Directed Acyclic Graph (DAG) whose source nodes (in degree of $0$) consist of elements in either $\reals$ or $\vct{X}$. The internal nodes and (the single) sink node of $\circuit$ (corresponding to the result tuple $t$) have binary input and are either sum ($\circplus$) or product ($\circmult$) gates. +A circuit $\circuit$ is a Directed Acyclic Graph (DAG) whose source nodes (in degree of $0$) consist of elements in either $\domR$ or $\vct{X}$. The internal nodes and (the single) sink node of $\circuit$ (corresponding to the result tuple $t$) have binary input and are either sum ($\circplus$) or product ($\circmult$) gates. % Each node in a circuit $\circuit$ has the following members: \type, \val, \vpartial, \vari{input}, \degval and \vari{Lweight}, \vari{Rweight}, where \type is the type of value stored in the node (one of $\{\circplus, \circmult, \var, \tnum\}$, \val is the value stored (a constant or variable), and \vari{input} is the list of the nodes inputs. We use $\circuit_\linput$ to denote the left input and $\circuit_\rinput$ the right input or the sink of circuit $\circuit$. %The member \degval holds the degree of \circuit. @@ -108,13 +108,12 @@ Denote $\polyf(\circuit)$ to be the function from circuit $\circuit$ to its corr Note that $\circuit$ need not encode an expression in SMB. For instance, $\circuit$ could represent a compressed form of the running example, such as $(X + 2Y)(2X - Y)$, as shown in \Cref{fig:circuit}, while $\polyf(\circuit) = 2X^2+3XY-2Y^2$. \begin{Definition}[Circuit Set]\label{def:circuit-set} -$\circuitset{\smb}$ is the set of all possible circuits $\circuit$ such that $\polyf(\circuit) = \poly(\vct{X})$. +$\circuitset{\smbOf{\polyX}}$ is the set of all possible circuits $\circuit$ such that $\polyf(\circuit) = \smbOf\polyX$. \end{Definition} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -The circuit of \Cref{fig:circuit} is an element of $\circuitset{2X^2+3XY-2Y^2}$. One can think of $\circuitset{\smb}$ as the infinite set of circuits each of which model an encoding (factorization) equal to $\polyf(\circuit)$. -%\supset \{2X^2 + 3XY - 2Y^2, (X + 2Y)(2X - Y), X(2X - Y) + 2Y(2X - Y), 2X(X + 2Y) - Y(X + 2Y)\}$. +The circuit of \Cref{fig:circuit} is an element of $\circuitset{2X^2+3XY-2Y^2}$. One can think of $\circuitset{\smbOf{\polyX}}$ as the infinite set of circuits each of which model an encoding (factorization) equal to $\polyf(\circuit)$. Note that \Cref{def:circuit-set} implies that $\circuit \in \circuitset{\polyf(\circuit)}$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -126,7 +125,7 @@ Note that \Cref{def:circuit-set} implies that $\circuit \in \circuitset{\polyf(\ Let $\vct{X} = (X_1, \ldots, X_n)$, and $\pdb$ be an $\semNX$-PDB over $\vct{X}$ with probability distribution $\pd$ over assignments $\vct{X} \to \{0,1\}$, $\query$ an n-ary query, and $t$ an n-ary tuple. The \expectProblem is defined as follows:\\[-7mm] \begin{center} -\textbf{Input}: A circuit $\circuit \in \circuitset{\smb}$ for $\poly(\vct{X}) = \query(\pxdb)(t)$ +\textbf{Input}: A circuit $\circuit \in \circuitset{\smbOf{\polyX}}$ for $\poly(\vct{X}) = \query(\pxdb)(t)$ \hspace*{5mm}\textbf{Output}: $\expct_{\vct{W} \sim \pd}[\poly(\vct{W})]$ \end{center} \end{Definition} diff --git a/ra-to-poly.tex b/ra-to-poly.tex index a9d3b46..1dd5b9b 100644 --- a/ra-to-poly.tex +++ b/ra-to-poly.tex @@ -4,7 +4,7 @@ \section{Background and Notation}\label{sec:background} \iffalse -\subsection{Superlinearity of Bag PDBs}\label{sec:suplin-bags} +\subsection{Superlinearity of Bag \abbrPDB\xplural}\label{sec:suplin-bags} Moving forward, we focus exclusively on bags. For $Q()\dlImp$$OnTime(\text{City}), Route(\text{City}_1, \text{City}_2),$ $OnTime(\text{City}')$ over the bag relations of \Cref{fig:ex-shipping-simp}, consider the product query $\poly^2()\dlImp Q \times Q$. The factorized representation of $\poly^2$ is (for simplicity we ignore the random variables of $Route$ since each variable has probability of $1$): \begin{equation*} @@ -33,18 +33,18 @@ With $\poly^2$ as an example, we have: It can be verified that the reduced polynomial is a closed form of the expected count (i.e., $\expct\pbox{\poly^2} = \rpoly(\probOf\pbox{L_a=1}, \probOf\pbox{L_b=1}, \probOf\pbox{L_c=1}), \probOf\pbox{L_d=1})$). The reduced form of a lineage polynomial can be obtained but requires a linear scan over the clauses of an SOP encoding of the polynomial. Note that for a compressed representation, this scheme would require an exponential number of computations in the size of the compressed representation. In \Cref{sec:hard}, we use $\rpoly$ to prove our hardness results . -%In prior work on lineage-based Bag-PDBs~\cite{kennedy:2010:icde:pip,DBLP:conf/vldb/AgrawalBSHNSW06,yang:2015:pvldb:lenses} where this encoding is implicitly assumed, computing the expected count is linear in the size of the encoding. +%In prior work on lineage-based Bag-\abbrPDB\xplural~\cite{kennedy:2010:icde:pip,DBLP:conf/vldb/AgrawalBSHNSW06,yang:2015:pvldb:lenses} where this encoding is implicitly assumed, computing the expected count is linear in the size of the encoding. %In general however, compressed encodings of the polynomial can be exponentially smaller in $k$ for $k$-products --- the query $\poly^k$ obtained by taking the product of $k$ copies of $\poly$ as a factorized encoding of size $6\cdot k$, while the SOP encoding is of size $2\cdot 3^k$. %This leads us to the \textbf{central question of this paper}: %\begin{quote} %{\em -%Is it always the case that the expectation of a UCQ in a Bag-PDB can be computed in time linear in the size of the \textbf{compressed} lineage polynomial?} +%Is it always the case that the expectation of a UCQ in a Bag-\abbrPDB can be computed in time linear in the size of the \textbf{compressed} lineage polynomial?} %\end{quote} -%If so, then Bag-PDBs can indeed compete with deterministic databases. +%If so, then Bag-\abbrPDB\xplural can indeed compete with deterministic databases. %This is unfortunately not the case, and an approximation is required. \fi -\subsection{Probabilistic Databases (PDBs)} +\subsection{Probabilistic Databases (\abbrPDB\xplural)} An \textit{incomplete database} $\idb$ is a set of deterministic databases $\db$ called possible worlds. Denote the schema of $\db$ as $\sch(\db)$. A \textit{probabilistic database} $\pdb$ is a pair $(\idb, \pd)$ where $\idb$ is an incomplete database and $\pd$ is a probability distribution over $\idb$. Queries over probabilistic databases are evaluated using the so-called possible world semantics. Under the possible world semantics, the result of a query $\query$ over an incomplete database $\idb$ is the set of query answers produced by evaluating $\query$ over each possible world: $\query(\idb) = \comprehension{\query(\db)}{\db \in \idb}$. @@ -53,12 +53,12 @@ For a probabilistic database $\pdb = (\idb, \pd)$, the result of a query is th % \[\forall \db \in \query(\idb): \pd'(\db) = \sum_{\db' \in \idb: \query(\db') = \db} \pd(\db') \] -Let $\semNX$ denote the set of polynomials over variables $\vct{X}=(X_1,\dots,X_n)$ with natural number coefficients and exponents. +Let $\semNX$ denote the set of polynomials over variables $\vct{X}=(X_1,\dots,X_\numvar)$ with natural number coefficients and exponents. We model incomplete relations using Green et. al.'s $\semNX$-databases~\cite{DBLP:conf/pods/GreenKT07}, discussed in detail in \Cref{subsec:supp-mat-krelations}. % and summarized here. $\semNX$-relations are functions from tuples to elements of $\semNX$, typically called annotations. We write $R(t)$ to denote the polynomial annotating tuple $t$ in relation $R$. Note that $R(t)$ is the lineage polynomial for $t$. -Each possible world is defined by an assignment of $N$ binary values $\vct{W} \in \{0, 1\}^{\abs{\vct{X}}}$ to $\vct{X}$. -The multiplicity of $t \in R$ in this possible world, denoted $R(t)(\vct{W})$, is obtained by evaluating the polynomial annotating $t$ on $\vct{W}$. +Each possible world is defined by an assignment of $\numvar$ binary values $\vct{\wElem} \in \{0, 1\}^{\numvar}$ to $\vct{X}$. +The multiplicity of $t \in R$ in this possible world, denoted $R(t)(\vct{\wElem})$, is obtained by evaluating the polynomial annotating $t$ on $\vct{\wElem}$. $\semNX$-relations are closed under $\raPlus$ (\Cref{fig:nxDBSemantics}). @@ -88,12 +88,12 @@ $\semNX$-relations are closed under $\raPlus$ (\Cref{fig:nxDBSemantics}). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -We will use $\semNX$-PDB $\pxdb$, defined as the tuple $(\idb_{\semNX}, \pd)$, where $\semNX$-database $\idb_{\semNX}$ is paired with probability distribution $\pd$. -We denote by $\polyForTuple$ the annotation of tuple $t$ in the result of $\query$ on an implicit $\semNX$-PDB (i.e., $\polyForTuple = \query(\pxdb)(t)$ for some $\pxdb$) and as before, interpret it as a function $\polyForTuple: \{0,1\}^{|\vct X|} \rightarrow \semN$ from vectors of variable assignments to the corresponding value of the annotating polynomial. -$\semNX$-PDBs and a function $\rmod$ (which transforms an $\semNX$-PDB to classical, or $\semN$-PDB~\cite{DBLP:conf/pods/GreenKT07,feng:2019:sigmod:uncertainty}) are both formalized in \Cref{subsec:supp-mat-background}. +We will use $\semNX$-\abbrPDB $\pxdb$, defined as the tuple $(\idb_{\semNX}, \pd)$, where $\semNX$-database $\idb_{\semNX}$ is paired with probability distribution $\pd$. +We denote by $\polyForTuple$ the annotation of tuple $t$ in the result of $\query$ on an implicit $\semNX$-\abbrPDB (i.e., $\polyForTuple = \query(\pxdb)(t)$ for some $\pxdb$) and as before, interpret it as a function $\polyForTuple: \{0,1\}^{\numvar} \rightarrow \semN$ from vectors of variable assignments to the corresponding value of the annotating polynomial. +$\semNX$-\abbrPDB\xplural and a function $\rmod$ (which transforms an $\semNX$-\abbrPDB to a classical bag-\abbrPDB, or $\semN$-\abbrPDB~\cite{DBLP:conf/pods/GreenKT07,feng:2019:sigmod:uncertainty}) are both formalized in \Cref{subsec:supp-mat-background}. \begin{Proposition}[Expectation of polynomials]\label{prop:expection-of-polynom} - Given an $\semN$-PDB $\pdb = (\idb,\pd)$ and $\semNX$-PDB $\pxdb = (\idb_{\semNX}',\pd')$ where $\rmod(\pxdb) = \pdb$, we have: - $ \expct_{\idb \sim \pd}[\query(\idb)(t)] = \expct_{\vct{W} \sim \pd'}\pbox{\polyForTuple(\vct{W})}. $ + Given an $\semN$-\abbrPDB $\pdb = (\idb,\pd)$ and $\semNX$-\abbrPDB $\pxdb = (\idb_{\semNX}',\pd')$ where $\rmod(\pxdb) = \pdb$, we have: + $ \expct_{\randDB \sim \pd}[\query(\randDB)(t)] = \expct_{\randWorld\sim \pd'}\pbox{\polyForTuple(\randWorld)}. $ \footnote{Although assumed by most prior work on set-probabilistic databases, e.g., as an obvious consequence of~\cite{IL84a}'s Theorem 7.1, we are unaware of any formal proof for bag-probabilistic databases.} \end{Proposition} \noindent A formal proof of \Cref{prop:expection-of-polynom} is given in \Cref{subsec:expectation-of-polynom-proof}. @@ -102,15 +102,15 @@ We focus on this problem from now on, assume an implicit result tuple, and so dr \subsubsection{\tis and \bis} \label{subsec:tidbs-and-bidbs} -In this paper, we focus on two popular forms of PDBs: Block-Independent (\bi) and Tuple-Independent (\ti) PDBs. +In this paper, we focus on two popular forms of \abbrPDB\xplural: Block-Independent (\bi) and Tuple-Independent (\ti) \abbrPDB\xplural. % -A \bi $\pxdb = (\idb_{\semNX}, \pd)$ is an $\semNX$-PDB such that (i) every tuple is annotated with either $0$ (i.e., the tuple does not exist) or a unique variable $X_i$ and (ii) that the tuples $\tup$ of $\pxdb$ for which $\pxdb(\tup) \neq 0$ can be partitioned into a set of blocks such that variables from separate blocks are independent of each other and variables from the same block are disjoint events. +A \bi $\pxdb = (\idb_{\semNX}, \pd)$ is an $\semNX$-\abbrPDB such that (i) every tuple is annotated with either $0$ (i.e., the tuple does not exist) or a unique variable $X_i$ and (ii) that the tuples $\tup$ of $\pxdb$ for which $\pxdb(\tup) \neq 0$ can be partitioned into a set of blocks such that variables from separate blocks are independent of each other and variables from the same block are disjoint events. In other words, each random variable corresponds to the event of a single tuple's presence. % A \emph{\ti} is a \bi where each block contains exactly one tuple. \Cref{subsec:supp-mat-ti-bi-def} explains \tis and \bis in greater detail. % -In a \bi (and by extension a \ti) $\pxdb$, tuples are partitioned into $\ell$ blocks $\block_1, \ldots, \block_\ell$ where tuple $t_{i,j} \in \block_i$ is associated with a probability $\prob_{\tup_{i,j}} = \pd[X_{i,j} = 1]$, and is annotated with a unique variable $X_{i,j}$.\footnote{ +In a \bi (and by extension a \ti) $\pxdb$, tuples are partitioned into $\ell$ blocks $\block_1, \ldots, \block_\ell$ where tuple $t_{i,j} \in \block_i$ is associated with a probability $\prob_{\tup_{i,j}} = \probOf[X_{i,j} = 1]$, and is annotated with a unique variable $X_{i,j}$.\footnote{ Although only a single independent, $[\abs{\block_i}+1]$-valued variable is customarily used per block, we decompose it into $\abs{\block_i}$ correlated $\{0,1\}$-valued variables per block that can be used directly in polynomials (without an indicator function). For $t_j \in b_i$, the event $(X_{i,j} = 1)$ corresponds to the event $(X_i = j)$ in the customary annotation scheme. } Because blocks are independent and tuples from the same block are disjoint, the probabilities $\prob_{\tup_{i,j}}$ and the blocks induce the probability distribution $\pd$ of $\pxdb$.