570 likes | 651 Views
Abstract State Machines and Computationally Complete Query Languages. Andreas Blass, U Michigan Yuri Gurevich, Microsoft Research & U Michigan Jan Van den Bussche, U Limburg. Outline. Databases and queries Query languages: while new , while new sets ASMs Notions of polynomial time
E N D
Abstract State MachinesandComputationally Complete Query Languages Andreas Blass, U Michigan Yuri Gurevich, Microsoft Research & U Michigan Jan Van den Bussche, U Limburg
Outline • Databases and queries • Query languages: • whilenew, whilenewsets • ASMs • Notions of polynomial time • Comparisons
Relational databases • Database schema = Finite set S of relation names with associated arities • DatabaseB over S = Finite structure over S • Finite domain D of atomic values • For each R S, a k-ary relation RB onD
Relational databases • Database schema = Finite set S of relation names with associated arities • DatabaseB over S = Finite structure over S • Finite domain D of atomic values • For each R S, a k-ary relation RB onD arity associated to R in S
Relational databases • Database schema = Finite set S of relation names with associated arities • DatabaseB over S = Finite structure over S • Finite domain D of atomic values • For each R S, a k-ary relation RB onD E.g. Graph: arity associated to R in S
Relational databases • Database schema = Finite set S of relation names with associated arities • DatabaseB over S = Finite structure over S • Finite domain D of atomic values • For each R S, a k-ary relation RB onD E.g. Graph: arity associated to R in S 1 2 3 4
Relational databases D 1 2 3 4 E (1,2) (2,3) (2,4) (3,4) • Database schema = Finite set S of relation names with associated arities • DatabaseB over S = Finite structure over S • Finite domain D of atomic values • For each R S, a k-ary relation RB onD E.g. Graph: arity associated to R in S 1 2 3 4
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations (over a common schema) (of a common arity)
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. (over a common schema) (of a common arity)
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. • Arity 0: {( )} or { } Boolean query (over a common schema) (of a common arity)
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. • Arity 0: {( )} or { } Boolean query E.g. On a graph: • Give all pairs of nodes that are targets of a common source. (over a common schema) (of a common arity)
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. • Arity 0: {( )} or { } Boolean query E.g. On a graph: • Give all pairs of nodes that are targets of a common source. • Is f(m)=2000? (over a common schema) (of a common arity)
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. • Arity 0: {( )} or { } Boolean query E.g. On a graph: • Give all pairs of nodes that are targets of a common source. • Is f(m)=2000? (over a common schema) (of a common arity) number of edges in graph
Queries • General definition of query: a (partial, computable) mapping Q • from databases • to relations • Q(B) is the answer to the query Q on database B. • Arity 0: {( )} or { } Boolean query E.g. On a graph: • Give all pairs of nodes that are targets of a common source. • Is f(m)=2000? (over a common schema) (of a common arity) arbitrary computable function on N
The consistency criterion • The answer of a query on a database can depend only on information that is logically contained in that database. • If his an isomorphism B B, then h is also an isomorphism Q(B) Q(B).
Query languages • In practice: SQL • first-order logic + counting, summation, … E.g. Give all pairs of nodes that are targets of a common source:
Query languages • In practice: SQL • first-order logic + counting, summation, … E.g. Give all pairs of nodes that are targets of a common source: select E1.target, E2.target from E E1, E E2 where E1.source = E2.source
Query languages • In practice: SQL • first-order logic + counting, summation, … E.g. Give all pairs of nodes that are targets of a common source: select E1.target, E2.target from E E1, E E2 where E1.source = E2.source (x,y) z(E(z,x) E(z,y))
Expressiveness of first-order logic (FO) 2000 0 if m is even if m is odd f(m) = • Many useful queries are expressible in FO. • But many others are not: • Connectivity: Is the graph connected? • Is f(m)=2000, where
Expressiveness of first-order logic (FO) 2000 0 if m is even if m is odd f(m) = • Many useful queries are expressible in FO. • But many others are not: • Connectivity: Is the graph connected? • Is f(m)=2000, where • (parity query)
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj)
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) relation variable of arity j
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) FO-formula over db relations and relation variables
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) • sequential composition
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) • sequential composition • while-loops: while do … od
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) • sequential composition • while-loops: while do … od FO-sentence
Towards a complete language: while • Make FO basis of a small programming language for working with relations: • relation variables (typed by fixed arities) • operations on relations provided by FO • assignment: X(x1,…,xj)(x1,…,xj) • sequential composition • while-loops: while do … od • Chandra & Harel [1982]
Example while-program • Connectivity query: Seen(2); Path(2) E; whilePath Seen do Seen Path; Path Path (x,z) y(Path(x,y) E(y,z)); od.
Example while-program • Connectivity query: Seen(2); Path(2) E; whilePath Seen do Seen Path; Path Path (x,z) y(Path(x,y) E(y,z)); od. • Parity query:
Example while-program • Connectivity query: Seen(2); Path(2) E; whilePath Seen do Seen Path; Path Path (x,z) y(Path(x,y) E(y,z)); od. • Parity query: Not!
A complete language: whilenew • S. Abiteboul & V. Vianu [1988] • Allow introduction of new domain elements in the computation. • New operator:
A complete language: whilenew • S. Abiteboul & V. Vianu [1988] • Allow introduction of new domain elements in the computation. • New operator: new
A complete language: whilenew X R a b a c d b f g c a b c d f g • S. Abiteboul & V. Vianu [1988] • Allow introduction of new domain elements in the computation. • New operator: new X(3) newR(2)
A complete language: whilenew X R a b a c d b f g c a b c d f g • S. Abiteboul & V. Vianu [1988] • Allow introduction of new domain elements in the computation. • New operator: new X(3) newR(2) • Every partial computable query can be programmed in whilenew.
Parity in whilenew • Easy to check parity of a set Sequipped with a successor relation: Even(0) true; Visit(1) first element of S ; whileVisit do Even Even; Visit succ(x)Visit(x) od.
Parity in whilenew • Make a set S of new elements, one for each edge: S0 newE; S 3(S0);
Parity in whilenew • Compute a successor relation on S: Impossible!
Parity in whilenew • Compute the tree T of all m! successor relations, where m = |S|: T new ; Seen ; Extend r,xTr Sx; whileExtend do X newExtend; T T p3X; succ succ p1,3X; Seen Seen n,x nXn,x,n xx Seenn,x; Extend n,xn p3X Sx Seen(n,x od.
We can’t do better! • whilenew-PSPACE: class of whilenew-programs running in polynomial space. Theorem: [Abiteboul–Vianu 1991] The parity query cannot be done in whilenew-PSPACE. • Intuition: In whilenew you cannot make arbitrary choices (recall consistency criterion) • Instead of choosing one successor relation, we must work with them all. • whilenew-PTIME: class of whilenew-PSPACE-programs running in polynomial time.
BGS • Blass, Gurevich, Shelah [1996]: • How can we formalize algorithms that never have to make arbitrary choices? • What can such algorithms still do in polynomial time? • Instantiation of ASMs for expressing database queries.
BGS ASMs • Universe: HF(D) • every x D is in HF(D); • every finite set of elements of HF(D) is itself in HF(D). • Infinite, but at any point only finitely many sets are “active”. • Set-theoretic static functions: • pairing • bounded set-construction • forall do (parallel ASMs)
Connectivity with a BGS-ASM ifMode0then forallxDdoFrontierxx enddo, Mode 1 endif, ifMode= 1 then forallxDdo Reached(x) := Reached(x) Frontier(x), Frontier(x) := {y D z Frontier(x): E(z,y) y Reached(x) Frontier(x)} enddo, Halt := {Frontier(x)x D} = endif.
BGS-PTIME • BGS-PTIME: class of BGS-ASMs • running for at most polynomially many steps • constructing at most polynomially many sets • “Choiceless polynomial time”
BGS-PTIME versus whilenew-PTIME? • Structure In: • • • • • • n 2n
BGS-PTIME versus whilenew-PTIME? • Structure In: • There is a PTIME BGS-program that outputs: • • • • • • n 2n
BGS-PTIME versus whilenew-PTIME? • Structure In: • There is a PTIME BGS-program that outputs: • true on every In with neven; • • • • • • n 2n
BGS-PTIME versus whilenew-PTIME? • Structure In: • There is a PTIME BGS-program that outputs: • true on every In with neven; • falseodd. • • • • • • n 2n
BGS-PTIME versus whilenew-PTIME? • Structure In: • There is a PTIME BGS-program that outputs: • true on every In with neven; • falseodd. • (Just construct all red subsets of even size.) • • • • • • n 2n
BGS-PTIME versus whilenew-PTIME? • Structure In: • There is a PTIME BGS-program that outputs: • true on every In with neven; • falseodd. • (Just construct all red subsets of even size.) Theorem: There is no such PSPACE whilenew-program (let alone PTIME). • • • • • • n 2n
Sets versus lists • BGS programs can construct sets. • whilenew programs can only construct lists. • operator new works tuple- ( list-) based. • Lists are ordered; sets can be unordered. • If you want to simulate something unordered by something ordered, you have to work with all orders. • (Recall parity in whilenew.) • BGS-PTIME strictly encompasses whilenew-PTIME.