Class: ADSL::Parser::ASTExists
- 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
1256 1257 1258 1259 |
# File 'lib/adsl/parser/ast_nodes.rb', line 1256 def to_adsl v = @vars.map{ |var, objset| "#{ var.text } in #{ objset.to_adsl }" }.join ", " "exists(#{v}: #{ @subformula.to_adsl })" end |
#typecheck_and_resolve(context) ⇒ Object
1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 |
# File 'lib/adsl/parser/ast_nodes.rb', line 1238 def typecheck_and_resolve(context) context.in_stack_frame do vars = [] objsets = [] @vars.each do |var_node, objset_node| objset = objset_node.typecheck_and_resolve context var = ADSL::DS::DSVariable.new :name => var_node.text, :type => objset.type context.define_var var, var_node vars << var objsets << objset end subformula = @subformula.nil? ? nil : @subformula.typecheck_and_resolve(context) return ADSL::DS::DSExists.new :vars => vars, :objsets => objsets, :subformula => subformula end end |