Newer
Older
Colin Eles
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function [ code , query] = generate_cvc_grid( grid , level)
%GENERATE_CVC_GRID Summary of this function goes here
% Detailed explanation goes here
% generate the formulas for the main grid
parents = CVC_checker.find_parents(grid.cells(1));
if isempty(parents);
disjoint = 'QUERY (';
complete = 'QUERY (';
else
disjoint = ['QUERY ' parents ' => ('];
complete = ['QUERY ' parents ' => ('];
end
for i=1:size(grid.cells,2)
% 1
% 2
% 3
%
% 1 2
% 1 3
% 2 3
%
% 1 2 3 4
% 1 2
% 1 3
% 1 4
%
for j = i+1:size(grid.cells,2)
% compare i to j
disjoint = [disjoint 'NOT ( (' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ') AND (' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(j).cond_text)) ') )'];
if j~= size(grid.cells,2)
disjoint = [disjoint ' AND ' char(10)];
end
end
% need to do pairwise disjointness
% otherwise doesn't work
complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ')'];
if i < size(grid.cells,2) - 1
disjoint = [disjoint ' AND ' char(10)];
end
if i < size(grid.cells,2)
complete = [complete ' OR '];
end
end
disjoint = [disjoint ');'];
complete = [complete ');'];
query = [{disjoint} {complete}];
code = ['ECHO "begin' num2str(level+1) '";' char(10) 'PUSH;' char(10) disjoint char(10) 'POP;' char(10) 'ECHO "end' num2str(level+1) '";' char(10)];
code = [code 'ECHO "begin' num2str(level+2) '";' char(10) 'PUSH;' char(10) complete char(10) 'POP;' char(10) 'ECHO "end' num2str(level+2) '";' char(10)];
Colin Eles
committed
for i=1:size(grid.cells,2)
if ~isempty(grid.cells(i).subgrid)
[new_code,new_queries] = CVC_checker.generate_cvc_grid(grid.cells(i).subgrid,level+2);
code = [code new_code];
query = [query new_queries];
level = size(query,2) - 2;
end
end
end