Class: ADSL::Parser::ASTAnd
- Defined in:
- lib/adsl/parser/ast_nodes.rb
Instance Method Summary collapse
Methods inherited from ASTNode
#==, #adsl_ast, #adsl_ast_size, #block_replace, #dup, #hash, is_formula?, is_objset?, is_statement?, node_type, #objset_has_side_effects?, #optimize, #preorder_traverse
Methods included from Verification::FormulaGenerators
#[], #and, #binary_op, #binary_op_with_any_number_of_params, #equiv, #exists, #false, #forall, #handle_quantifier, #implies, #in_formula_builder, #not, #or, #true
Methods included from Verification::Utils
#classname_for_classname, #infer_classname_from_varname, #t
Instance Method Details
#to_adsl ⇒ Object
1296 1297 1298 |
# File 'lib/adsl/parser/ast_nodes.rb', line 1296 def to_adsl "and(#{ @subformulae.map(&:to_adsl).join ", " })" end |
#typecheck_and_resolve(context) ⇒ Object
1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 |
# File 'lib/adsl/parser/ast_nodes.rb', line 1280 def typecheck_and_resolve(context) subformulae = @subformulae.map{ |o| o.typecheck_and_resolve context } subformulae.each do |subformula| raise "Substatement not a formula on line #{subformula.lineno}" unless subformula.type == :formula end flattened_subformulae = [] subformulae.each do |subformula| if subformula.is_a? ADSL::DS::DSAnd flattened_subformulae += subformula.subformulae else flattened_subformulae << subformula end end return ADSL::DS::DSAnd.new :subformulae => flattened_subformulae end |