Loading @CVC_checker/generate_cvc_grid.m +20 −16 Original line number Diff line number Diff line Loading @@ -12,27 +12,30 @@ % Author: Colin Eles elesc@mcmaster.ca % Organization: McMaster Centre for Software Certification function [ code , query] = generate_cvc_grid( grid , level) function [ code , query] = generate_cvc_grid( container , level, parent_cell, parent_cond) if nargin == 2 parent_cell = [] parent_cond = '' end % generate the formulas for the main grid parents = CVC_checker.find_parents(grid.cells(1)); if isempty(parents); if isempty(parent_cond); disjoint = 'QUERY ('; complete = 'QUERY ('; else disjoint = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; complete = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; disjoint = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parent_cond) ' => (']; complete = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parent_cond) ' => (']; end for i=1:size(grid.cells,2) for i=1:container.get_children_count(parent_cell) ith_cond = container.get_child_cell(parent_cell, i).get_matlab_string for j = i+1:size(grid.cells,2) for j = i+1:container.get_children_count(parent_cell) % 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)) ') )']; disjoint = [disjoint 'NOT ( (' CVC_checker.matlab_to_cvc_syntax_translation(ith_cond) ') AND (' CVC_checker.matlab_to_cvc_syntax_translation(char(container.get_child_cell(parent_cell, j).get_matlab_string)) ') )']; if j~= size(grid.cells,2) if j~= container.get_children_count(parent_cell) disjoint = [disjoint ' AND ' char(10)]; end Loading @@ -43,13 +46,13 @@ for i=1:size(grid.cells,2) complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ')']; complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(ith_cond) ')']; if i < size(grid.cells,2) - 1 if i < container.get_children_count(parent_cell) disjoint = [disjoint ' AND ' char(10)]; end if i < size(grid.cells,2) if i < container.get_children_count(parent_cell) complete = [complete ' OR ']; end end Loading @@ -63,9 +66,10 @@ code = [code 'ECHO "begin' num2str(level+2) '";' char(10) 'PUSH;' char(10) compl 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); for i=1:container.get_children_count(parent_cell) child_cell = container.get_child_cell(parent_cell, i); if container.get_children_count(child_cell) ~= 0 [new_code,new_queries] = CVC_checker.generate_cvc_grid(grid.cells(i).subgrid,level+2, child_cell); code = [code new_code]; query = [query new_queries]; level = size(query,2) - 2; Loading @CVC_checker/generate_file.m +3 −3 Original line number Diff line number Diff line Loading @@ -34,12 +34,12 @@ end new_code = ''; queries = []; %generate grid 2 if size(object.data.Grid2.cells,2) > 1 [new_code,queries] = CVC_checker.generate_cvc_grid(object.data.Grid2,0); if object.data.left_cond.length > 1 [new_code,queries] = CVC_checker.generate_cvc_grid(object.data.left_cond,0); end code = [code new_code]; if object.data.multi_mode == 0 && size(object.data.Grid1.cells,2) > 1 if object.data.multi_mode == 0 && object.data.top_cond.length > 1 [new_code,new_queries] = CVC_checker.generate_cvc_grid(object.data.Grid1,size(queries,2)); queries = [queries new_queries]; code = [code new_code]; Loading Loading
@CVC_checker/generate_cvc_grid.m +20 −16 Original line number Diff line number Diff line Loading @@ -12,27 +12,30 @@ % Author: Colin Eles elesc@mcmaster.ca % Organization: McMaster Centre for Software Certification function [ code , query] = generate_cvc_grid( grid , level) function [ code , query] = generate_cvc_grid( container , level, parent_cell, parent_cond) if nargin == 2 parent_cell = [] parent_cond = '' end % generate the formulas for the main grid parents = CVC_checker.find_parents(grid.cells(1)); if isempty(parents); if isempty(parent_cond); disjoint = 'QUERY ('; complete = 'QUERY ('; else disjoint = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; complete = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parents) ' => (']; disjoint = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parent_cond) ' => (']; complete = ['QUERY ' CVC_checker.matlab_to_cvc_syntax_translation(parent_cond) ' => (']; end for i=1:size(grid.cells,2) for i=1:container.get_children_count(parent_cell) ith_cond = container.get_child_cell(parent_cell, i).get_matlab_string for j = i+1:size(grid.cells,2) for j = i+1:container.get_children_count(parent_cell) % 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)) ') )']; disjoint = [disjoint 'NOT ( (' CVC_checker.matlab_to_cvc_syntax_translation(ith_cond) ') AND (' CVC_checker.matlab_to_cvc_syntax_translation(char(container.get_child_cell(parent_cell, j).get_matlab_string)) ') )']; if j~= size(grid.cells,2) if j~= container.get_children_count(parent_cell) disjoint = [disjoint ' AND ' char(10)]; end Loading @@ -43,13 +46,13 @@ for i=1:size(grid.cells,2) complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(char(grid.cells(i).cond_text)) ')']; complete = [complete '(' CVC_checker.matlab_to_cvc_syntax_translation(ith_cond) ')']; if i < size(grid.cells,2) - 1 if i < container.get_children_count(parent_cell) disjoint = [disjoint ' AND ' char(10)]; end if i < size(grid.cells,2) if i < container.get_children_count(parent_cell) complete = [complete ' OR ']; end end Loading @@ -63,9 +66,10 @@ code = [code 'ECHO "begin' num2str(level+2) '";' char(10) 'PUSH;' char(10) compl 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); for i=1:container.get_children_count(parent_cell) child_cell = container.get_child_cell(parent_cell, i); if container.get_children_count(child_cell) ~= 0 [new_code,new_queries] = CVC_checker.generate_cvc_grid(grid.cells(i).subgrid,level+2, child_cell); code = [code new_code]; query = [query new_queries]; level = size(query,2) - 2; Loading
@CVC_checker/generate_file.m +3 −3 Original line number Diff line number Diff line Loading @@ -34,12 +34,12 @@ end new_code = ''; queries = []; %generate grid 2 if size(object.data.Grid2.cells,2) > 1 [new_code,queries] = CVC_checker.generate_cvc_grid(object.data.Grid2,0); if object.data.left_cond.length > 1 [new_code,queries] = CVC_checker.generate_cvc_grid(object.data.left_cond,0); end code = [code new_code]; if object.data.multi_mode == 0 && size(object.data.Grid1.cells,2) > 1 if object.data.multi_mode == 0 && object.data.top_cond.length > 1 [new_code,new_queries] = CVC_checker.generate_cvc_grid(object.data.Grid1,size(queries,2)); queries = [queries new_queries]; code = [code new_code]; Loading