i: A <-- Project(X, Z) <-- Join(on=None) <-- get(C, [X, Y])
ii: A <-- Project(X, Z) <-- Join(on=None) <-- get(D, [X, Y])
iii: A <- Project(X, Z) <-- Join(on=[Y]) <-- get(A, [X, Y])
<-- get(A, [Y, Z])
iii: A <- Project(X, Z) <-- Join(on=[Y]) <-- get(B, [X, Y])
<-- get(A, [Y, Z])
A.base_trees = [i, ii] # one union
A.rec_trees = [iii, iv] # iterative union
A <-- FixPoint <-- Union <-- i
<-- ii
<-- Loop <--- Union <-- iii
<-- iv
def Fix_point:
Calc the rules that are not recursive
Run the recursive rules on each other (in every combination)
until an iteration doesn't change the output
use fix point util from last semester
D(X,Y) <- A(Z,X),B(X,Y)
A(X,Y) <-- B(X),C(Z),D(Z)->(Y)
A(X,Y) <-- B(X),C(Z),D(Z)->(Y,Z) same as A(X,Y) <-- B(X),D(Z)->(Y,Z),C(Z)
A(X,Y) <-- B(X),C(Z),D(Z)->(Y),E(X)
A(X) <-- B(X),C(X,"5")
A(X) <-- B(X),C("5")
A(Y) <-- D(Z)->(Y,Z),C(Z),E(Z,Y)
A(Y) <-- D(Z)->(Y,Z),C(Z),E(Z,V)
also works:
also also works:
A(X,Y) <-- B(X),D(Z)->(Y,Z),C(Z),F(Z,Y,X)->(X)
A(X,Y) <-- D(Z)->(Y,Z),C(Z),F(X)->(X),B(X)
A(X,Y) <-- C(X,Y) A(X, Y) <-- D(X, Y) A(X,Z) <-- A(Y,Z),A(X,Y) A(X,Z) <-- A(Y,Z), B(X,Y)
def Fix_point: Calc the rules that are not recursive Run the recursive rules on each other (in every combination) until an iteration doesn't change the output use fix point util from last semester