| R1: | SearchSpace(expr; prop; index; logOp; phyOp; lExpr; |
| lProp; rExpr; rProp) :- | |
| Expr(expr; prop), Fn_isleaf(expr; false), | |
| Fn_split(expr; prop; index; logOp; phyOp; lExpr, | |
| lProp; rExpr; rProp); | |
| R2: | SearchSpace(expr; prop; index; logOp; phyOp; |
| lExpr; lProp; rExpr; rProp) :- | |
| SearchSpace(–;–;–;–;–; expr; prop;–___________;–), | |
| Fn_isleaf(expr; false), | |
| Fn_split(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp); | |
| R3: | SearchSpace(expr; prop; index; logOp; phyOp; |
| lExpr; lProp; rExpr; rProp) :- | |
| SearchSpace(–;–;–;–;–;–;–; expr; prop), | |
| Fn_isleaf(expr; false)), | |
| Fn_split(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp); | |
| R4: | SearchSpace(expr; prop;–;′ scan′; phyOp;–;–;–;–)) :- |
| SearchSpace(–;–;–;–;–; expr; prop;–;–), | |
| Fn_isleaf(expr; true), Fn_phyOp(prop; phyOp); | |
| R5: | SearchSpace(expr; prop;–;′ scan′; phyOp;–;–;–;–) :- |
| SearchSpace(–;–;–;–;–;–;–; expr; prop), | |
| Fn_isleaf(expr; true), Fn_phyOp(prop; phyOp); | |
| R6: | PlanCost(expr; prop; index; logOp; phyOp;–;–;–;–; |
| md; cost) :- | |
| SearchSpace(expr; prop; index; logOp; phyOp;–;–;–;–), | |
| Fn_scansummary(expr; prop;md), | |
| Fn_scancost(expr; prop;md; cost); | |
| R7: | PlanCost(expr; prop; index; logOp; phyOp; |
| lExpr; lProp;–;–;md; cost) :- | |
| SearchSpace(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp;–;–, Fn_isleaf(lExpr; false), | |
| PlanCost(lExpr; lProp;–;–;–;–;–;–;–; lMd; lCost), | |
| Fn_nonscansummary(expr; prop; index; logOp; lMd;–;md), | |
| Fn_nonscancost(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp;–;–;md; localCost), | |
| Fn_sum(lCost; null ; localCost; cost); | |
| R8: | PlanCost(expr; prop; index; logOp; phyOp; |
| lExpr; lProp; rExpr; rProp;md; cost) :- | |
| SearchSpace(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp), | |
| Fn_isleaf(lExpr; false); Fn_isleaf (rExpr; false), | |
| PlanCost(lExpr; lProp;–;–;–;–;–;–;–; lMd; lCost), | |
| PlanCost(rExpr; rProp;–;–;–;–;–;–;–; rMd; rCost), | |
| Fn_nonscansummary(expr; prop; index; logOp; lMd; rMd;md), | |
| Fn_nonscancost(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp;md; localCost), | |
| Fn_sum(lCost; rCost; localCost; cost); | |
| R9: | BestCost(expr; prop; min < cost >) :- |
| PlanCost(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp;md; cost); | |
| R10: | BestPlan(expr; prop; index; logOp; phyOp; |
| lExpr; lProp; rExpr; rProp;md; cost) :- | |
| BestCost(expr; prop; cost), | |
| PlanCost(expr; prop; index; logOp; phyOp; | |
| lExpr; lProp; rExpr; rProp;md; cost); |