summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt44
-rw-r--r--src/api/cvc4cpp.cpp91
-rw-r--r--src/api/cvc4cpp.h69
-rw-r--r--src/api/cvc4cppkind.h3
-rw-r--r--src/base/configuration.cpp8
-rw-r--r--src/base/configuration.h4
-rw-r--r--src/base/configuration_private.h2
-rw-r--r--src/base/cvc4_assert.cpp4
-rw-r--r--src/base/cvc4_assert.h2
-rw-r--r--src/base/cvc4_check.cpp2
-rw-r--r--src/base/cvc4_check.h2
-rw-r--r--src/base/exception.cpp2
-rw-r--r--src/base/exception.h2
-rw-r--r--src/base/git_versioninfo.cpp.in17
-rw-r--r--src/base/listener.cpp2
-rw-r--r--src/base/listener.h4
-rw-r--r--src/base/map_util.h2
-rw-r--r--src/base/modal_exception.h4
-rw-r--r--src/base/output.cpp4
-rw-r--r--src/base/output.h2
-rw-r--r--src/bindings/java_iterator_adapter.h2
-rw-r--r--src/bindings/java_stream_adapters.h4
-rw-r--r--src/bindings/swig.h2
-rw-r--r--src/context/backtrackable.h2
-rw-r--r--src/context/cddense_set.h2
-rw-r--r--src/context/cdhashmap.h2
-rw-r--r--src/context/cdhashmap_forward.h4
-rw-r--r--src/context/cdhashset.h2
-rw-r--r--src/context/cdhashset_forward.h2
-rw-r--r--src/context/cdinsert_hashmap.h2
-rw-r--r--src/context/cdinsert_hashmap_forward.h2
-rw-r--r--src/context/cdlist.h4
-rw-r--r--src/context/cdlist_forward.h2
-rw-r--r--src/context/cdmaybe.h2
-rw-r--r--src/context/cdo.h4
-rw-r--r--src/context/cdqueue.h4
-rw-r--r--src/context/cdtrail_queue.h2
-rw-r--r--src/context/context.cpp2
-rw-r--r--src/context/context.h2
-rw-r--r--src/context/context_mm.cpp2
-rw-r--r--src/context/context_mm.h2
-rw-r--r--src/decision/decision_attributes.h4
-rw-r--r--src/decision/decision_engine.cpp4
-rw-r--r--src/decision/decision_engine.h4
-rw-r--r--src/decision/decision_strategy.h4
-rw-r--r--src/decision/justification_heuristic.cpp2
-rw-r--r--src/decision/justification_heuristic.h2
-rw-r--r--src/expr/array.h2
-rw-r--r--src/expr/array_store_all.cpp2
-rw-r--r--src/expr/array_store_all.h2
-rw-r--r--src/expr/ascription_type.h2
-rw-r--r--src/expr/attribute.cpp4
-rw-r--r--src/expr/attribute.h2
-rw-r--r--src/expr/attribute_internals.h2
-rw-r--r--src/expr/attribute_unique_id.h2
-rw-r--r--src/expr/chain.h2
-rw-r--r--src/expr/datatype.cpp2
-rw-r--r--src/expr/datatype.h2
-rw-r--r--src/expr/emptyset.cpp2
-rw-r--r--src/expr/emptyset.h4
-rw-r--r--src/expr/expr_iomanip.cpp4
-rw-r--r--src/expr/expr_iomanip.h4
-rw-r--r--src/expr/expr_manager_scope.h4
-rw-r--r--src/expr/expr_manager_template.cpp2
-rw-r--r--src/expr/expr_manager_template.h4
-rw-r--r--src/expr/expr_stream.h2
-rw-r--r--src/expr/expr_template.cpp21
-rw-r--r--src/expr/expr_template.h4
-rw-r--r--src/expr/kind_map.h4
-rw-r--r--src/expr/kind_template.cpp14
-rw-r--r--src/expr/kind_template.h2
-rw-r--r--src/expr/matcher.h4
-rw-r--r--src/expr/metakind_template.cpp4
-rw-r--r--src/expr/metakind_template.h4
-rw-r--r--src/expr/node.cpp4
-rw-r--r--src/expr/node.h12
-rw-r--r--src/expr/node_algorithm.cpp136
-rw-r--r--src/expr/node_algorithm.h30
-rw-r--r--src/expr/node_builder.h2
-rw-r--r--src/expr/node_manager.cpp20
-rw-r--r--src/expr/node_manager.h13
-rw-r--r--src/expr/node_manager_attributes.h4
-rw-r--r--src/expr/node_manager_listeners.cpp2
-rw-r--r--src/expr/node_manager_listeners.h2
-rw-r--r--src/expr/node_self_iterator.h4
-rw-r--r--src/expr/node_trie.cpp2
-rw-r--r--src/expr/node_trie.h2
-rw-r--r--src/expr/node_value.cpp4
-rw-r--r--src/expr/node_value.h4
-rw-r--r--src/expr/pickle_data.cpp4
-rw-r--r--src/expr/pickle_data.h4
-rw-r--r--src/expr/pickler.cpp2
-rw-r--r--src/expr/pickler.h2
-rw-r--r--src/expr/record.cpp2
-rw-r--r--src/expr/record.h4
-rw-r--r--src/expr/symbol_table.cpp2
-rw-r--r--src/expr/symbol_table.h4
-rw-r--r--src/expr/type.cpp2
-rw-r--r--src/expr/type.h4
-rw-r--r--src/expr/type_checker.h2
-rw-r--r--src/expr/type_checker_template.cpp4
-rw-r--r--src/expr/type_node.cpp2
-rw-r--r--src/expr/type_node.h2
-rw-r--r--src/expr/type_properties_template.h4
-rw-r--r--src/expr/uninterpreted_constant.cpp4
-rw-r--r--src/expr/uninterpreted_constant.h2
-rw-r--r--src/expr/variable_type_map.h2
-rwxr-xr-xsrc/fix-install-headers.sh5
-rw-r--r--src/include/cvc4.h4
-rw-r--r--src/include/cvc4_private.h2
-rw-r--r--src/include/cvc4_private_library.h4
-rw-r--r--src/include/cvc4_public.h2
-rw-r--r--src/include/cvc4parser_private.h2
-rw-r--r--src/include/cvc4parser_public.h2
-rw-r--r--src/lib/clock_gettime.c4
-rw-r--r--src/lib/clock_gettime.h4
-rw-r--r--src/lib/ffs.c2
-rw-r--r--src/lib/ffs.h2
-rw-r--r--src/lib/replacements.h2
-rw-r--r--src/lib/strtok_r.c2
-rw-r--r--src/lib/strtok_r.h4
-rw-r--r--src/main/command_executor.cpp2
-rw-r--r--src/main/command_executor.h4
-rw-r--r--src/main/command_executor_portfolio.cpp2
-rw-r--r--src/main/command_executor_portfolio.h4
-rw-r--r--src/main/driver_unified.cpp2
-rw-r--r--src/main/interactive_shell.cpp2
-rw-r--r--src/main/interactive_shell.h2
-rw-r--r--src/main/main.cpp2
-rw-r--r--src/main/main.h2
-rw-r--r--src/main/portfolio.cpp4
-rw-r--r--src/main/portfolio.h4
-rw-r--r--src/main/portfolio_util.cpp4
-rw-r--r--src/main/portfolio_util.h4
-rw-r--r--src/main/util.cpp2
-rw-r--r--src/options/argument_extender.h2
-rw-r--r--src/options/argument_extender_implementation.cpp2
-rw-r--r--src/options/argument_extender_implementation.h2
-rw-r--r--src/options/arith_heuristic_pivot_rule.cpp2
-rw-r--r--src/options/arith_heuristic_pivot_rule.h4
-rw-r--r--src/options/arith_propagation_mode.cpp4
-rw-r--r--src/options/arith_propagation_mode.h2
-rw-r--r--src/options/arith_unate_lemma_mode.cpp4
-rw-r--r--src/options/arith_unate_lemma_mode.h2
-rw-r--r--src/options/base_handlers.h4
-rw-r--r--src/options/bool_to_bv_mode.cpp26
-rw-r--r--src/options/bool_to_bv_mode.h26
-rw-r--r--src/options/bv_bitblast_mode.cpp4
-rw-r--r--src/options/bv_bitblast_mode.h4
-rw-r--r--src/options/bv_options.toml2
-rw-r--r--src/options/datatypes_modes.h2
-rw-r--r--src/options/decision_mode.cpp4
-rw-r--r--src/options/decision_mode.h4
-rw-r--r--src/options/decision_weight.h4
-rw-r--r--src/options/didyoumean.cpp2
-rw-r--r--src/options/didyoumean.h2
-rw-r--r--src/options/didyoumean_test.cpp2
-rw-r--r--src/options/fp_options.toml8
-rw-r--r--src/options/language.cpp2
-rw-r--r--src/options/language.h2
-rw-r--r--src/options/module_template.cpp4
-rw-r--r--src/options/module_template.h2
-rw-r--r--src/options/open_ostream.cpp4
-rw-r--r--src/options/open_ostream.h2
-rw-r--r--src/options/option_exception.cpp4
-rw-r--r--src/options/option_exception.h4
-rw-r--r--src/options/options.h2
-rw-r--r--src/options/options_handler.cpp10
-rw-r--r--src/options/options_handler.h4
-rw-r--r--src/options/options_holder_template.h2
-rw-r--r--src/options/options_public_functions.cpp2
-rw-r--r--src/options/options_template.cpp6
-rw-r--r--src/options/printer_modes.cpp4
-rw-r--r--src/options/printer_modes.h4
-rw-r--r--src/options/quantifiers_modes.cpp4
-rw-r--r--src/options/quantifiers_modes.h2
-rw-r--r--src/options/quantifiers_options.toml40
-rw-r--r--src/options/set_language.cpp4
-rw-r--r--src/options/set_language.h4
-rw-r--r--src/options/smt_modes.cpp4
-rw-r--r--src/options/smt_modes.h4
-rw-r--r--src/options/sygus_out_mode.h2
-rw-r--r--src/options/theoryof_mode.cpp4
-rw-r--r--src/options/theoryof_mode.h2
-rw-r--r--src/options/ufss_mode.h4
-rw-r--r--src/parser/antlr_input.cpp4
-rw-r--r--src/parser/antlr_input.h2
-rw-r--r--src/parser/antlr_input_imports.cpp2
-rw-r--r--src/parser/antlr_line_buffered_input.cpp2
-rw-r--r--src/parser/antlr_line_buffered_input.h4
-rw-r--r--src/parser/antlr_tracing.h4
-rw-r--r--src/parser/bounded_token_buffer.cpp2
-rw-r--r--src/parser/bounded_token_buffer.h2
-rw-r--r--src/parser/bounded_token_factory.cpp4
-rw-r--r--src/parser/bounded_token_factory.h2
-rw-r--r--src/parser/cvc/Cvc.g74
-rw-r--r--src/parser/cvc/cvc_input.cpp4
-rw-r--r--src/parser/cvc/cvc_input.h2
-rw-r--r--src/parser/input.cpp4
-rw-r--r--src/parser/input.h2
-rw-r--r--src/parser/line_buffer.cpp4
-rw-r--r--src/parser/line_buffer.h2
-rw-r--r--src/parser/memory_mapped_input_buffer.cpp2
-rw-r--r--src/parser/memory_mapped_input_buffer.h4
-rw-r--r--src/parser/parser.cpp2
-rw-r--r--src/parser/parser.h2
-rw-r--r--src/parser/parser_builder.cpp2
-rw-r--r--src/parser/parser_builder.h4
-rw-r--r--src/parser/parser_exception.h4
-rw-r--r--src/parser/smt1/Smt1.g2
-rw-r--r--src/parser/smt1/smt1.cpp2
-rw-r--r--src/parser/smt1/smt1.h2
-rw-r--r--src/parser/smt1/smt1_input.cpp4
-rw-r--r--src/parser/smt1/smt1_input.h4
-rw-r--r--src/parser/smt2/Smt2.g13
-rw-r--r--src/parser/smt2/smt2.cpp2
-rw-r--r--src/parser/smt2/smt2.h22
-rw-r--r--src/parser/smt2/smt2_input.cpp4
-rw-r--r--src/parser/smt2/smt2_input.h4
-rw-r--r--src/parser/smt2/sygus_input.cpp4
-rw-r--r--src/parser/smt2/sygus_input.h2
-rw-r--r--src/parser/tptp/Tptp.g22
-rw-r--r--src/parser/tptp/tptp.cpp4
-rw-r--r--src/parser/tptp/tptp.h2
-rw-r--r--src/parser/tptp/tptp_input.cpp4
-rw-r--r--src/parser/tptp/tptp_input.h2
-rw-r--r--src/preprocessing/assertion_pipeline.cpp4
-rw-r--r--src/preprocessing/assertion_pipeline.h4
-rw-r--r--src/preprocessing/passes/apply_substs.cpp4
-rw-r--r--src/preprocessing/passes/apply_substs.h2
-rw-r--r--src/preprocessing/passes/apply_to_const.cpp4
-rw-r--r--src/preprocessing/passes/apply_to_const.h2
-rw-r--r--src/preprocessing/passes/bool_to_bv.cpp4
-rw-r--r--src/preprocessing/passes/bool_to_bv.h4
-rw-r--r--src/preprocessing/passes/bv_abstraction.cpp2
-rw-r--r--src/preprocessing/passes/bv_abstraction.h2
-rw-r--r--src/preprocessing/passes/bv_ackermann.cpp4
-rw-r--r--src/preprocessing/passes/bv_ackermann.h4
-rw-r--r--src/preprocessing/passes/bv_eager_atoms.cpp2
-rw-r--r--src/preprocessing/passes/bv_eager_atoms.h2
-rw-r--r--src/preprocessing/passes/bv_gauss.cpp2
-rw-r--r--src/preprocessing/passes/bv_gauss.h2
-rw-r--r--src/preprocessing/passes/bv_intro_pow2.cpp4
-rw-r--r--src/preprocessing/passes/bv_intro_pow2.h2
-rw-r--r--src/preprocessing/passes/bv_to_bool.cpp4
-rw-r--r--src/preprocessing/passes/bv_to_bool.h2
-rw-r--r--src/preprocessing/passes/extended_rewriter_pass.cpp2
-rw-r--r--src/preprocessing/passes/extended_rewriter_pass.h2
-rw-r--r--src/preprocessing/passes/global_negate.cpp4
-rw-r--r--src/preprocessing/passes/global_negate.h4
-rw-r--r--src/preprocessing/passes/int_to_bv.cpp2
-rw-r--r--src/preprocessing/passes/int_to_bv.h2
-rw-r--r--src/preprocessing/passes/ite_removal.cpp4
-rw-r--r--src/preprocessing/passes/ite_removal.h4
-rw-r--r--src/preprocessing/passes/ite_simp.cpp4
-rw-r--r--src/preprocessing/passes/ite_simp.h2
-rw-r--r--src/preprocessing/passes/miplib_trick.cpp4
-rw-r--r--src/preprocessing/passes/miplib_trick.h2
-rw-r--r--src/preprocessing/passes/nl_ext_purify.cpp2
-rw-r--r--src/preprocessing/passes/nl_ext_purify.h2
-rw-r--r--src/preprocessing/passes/non_clausal_simp.cpp4
-rw-r--r--src/preprocessing/passes/non_clausal_simp.h2
-rw-r--r--src/preprocessing/passes/pseudo_boolean_processor.cpp2
-rw-r--r--src/preprocessing/passes/pseudo_boolean_processor.h2
-rw-r--r--src/preprocessing/passes/quantifier_macros.cpp4
-rw-r--r--src/preprocessing/passes/quantifier_macros.h4
-rw-r--r--src/preprocessing/passes/quantifiers_preprocess.cpp2
-rw-r--r--src/preprocessing/passes/quantifiers_preprocess.h2
-rw-r--r--src/preprocessing/passes/real_to_int.cpp2
-rw-r--r--src/preprocessing/passes/real_to_int.h2
-rw-r--r--src/preprocessing/passes/rewrite.cpp2
-rw-r--r--src/preprocessing/passes/rewrite.h2
-rw-r--r--src/preprocessing/passes/sep_skolem_emp.cpp6
-rw-r--r--src/preprocessing/passes/sep_skolem_emp.h4
-rw-r--r--src/preprocessing/passes/sort_infer.cpp4
-rw-r--r--src/preprocessing/passes/sort_infer.h4
-rw-r--r--src/preprocessing/passes/static_learning.cpp2
-rw-r--r--src/preprocessing/passes/static_learning.h2
-rw-r--r--src/preprocessing/passes/sygus_abduct.cpp174
-rw-r--r--src/preprocessing/passes/sygus_abduct.h72
-rw-r--r--src/preprocessing/passes/sygus_inference.cpp2
-rw-r--r--src/preprocessing/passes/sygus_inference.h2
-rw-r--r--src/preprocessing/passes/symmetry_breaker.cpp2
-rw-r--r--src/preprocessing/passes/symmetry_breaker.h2
-rw-r--r--src/preprocessing/passes/symmetry_detect.cpp4
-rw-r--r--src/preprocessing/passes/symmetry_detect.h4
-rw-r--r--src/preprocessing/passes/synth_rew_rules.cpp4
-rw-r--r--src/preprocessing/passes/synth_rew_rules.h4
-rw-r--r--src/preprocessing/passes/theory_preprocess.cpp4
-rw-r--r--src/preprocessing/passes/theory_preprocess.h2
-rw-r--r--src/preprocessing/passes/unconstrained_simplifier.cpp4
-rw-r--r--src/preprocessing/passes/unconstrained_simplifier.h4
-rw-r--r--src/preprocessing/preprocessing_pass.cpp4
-rw-r--r--src/preprocessing/preprocessing_pass.h4
-rw-r--r--src/preprocessing/preprocessing_pass_context.cpp4
-rw-r--r--src/preprocessing/preprocessing_pass_context.h4
-rw-r--r--src/preprocessing/preprocessing_pass_registry.cpp6
-rw-r--r--src/preprocessing/preprocessing_pass_registry.h4
-rw-r--r--src/preprocessing/util/ite_utilities.cpp4
-rw-r--r--src/preprocessing/util/ite_utilities.h4
-rw-r--r--src/printer/ast/ast_printer.cpp2
-rw-r--r--src/printer/ast/ast_printer.h4
-rw-r--r--src/printer/cvc/cvc_printer.cpp2
-rw-r--r--src/printer/cvc/cvc_printer.h4
-rw-r--r--src/printer/dagification_visitor.cpp2
-rw-r--r--src/printer/dagification_visitor.h2
-rw-r--r--src/printer/printer.cpp4
-rw-r--r--src/printer/printer.h4
-rw-r--r--src/printer/smt2/smt2_printer.cpp4
-rw-r--r--src/printer/smt2/smt2_printer.h4
-rw-r--r--src/printer/sygus_print_callback.cpp4
-rw-r--r--src/printer/sygus_print_callback.h2
-rw-r--r--src/printer/tptp/tptp_printer.cpp4
-rw-r--r--src/printer/tptp/tptp_printer.h4
-rw-r--r--src/proof/arith_proof.cpp4
-rw-r--r--src/proof/arith_proof.h4
-rw-r--r--src/proof/arith_proof_recorder.cpp2
-rw-r--r--src/proof/arith_proof_recorder.h2
-rw-r--r--src/proof/array_proof.cpp4
-rw-r--r--src/proof/array_proof.h4
-rw-r--r--src/proof/bitvector_proof.cpp12
-rw-r--r--src/proof/bitvector_proof.h6
-rw-r--r--src/proof/clausal_bitvector_proof.cpp104
-rw-r--r--src/proof/clausal_bitvector_proof.h49
-rw-r--r--src/proof/clause_id.h2
-rw-r--r--src/proof/cnf_proof.cpp177
-rw-r--r--src/proof/cnf_proof.h9
-rw-r--r--src/proof/dimacs_printer.cpp2
-rw-r--r--src/proof/dimacs_printer.h2
-rw-r--r--src/proof/drat/drat_proof.cpp8
-rw-r--r--src/proof/drat/drat_proof.h2
-rw-r--r--src/proof/er/er_proof.cpp391
-rw-r--r--src/proof/er/er_proof.h208
-rw-r--r--src/proof/lemma_proof.cpp4
-rw-r--r--src/proof/lemma_proof.h4
-rw-r--r--src/proof/lfsc_proof_printer.cpp4
-rw-r--r--src/proof/lfsc_proof_printer.h4
-rw-r--r--src/proof/lrat/lrat_proof.cpp2
-rw-r--r--src/proof/lrat/lrat_proof.h2
-rw-r--r--src/proof/proof.h2
-rw-r--r--src/proof/proof_manager.cpp21
-rw-r--r--src/proof/proof_manager.h27
-rw-r--r--src/proof/proof_output_channel.cpp4
-rw-r--r--src/proof/proof_output_channel.h4
-rw-r--r--src/proof/proof_utils.cpp2
-rw-r--r--src/proof/proof_utils.h4
-rw-r--r--src/proof/resolution_bitvector_proof.cpp4
-rw-r--r--src/proof/resolution_bitvector_proof.h4
-rw-r--r--src/proof/sat_proof.h4
-rw-r--r--src/proof/sat_proof_implementation.h2
-rw-r--r--src/proof/simplify_boolean_node.cpp4
-rw-r--r--src/proof/simplify_boolean_node.h2
-rw-r--r--src/proof/skolemization_manager.cpp2
-rw-r--r--src/proof/skolemization_manager.h2
-rw-r--r--src/proof/theory_proof.cpp25
-rw-r--r--src/proof/theory_proof.h2
-rw-r--r--src/proof/uf_proof.cpp2
-rw-r--r--src/proof/uf_proof.h2
-rw-r--r--src/proof/unsat_core.cpp4
-rw-r--r--src/proof/unsat_core.h2
-rw-r--r--src/prop/bv_sat_solver_notify.h6
-rw-r--r--src/prop/bvminisat/bvminisat.cpp4
-rw-r--r--src/prop/bvminisat/bvminisat.h4
-rw-r--r--src/prop/cadical.cpp4
-rw-r--r--src/prop/cadical.h4
-rw-r--r--src/prop/cnf_stream.cpp2
-rw-r--r--src/prop/cnf_stream.h2
-rw-r--r--src/prop/cryptominisat.cpp4
-rw-r--r--src/prop/cryptominisat.h4
-rw-r--r--src/prop/minisat/minisat.cpp4
-rw-r--r--src/prop/minisat/minisat.h4
-rw-r--r--src/prop/prop_engine.cpp2
-rw-r--r--src/prop/prop_engine.h2
-rw-r--r--src/prop/registrar.h4
-rw-r--r--src/prop/sat_solver.h4
-rw-r--r--src/prop/sat_solver_factory.cpp4
-rw-r--r--src/prop/sat_solver_factory.h4
-rw-r--r--src/prop/sat_solver_types.h20
-rw-r--r--src/prop/theory_proxy.cpp4
-rw-r--r--src/prop/theory_proxy.h2
-rw-r--r--src/smt/command.cpp2
-rw-r--r--src/smt/command.h4
-rw-r--r--src/smt/command_list.cpp4
-rw-r--r--src/smt/command_list.h2
-rw-r--r--src/smt/dump.cpp4
-rw-r--r--src/smt/dump.h4
-rw-r--r--src/smt/logic_exception.h4
-rw-r--r--src/smt/logic_request.cpp4
-rw-r--r--src/smt/logic_request.h4
-rw-r--r--src/smt/managed_ostreams.cpp2
-rw-r--r--src/smt/managed_ostreams.h2
-rw-r--r--src/smt/model.cpp4
-rw-r--r--src/smt/model.h4
-rw-r--r--src/smt/model_core_builder.cpp4
-rw-r--r--src/smt/model_core_builder.h2
-rw-r--r--src/smt/smt_engine.cpp195
-rw-r--r--src/smt/smt_engine.h16
-rw-r--r--src/smt/smt_engine_check_proof.cpp129
-rw-r--r--src/smt/smt_engine_scope.cpp4
-rw-r--r--src/smt/smt_engine_scope.h4
-rw-r--r--src/smt/smt_statistics_registry.cpp2
-rw-r--r--src/smt/smt_statistics_registry.h4
-rw-r--r--src/smt/term_formula_removal.cpp20
-rw-r--r--src/smt/term_formula_removal.h2
-rw-r--r--src/smt/update_ostream.h2
-rw-r--r--src/smt_util/boolean_simplification.cpp2
-rw-r--r--src/smt_util/boolean_simplification.h4
-rw-r--r--src/smt_util/lemma_channels.cpp2
-rw-r--r--src/smt_util/lemma_channels.h4
-rw-r--r--src/smt_util/lemma_input_channel.h2
-rw-r--r--src/smt_util/lemma_output_channel.h2
-rw-r--r--src/smt_util/nary_builder.cpp2
-rw-r--r--src/smt_util/nary_builder.h2
-rw-r--r--src/smt_util/node_visitor.h4
-rw-r--r--src/theory/arith/approx_simplex.cpp4
-rw-r--r--src/theory/arith/approx_simplex.h2
-rw-r--r--src/theory/arith/arith_ite_utils.cpp2
-rw-r--r--src/theory/arith/arith_ite_utils.h2
-rw-r--r--src/theory/arith/arith_msum.cpp2
-rw-r--r--src/theory/arith/arith_msum.h2
-rw-r--r--src/theory/arith/arith_rewriter.cpp2
-rw-r--r--src/theory/arith/arith_rewriter.h2
-rw-r--r--src/theory/arith/arith_static_learner.cpp2
-rw-r--r--src/theory/arith/arith_static_learner.h2
-rw-r--r--src/theory/arith/arith_utilities.h2
-rw-r--r--src/theory/arith/arithvar.cpp2
-rw-r--r--src/theory/arith/arithvar.h2
-rw-r--r--src/theory/arith/arithvar_node_map.h4
-rw-r--r--src/theory/arith/attempt_solution_simplex.cpp2
-rw-r--r--src/theory/arith/attempt_solution_simplex.h4
-rw-r--r--src/theory/arith/bound_counts.h4
-rw-r--r--src/theory/arith/callbacks.cpp2
-rw-r--r--src/theory/arith/callbacks.h2
-rw-r--r--src/theory/arith/congruence_manager.cpp2
-rw-r--r--src/theory/arith/congruence_manager.h4
-rw-r--r--src/theory/arith/constraint.cpp4
-rw-r--r--src/theory/arith/constraint.h4
-rw-r--r--src/theory/arith/constraint_forward.h2
-rw-r--r--src/theory/arith/cut_log.cpp2
-rw-r--r--src/theory/arith/cut_log.h2
-rw-r--r--src/theory/arith/delta_rational.cpp2
-rw-r--r--src/theory/arith/delta_rational.h2
-rw-r--r--src/theory/arith/dio_solver.cpp2
-rw-r--r--src/theory/arith/dio_solver.h2
-rw-r--r--src/theory/arith/dual_simplex.cpp4
-rw-r--r--src/theory/arith/dual_simplex.h4
-rw-r--r--src/theory/arith/error_set.cpp2
-rw-r--r--src/theory/arith/error_set.h4
-rw-r--r--src/theory/arith/fc_simplex.cpp4
-rw-r--r--src/theory/arith/fc_simplex.h2
-rw-r--r--src/theory/arith/infer_bounds.cpp2
-rw-r--r--src/theory/arith/infer_bounds.h2
-rw-r--r--src/theory/arith/linear_equality.cpp4
-rw-r--r--src/theory/arith/linear_equality.h4
-rw-r--r--src/theory/arith/matrix.cpp2
-rw-r--r--src/theory/arith/matrix.h2
-rw-r--r--src/theory/arith/nonlinear_extension.cpp36
-rw-r--r--src/theory/arith/nonlinear_extension.h2
-rw-r--r--src/theory/arith/normal_form.cpp2
-rw-r--r--src/theory/arith/normal_form.h2
-rw-r--r--src/theory/arith/partial_model.cpp4
-rw-r--r--src/theory/arith/partial_model.h2
-rw-r--r--src/theory/arith/simplex.cpp4
-rw-r--r--src/theory/arith/simplex.h4
-rw-r--r--src/theory/arith/simplex_update.cpp2
-rw-r--r--src/theory/arith/simplex_update.h2
-rw-r--r--src/theory/arith/soi_simplex.cpp2
-rw-r--r--src/theory/arith/soi_simplex.h2
-rw-r--r--src/theory/arith/tableau.cpp2
-rw-r--r--src/theory/arith/tableau.h4
-rw-r--r--src/theory/arith/tableau_sizes.cpp2
-rw-r--r--src/theory/arith/tableau_sizes.h2
-rw-r--r--src/theory/arith/theory_arith.cpp2
-rw-r--r--src/theory/arith/theory_arith.h4
-rw-r--r--src/theory/arith/theory_arith_private.cpp2
-rw-r--r--src/theory/arith/theory_arith_private.h4
-rw-r--r--src/theory/arith/theory_arith_private_forward.h2
-rw-r--r--src/theory/arith/theory_arith_type_rules.h2
-rw-r--r--src/theory/arith/type_enumerator.h2
-rw-r--r--src/theory/arrays/array_info.cpp2
-rw-r--r--src/theory/arrays/array_info.h2
-rw-r--r--src/theory/arrays/array_proof_reconstruction.cpp2
-rw-r--r--src/theory/arrays/array_proof_reconstruction.h2
-rw-r--r--src/theory/arrays/static_fact_manager.cpp4
-rw-r--r--src/theory/arrays/static_fact_manager.h4
-rw-r--r--src/theory/arrays/theory_arrays.cpp2
-rw-r--r--src/theory/arrays/theory_arrays.h4
-rw-r--r--src/theory/arrays/theory_arrays_rewriter.cpp2
-rw-r--r--src/theory/arrays/theory_arrays_rewriter.h2
-rw-r--r--src/theory/arrays/theory_arrays_type_rules.h2
-rw-r--r--src/theory/arrays/type_enumerator.h2
-rw-r--r--src/theory/arrays/union_find.cpp4
-rw-r--r--src/theory/arrays/union_find.h2
-rw-r--r--src/theory/assertion.cpp2
-rw-r--r--src/theory/assertion.h4
-rw-r--r--src/theory/atom_requests.cpp4
-rw-r--r--src/theory/atom_requests.h4
-rw-r--r--src/theory/booleans/circuit_propagator.cpp2
-rw-r--r--src/theory/booleans/circuit_propagator.h4
-rw-r--r--src/theory/booleans/theory_bool.cpp4
-rw-r--r--src/theory/booleans/theory_bool.h2
-rw-r--r--src/theory/booleans/theory_bool_rewriter.cpp2
-rw-r--r--src/theory/booleans/theory_bool_rewriter.h2
-rw-r--r--src/theory/booleans/theory_bool_type_rules.h2
-rw-r--r--src/theory/booleans/type_enumerator.h2
-rw-r--r--src/theory/builtin/theory_builtin.cpp2
-rw-r--r--src/theory/builtin/theory_builtin.h2
-rw-r--r--src/theory/builtin/theory_builtin_rewriter.cpp4
-rw-r--r--src/theory/builtin/theory_builtin_rewriter.h2
-rw-r--r--src/theory/builtin/theory_builtin_type_rules.h2
-rw-r--r--src/theory/builtin/type_enumerator.cpp2
-rw-r--r--src/theory/builtin/type_enumerator.h2
-rw-r--r--src/theory/bv/abstraction.cpp2
-rw-r--r--src/theory/bv/abstraction.h2
-rw-r--r--src/theory/bv/bitblast/aig_bitblaster.cpp2
-rw-r--r--src/theory/bv/bitblast/aig_bitblaster.h4
-rw-r--r--src/theory/bv/bitblast/bitblast_strategies_template.h2
-rw-r--r--src/theory/bv/bitblast/bitblast_utils.h4
-rw-r--r--src/theory/bv/bitblast/bitblaster.h4
-rw-r--r--src/theory/bv/bitblast/eager_bitblaster.cpp2
-rw-r--r--src/theory/bv/bitblast/eager_bitblaster.h4
-rw-r--r--src/theory/bv/bitblast/lazy_bitblaster.cpp2
-rw-r--r--src/theory/bv/bitblast/lazy_bitblaster.h4
-rw-r--r--src/theory/bv/bv_eager_solver.cpp4
-rw-r--r--src/theory/bv/bv_eager_solver.h4
-rw-r--r--src/theory/bv/bv_inequality_graph.cpp2
-rw-r--r--src/theory/bv/bv_inequality_graph.h2
-rw-r--r--src/theory/bv/bv_quick_check.cpp2
-rw-r--r--src/theory/bv/bv_quick_check.h4
-rw-r--r--src/theory/bv/bv_subtheory.h2
-rw-r--r--src/theory/bv/bv_subtheory_algebraic.cpp2
-rw-r--r--src/theory/bv/bv_subtheory_algebraic.h2
-rw-r--r--src/theory/bv/bv_subtheory_bitblast.cpp4
-rw-r--r--src/theory/bv/bv_subtheory_bitblast.h4
-rw-r--r--src/theory/bv/bv_subtheory_core.cpp2
-rw-r--r--src/theory/bv/bv_subtheory_core.h2
-rw-r--r--src/theory/bv/bv_subtheory_inequality.cpp2
-rw-r--r--src/theory/bv/bv_subtheory_inequality.h4
-rw-r--r--src/theory/bv/slicer.cpp2
-rw-r--r--src/theory/bv/slicer.h2
-rw-r--r--src/theory/bv/theory_bv.cpp2
-rw-r--r--src/theory/bv/theory_bv.h4
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules.h4
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h2
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_core.h2
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_normalization.h2
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h2
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_simplification.h4
-rw-r--r--src/theory/bv/theory_bv_rewriter.cpp17
-rw-r--r--src/theory/bv/theory_bv_rewriter.h4
-rw-r--r--src/theory/bv/theory_bv_type_rules.h8
-rw-r--r--src/theory/bv/theory_bv_utils.cpp4
-rw-r--r--src/theory/bv/theory_bv_utils.h2
-rw-r--r--src/theory/bv/type_enumerator.h4
-rw-r--r--src/theory/care_graph.h4
-rw-r--r--src/theory/datatypes/datatypes_rewriter.cpp39
-rw-r--r--src/theory/datatypes/datatypes_rewriter.h4
-rw-r--r--src/theory/datatypes/datatypes_sygus.cpp4
-rw-r--r--src/theory/datatypes/datatypes_sygus.h4
-rw-r--r--src/theory/datatypes/sygus_simple_sym.cpp4
-rw-r--r--src/theory/datatypes/sygus_simple_sym.h2
-rw-r--r--src/theory/datatypes/theory_datatypes.cpp188
-rw-r--r--src/theory/datatypes/theory_datatypes.h4
-rw-r--r--src/theory/datatypes/theory_datatypes_type_rules.h2
-rw-r--r--src/theory/datatypes/type_enumerator.cpp4
-rw-r--r--src/theory/datatypes/type_enumerator.h2
-rw-r--r--src/theory/decision_manager.cpp2
-rw-r--r--src/theory/decision_manager.h2
-rw-r--r--src/theory/decision_strategy.cpp2
-rw-r--r--src/theory/decision_strategy.h2
-rw-r--r--src/theory/evaluator.cpp4
-rw-r--r--src/theory/evaluator.h2
-rw-r--r--src/theory/example/ecdata.cpp2
-rw-r--r--src/theory/example/ecdata.h2
-rw-r--r--src/theory/example/theory_uf_tim.cpp2
-rw-r--r--src/theory/example/theory_uf_tim.h2
-rw-r--r--src/theory/ext_theory.cpp4
-rw-r--r--src/theory/ext_theory.h4
-rw-r--r--src/theory/fp/fp_converter.cpp4
-rw-r--r--src/theory/fp/fp_converter.h2
-rw-r--r--src/theory/fp/theory_fp.cpp68
-rw-r--r--src/theory/fp/theory_fp.h4
-rw-r--r--src/theory/fp/theory_fp_rewriter.cpp4
-rw-r--r--src/theory/fp/theory_fp_rewriter.h4
-rw-r--r--src/theory/fp/theory_fp_type_rules.h4
-rw-r--r--src/theory/fp/type_enumerator.h4
-rw-r--r--src/theory/idl/idl_assertion.cpp4
-rw-r--r--src/theory/idl/idl_assertion.h4
-rw-r--r--src/theory/idl/idl_assertion_db.cpp4
-rw-r--r--src/theory/idl/idl_assertion_db.h2
-rw-r--r--src/theory/idl/idl_model.cpp4
-rw-r--r--src/theory/idl/idl_model.h2
-rw-r--r--src/theory/idl/theory_idl.cpp2
-rw-r--r--src/theory/idl/theory_idl.h2
-rw-r--r--src/theory/interrupted.h4
-rw-r--r--src/theory/logic_info.cpp2
-rw-r--r--src/theory/logic_info.h2
-rw-r--r--src/theory/output_channel.h2
-rw-r--r--src/theory/quantifiers/alpha_equivalence.cpp4
-rw-r--r--src/theory/quantifiers/alpha_equivalence.h2
-rw-r--r--src/theory/quantifiers/anti_skolem.cpp4
-rw-r--r--src/theory/quantifiers/anti_skolem.h2
-rw-r--r--src/theory/quantifiers/bv_inverter.cpp4
-rw-r--r--src/theory/quantifiers/bv_inverter.h2
-rw-r--r--src/theory/quantifiers/bv_inverter_utils.cpp4
-rw-r--r--src/theory/quantifiers/bv_inverter_utils.h6
-rw-r--r--src/theory/quantifiers/candidate_rewrite_database.cpp37
-rw-r--r--src/theory/quantifiers/candidate_rewrite_database.h15
-rw-r--r--src/theory/quantifiers/candidate_rewrite_filter.cpp16
-rw-r--r--src/theory/quantifiers/candidate_rewrite_filter.h10
-rw-r--r--src/theory/quantifiers/cegqi/ceg_arith_instantiator.cpp4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_arith_instantiator.h4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_bv_instantiator.cpp2
-rw-r--r--src/theory/quantifiers/cegqi/ceg_bv_instantiator.h4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.cpp6
-rw-r--r--src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h6
-rw-r--r--src/theory/quantifiers/cegqi/ceg_dt_instantiator.cpp4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_dt_instantiator.h4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_epr_instantiator.cpp4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_epr_instantiator.h4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_instantiator.cpp4
-rw-r--r--src/theory/quantifiers/cegqi/ceg_instantiator.h4
-rw-r--r--src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp4
-rw-r--r--src/theory/quantifiers/cegqi/inst_strategy_cegqi.h4
-rw-r--r--src/theory/quantifiers/conjecture_generator.cpp4
-rw-r--r--src/theory/quantifiers/conjecture_generator.h2
-rw-r--r--src/theory/quantifiers/dynamic_rewrite.cpp4
-rw-r--r--src/theory/quantifiers/dynamic_rewrite.h2
-rw-r--r--src/theory/quantifiers/ematching/candidate_generator.cpp4
-rw-r--r--src/theory/quantifiers/ematching/candidate_generator.h2
-rw-r--r--src/theory/quantifiers/ematching/ho_trigger.cpp7
-rw-r--r--src/theory/quantifiers/ematching/ho_trigger.h2
-rw-r--r--src/theory/quantifiers/ematching/inst_match_generator.cpp4
-rw-r--r--src/theory/quantifiers/ematching/inst_match_generator.h4
-rw-r--r--src/theory/quantifiers/ematching/inst_strategy_e_matching.cpp4
-rw-r--r--src/theory/quantifiers/ematching/inst_strategy_e_matching.h2
-rw-r--r--src/theory/quantifiers/ematching/instantiation_engine.cpp2
-rw-r--r--src/theory/quantifiers/ematching/instantiation_engine.h4
-rw-r--r--src/theory/quantifiers/ematching/trigger.cpp2
-rw-r--r--src/theory/quantifiers/ematching/trigger.h2
-rw-r--r--src/theory/quantifiers/equality_infer.cpp4
-rw-r--r--src/theory/quantifiers/equality_infer.h4
-rw-r--r--src/theory/quantifiers/equality_query.cpp4
-rw-r--r--src/theory/quantifiers/equality_query.h4
-rw-r--r--src/theory/quantifiers/expr_miner.cpp8
-rw-r--r--src/theory/quantifiers/expr_miner.h2
-rw-r--r--src/theory/quantifiers/expr_miner_manager.cpp6
-rw-r--r--src/theory/quantifiers/expr_miner_manager.h2
-rw-r--r--src/theory/quantifiers/extended_rewrite.cpp4
-rw-r--r--src/theory/quantifiers/extended_rewrite.h2
-rw-r--r--src/theory/quantifiers/first_order_model.cpp4
-rw-r--r--src/theory/quantifiers/first_order_model.h4
-rw-r--r--src/theory/quantifiers/fmf/bounded_integers.cpp4
-rw-r--r--src/theory/quantifiers/fmf/bounded_integers.h2
-rw-r--r--src/theory/quantifiers/fmf/full_model_check.cpp4
-rw-r--r--src/theory/quantifiers/fmf/full_model_check.h2
-rw-r--r--src/theory/quantifiers/fmf/model_builder.cpp4
-rw-r--r--src/theory/quantifiers/fmf/model_builder.h4
-rw-r--r--src/theory/quantifiers/fmf/model_engine.cpp5
-rw-r--r--src/theory/quantifiers/fmf/model_engine.h4
-rw-r--r--src/theory/quantifiers/fun_def_process.cpp4
-rw-r--r--src/theory/quantifiers/fun_def_process.h2
-rw-r--r--src/theory/quantifiers/inst_match.cpp4
-rw-r--r--src/theory/quantifiers/inst_match.h2
-rw-r--r--src/theory/quantifiers/inst_match_trie.cpp4
-rw-r--r--src/theory/quantifiers/inst_match_trie.h4
-rw-r--r--src/theory/quantifiers/inst_propagator.cpp4
-rw-r--r--src/theory/quantifiers/inst_propagator.h4
-rw-r--r--src/theory/quantifiers/inst_strategy_enumerative.cpp375
-rw-r--r--src/theory/quantifiers/inst_strategy_enumerative.h8
-rw-r--r--src/theory/quantifiers/instantiate.cpp4
-rw-r--r--src/theory/quantifiers/instantiate.h4
-rw-r--r--src/theory/quantifiers/lazy_trie.cpp4
-rw-r--r--src/theory/quantifiers/lazy_trie.h4
-rw-r--r--src/theory/quantifiers/local_theory_ext.cpp4
-rw-r--r--src/theory/quantifiers/local_theory_ext.h2
-rw-r--r--src/theory/quantifiers/quant_conflict_find.cpp4
-rw-r--r--src/theory/quantifiers/quant_conflict_find.h4
-rw-r--r--src/theory/quantifiers/quant_epr.cpp2
-rw-r--r--src/theory/quantifiers/quant_epr.h2
-rw-r--r--src/theory/quantifiers/quant_relevance.cpp4
-rw-r--r--src/theory/quantifiers/quant_relevance.h4
-rw-r--r--src/theory/quantifiers/quant_split.cpp4
-rw-r--r--src/theory/quantifiers/quant_split.h2
-rw-r--r--src/theory/quantifiers/quant_util.cpp4
-rw-r--r--src/theory/quantifiers/quant_util.h4
-rw-r--r--src/theory/quantifiers/quantifiers_attributes.cpp4
-rw-r--r--src/theory/quantifiers/quantifiers_attributes.h2
-rw-r--r--src/theory/quantifiers/quantifiers_rewriter.cpp2
-rw-r--r--src/theory/quantifiers/quantifiers_rewriter.h2
-rw-r--r--src/theory/quantifiers/query_generator.cpp4
-rw-r--r--src/theory/quantifiers/query_generator.h2
-rw-r--r--src/theory/quantifiers/relevant_domain.cpp8
-rw-r--r--src/theory/quantifiers/relevant_domain.h2
-rw-r--r--src/theory/quantifiers/rewrite_engine.cpp4
-rw-r--r--src/theory/quantifiers/rewrite_engine.h4
-rw-r--r--src/theory/quantifiers/single_inv_partition.cpp4
-rw-r--r--src/theory/quantifiers/single_inv_partition.h2
-rw-r--r--src/theory/quantifiers/skolemize.cpp2
-rw-r--r--src/theory/quantifiers/skolemize.h2
-rw-r--r--src/theory/quantifiers/solution_filter.cpp2
-rw-r--r--src/theory/quantifiers/solution_filter.h2
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv.cpp4
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv.h2
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp4
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h2
-rw-r--r--src/theory/quantifiers/sygus/cegis.cpp2
-rw-r--r--src/theory/quantifiers/sygus/cegis.h4
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.cpp2
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.h2
-rw-r--r--src/theory/quantifiers/sygus/enum_stream_substitution.cpp2
-rw-r--r--src/theory/quantifiers/sygus/enum_stream_substitution.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_enumerator.cpp26
-rw-r--r--src/theory/quantifiers/sygus/sygus_enumerator.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_eval_unfold.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_eval_unfold.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_explain.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_explain.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_cons.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_cons.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_norm.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_norm.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_red.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_red.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_invariance.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_invariance.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_module.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_module.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_pbe.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_pbe.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_process_conj.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_process_conj.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_repair_const.cpp5
-rw-r--r--src/theory/quantifiers/sygus/sygus_repair_const.h4
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_io.cpp100
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_io.h21
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_rl.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_rl.h2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_strat.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_strat.h2
-rw-r--r--src/theory/quantifiers/sygus/synth_conjecture.cpp6
-rw-r--r--src/theory/quantifiers/sygus/synth_conjecture.h4
-rw-r--r--src/theory/quantifiers/sygus/synth_engine.cpp3
-rw-r--r--src/theory/quantifiers/sygus/synth_engine.h4
-rw-r--r--src/theory/quantifiers/sygus/term_database_sygus.cpp4
-rw-r--r--src/theory/quantifiers/sygus/term_database_sygus.h4
-rw-r--r--src/theory/quantifiers/sygus_sampler.cpp48
-rw-r--r--src/theory/quantifiers/sygus_sampler.h33
-rw-r--r--src/theory/quantifiers/term_canonize.cpp2
-rw-r--r--src/theory/quantifiers/term_canonize.h2
-rw-r--r--src/theory/quantifiers/term_database.cpp4
-rw-r--r--src/theory/quantifiers/term_database.h2
-rw-r--r--src/theory/quantifiers/term_enumeration.cpp22
-rw-r--r--src/theory/quantifiers/term_enumeration.h10
-rw-r--r--src/theory/quantifiers/term_util.cpp4
-rw-r--r--src/theory/quantifiers/term_util.h4
-rw-r--r--src/theory/quantifiers/theory_quantifiers.cpp31
-rw-r--r--src/theory/quantifiers/theory_quantifiers.h11
-rw-r--r--src/theory/quantifiers/theory_quantifiers_type_rules.h2
-rw-r--r--src/theory/quantifiers_engine.cpp2
-rw-r--r--src/theory/quantifiers_engine.h2
-rw-r--r--src/theory/rep_set.cpp4
-rw-r--r--src/theory/rep_set.h4
-rw-r--r--src/theory/rewriter.cpp2
-rw-r--r--src/theory/rewriter.h4
-rw-r--r--src/theory/rewriter_attributes.h4
-rw-r--r--src/theory/rewriter_tables_template.h4
-rw-r--r--src/theory/sep/theory_sep.cpp4
-rw-r--r--src/theory/sep/theory_sep.h2
-rw-r--r--src/theory/sep/theory_sep_rewriter.cpp2
-rw-r--r--src/theory/sep/theory_sep_rewriter.h2
-rw-r--r--src/theory/sep/theory_sep_type_rules.h2
-rw-r--r--src/theory/sets/normal_form.h2
-rw-r--r--src/theory/sets/rels_utils.h2
-rw-r--r--src/theory/sets/theory_sets.cpp2
-rw-r--r--src/theory/sets/theory_sets.h4
-rw-r--r--src/theory/sets/theory_sets_private.cpp60
-rw-r--r--src/theory/sets/theory_sets_private.h4
-rw-r--r--src/theory/sets/theory_sets_rels.cpp2
-rw-r--r--src/theory/sets/theory_sets_rels.h2
-rw-r--r--src/theory/sets/theory_sets_rewriter.cpp4
-rw-r--r--src/theory/sets/theory_sets_rewriter.h2
-rw-r--r--src/theory/sets/theory_sets_type_enumerator.h2
-rw-r--r--src/theory/sets/theory_sets_type_rules.h2
-rw-r--r--src/theory/shared_terms_database.cpp2
-rw-r--r--src/theory/shared_terms_database.h4
-rw-r--r--src/theory/sort_inference.cpp4
-rw-r--r--src/theory/sort_inference.h4
-rw-r--r--src/theory/strings/regexp_elim.cpp4
-rw-r--r--src/theory/strings/regexp_elim.h2
-rw-r--r--src/theory/strings/regexp_operation.cpp4
-rw-r--r--src/theory/strings/regexp_operation.h2
-rw-r--r--src/theory/strings/regexp_solver.cpp547
-rw-r--r--src/theory/strings/regexp_solver.h106
-rw-r--r--src/theory/strings/skolem_cache.cpp4
-rw-r--r--src/theory/strings/skolem_cache.h4
-rw-r--r--src/theory/strings/theory_strings.cpp676
-rw-r--r--src/theory/strings/theory_strings.h171
-rw-r--r--src/theory/strings/theory_strings_preprocess.cpp4
-rw-r--r--src/theory/strings/theory_strings_preprocess.h4
-rw-r--r--src/theory/strings/theory_strings_rewriter.cpp40
-rw-r--r--src/theory/strings/theory_strings_rewriter.h2
-rw-r--r--src/theory/strings/theory_strings_type_rules.h4
-rw-r--r--src/theory/strings/type_enumerator.h4
-rw-r--r--src/theory/subs_minimize.cpp2
-rw-r--r--src/theory/subs_minimize.h2
-rw-r--r--src/theory/substitutions.cpp2
-rw-r--r--src/theory/substitutions.h2
-rw-r--r--src/theory/term_registration_visitor.cpp2
-rw-r--r--src/theory/term_registration_visitor.h2
-rw-r--r--src/theory/theory.cpp4
-rw-r--r--src/theory/theory.h2
-rw-r--r--src/theory/theory_engine.cpp4
-rw-r--r--src/theory/theory_engine.h2
-rw-r--r--src/theory/theory_model.cpp2
-rw-r--r--src/theory/theory_model.h2
-rw-r--r--src/theory/theory_model_builder.cpp12
-rw-r--r--src/theory/theory_model_builder.h4
-rw-r--r--src/theory/theory_registrar.h4
-rw-r--r--src/theory/theory_test_utils.h4
-rw-r--r--src/theory/theory_traits_template.h4
-rw-r--r--src/theory/type_enumerator.h2
-rw-r--r--src/theory/type_enumerator_template.cpp2
-rw-r--r--src/theory/type_set.cpp4
-rw-r--r--src/theory/type_set.h2
-rw-r--r--src/theory/uf/equality_engine.cpp2
-rw-r--r--src/theory/uf/equality_engine.h2
-rw-r--r--src/theory/uf/equality_engine_types.h4
-rw-r--r--src/theory/uf/symmetry_breaker.cpp2
-rw-r--r--src/theory/uf/symmetry_breaker.h2
-rw-r--r--src/theory/uf/theory_uf.cpp60
-rw-r--r--src/theory/uf/theory_uf.h2
-rw-r--r--src/theory/uf/theory_uf_model.cpp4
-rw-r--r--src/theory/uf/theory_uf_model.h2
-rw-r--r--src/theory/uf/theory_uf_rewriter.h83
-rw-r--r--src/theory/uf/theory_uf_strong_solver.cpp2
-rw-r--r--src/theory/uf/theory_uf_strong_solver.h4
-rw-r--r--src/theory/uf/theory_uf_type_rules.h2
-rw-r--r--src/theory/valuation.cpp4
-rw-r--r--src/theory/valuation.h2
-rw-r--r--src/util/abstract_value.cpp4
-rw-r--r--src/util/abstract_value.h2
-rw-r--r--src/util/bin_heap.h4
-rw-r--r--src/util/bitvector.cpp4
-rw-r--r--src/util/bitvector.h26
-rw-r--r--src/util/bool.h2
-rw-r--r--src/util/cardinality.cpp2
-rw-r--r--src/util/cardinality.h2
-rw-r--r--src/util/debug.h2
-rw-r--r--src/util/dense_map.h4
-rw-r--r--src/util/divisible.cpp2
-rw-r--r--src/util/divisible.h4
-rw-r--r--src/util/floatingpoint.cpp4
-rw-r--r--src/util/floatingpoint.h.in4
-rw-r--r--src/util/gmp_util.h4
-rw-r--r--src/util/hash.h4
-rw-r--r--src/util/index.cpp2
-rw-r--r--src/util/index.h4
-rw-r--r--src/util/integer.h.in2
-rw-r--r--src/util/integer_cln_imp.cpp4
-rw-r--r--src/util/integer_cln_imp.h2
-rw-r--r--src/util/integer_gmp_imp.cpp4
-rw-r--r--src/util/integer_gmp_imp.h2
-rw-r--r--src/util/maybe.h2
-rw-r--r--src/util/ostream_util.cpp2
-rw-r--r--src/util/ostream_util.h2
-rw-r--r--src/util/proof.h2
-rw-r--r--src/util/random.cpp2
-rw-r--r--src/util/random.h4
-rw-r--r--src/util/rational.h.in2
-rw-r--r--src/util/rational_cln_imp.cpp2
-rw-r--r--src/util/rational_cln_imp.h4
-rw-r--r--src/util/rational_gmp_imp.cpp2
-rw-r--r--src/util/rational_gmp_imp.h4
-rw-r--r--src/util/regexp.cpp2
-rw-r--r--src/util/regexp.h2
-rw-r--r--src/util/resource_manager.cpp2
-rw-r--r--src/util/resource_manager.h2
-rw-r--r--src/util/result.cpp2
-rw-r--r--src/util/result.h2
-rw-r--r--src/util/safe_print.cpp4
-rw-r--r--src/util/safe_print.h2
-rw-r--r--src/util/sampler.cpp2
-rw-r--r--src/util/sampler.h2
-rw-r--r--src/util/sexpr.cpp4
-rw-r--r--src/util/sexpr.h2
-rw-r--r--src/util/smt2_quote_string.cpp4
-rw-r--r--src/util/smt2_quote_string.h4
-rw-r--r--src/util/statistics.cpp4
-rw-r--r--src/util/statistics.h2
-rw-r--r--src/util/statistics_registry.cpp4
-rw-r--r--src/util/statistics_registry.h4
-rw-r--r--src/util/tuple.h2
-rw-r--r--src/util/unsafe_interrupt_exception.h4
-rw-r--r--src/util/utility.h4
897 files changed, 4929 insertions, 2824 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0124bf4f9..372888d36 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -88,6 +88,8 @@ libcvc4_add_sources(
preprocessing/passes/sort_infer.h
preprocessing/passes/static_learning.cpp
preprocessing/passes/static_learning.h
+ preprocessing/passes/sygus_abduct.cpp
+ preprocessing/passes/sygus_abduct.h
preprocessing/passes/sygus_inference.cpp
preprocessing/passes/sygus_inference.h
preprocessing/passes/symmetry_breaker.cpp
@@ -139,6 +141,8 @@ libcvc4_add_sources(
proof/dimacs_printer.h
proof/drat/drat_proof.cpp
proof/drat/drat_proof.h
+ proof/er/er_proof.cpp
+ proof/er/er_proof.h
proof/lemma_proof.cpp
proof/lemma_proof.h
proof/lfsc_proof_printer.cpp
@@ -235,7 +239,6 @@ libcvc4_add_sources(
smt/model_core_builder.h
smt/smt_engine.cpp
smt/smt_engine.h
- smt/smt_engine_check_proof.cpp
smt/smt_engine_scope.cpp
smt/smt_engine_scope.h
smt/smt_statistics_registry.cpp
@@ -626,6 +629,8 @@ libcvc4_add_sources(
theory/strings/regexp_elim.h
theory/strings/regexp_operation.cpp
theory/strings/regexp_operation.h
+ theory/strings/regexp_solver.cpp
+ theory/strings/regexp_solver.h
theory/strings/skolem_cache.cpp
theory/strings/skolem_cache.h
theory/strings/theory_strings.cpp
@@ -768,6 +773,11 @@ endif()
target_link_libraries(cvc4 ${GMP_LIBRARIES})
target_include_directories(cvc4 PUBLIC ${GMP_INCLUDE_DIR})
+# Add rt library
+# Note: For glibc < 2.17 we have to additionally link against rt (man clock_gettime).
+# RT_LIBRARIES should be empty for glibc >= 2.17
+target_link_libraries(cvc4 ${RT_LIBRARIES})
+
#-----------------------------------------------------------------------------#
# Visit main subdirectory after creating target cvc4. For target main, we have
# to manually add library dependencies since we can't use
@@ -789,27 +799,27 @@ install(FILES
api/cvc4cpp.h
api/cvc4cppkind.h
DESTINATION
- include/api)
+ include/cvc4/api)
install(FILES
base/configuration.h
base/exception.h
base/listener.h
base/modal_exception.h
DESTINATION
- include/base)
+ include/cvc4/base)
install(FILES
context/cdhashmap_forward.h
context/cdhashset_forward.h
context/cdinsert_hashmap_forward.h
context/cdlist_forward.h
DESTINATION
- include/context)
+ include/cvc4/context)
install(FILES
include/cvc4.h
include/cvc4_public.h
include/cvc4parser_public.h
DESTINATION
- include)
+ include/cvc4)
install(FILES
expr/array.h
expr/array_store_all.h
@@ -829,7 +839,7 @@ install(FILES
${CMAKE_CURRENT_BINARY_DIR}/expr/kind.h
${CMAKE_CURRENT_BINARY_DIR}/expr/expr_manager.h
DESTINATION
- include/expr)
+ include/cvc4/expr)
install(FILES
options/argument_extender.h
options/arith_heuristic_pivot_rule.h
@@ -846,38 +856,38 @@ install(FILES
options/sygus_out_mode.h
options/theoryof_mode.h
DESTINATION
- include/options)
+ include/cvc4/options)
install(FILES
parser/input.h
parser/parser.h
parser/parser_builder.h
parser/parser_exception.h
DESTINATION
- include/parser)
+ include/cvc4/parser)
install(FILES
printer/sygus_print_callback.h
DESTINATION
- include/printer)
+ include/cvc4/printer)
install(FILES
proof/unsat_core.h
DESTINATION
- include/proof)
+ include/cvc4/proof)
install(FILES
smt/command.h
smt/logic_exception.h
smt/smt_engine.h
DESTINATION
- include/smt)
+ include/cvc4/smt)
install(FILES
smt_util/lemma_channels.h
smt_util/lemma_input_channel.h
smt_util/lemma_output_channel.h
DESTINATION
- include/smt_util)
+ include/cvc4/smt_util)
install(FILES
theory/logic_info.h
DESTINATION
- include/theory)
+ include/cvc4/theory)
install(FILES
util/abstract_value.h
util/bitvector.h
@@ -904,4 +914,10 @@ install(FILES
${CMAKE_CURRENT_BINARY_DIR}/util/integer.h
${CMAKE_CURRENT_BINARY_DIR}/util/rational.h
DESTINATION
- include/util)
+ include/cvc4/util)
+
+# Fix include paths for all public headers.
+# Note: This is a temporary fix until the new C++ API is in place.
+install(CODE "execute_process(COMMAND
+ ${CMAKE_CURRENT_LIST_DIR}/fix-install-headers.sh
+ ${CMAKE_INSTALL_PREFIX})")
diff --git a/src/api/cvc4cpp.cpp b/src/api/cvc4cpp.cpp
index ddb17c3a7..86072d601 100644
--- a/src/api/cvc4cpp.cpp
+++ b/src/api/cvc4cpp.cpp
@@ -2,9 +2,9 @@
/*! \file cvc4cpp.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1373,6 +1373,13 @@ std::ostream& operator<<(std::ostream& out,
return out;
}
+std::ostream& operator<<(std::ostream& out,
+ const std::vector<DatatypeConstructorDecl>& vector)
+{
+ container_to_stream(out, vector);
+ return out;
+}
+
/* DatatypeDecl ------------------------------------------------------------- */
DatatypeDecl::DatatypeDecl(const std::string& name, bool isCoDatatype)
@@ -2385,42 +2392,13 @@ Term Solver::mkFloatingPoint(uint32_t exp, uint32_t sig, Term val) const
/* Create variables */
/* -------------------------------------------------------------------------- */
-Term Solver::mkVar(const std::string& symbol, Sort sort) const
-{
- try
- {
- CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkVar(symbol, *sort.d_type);
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
-Term Solver::mkVar(Sort sort) const
-{
- try
- {
- CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkVar(*sort.d_type);
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
-Term Solver::mkBoundVar(const std::string& symbol, Sort sort) const
+Term Solver::mkVar(Sort sort, const std::string& symbol) const
{
try
{
CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkBoundVar(symbol, *sort.d_type);
+ Term res = symbol.empty() ? d_exprMgr->mkVar(*sort.d_type)
+ : d_exprMgr->mkVar(symbol, *sort.d_type);
(void)res.d_expr->getType(true); /* kick off type checking */
return res;
}
@@ -2430,12 +2408,13 @@ Term Solver::mkBoundVar(const std::string& symbol, Sort sort) const
}
}
-Term Solver::mkBoundVar(Sort sort) const
+Term Solver::mkBoundVar(Sort sort, const std::string& symbol) const
{
try
{
CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
- Term res = d_exprMgr->mkBoundVar(*sort.d_type);
+ Term res = symbol.empty() ? d_exprMgr->mkBoundVar(*sort.d_type)
+ : d_exprMgr->mkBoundVar(symbol, *sort.d_type);
(void)res.d_expr->getType(true); /* kick off type checking */
return res;
}
@@ -2524,21 +2503,6 @@ Term Solver::mkTerm(Kind kind) const
}
}
-Term Solver::mkTerm(Kind kind, Sort sort) const
-{
- try
- {
- CVC4_API_KIND_CHECK_EXPECTED(kind == SEP_NIL, kind) << "SEP_NIL";
- Term res = d_exprMgr->mkNullaryOperator(*sort.d_type, extToIntKind(kind));
- (void)res.d_expr->getType(true); /* kick off type checking */
- return res;
- }
- catch (const CVC4::TypeCheckingException& e)
- {
- throw CVC4ApiException(e.getMessage());
- }
-}
-
Term Solver::mkTerm(Kind kind, Term child) const
{
try
@@ -2980,7 +2944,17 @@ Result Solver::checkSatAssuming(const std::vector<Term>& assumptions) const
*/
Term Solver::declareConst(const std::string& symbol, Sort sort) const
{
- return d_exprMgr->mkVar(symbol, *sort.d_type);
+ try
+ {
+ CVC4_API_ARG_CHECK_EXPECTED(!sort.isNull(), sort) << "non-null sort";
+ Term res = d_exprMgr->mkVar(symbol, *sort.d_type);
+ (void)res.d_expr->getType(true); /* kick off type checking */
+ return res;
+ }
+ catch (const CVC4::TypeCheckingException& e)
+ {
+ throw CVC4ApiException(e.getMessage());
+ }
}
/**
@@ -2990,21 +2964,14 @@ Sort Solver::declareDatatype(
const std::string& symbol,
const std::vector<DatatypeConstructorDecl>& ctors) const
{
+ CVC4_API_ARG_CHECK_EXPECTED(ctors.size() > 0, ctors)
+ << "a datatype declaration with at least one constructor";
DatatypeDecl dtdecl(symbol);
for (const DatatypeConstructorDecl& ctor : ctors)
{
dtdecl.addConstructor(ctor);
}
- return mkDatatypeSort(dtdecl);
-}
-
-/**
- * ( declare-fun <symbol> () <sort> )
- */
-Term Solver::declareFun(const std::string& symbol, Sort sort) const
-{
- Type type = *sort.d_type;
- return d_exprMgr->mkVar(symbol, type);
+ return d_exprMgr->mkDatatypeType(*dtdecl.d_dtype);
}
/**
diff --git a/src/api/cvc4cpp.h b/src/api/cvc4cpp.h
index b8da070fc..95d917f54 100644
--- a/src/api/cvc4cpp.h
+++ b/src/api/cvc4cpp.h
@@ -2,9 +2,9 @@
/*! \file cvc4cpp.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -19,7 +19,7 @@
#ifndef __CVC4__API__CVC4CPP_H
#define __CVC4__API__CVC4CPP_H
-#include "cvc4cppkind.h"
+#include "api/cvc4cppkind.h"
#include <map>
#include <memory>
@@ -1456,6 +1456,16 @@ std::ostream& operator<<(std::ostream& out,
const DatatypeConstructorDecl& ctordecl) CVC4_PUBLIC;
/**
+ * Serialize a vector of datatype constructor declarations to given stream.
+ * @param out the output stream
+ * @param vector the vector of datatype constructor declarations to be
+ * serialized to the given stream
+ * @return the output stream
+ */
+std::ostream& operator<<(std::ostream& out,
+ const std::vector<DatatypeConstructorDecl>& vector);
+
+/**
* Serialize a datatype selector declaration to given stream.
* @param out the output stream
* @param stordecl the datatype selector declaration to be serialized
@@ -1693,14 +1703,6 @@ class CVC4_PUBLIC Solver
Term mkTerm(Kind kind) const;
/**
- * Create 0-ary term of given kind and sort.
- * @param kind the kind of the term
- * @param sort the sort argument to this kind
- * @return the Term
- */
- Term mkTerm(Kind kind, Sort sort) const;
-
- /**
* Create a unary term of given kind.
* @param kind the kind of the term
* @param child the child of the term
@@ -2045,7 +2047,14 @@ class CVC4_PUBLIC Solver
Term mkBitVector(const char* s, uint32_t base = 2) const;
/**
- * Create a bit-vector constant from a given string.
+ * Create a bit-vector constant from a given string of base 2, 10 or 16.
+ *
+ * The size of resulting bit-vector is
+ * - base 2: the size of the binary string
+ * - base 10: the min. size required to represent the decimal as a bit-vector
+ * - base 16: the max. size required to represent the hexadecimal as a
+ * bit-vector (4 * size of the given value string)
+ *
* @param s the string representation of the constant
* @param base the base of the string representation (2, 10, or 16)
* @return the bit-vector constant
@@ -2053,7 +2062,9 @@ class CVC4_PUBLIC Solver
Term mkBitVector(const std::string& s, uint32_t base = 2) const;
/**
- * Create a bit-vector constant of a given bit-width from a given string.
+ * Create a bit-vector constant of a given bit-width from a given string of
+ * base 2, 10 or 16.
+ *
* @param size the bit-width of the constant
* @param s the string representation of the constant
* @param base the base of the string representation (2, 10, or 16)
@@ -2062,7 +2073,8 @@ class CVC4_PUBLIC Solver
Term mkBitVector(uint32_t size, const char* s, uint32_t base) const;
/**
- * Create a bit-vector constant of a given bit-width from a given string.
+ * Create a bit-vector constant of a given bit-width from a given string of
+ * base 2, 10 or 16.
* @param size the bit-width of the constant
* @param s the string representation of the constant
* @param base the base of the string representation (2, 10, or 16)
@@ -2155,33 +2167,19 @@ class CVC4_PUBLIC Solver
/**
* Create variable.
- * @param symbol the name of the variable
- * @param sort the sort of the variable
- * @return the variable
- */
- Term mkVar(const std::string& symbol, Sort sort) const;
-
- /**
- * Create variable.
* @param sort the sort of the variable
- * @return the variable
- */
- Term mkVar(Sort sort) const;
-
- /**
- * Create bound variable.
* @param symbol the name of the variable
- * @param sort the sort of the variable
* @return the variable
*/
- Term mkBoundVar(const std::string& symbol, Sort sort) const;
+ Term mkVar(Sort sort, const std::string& symbol = std::string()) const;
/**
* Create bound variable.
* @param sort the sort of the variable
+ * @param symbol the name of the variable
* @return the variable
*/
- Term mkBoundVar(Sort sort) const;
+ Term mkBoundVar(Sort sort, const std::string& symbol = std::string()) const;
/* .................................................................... */
/* Formula Handling */
@@ -2269,15 +2267,6 @@ class CVC4_PUBLIC Solver
const std::vector<DatatypeConstructorDecl>& ctors) const;
/**
- * Declare 0-arity function symbol.
- * SMT-LIB: ( declare-fun <symbol> ( ) <sort> )
- * @param symbol the name of the function
- * @param sort the sort of the return value of this function
- * @return the function
- */
- Term declareFun(const std::string& symbol, Sort sort) const;
-
- /**
* Declare n-ary function symbol.
* SMT-LIB: ( declare-fun <symbol> ( <sort>* ) <sort> )
* @param symbol the name of the function
diff --git a/src/api/cvc4cppkind.h b/src/api/cvc4cppkind.h
index 4e69ddfe1..f587f44be 100644
--- a/src/api/cvc4cppkind.h
+++ b/src/api/cvc4cppkind.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1755,7 +1755,6 @@ enum CVC4_PUBLIC Kind : int32_t
* Parameters: 0
* Create with:
* mkSepNil(Sort sort)
- * mkTerm(Kind kind, Sort sort)
*/
SEP_NIL,
/**
diff --git a/src/base/configuration.cpp b/src/base/configuration.cpp
index f154e5c90..a7fa79395 100644
--- a/src/base/configuration.cpp
+++ b/src/base/configuration.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Aina Niemetz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -114,7 +114,7 @@ std::string Configuration::getVersionExtra() {
std::string Configuration::copyright() {
std::stringstream ss;
- ss << "Copyright (c) 2009-2018 by the authors and their institutional\n"
+ ss << "Copyright (c) 2009-2019 by the authors and their institutional\n"
<< "affiliations listed at http://cvc4.cs.stanford.edu/authors\n\n";
if (Configuration::licenseIsGpl()) {
@@ -130,7 +130,7 @@ std::string Configuration::copyright() {
ss << "THIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\n"
<< "USE AT YOUR OWN RISK.\n\n";
-
+
ss << "CVC4 incorporates code from ANTLR3 (http://www.antlr.org).\n"
<< "See licenses/antlr3-LICENSE for copyright and licensing information."
<< "\n\n";
@@ -250,6 +250,8 @@ bool Configuration::isBuiltWithCryptominisat() {
return IS_CRYPTOMINISAT_BUILD;
}
+bool Configuration::isBuiltWithDrat2Er() { return IS_DRAT2ER_BUILD; }
+
bool Configuration::isBuiltWithReadline() {
return IS_READLINE_BUILD;
}
diff --git a/src/base/configuration.h b/src/base/configuration.h
index b6e2a1963..da11b9547 100644
--- a/src/base/configuration.h
+++ b/src/base/configuration.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Francois Bobot, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -97,6 +97,8 @@ public:
static bool isBuiltWithCryptominisat();
+ static bool isBuiltWithDrat2Er();
+
static bool isBuiltWithReadline();
static bool isBuiltWithLfsc();
diff --git a/src/base/configuration_private.h b/src/base/configuration_private.h
index 77f3f5e77..0476dc24e 100644
--- a/src/base/configuration_private.h
+++ b/src/base/configuration_private.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/cvc4_assert.cpp b/src/base/cvc4_assert.cpp
index 3af6a9909..1150f41f1 100644
--- a/src/base/cvc4_assert.cpp
+++ b/src/base/cvc4_assert.cpp
@@ -2,9 +2,9 @@
/*! \file cvc4_assert.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Morgan Deters, Tim King, Chad Brewbaker
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/cvc4_assert.h b/src/base/cvc4_assert.h
index ed69daf23..e311639f9 100644
--- a/src/base/cvc4_assert.h
+++ b/src/base/cvc4_assert.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/cvc4_check.cpp b/src/base/cvc4_check.cpp
index 5976ac3f7..f0b602849 100644
--- a/src/base/cvc4_check.cpp
+++ b/src/base/cvc4_check.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/cvc4_check.h b/src/base/cvc4_check.h
index 5cb3315f4..0565ad22a 100644
--- a/src/base/cvc4_check.h
+++ b/src/base/cvc4_check.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/exception.cpp b/src/base/exception.cpp
index 831220a2b..c1c174d1d 100644
--- a/src/base/exception.cpp
+++ b/src/base/exception.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/exception.h b/src/base/exception.h
index 54f6aa92d..c3c785fc1 100644
--- a/src/base/exception.h
+++ b/src/base/exception.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/git_versioninfo.cpp.in b/src/base/git_versioninfo.cpp.in
index 20da094bc..5c18d4e2b 100644
--- a/src/base/git_versioninfo.cpp.in
+++ b/src/base/git_versioninfo.cpp.in
@@ -1,3 +1,20 @@
+/********************* */
+/*! \file git_versioninfo.cpp.in
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Aina Niemetz, Mathias Preiner
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
#include "base/configuration.h"
const bool ::CVC4::Configuration::IS_GIT_BUILD = @GIT_BUILD@;
const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = "@GIT_BRANCH@";
diff --git a/src/base/listener.cpp b/src/base/listener.cpp
index 3b67b8a06..44e5563e7 100644
--- a/src/base/listener.cpp
+++ b/src/base/listener.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/listener.h b/src/base/listener.h
index 88bcee742..0c6045b48 100644
--- a/src/base/listener.h
+++ b/src/base/listener.h
@@ -2,9 +2,9 @@
/*! \file listener.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/map_util.h b/src/base/map_util.h
index 2e17c9290..d57145917 100644
--- a/src/base/map_util.h
+++ b/src/base/map_util.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/modal_exception.h b/src/base/modal_exception.h
index fefb5aed9..7d6522ea7 100644
--- a/src/base/modal_exception.h
+++ b/src/base/modal_exception.h
@@ -2,9 +2,9 @@
/*! \file modal_exception.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andres Noetzli, Tim King
+ ** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/output.cpp b/src/base/output.cpp
index 787d26bf6..fee8b1d8d 100644
--- a/src/base/output.cpp
+++ b/src/base/output.cpp
@@ -2,9 +2,9 @@
/*! \file output.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/base/output.h b/src/base/output.h
index fef8af876..9fe4ec34d 100644
--- a/src/base/output.h
+++ b/src/base/output.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/bindings/java_iterator_adapter.h b/src/bindings/java_iterator_adapter.h
index 1cf88aaad..d164fe563 100644
--- a/src/bindings/java_iterator_adapter.h
+++ b/src/bindings/java_iterator_adapter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/bindings/java_stream_adapters.h b/src/bindings/java_stream_adapters.h
index 86d3e7c9d..d88f34ca6 100644
--- a/src/bindings/java_stream_adapters.h
+++ b/src/bindings/java_stream_adapters.h
@@ -2,9 +2,9 @@
/*! \file java_stream_adapters.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/bindings/swig.h b/src/bindings/swig.h
index 5316eef12..eb05cc080 100644
--- a/src/bindings/swig.h
+++ b/src/bindings/swig.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/backtrackable.h b/src/context/backtrackable.h
index 110bf9afb..31cbee2b1 100644
--- a/src/context/backtrackable.h
+++ b/src/context/backtrackable.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cddense_set.h b/src/context/cddense_set.h
index 625946cc8..4d48bf5d9 100644
--- a/src/context/cddense_set.h
+++ b/src/context/cddense_set.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashmap.h b/src/context/cdhashmap.h
index 4697cd291..8d97bfa66 100644
--- a/src/context/cdhashmap.h
+++ b/src/context/cdhashmap.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashmap_forward.h b/src/context/cdhashmap_forward.h
index 54dc545f5..a98bbe649 100644
--- a/src/context/cdhashmap_forward.h
+++ b/src/context/cdhashmap_forward.h
@@ -2,9 +2,9 @@
/*! \file cdhashmap_forward.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Dejan Jovanovic
+ ** Tim King, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashset.h b/src/context/cdhashset.h
index b907d9823..191ac1ac7 100644
--- a/src/context/cdhashset.h
+++ b/src/context/cdhashset.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashset_forward.h b/src/context/cdhashset_forward.h
index a3ec3ea31..e2a41404b 100644
--- a/src/context/cdhashset_forward.h
+++ b/src/context/cdhashset_forward.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdinsert_hashmap.h b/src/context/cdinsert_hashmap.h
index d59bf584d..f15c418eb 100644
--- a/src/context/cdinsert_hashmap.h
+++ b/src/context/cdinsert_hashmap.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdinsert_hashmap_forward.h b/src/context/cdinsert_hashmap_forward.h
index df567e8aa..d89a17990 100644
--- a/src/context/cdinsert_hashmap_forward.h
+++ b/src/context/cdinsert_hashmap_forward.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdlist.h b/src/context/cdlist.h
index 834e363f9..e9b9ccdff 100644
--- a/src/context/cdlist.h
+++ b/src/context/cdlist.h
@@ -2,9 +2,9 @@
/*! \file cdlist.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Mathias Preiner
+ ** Morgan Deters, Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdlist_forward.h b/src/context/cdlist_forward.h
index 8bf1c2678..3cdb1962a 100644
--- a/src/context/cdlist_forward.h
+++ b/src/context/cdlist_forward.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdmaybe.h b/src/context/cdmaybe.h
index edb638016..19827aabd 100644
--- a/src/context/cdmaybe.h
+++ b/src/context/cdmaybe.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdo.h b/src/context/cdo.h
index da6c8d338..47116d9bb 100644
--- a/src/context/cdo.h
+++ b/src/context/cdo.h
@@ -2,9 +2,9 @@
/*! \file cdo.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Mathias Preiner
+ ** Morgan Deters, Clark Barrett, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdqueue.h b/src/context/cdqueue.h
index dc518fb1d..7187e9e7f 100644
--- a/src/context/cdqueue.h
+++ b/src/context/cdqueue.h
@@ -2,9 +2,9 @@
/*! \file cdqueue.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Mathias Preiner, Francois Bobot
+ ** Tim King, Francois Bobot, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/cdtrail_queue.h b/src/context/cdtrail_queue.h
index 58ec4061b..dfd5a1353 100644
--- a/src/context/cdtrail_queue.h
+++ b/src/context/cdtrail_queue.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/context.cpp b/src/context/context.cpp
index 128a90751..310f88b04 100644
--- a/src/context/context.cpp
+++ b/src/context/context.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/context.h b/src/context/context.h
index 04da9c25d..fee1efa05 100644
--- a/src/context/context.h
+++ b/src/context/context.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/context_mm.cpp b/src/context/context_mm.cpp
index 939696a63..76a2168d1 100644
--- a/src/context/context_mm.cpp
+++ b/src/context/context_mm.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Andres Noetzli, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/context/context_mm.h b/src/context/context_mm.h
index 88c3a16cc..157034d7f 100644
--- a/src/context/context_mm.h
+++ b/src/context/context_mm.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Andres Noetzli, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_attributes.h b/src/decision/decision_attributes.h
index eaf6e6fde..387c506ec 100644
--- a/src/decision/decision_attributes.h
+++ b/src/decision/decision_attributes.h
@@ -2,9 +2,9 @@
/*! \file decision_attributes.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_engine.cpp b/src/decision/decision_engine.cpp
index 01f78f2d6..679dd6cc6 100644
--- a/src/decision/decision_engine.cpp
+++ b/src/decision/decision_engine.cpp
@@ -2,9 +2,9 @@
/*! \file decision_engine.cpp
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Kshitij Bansal, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_engine.h b/src/decision/decision_engine.h
index c5325bc9a..dc8cd30fa 100644
--- a/src/decision/decision_engine.h
+++ b/src/decision/decision_engine.h
@@ -2,9 +2,9 @@
/*! \file decision_engine.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Kshitij Bansal, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_strategy.h b/src/decision/decision_strategy.h
index d26b28eeb..842178ed0 100644
--- a/src/decision/decision_strategy.h
+++ b/src/decision/decision_strategy.h
@@ -2,9 +2,9 @@
/*! \file decision_strategy.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Morgan Deters, Mathias Preiner
+ ** Kshitij Bansal, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/justification_heuristic.cpp b/src/decision/justification_heuristic.cpp
index b4fbe1cbd..043ec10f2 100644
--- a/src/decision/justification_heuristic.cpp
+++ b/src/decision/justification_heuristic.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Aina Niemetz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/decision/justification_heuristic.h b/src/decision/justification_heuristic.h
index 0cd45ada7..5597f4c84 100644
--- a/src/decision/justification_heuristic.h
+++ b/src/decision/justification_heuristic.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/array.h b/src/expr/array.h
index 580ba5d06..b313a694b 100644
--- a/src/expr/array.h
+++ b/src/expr/array.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/array_store_all.cpp b/src/expr/array_store_all.cpp
index 0f66273e1..eff2c2151 100644
--- a/src/expr/array_store_all.cpp
+++ b/src/expr/array_store_all.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/array_store_all.h b/src/expr/array_store_all.h
index 9375d8648..3b1112e4f 100644
--- a/src/expr/array_store_all.h
+++ b/src/expr/array_store_all.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/ascription_type.h b/src/expr/ascription_type.h
index 331ac8849..8089a2c85 100644
--- a/src/expr/ascription_type.h
+++ b/src/expr/ascription_type.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute.cpp b/src/expr/attribute.cpp
index 9481cde99..b9234883b 100644
--- a/src/expr/attribute.cpp
+++ b/src/expr/attribute.cpp
@@ -2,9 +2,9 @@
/*! \file attribute.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Dejan Jovanovic
+ ** Tim King, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute.h b/src/expr/attribute.h
index db6fb52a0..bccea5dda 100644
--- a/src/expr/attribute.h
+++ b/src/expr/attribute.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute_internals.h b/src/expr/attribute_internals.h
index c6dc66eb2..83056896f 100644
--- a/src/expr/attribute_internals.h
+++ b/src/expr/attribute_internals.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute_unique_id.h b/src/expr/attribute_unique_id.h
index 1a6220db2..88ecc90a8 100644
--- a/src/expr/attribute_unique_id.h
+++ b/src/expr/attribute_unique_id.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/chain.h b/src/expr/chain.h
index 6a785f282..99df9ee7b 100644
--- a/src/expr/chain.h
+++ b/src/expr/chain.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/datatype.cpp b/src/expr/datatype.cpp
index 8bedd4979..3b925d0b1 100644
--- a/src/expr/datatype.cpp
+++ b/src/expr/datatype.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/datatype.h b/src/expr/datatype.h
index 615ad0e10..3cc02d3c5 100644
--- a/src/expr/datatype.h
+++ b/src/expr/datatype.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/emptyset.cpp b/src/expr/emptyset.cpp
index f9093cb22..789eaf20e 100644
--- a/src/expr/emptyset.cpp
+++ b/src/expr/emptyset.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/emptyset.h b/src/expr/emptyset.h
index 8cca1e4b8..a9487e9a7 100644
--- a/src/expr/emptyset.h
+++ b/src/expr/emptyset.h
@@ -2,9 +2,9 @@
/*! \file emptyset.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Tim King, Kshitij Bansal, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_iomanip.cpp b/src/expr/expr_iomanip.cpp
index 6be2e37f1..22600d79d 100644
--- a/src/expr/expr_iomanip.cpp
+++ b/src/expr/expr_iomanip.cpp
@@ -2,9 +2,9 @@
/*! \file expr_iomanip.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_iomanip.h b/src/expr/expr_iomanip.h
index 936a62589..7203063b7 100644
--- a/src/expr/expr_iomanip.h
+++ b/src/expr/expr_iomanip.h
@@ -2,9 +2,9 @@
/*! \file expr_iomanip.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_manager_scope.h b/src/expr/expr_manager_scope.h
index a546638ad..cad5195dd 100644
--- a/src/expr/expr_manager_scope.h
+++ b/src/expr/expr_manager_scope.h
@@ -2,9 +2,9 @@
/*! \file expr_manager_scope.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Morgan Deters, Dejan Jovanovic, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_manager_template.cpp b/src/expr/expr_manager_template.cpp
index d0d36508f..988705aa8 100644
--- a/src/expr/expr_manager_template.cpp
+++ b/src/expr/expr_manager_template.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Christopher L. Conway, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_manager_template.h b/src/expr/expr_manager_template.h
index 4e0ab700c..71f41354a 100644
--- a/src/expr/expr_manager_template.h
+++ b/src/expr/expr_manager_template.h
@@ -2,9 +2,9 @@
/*! \file expr_manager_template.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** Morgan Deters, Dejan Jovanovic, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_stream.h b/src/expr/expr_stream.h
index 77ada6f11..e4fdeb598 100644
--- a/src/expr/expr_stream.h
+++ b/src/expr/expr_stream.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_template.cpp b/src/expr/expr_template.cpp
index 96bdb2d04..d6a6f47bb 100644
--- a/src/expr/expr_template.cpp
+++ b/src/expr/expr_template.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -33,7 +33,7 @@ ${includes}
// compiler directs the user to the template file instead of the
// generated one. We don't want the user to modify the generated one,
// since it'll get overwritten on a later build.
-#line 36 "${template}"
+#line 37 "${template}"
using namespace CVC4::kind;
using namespace std;
@@ -200,6 +200,10 @@ public:
TypeNode typeNode = TypeNode::fromType(type);
NodeManager* to_nm = NodeManager::fromExprManager(to);
Node n = to_nm->mkBoundVar(name, typeNode); // FIXME thread safety
+
+ // Make sure that the correct `NodeManager` is in scope while
+ // converting the node to an expression.
+ NodeManagerScope to_nms(to_nm);
to_e = n.toExpr();
} else if(n.getKind() == kind::VARIABLE) {
bool isGlobal;
@@ -214,6 +218,10 @@ public:
TypeNode typeNode = TypeNode::fromType(type);
NodeManager* to_nm = NodeManager::fromExprManager(to);
Node n = to_nm->mkSkolem(name, typeNode, "is a skolem variable imported from another ExprManager");// FIXME thread safety
+
+ // Make sure that the correct `NodeManager` is in scope while
+ // converting the node to an expression.
+ NodeManagerScope to_nms(to_nm);
to_e = n.toExpr();
} else {
Unhandled();
@@ -228,6 +236,10 @@ public:
TypeNode typeNode = TypeNode::fromType(type);
NodeManager* to_nm = NodeManager::fromExprManager(to);
Node n = to_nm->mkBoundVar(typeNode); // FIXME thread safety
+
+ // Make sure that the correct `NodeManager` is in scope while
+ // converting the node to an expression.
+ NodeManagerScope to_nms(to_nm);
to_e = n.toExpr();
}
else
@@ -244,6 +256,11 @@ public:
vmap.d_from[to_int] = from_int;
vmap.d_to[from_int] = to_int;
vmap.d_typeMap[to_e] = from_e;// insert other direction too
+
+ // Make sure that the expressions are associated with the correct
+ // `ExprManager`s.
+ Assert(from_e.getExprManager() == from);
+ Assert(to_e.getExprManager() == to);
return Node::fromExpr(to_e);
}
} else {
diff --git a/src/expr/expr_template.h b/src/expr/expr_template.h
index da9d22389..71f09825e 100644
--- a/src/expr/expr_template.h
+++ b/src/expr/expr_template.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -612,7 +612,7 @@ private:
${getConst_instantiations}
-#line 613 "${template}"
+#line 616 "${template}"
inline size_t ExprHashFunction::operator()(CVC4::Expr e) const {
return (size_t) e.getId();
diff --git a/src/expr/kind_map.h b/src/expr/kind_map.h
index af66b1630..45e128c37 100644
--- a/src/expr/kind_map.h
+++ b/src/expr/kind_map.h
@@ -2,9 +2,9 @@
/*! \file kind_map.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Tim King
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/kind_template.cpp b/src/expr/kind_template.cpp
index dcc98a1b7..e1a933e7b 100644
--- a/src/expr/kind_template.cpp
+++ b/src/expr/kind_template.cpp
@@ -2,9 +2,9 @@
/*! \file kind_template.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli, Mathias Preiner
+ ** Andres Noetzli, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -64,7 +64,7 @@ std::string kindToString(::CVC4::Kind k) {
std::ostream& operator<<(std::ostream& out, TypeConstant typeConstant) {
switch(typeConstant) {
${type_constant_descriptions}
-#line 51 "${template}"
+#line 68 "${template}"
default:
out << "UNKNOWN_TYPE_CONSTANT";
break;
@@ -77,7 +77,7 @@ namespace theory {
std::ostream& operator<<(std::ostream& out, TheoryId theoryId) {
switch(theoryId) {
${theory_descriptions}
-#line 64 "${template}"
+#line 81 "${template}"
default:
out << "UNKNOWN_THEORY";
break;
@@ -91,7 +91,7 @@ TheoryId kindToTheoryId(::CVC4::Kind k) {
case kind::NULL_EXPR:
break;
${kind_to_theory_id}
-#line 78 "${template}"
+#line 95 "${template}"
case kind::LAST_KIND:
break;
}
@@ -101,7 +101,7 @@ ${kind_to_theory_id}
TheoryId typeConstantToTheoryId(::CVC4::TypeConstant typeConstant) {
switch(typeConstant) {
${type_constant_to_theory_id}
-#line 88 "${template}"
+#line 105 "${template}"
case LAST_TYPE:
break;
}
@@ -111,7 +111,7 @@ ${type_constant_to_theory_id}
std::string getStatsPrefix(TheoryId theoryId) {
switch(theoryId) {
${theory_stats_prefixes}
-#line 98 "${template}"
+#line 115 "${template}"
default:
break;
}
diff --git a/src/expr/kind_template.h b/src/expr/kind_template.h
index cdeb5ec88..820fa6b7d 100644
--- a/src/expr/kind_template.h
+++ b/src/expr/kind_template.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/matcher.h b/src/expr/matcher.h
index ff0631728..a08d17715 100644
--- a/src/expr/matcher.h
+++ b/src/expr/matcher.h
@@ -2,9 +2,9 @@
/*! \file matcher.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/metakind_template.cpp b/src/expr/metakind_template.cpp
index 4ffa4dd44..5116392cb 100644
--- a/src/expr/metakind_template.cpp
+++ b/src/expr/metakind_template.cpp
@@ -2,9 +2,9 @@
/*! \file metakind_template.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Morgan Deters, Andres Noetzli, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/metakind_template.h b/src/expr/metakind_template.h
index 1aad647a6..1da66202b 100644
--- a/src/expr/metakind_template.h
+++ b/src/expr/metakind_template.h
@@ -2,9 +2,9 @@
/*! \file metakind_template.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andres Noetzli, Tim King
+ ** Morgan Deters, Andres Noetzli, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node.cpp b/src/expr/node.cpp
index b983c81f5..de1d5475b 100644
--- a/src/expr/node.cpp
+++ b/src/expr/node.cpp
@@ -2,9 +2,9 @@
/*! \file node.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Morgan Deters, Tim King, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node.h b/src/expr/node.h
index 750a5547b..5456f3285 100644
--- a/src/expr/node.h
+++ b/src/expr/node.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -459,7 +459,7 @@ public:
assertTNodeNotExpired();
return getMetaKind() == kind::metakind::VARIABLE;
}
-
+
/**
* Returns true if this node represents a nullary operator
*/
@@ -467,13 +467,11 @@ public:
assertTNodeNotExpired();
return getMetaKind() == kind::metakind::NULLARY_OPERATOR;
}
-
+
inline bool isClosure() const {
assertTNodeNotExpired();
- return getKind() == kind::LAMBDA ||
- getKind() == kind::FORALL ||
- getKind() == kind::EXISTS ||
- getKind() == kind::REWRITE_RULE;
+ return getKind() == kind::LAMBDA || getKind() == kind::FORALL
+ || getKind() == kind::EXISTS || getKind() == kind::CHOICE;
}
/**
diff --git a/src/expr/node_algorithm.cpp b/src/expr/node_algorithm.cpp
index 3905ad5c9..4e62bc9ad 100644
--- a/src/expr/node_algorithm.cpp
+++ b/src/expr/node_algorithm.cpp
@@ -2,9 +2,9 @@
/*! \file node_algorithm.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -159,6 +159,14 @@ bool hasBoundVar(TNode n)
bool hasFreeVar(TNode n)
{
+ std::unordered_set<Node, NodeHashFunction> fvs;
+ return getFreeVariables(n, fvs, false);
+}
+
+bool getFreeVariables(TNode n,
+ std::unordered_set<Node, NodeHashFunction>& fvs,
+ bool computeFv)
+{
std::unordered_set<TNode, TNodeHashFunction> bound_var;
std::unordered_map<TNode, bool, TNodeHashFunction> visited;
std::vector<TNode> visit;
@@ -184,7 +192,14 @@ bool hasFreeVar(TNode n)
{
if (bound_var.find(cur) == bound_var.end())
{
- return true;
+ if (computeFv)
+ {
+ fvs.insert(cur);
+ }
+ else
+ {
+ return true;
+ }
}
}
else if (isQuant)
@@ -218,7 +233,8 @@ bool hasFreeVar(TNode n)
visited[cur] = true;
}
} while (!visit.empty());
- return false;
+
+ return !fvs.empty();
}
void getSymbols(TNode n, std::unordered_set<Node, NodeHashFunction>& syms)
@@ -257,5 +273,117 @@ void getSymbols(TNode n,
} while (!visit.empty());
}
+Node substituteCaptureAvoiding(TNode n, Node src, Node dest)
+{
+ if (n == src)
+ {
+ return dest;
+ }
+ if (src == dest)
+ {
+ return n;
+ }
+ std::vector<Node> srcs;
+ std::vector<Node> dests;
+ srcs.push_back(src);
+ dests.push_back(dest);
+ return substituteCaptureAvoiding(n, srcs, dests);
+}
+
+Node substituteCaptureAvoiding(TNode n,
+ std::vector<Node>& src,
+ std::vector<Node>& dest)
+{
+ std::unordered_map<TNode, Node, TNodeHashFunction> visited;
+ std::unordered_map<TNode, Node, TNodeHashFunction>::iterator it;
+ std::vector<TNode> visit;
+ TNode curr;
+ visit.push_back(n);
+ Assert(src.size() == dest.size(),
+ "Substitution domain and range must be equal size");
+ do
+ {
+ curr = visit.back();
+ visit.pop_back();
+ it = visited.find(curr);
+
+ if (it == visited.end())
+ {
+ auto itt = std::find(src.rbegin(), src.rend(), curr);
+ if (itt != src.rend())
+ {
+ Assert(
+ (std::distance(src.begin(), itt.base()) - 1) >= 0
+ && static_cast<unsigned>(std::distance(src.begin(), itt.base()) - 1)
+ < dest.size());
+ Node n = dest[std::distance(src.begin(), itt.base()) - 1];
+ visited[curr] = n;
+ continue;
+ }
+ if (curr.getNumChildren() == 0)
+ {
+ visited[curr] = curr;
+ continue;
+ }
+
+ visited[curr] = Node::null();
+ // if binder, rename variables to avoid capture
+ if (curr.isClosure())
+ {
+ NodeManager* nm = NodeManager::currentNM();
+ // have new vars -> renames subs in the end of current sub
+ for (const Node& v : curr[0])
+ {
+ src.push_back(v);
+ dest.push_back(nm->mkBoundVar(v.getType()));
+ }
+ }
+ // save for post-visit
+ visit.push_back(curr);
+ // visit children
+ if (curr.getMetaKind() == kind::metakind::PARAMETERIZED)
+ {
+ // push the operator
+ visit.push_back(curr.getOperator());
+ }
+ for (unsigned i = 0, size = curr.getNumChildren(); i < size; ++i)
+ {
+ visit.push_back(curr[i]);
+ }
+ }
+ else if (it->second.isNull())
+ {
+ // build node
+ NodeBuilder<> nb(curr.getKind());
+ if (curr.getMetaKind() == kind::metakind::PARAMETERIZED)
+ {
+ // push the operator
+ Assert(visited.find(curr.getOperator()) != visited.end());
+ nb << visited[curr.getOperator()];
+ }
+ // collect substituted children
+ for (unsigned i = 0, size = curr.getNumChildren(); i < size; ++i)
+ {
+ Assert(visited.find(curr[i]) != visited.end());
+ nb << visited[curr[i]];
+ }
+ Node n = nb;
+ visited[curr] = n;
+
+ // remove renaming
+ if (curr.isClosure())
+ {
+ // remove beginning of sub which correspond to renaming of variables in
+ // this binder
+ unsigned nchildren = curr[0].getNumChildren();
+ src.resize(src.size() - nchildren);
+ dest.resize(dest.size() - nchildren);
+ }
+ }
+ } while (!visit.empty());
+ Assert(visited.find(n) != visited.end());
+ return visited[n];
+}
+
} // namespace expr
} // namespace CVC4
diff --git a/src/expr/node_algorithm.h b/src/expr/node_algorithm.h
index d825d7f57..0ed6e159b 100644
--- a/src/expr/node_algorithm.h
+++ b/src/expr/node_algorithm.h
@@ -2,9 +2,9 @@
/*! \file node_algorithm.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Andres Noetzli, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -60,6 +60,19 @@ bool hasBoundVar(TNode n);
bool hasFreeVar(TNode n);
/**
+ * Get the free variables in n, that is, the subterms of n of kind
+ * BOUND_VARIABLE that are not bound in n, adds these to fvs.
+ * @param n The node under investigation
+ * @param fvs The set which free variables are added to
+ * @param computeFv If this flag is false, then we only return true/false and
+ * do not add to fvs.
+ * @return true iff this node contains a free variable.
+ */
+bool getFreeVariables(TNode n,
+ std::unordered_set<Node, NodeHashFunction>& fvs,
+ bool computeFv = true);
+
+/**
* For term n, this function collects the symbols that occur as a subterms
* of n. A symbol is a variable that does not have kind BOUND_VARIABLE.
* @param n The node under investigation
@@ -70,6 +83,19 @@ void getSymbols(TNode n, std::unordered_set<Node, NodeHashFunction>& syms);
void getSymbols(TNode n,
std::unordered_set<Node, NodeHashFunction>& syms,
std::unordered_set<TNode, TNodeHashFunction>& visited);
+/**
+ * Substitution of Nodes in a capture avoiding way.
+ */
+Node substituteCaptureAvoiding(TNode n, Node src, Node dest);
+
+/**
+ * Simultaneous substitution of Nodes in a capture avoiding way. Elements in
+ * source will be replaced by their corresponding element in dest. Both
+ * vectors should have the same size.
+ */
+Node substituteCaptureAvoiding(TNode n,
+ std::vector<Node>& src,
+ std::vector<Node>& dest);
} // namespace expr
} // namespace CVC4
diff --git a/src/expr/node_builder.h b/src/expr/node_builder.h
index 9f258c560..299960c1d 100644
--- a/src/expr/node_builder.h
+++ b/src/expr/node_builder.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
index a40d1511b..66d597a36 100644
--- a/src/expr/node_manager.cpp
+++ b/src/expr/node_manager.cpp
@@ -2,9 +2,9 @@
/*! \file node_manager.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -363,7 +363,10 @@ void NodeManager::reclaimZombies() {
std::vector<NodeValue*> NodeManager::TopologicalSort(
const std::vector<NodeValue*>& roots) {
std::vector<NodeValue*> order;
+ // The stack of nodes to visit. The Boolean value is false when visiting the
+ // node in preorder and true when visiting it in postorder.
std::vector<std::pair<bool, NodeValue*> > stack;
+ // Nodes that have been visited in both pre- and postorder
NodeValueIDSet visited;
const NodeValueIDSet root_set(roots.begin(), roots.end());
@@ -382,17 +385,20 @@ std::vector<NodeValue*> NodeManager::TopologicalSort(
order.push_back(current);
}
stack.pop_back();
- } else {
+ }
+ else if (visited.find(current) == visited.end())
+ {
stack.back().first = true;
- Assert(visited.count(current) == 0);
visited.insert(current);
for (unsigned i = 0; i < current->getNumChildren(); ++i) {
expr::NodeValue* child = current->getChild(i);
- if (visited.find(child) == visited.end()) {
- stack.push_back(std::make_pair(false, child));
- }
+ stack.push_back(std::make_pair(false, child));
}
}
+ else
+ {
+ stack.pop_back();
+ }
}
}
Assert(order.size() == roots.size());
diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h
index 7cafb6e11..30512c41e 100644
--- a/src/expr/node_manager.h
+++ b/src/expr/node_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Christopher L. Conway, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -276,6 +276,17 @@ class NodeManager {
Debug("gc") << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
<< std::endl;
}
+
+ // `d_zombies` uses the node id to hash and compare nodes. If `d_zombies`
+ // already contains a node value with the same id as `nv`, but the pointers
+ // are different, then the wrong `NodeManager` was in scope for one of the
+ // two nodes when it reached refcount zero. This can happen for example if
+ // you create a node with a `NodeManager` n1 and then call `Node::toExpr()`
+ // on that node while a different `NodeManager` n2 is in scope. When that
+ // `Expr` is deleted and the node reaches refcount zero in the `Expr`'s
+ // destructor, then `markForDeletion()` will be called on n2.
+ Assert(d_zombies.find(nv) == d_zombies.end() || *d_zombies.find(nv) == nv);
+
d_zombies.insert(nv); // FIXME multithreading
if(safeToReclaimZombies()) {
diff --git a/src/expr/node_manager_attributes.h b/src/expr/node_manager_attributes.h
index fe2e38924..99bfcb8a9 100644
--- a/src/expr/node_manager_attributes.h
+++ b/src/expr/node_manager_attributes.h
@@ -2,9 +2,9 @@
/*! \file node_manager_attributes.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters
+ ** Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_manager_listeners.cpp b/src/expr/node_manager_listeners.cpp
index a38181107..ecb089dc9 100644
--- a/src/expr/node_manager_listeners.cpp
+++ b/src/expr/node_manager_listeners.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_manager_listeners.h b/src/expr/node_manager_listeners.h
index 6834aabbb..019a785d4 100644
--- a/src/expr/node_manager_listeners.h
+++ b/src/expr/node_manager_listeners.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_self_iterator.h b/src/expr/node_self_iterator.h
index 6783fd3ea..e81d4c524 100644
--- a/src/expr/node_self_iterator.h
+++ b/src/expr/node_self_iterator.h
@@ -2,9 +2,9 @@
/*! \file node_self_iterator.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_trie.cpp b/src/expr/node_trie.cpp
index 4404e78ca..0900ec9af 100644
--- a/src/expr/node_trie.cpp
+++ b/src/expr/node_trie.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_trie.h b/src/expr/node_trie.h
index d0c0f0627..bc2e17ed0 100644
--- a/src/expr/node_trie.h
+++ b/src/expr/node_trie.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_value.cpp b/src/expr/node_value.cpp
index e3c8ef331..d7faf0814 100644
--- a/src/expr/node_value.cpp
+++ b/src/expr/node_value.cpp
@@ -2,9 +2,9 @@
/*! \file node_value.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/node_value.h b/src/expr/node_value.h
index 6bba80dd1..4881033cb 100644
--- a/src/expr/node_value.h
+++ b/src/expr/node_value.h
@@ -2,9 +2,9 @@
/*! \file node_value.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Dejan Jovanovic
+ ** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/pickle_data.cpp b/src/expr/pickle_data.cpp
index 709cb4e1a..fd3b69d26 100644
--- a/src/expr/pickle_data.cpp
+++ b/src/expr/pickle_data.cpp
@@ -2,9 +2,9 @@
/*! \file pickle_data.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/pickle_data.h b/src/expr/pickle_data.h
index 7fa23f3d4..af91fbbea 100644
--- a/src/expr/pickle_data.h
+++ b/src/expr/pickle_data.h
@@ -2,9 +2,9 @@
/*! \file pickle_data.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/pickler.cpp b/src/expr/pickler.cpp
index 8e1f07b08..42198d676 100644
--- a/src/expr/pickler.cpp
+++ b/src/expr/pickler.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Kshitij Bansal, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/pickler.h b/src/expr/pickler.h
index ae9f6d94f..f0d219eeb 100644
--- a/src/expr/pickler.h
+++ b/src/expr/pickler.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/record.cpp b/src/expr/record.cpp
index 123000ab4..03682c8d4 100644
--- a/src/expr/record.cpp
+++ b/src/expr/record.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/record.h b/src/expr/record.h
index 3d2abf844..98fb5c106 100644
--- a/src/expr/record.h
+++ b/src/expr/record.h
@@ -2,9 +2,9 @@
/*! \file record.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/symbol_table.cpp b/src/expr/symbol_table.cpp
index 9401e772c..600f666bc 100644
--- a/src/expr/symbol_table.cpp
+++ b/src/expr/symbol_table.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/symbol_table.h b/src/expr/symbol_table.h
index 19a42a303..ec89dd8b3 100644
--- a/src/expr/symbol_table.h
+++ b/src/expr/symbol_table.h
@@ -2,9 +2,9 @@
/*! \file symbol_table.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Christopher L. Conway
+ ** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type.cpp b/src/expr/type.cpp
index fe8cc097b..f2b5945dd 100644
--- a/src/expr/type.cpp
+++ b/src/expr/type.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type.h b/src/expr/type.h
index 4d22f1538..943af2344 100644
--- a/src/expr/type.h
+++ b/src/expr/type.h
@@ -2,9 +2,9 @@
/*! \file type.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Dejan Jovanovic, Christopher L. Conway
+ ** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type_checker.h b/src/expr/type_checker.h
index 35a4e46a8..b88f6eb5c 100644
--- a/src/expr/type_checker.h
+++ b/src/expr/type_checker.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type_checker_template.cpp b/src/expr/type_checker_template.cpp
index 4fbed28a5..078c275f8 100644
--- a/src/expr/type_checker_template.cpp
+++ b/src/expr/type_checker_template.cpp
@@ -2,9 +2,9 @@
/*! \file type_checker_template.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Morgan Deters, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type_node.cpp b/src/expr/type_node.cpp
index b54290612..b093e596e 100644
--- a/src/expr/type_node.cpp
+++ b/src/expr/type_node.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type_node.h b/src/expr/type_node.h
index 5b0caf659..6babc104d 100644
--- a/src/expr/type_node.h
+++ b/src/expr/type_node.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/type_properties_template.h b/src/expr/type_properties_template.h
index 74152a5ac..8d596ddaa 100644
--- a/src/expr/type_properties_template.h
+++ b/src/expr/type_properties_template.h
@@ -2,9 +2,9 @@
/*! \file type_properties_template.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/uninterpreted_constant.cpp b/src/expr/uninterpreted_constant.cpp
index 9898bcb3f..5c9daf784 100644
--- a/src/expr/uninterpreted_constant.cpp
+++ b/src/expr/uninterpreted_constant.cpp
@@ -2,9 +2,9 @@
/*! \file uninterpreted_constant.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/uninterpreted_constant.h b/src/expr/uninterpreted_constant.h
index 6d4081ba0..fb6557497 100644
--- a/src/expr/uninterpreted_constant.h
+++ b/src/expr/uninterpreted_constant.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/expr/variable_type_map.h b/src/expr/variable_type_map.h
index 04adb246c..fe0521991 100644
--- a/src/expr/variable_type_map.h
+++ b/src/expr/variable_type_map.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/fix-install-headers.sh b/src/fix-install-headers.sh
new file mode 100755
index 000000000..a1f15996a
--- /dev/null
+++ b/src/fix-install-headers.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+dir=$1
+find "$dir/include/cvc4/" -type f | \
+ xargs sed -i 's/include.*"\(.*\)"/include <cvc4\/\1>/'
diff --git a/src/include/cvc4.h b/src/include/cvc4.h
index 2670f469d..9f3332988 100644
--- a/src/include/cvc4.h
+++ b/src/include/cvc4.h
@@ -2,9 +2,9 @@
/*! \file cvc4.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_private.h b/src/include/cvc4_private.h
index 715f7ccc2..14b18e922 100644
--- a/src/include/cvc4_private.h
+++ b/src/include/cvc4_private.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_private_library.h b/src/include/cvc4_private_library.h
index 23bf0e01f..be020666f 100644
--- a/src/include/cvc4_private_library.h
+++ b/src/include/cvc4_private_library.h
@@ -2,9 +2,9 @@
/*! \file cvc4_private_library.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_public.h b/src/include/cvc4_public.h
index 7950a5af6..307ba5974 100644
--- a/src/include/cvc4_public.h
+++ b/src/include/cvc4_public.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4parser_private.h b/src/include/cvc4parser_private.h
index 9fc2d464a..203105fe6 100644
--- a/src/include/cvc4parser_private.h
+++ b/src/include/cvc4parser_private.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4parser_public.h b/src/include/cvc4parser_public.h
index ac015ba92..fe8d017bf 100644
--- a/src/include/cvc4parser_public.h
+++ b/src/include/cvc4parser_public.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/clock_gettime.c b/src/lib/clock_gettime.c
index 71b2bf569..82cb8a4cb 100644
--- a/src/lib/clock_gettime.c
+++ b/src/lib/clock_gettime.c
@@ -2,9 +2,9 @@
/*! \file clock_gettime.c
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Paul Meng
+ ** Morgan Deters, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/clock_gettime.h b/src/lib/clock_gettime.h
index db83da853..294722121 100644
--- a/src/lib/clock_gettime.h
+++ b/src/lib/clock_gettime.h
@@ -2,9 +2,9 @@
/*! \file clock_gettime.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/ffs.c b/src/lib/ffs.c
index e9df47775..4715b35f2 100644
--- a/src/lib/ffs.c
+++ b/src/lib/ffs.c
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/ffs.h b/src/lib/ffs.h
index 129ccdbf0..be34a98a3 100644
--- a/src/lib/ffs.h
+++ b/src/lib/ffs.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/replacements.h b/src/lib/replacements.h
index 544374586..2a857a4ef 100644
--- a/src/lib/replacements.h
+++ b/src/lib/replacements.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/strtok_r.c b/src/lib/strtok_r.c
index 704fae369..1d0e039b0 100644
--- a/src/lib/strtok_r.c
+++ b/src/lib/strtok_r.c
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/lib/strtok_r.h b/src/lib/strtok_r.h
index 9534e71f6..8243157b5 100644
--- a/src/lib/strtok_r.h
+++ b/src/lib/strtok_r.h
@@ -2,9 +2,9 @@
/*! \file strtok_r.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor.cpp b/src/main/command_executor.cpp
index 40c31de99..7e46b163b 100644
--- a/src/main/command_executor.cpp
+++ b/src/main/command_executor.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor.h b/src/main/command_executor.h
index f8c6e6e5a..dde36a453 100644
--- a/src/main/command_executor.h
+++ b/src/main/command_executor.h
@@ -2,9 +2,9 @@
/*! \file command_executor.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Morgan Deters, Aina Niemetz
+ ** Morgan Deters, Kshitij Bansal, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor_portfolio.cpp b/src/main/command_executor_portfolio.cpp
index ba75d5ff7..fde1b59d3 100644
--- a/src/main/command_executor_portfolio.cpp
+++ b/src/main/command_executor_portfolio.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor_portfolio.h b/src/main/command_executor_portfolio.h
index fe4d35640..c35fdbcb1 100644
--- a/src/main/command_executor_portfolio.h
+++ b/src/main/command_executor_portfolio.h
@@ -2,9 +2,9 @@
/*! \file command_executor_portfolio.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Morgan Deters, Tim King
+ ** Kshitij Bansal, Morgan Deters, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/driver_unified.cpp b/src/main/driver_unified.cpp
index de2348973..7af8a6fdb 100644
--- a/src/main/driver_unified.cpp
+++ b/src/main/driver_unified.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/interactive_shell.cpp b/src/main/interactive_shell.cpp
index aeccd3a64..e7cd8691e 100644
--- a/src/main/interactive_shell.cpp
+++ b/src/main/interactive_shell.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Christopher L. Conway, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/interactive_shell.h b/src/main/interactive_shell.h
index ac52a78c4..b2530dc37 100644
--- a/src/main/interactive_shell.h
+++ b/src/main/interactive_shell.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Christopher L. Conway, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/main.cpp b/src/main/main.cpp
index fe2147240..96ba1bc93 100644
--- a/src/main/main.cpp
+++ b/src/main/main.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/main.h b/src/main/main.h
index ee5341b87..3199273cb 100644
--- a/src/main/main.h
+++ b/src/main/main.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio.cpp b/src/main/portfolio.cpp
index 9faba47ca..89a6d8253 100644
--- a/src/main/portfolio.cpp
+++ b/src/main/portfolio.cpp
@@ -2,9 +2,9 @@
/*! \file portfolio.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Kshitij Bansal, Tim King
+ ** Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio.h b/src/main/portfolio.h
index 2d3a9e5ad..54e38eb3d 100644
--- a/src/main/portfolio.h
+++ b/src/main/portfolio.h
@@ -2,9 +2,9 @@
/*! \file portfolio.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Kshitij Bansal
+ ** Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio_util.cpp b/src/main/portfolio_util.cpp
index 7f8bb185b..a3b6767c7 100644
--- a/src/main/portfolio_util.cpp
+++ b/src/main/portfolio_util.cpp
@@ -2,9 +2,9 @@
/*! \file portfolio_util.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Kshitij Bansal
+ ** Tim King, Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio_util.h b/src/main/portfolio_util.h
index 5b2152728..ab5f26f90 100644
--- a/src/main/portfolio_util.h
+++ b/src/main/portfolio_util.h
@@ -2,9 +2,9 @@
/*! \file portfolio_util.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Morgan Deters, Kshitij Bansal, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/main/util.cpp b/src/main/util.cpp
index e61ad34d8..115703b09 100644
--- a/src/main/util.cpp
+++ b/src/main/util.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/argument_extender.h b/src/options/argument_extender.h
index 9e52691ed..5ba8d09d0 100644
--- a/src/options/argument_extender.h
+++ b/src/options/argument_extender.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/argument_extender_implementation.cpp b/src/options/argument_extender_implementation.cpp
index 7c8549627..0d789c626 100644
--- a/src/options/argument_extender_implementation.cpp
+++ b/src/options/argument_extender_implementation.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/argument_extender_implementation.h b/src/options/argument_extender_implementation.h
index 66b21ce8c..33a7ee78e 100644
--- a/src/options/argument_extender_implementation.h
+++ b/src/options/argument_extender_implementation.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_heuristic_pivot_rule.cpp b/src/options/arith_heuristic_pivot_rule.cpp
index 00ac7ab5d..6c1312dbf 100644
--- a/src/options/arith_heuristic_pivot_rule.cpp
+++ b/src/options/arith_heuristic_pivot_rule.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_heuristic_pivot_rule.h b/src/options/arith_heuristic_pivot_rule.h
index f79a796b9..7e27a0513 100644
--- a/src/options/arith_heuristic_pivot_rule.h
+++ b/src/options/arith_heuristic_pivot_rule.h
@@ -2,9 +2,9 @@
/*! \file arith_heuristic_pivot_rule.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_propagation_mode.cpp b/src/options/arith_propagation_mode.cpp
index 09a78b92a..895a01381 100644
--- a/src/options/arith_propagation_mode.cpp
+++ b/src/options/arith_propagation_mode.cpp
@@ -2,9 +2,9 @@
/*! \file arith_propagation_mode.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_propagation_mode.h b/src/options/arith_propagation_mode.h
index 0d54d901b..fbbef3f96 100644
--- a/src/options/arith_propagation_mode.h
+++ b/src/options/arith_propagation_mode.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_unate_lemma_mode.cpp b/src/options/arith_unate_lemma_mode.cpp
index a1f8d5613..34fbeb3b2 100644
--- a/src/options/arith_unate_lemma_mode.cpp
+++ b/src/options/arith_unate_lemma_mode.cpp
@@ -2,9 +2,9 @@
/*! \file arith_unate_lemma_mode.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/arith_unate_lemma_mode.h b/src/options/arith_unate_lemma_mode.h
index 4cec65011..f626dad65 100644
--- a/src/options/arith_unate_lemma_mode.h
+++ b/src/options/arith_unate_lemma_mode.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/base_handlers.h b/src/options/base_handlers.h
index 0f1d735d1..58c963145 100644
--- a/src/options/base_handlers.h
+++ b/src/options/base_handlers.h
@@ -2,9 +2,9 @@
/*! \file base_handlers.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/bool_to_bv_mode.cpp b/src/options/bool_to_bv_mode.cpp
index 670e15419..12fd3c1f9 100644
--- a/src/options/bool_to_bv_mode.cpp
+++ b/src/options/bool_to_bv_mode.cpp
@@ -1,18 +1,18 @@
/********************* */
/*! \file bool_to_bv_mode.cpp
-** \verbatim
-** Top contributors (to current version):
-** Makai Mann
-** This file is part of the CVC4 project.
-** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
-** in the top-level source directory) and their institutional affiliations.
-** All rights reserved. See the file COPYING in the top-level source
-** directory for licensing information.\endverbatim
-**
-** \brief Modes for bool-to-bv preprocessing pass
-**
-** Modes for bool-to-bv preprocessing pass which tries to lower booleans
-** to bit-vectors of width 1 at various levels of aggressiveness.
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Makai Mann
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
**/
#include "options/bool_to_bv_mode.h"
diff --git a/src/options/bool_to_bv_mode.h b/src/options/bool_to_bv_mode.h
index f2911c339..e45060872 100644
--- a/src/options/bool_to_bv_mode.h
+++ b/src/options/bool_to_bv_mode.h
@@ -1,18 +1,18 @@
/********************* */
/*! \file bool_to_bv_mode.h
-** \verbatim
-** Top contributors (to current version):
-** Makai Mann
-** This file is part of the CVC4 project.
-** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
-** in the top-level source directory) and their institutional affiliations.
-** All rights reserved. See the file COPYING in the top-level source
-** directory for licensing information.\endverbatim
-**
-** \brief Modes for bool-to-bv preprocessing pass
-**
-** Modes for bool-to-bv preprocessing pass which tries to lower booleans
-** to bit-vectors of width 1 at various levels of aggressiveness.
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Makai Mann
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
**/
#include "cvc4_private.h"
diff --git a/src/options/bv_bitblast_mode.cpp b/src/options/bv_bitblast_mode.cpp
index 59a97c5a2..4bd7b9d77 100644
--- a/src/options/bv_bitblast_mode.cpp
+++ b/src/options/bv_bitblast_mode.cpp
@@ -2,9 +2,9 @@
/*! \file bv_bitblast_mode.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Tim King
+ ** Liana Hadarean, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/bv_bitblast_mode.h b/src/options/bv_bitblast_mode.h
index fa5791ac9..871333b35 100644
--- a/src/options/bv_bitblast_mode.h
+++ b/src/options/bv_bitblast_mode.h
@@ -2,9 +2,9 @@
/*! \file bv_bitblast_mode.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Tim King, Mathias Preiner
+ ** Liana Hadarean, Alex Ozdemir, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/bv_options.toml b/src/options/bv_options.toml
index c4541f4e4..6dd755625 100644
--- a/src/options/bv_options.toml
+++ b/src/options/bv_options.toml
@@ -7,7 +7,7 @@ header = "options/bv_options.h"
category = "expert"
long = "bv-proof-format=MODE"
type = "CVC4::theory::bv::BvProofFormat"
- default = "CVC4::theory::bv::BITVECTOR_PROOF_LRAT"
+ default = "CVC4::theory::bv::BITVECTOR_PROOF_ER"
handler = "stringToBvProofFormat"
predicates = ["satSolverEnabledBuild"]
includes = ["options/bv_bitblast_mode.h"]
diff --git a/src/options/datatypes_modes.h b/src/options/datatypes_modes.h
index 5f41ce11d..23ff0651d 100644
--- a/src/options/datatypes_modes.h
+++ b/src/options/datatypes_modes.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/decision_mode.cpp b/src/options/decision_mode.cpp
index cd0bc8180..f2c37f52a 100644
--- a/src/options/decision_mode.cpp
+++ b/src/options/decision_mode.cpp
@@ -2,9 +2,9 @@
/*! \file decision_mode.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/decision_mode.h b/src/options/decision_mode.h
index eb10ba8e8..9f653bf27 100644
--- a/src/options/decision_mode.h
+++ b/src/options/decision_mode.h
@@ -2,9 +2,9 @@
/*! \file decision_mode.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Kshitij Bansal, Tim King
+ ** Kshitij Bansal, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/decision_weight.h b/src/options/decision_weight.h
index 90f6affa5..95afd53c3 100644
--- a/src/options/decision_weight.h
+++ b/src/options/decision_weight.h
@@ -2,9 +2,9 @@
/*! \file decision_weight.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Morgan Deters
+ ** Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/didyoumean.cpp b/src/options/didyoumean.cpp
index 3f5278b7e..cbaa4d09e 100644
--- a/src/options/didyoumean.cpp
+++ b/src/options/didyoumean.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/didyoumean.h b/src/options/didyoumean.h
index 4d7734771..f33716565 100644
--- a/src/options/didyoumean.h
+++ b/src/options/didyoumean.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/didyoumean_test.cpp b/src/options/didyoumean_test.cpp
index b01b52777..7230f544d 100644
--- a/src/options/didyoumean_test.cpp
+++ b/src/options/didyoumean_test.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/fp_options.toml b/src/options/fp_options.toml
index eb8c933af..af8d044f7 100644
--- a/src/options/fp_options.toml
+++ b/src/options/fp_options.toml
@@ -1,3 +1,11 @@
id = "FP"
name = "Fp"
header = "options/fp_options.h"
+
+[[option]]
+ name = "fpExp"
+ category = "regular"
+ long = "fp-exp"
+ type = "bool"
+ default = "false"
+ help = "Allow floating-point sorts of all sizes, rather than only Float32 (8/24) or Float64 (11/53) (experimental)"
diff --git a/src/options/language.cpp b/src/options/language.cpp
index 089633519..4aefd742c 100644
--- a/src/options/language.cpp
+++ b/src/options/language.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/language.h b/src/options/language.h
index 87a05a24f..f40b1960a 100644
--- a/src/options/language.h
+++ b/src/options/language.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Francois Bobot
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/module_template.cpp b/src/options/module_template.cpp
index 636dbe89b..46162845d 100644
--- a/src/options/module_template.cpp
+++ b/src/options/module_template.cpp
@@ -2,9 +2,9 @@
/*! \file module_template.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Mathias Preiner
+ ** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/module_template.h b/src/options/module_template.h
index 00bb74490..b61dd95e7 100644
--- a/src/options/module_template.h
+++ b/src/options/module_template.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/open_ostream.cpp b/src/options/open_ostream.cpp
index a05ff63c3..c65e5da2a 100644
--- a/src/options/open_ostream.cpp
+++ b/src/options/open_ostream.cpp
@@ -2,9 +2,9 @@
/*! \file open_ostream.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/open_ostream.h b/src/options/open_ostream.h
index b72c3a400..0334b2cbc 100644
--- a/src/options/open_ostream.h
+++ b/src/options/open_ostream.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/option_exception.cpp b/src/options/option_exception.cpp
index 33e2e21d1..09bc94023 100644
--- a/src/options/option_exception.cpp
+++ b/src/options/option_exception.cpp
@@ -1,10 +1,10 @@
/********************* */
-/*! \file option_exception.h
+/*! \file option_exception.cpp
** \verbatim
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/option_exception.h b/src/options/option_exception.h
index 63b8aa890..41f850483 100644
--- a/src/options/option_exception.h
+++ b/src/options/option_exception.h
@@ -2,9 +2,9 @@
/*! \file option_exception.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/options.h b/src/options/options.h
index 1b61994c5..3767bb8fd 100644
--- a/src/options/options.h
+++ b/src/options/options.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/options_handler.cpp b/src/options/options_handler.cpp
index 84b9f3b4c..f171c907e 100644
--- a/src/options/options_handler.cpp
+++ b/src/options/options_handler.cpp
@@ -2,9 +2,9 @@
/*! \file options_handler.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds, Aina Niemetz
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1769,10 +1769,11 @@ void OptionsHandler::proofEnabledBuild(std::string option, bool value)
{
#ifdef CVC4_PROOF
if (value && options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER
- && options::bvSatSolver() != theory::bv::SAT_SOLVER_MINISAT)
+ && options::bvSatSolver() != theory::bv::SAT_SOLVER_MINISAT
+ && options::bvSatSolver() != theory::bv::SAT_SOLVER_CRYPTOMINISAT)
{
throw OptionException(
- "Eager BV proofs only supported when minisat is used");
+ "Eager BV proofs only supported when MiniSat or CryptoMiniSat is used");
}
#else
if(value) {
@@ -1938,6 +1939,7 @@ void OptionsHandler::showConfiguration(std::string option) {
print_config_cond("glpk", Configuration::isBuiltWithGlpk());
print_config_cond("cadical", Configuration::isBuiltWithCadical());
print_config_cond("cryptominisat", Configuration::isBuiltWithCryptominisat());
+ print_config_cond("drat2er", Configuration::isBuiltWithDrat2Er());
print_config_cond("gmp", Configuration::isBuiltWithGmp());
print_config_cond("lfsc", Configuration::isBuiltWithLfsc());
print_config_cond("readline", Configuration::isBuiltWithReadline());
diff --git a/src/options/options_handler.h b/src/options/options_handler.h
index 8b2629db7..16ddbce4d 100644
--- a/src/options/options_handler.h
+++ b/src/options/options_handler.h
@@ -2,9 +2,9 @@
/*! \file options_handler.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds, Liana Hadarean
+ ** Tim King, Andrew Reynolds, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/options_holder_template.h b/src/options/options_holder_template.h
index 438d1c7cc..877fc6cdb 100644
--- a/src/options/options_holder_template.h
+++ b/src/options/options_holder_template.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/options_public_functions.cpp b/src/options/options_public_functions.cpp
index d95335c76..39f2eb140 100644
--- a/src/options/options_public_functions.cpp
+++ b/src/options/options_public_functions.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/options_template.cpp b/src/options/options_template.cpp
index 9650aba7a..1f7ba05fc 100644
--- a/src/options/options_template.cpp
+++ b/src/options/options_template.cpp
@@ -2,9 +2,9 @@
/*! \file options_template.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Mathias Preiner
+ ** Tim King, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -446,7 +446,7 @@ Languages currently supported as arguments to the -L / --lang option:\n\
smt2.5 | smtlib2.5 SMT-LIB format 2.5\n\
smt2.6 | smtlib2.6 SMT-LIB format 2.6\n\
smt2.6.1 | smtlib2.6.1 SMT-LIB format 2.6 with support for the strings standard\n\
- tptp TPTP format (cnf and fof)\n\
+ tptp TPTP format (cnf, fof and tff)\n\
sygus SyGuS format\n\
\n\
Languages currently supported as arguments to the --output-lang option:\n\
diff --git a/src/options/printer_modes.cpp b/src/options/printer_modes.cpp
index 499646bbf..b60dde467 100644
--- a/src/options/printer_modes.cpp
+++ b/src/options/printer_modes.cpp
@@ -2,9 +2,9 @@
/*! \file printer_modes.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/printer_modes.h b/src/options/printer_modes.h
index 456a7980b..5160a2b47 100644
--- a/src/options/printer_modes.h
+++ b/src/options/printer_modes.h
@@ -2,9 +2,9 @@
/*! \file printer_modes.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/quantifiers_modes.cpp b/src/options/quantifiers_modes.cpp
index b08f71c2e..a1d012aa5 100644
--- a/src/options/quantifiers_modes.cpp
+++ b/src/options/quantifiers_modes.cpp
@@ -2,9 +2,9 @@
/*! \file quantifiers_modes.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/quantifiers_modes.h b/src/options/quantifiers_modes.h
index eea043865..1562693cb 100644
--- a/src/options/quantifiers_modes.h
+++ b/src/options/quantifiers_modes.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/quantifiers_options.toml b/src/options/quantifiers_options.toml
index d9d3e0d38..0a69178b3 100644
--- a/src/options/quantifiers_options.toml
+++ b/src/options/quantifiers_options.toml
@@ -456,6 +456,15 @@ header = "options/quantifiers_options.h"
help = "interleave full saturate instantiation with other techniques"
[[option]]
+ name = "fullSaturateStratify"
+ category = "regular"
+ long = "fs-stratify"
+ type = "bool"
+ default = "false"
+ read_only = true
+ help = "stratify effort levels in enumerative instantiation, which favors speed over fairness"
+
+[[option]]
name = "literalMatchMode"
category = "regular"
long = "literal-matching=MODE"
@@ -877,6 +886,15 @@ header = "options/quantifiers_options.h"
help = "attempt to preprocess arbitrary inputs to sygus conjectures"
[[option]]
+ name = "sygusAbduct"
+ category = "regular"
+ long = "sygus-abduct"
+ type = "bool"
+ default = "false"
+ read_only = false
+ help = "compute abductions using sygus"
+
+[[option]]
name = "ceGuidedInst"
category = "regular"
long = "cegqi"
@@ -1240,7 +1258,7 @@ header = "options/quantifiers_options.h"
type = "bool"
default = "false"
read_only = true
- help = "use sygus to enumerate and verify correctness of rewrite rules via sampling"
+ help = "use sygus to enumerate and verify correctness of rewrite rules"
[[option]]
name = "sygusRewSynth"
@@ -1248,7 +1266,7 @@ header = "options/quantifiers_options.h"
long = "sygus-rr-synth"
type = "bool"
default = "false"
- help = "use sygus to enumerate candidate rewrite rules via sampling"
+ help = "use sygus to enumerate candidate rewrite rules"
[[option]]
name = "sygusRewSynthFilterOrder"
@@ -1369,6 +1387,14 @@ header = "options/quantifiers_options.h"
long = "sygus-expr-miner-check-timeout=N"
type = "unsigned long"
help = "timeout (in milliseconds) for satisfiability checks in expression miners"
+
+[[option]]
+ name = "sygusRewSynthRec"
+ category = "regular"
+ long = "sygus-rr-synth-rec"
+ type = "bool"
+ default = "false"
+ help = "synthesize rewrite rules over all sygus grammar types recursively"
[[option]]
name = "sygusQueryGen"
@@ -1420,6 +1446,7 @@ header = "options/quantifiers_options.h"
default = "false"
help = "compute backwards filtering to compute whether previous solutions are filtered based on later ones"
+
[[option]]
name = "sygusExprMinerCheckUseExport"
category = "expert"
@@ -1447,15 +1474,6 @@ header = "options/quantifiers_options.h"
help = "turns on full effort counterexample-based quantifier instantiation, which may resort to model-value instantiation"
[[option]]
- name = "recurseCbqi"
- category = "regular"
- long = "cbqi-recurse"
- type = "bool"
- default = "true"
- read_only = true
- help = "turns on recursive counterexample-based quantifier instantiation"
-
-[[option]]
name = "cbqiSat"
category = "regular"
long = "cbqi-sat"
diff --git a/src/options/set_language.cpp b/src/options/set_language.cpp
index c4690db36..dfdbb1ab7 100644
--- a/src/options/set_language.cpp
+++ b/src/options/set_language.cpp
@@ -2,9 +2,9 @@
/*! \file set_language.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Morgan Deters, Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/set_language.h b/src/options/set_language.h
index ca691e9e5..185740728 100644
--- a/src/options/set_language.h
+++ b/src/options/set_language.h
@@ -2,9 +2,9 @@
/*! \file set_language.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/smt_modes.cpp b/src/options/smt_modes.cpp
index 4a2fd404c..3501da878 100644
--- a/src/options/smt_modes.cpp
+++ b/src/options/smt_modes.cpp
@@ -2,9 +2,9 @@
/*! \file smt_modes.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/smt_modes.h b/src/options/smt_modes.h
index 761f3be01..aebe0ade4 100644
--- a/src/options/smt_modes.h
+++ b/src/options/smt_modes.h
@@ -2,9 +2,9 @@
/*! \file smt_modes.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/sygus_out_mode.h b/src/options/sygus_out_mode.h
index 863e4d4bc..5222d60ba 100644
--- a/src/options/sygus_out_mode.h
+++ b/src/options/sygus_out_mode.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/theoryof_mode.cpp b/src/options/theoryof_mode.cpp
index 59919a272..4d8d92e17 100644
--- a/src/options/theoryof_mode.cpp
+++ b/src/options/theoryof_mode.cpp
@@ -2,9 +2,9 @@
/*! \file theoryof_mode.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Paul Meng
+ ** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/theoryof_mode.h b/src/options/theoryof_mode.h
index 0dc7194e9..900452fbc 100644
--- a/src/options/theoryof_mode.h
+++ b/src/options/theoryof_mode.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/options/ufss_mode.h b/src/options/ufss_mode.h
index fa7fad6be..a03d46c07 100644
--- a/src/options/ufss_mode.h
+++ b/src/options/ufss_mode.h
@@ -2,9 +2,9 @@
/*! \file ufss_mode.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp
index a2885d1b6..3e7e86446 100644
--- a/src/parser/antlr_input.cpp
+++ b/src/parser/antlr_input.cpp
@@ -2,9 +2,9 @@
/*! \file antlr_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Kshitij Bansal, Tim King
+ ** Christopher L. Conway, Kshitij Bansal, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_input.h b/src/parser/antlr_input.h
index 576b693e8..17e21e21f 100644
--- a/src/parser/antlr_input.h
+++ b/src/parser/antlr_input.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_input_imports.cpp b/src/parser/antlr_input_imports.cpp
index 91ced0f41..39b109232 100644
--- a/src/parser/antlr_input_imports.cpp
+++ b/src/parser/antlr_input_imports.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Francois Bobot, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_line_buffered_input.cpp b/src/parser/antlr_line_buffered_input.cpp
index 356663559..052bd5f7f 100644
--- a/src/parser/antlr_line_buffered_input.cpp
+++ b/src/parser/antlr_line_buffered_input.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_line_buffered_input.h b/src/parser/antlr_line_buffered_input.h
index c33566e22..3a1843ee5 100644
--- a/src/parser/antlr_line_buffered_input.h
+++ b/src/parser/antlr_line_buffered_input.h
@@ -2,9 +2,9 @@
/*! \file antlr_line_buffered_input.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andres Noetzli, Tim King
+ ** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_tracing.h b/src/parser/antlr_tracing.h
index 017c72fb4..77d16aedb 100644
--- a/src/parser/antlr_tracing.h
+++ b/src/parser/antlr_tracing.h
@@ -2,9 +2,9 @@
/*! \file antlr_tracing.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_buffer.cpp b/src/parser/bounded_token_buffer.cpp
index fc2b0dea9..5746793e3 100644
--- a/src/parser/bounded_token_buffer.cpp
+++ b/src/parser/bounded_token_buffer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_buffer.h b/src/parser/bounded_token_buffer.h
index b1567f346..3258441b8 100644
--- a/src/parser/bounded_token_buffer.h
+++ b/src/parser/bounded_token_buffer.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_factory.cpp b/src/parser/bounded_token_factory.cpp
index 472a7125c..fb6208d0c 100644
--- a/src/parser/bounded_token_factory.cpp
+++ b/src/parser/bounded_token_factory.cpp
@@ -2,9 +2,9 @@
/*! \file bounded_token_factory.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters
+ ** Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_factory.h b/src/parser/bounded_token_factory.h
index 8371c7e17..f44218786 100644
--- a/src/parser/bounded_token_factory.h
+++ b/src/parser/bounded_token_factory.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/cvc/Cvc.g b/src/parser/cvc/Cvc.g
index 29bc84510..6de746ad7 100644
--- a/src/parser/cvc/Cvc.g
+++ b/src/parser/cvc/Cvc.g
@@ -2,9 +2,9 @@
/*! \file Cvc.g
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Christopher L. Conway, Andrew Reynolds
+ ** Morgan Deters, Andrew Reynolds, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1552,9 +1552,6 @@ booleanBinop[unsigned& op]
| OR_TOK
| XOR_TOK
| AND_TOK
- | JOIN_TOK
- | PRODUCT_TOK
- | JOIN_IMAGE_TOK
;
comparison[CVC4::Expr& f]
@@ -1705,9 +1702,8 @@ uminusTerm[CVC4::Expr& f]
unsigned minusCount = 0;
}
/* Unary minus */
- : (MINUS_TOK { ++minusCount; })+ bvBinaryOpTerm[f]
+ : (MINUS_TOK { ++minusCount; })* bvBinaryOpTerm[f]
{ while(minusCount > 0) { --minusCount; f = MK_EXPR(CVC4::kind::UMINUS, f); } }
- | bvBinaryOpTerm[f]
;
/** Parses bitvectors. Starts with binary operators @, &, and |. */
@@ -1734,28 +1730,27 @@ bvNegTerm[CVC4::Expr& f]
/* BV neg */
: BVNEG_TOK bvNegTerm[f]
{ f = f.getType().isSet() ? MK_EXPR(CVC4::kind::COMPLEMENT, f) : MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); }
- | relationTerm[f]
+ | relationBinopTerm[f]
;
-relationTerm[CVC4::Expr& f]
- /* relation terms */
- : TRANSPOSE_TOK relationTerm[f]
- { f = MK_EXPR(CVC4::kind::TRANSPOSE, f); }
- | TRANSCLOSURE_TOK relationTerm[f]
- { f = MK_EXPR(CVC4::kind::TCLOSURE, f); }
- | TUPLE_TOK LPAREN relationTerm[f] RPAREN
- { std::vector<Type> types;
- std::vector<Expr> args;
- args.push_back(f);
- types.push_back(f.getType());
- DatatypeType t = EXPR_MANAGER->mkTupleType(types);
- const Datatype& dt = t.getDatatype();
- args.insert( args.begin(), dt[0].getConstructor() );
- f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
- }
- | IDEN_TOK relationTerm[f]
- { f = MK_EXPR(CVC4::kind::IDEN, f); }
- | postfixTerm[f]
+relationBinop[unsigned& op]
+@init {
+ op = LT(1)->getType(LT(1));
+}
+ : JOIN_TOK
+ | PRODUCT_TOK
+ | JOIN_IMAGE_TOK
+ ;
+
+relationBinopTerm[CVC4::Expr& f]
+@init {
+ std::vector<CVC4::Expr> expressions;
+ std::vector<unsigned> operators;
+ unsigned op;
+}
+ : postfixTerm[f] { expressions.push_back(f); }
+ ( relationBinop[op] postfixTerm[f] { operators.push_back(op); expressions.push_back(f); } )*
+ { f = createPrecedenceTree(PARSER_STATE, EXPR_MANAGER, expressions, operators); }
;
/**
@@ -1775,7 +1770,7 @@ postfixTerm[CVC4::Expr& f]
std::string id;
Type t;
}
- : ( bvTerm[f]
+ : ( relationTerm[f]
( /* array select / bitvector extract */
LBRACKET
( formula[f2] { extract = false; }
@@ -1883,7 +1878,28 @@ postfixTerm[CVC4::Expr& f]
}
)?
;
-
+
+relationTerm[CVC4::Expr& f]
+ /* relation terms */
+ : TRANSPOSE_TOK LPAREN formula[f] RPAREN
+ { f = MK_EXPR(CVC4::kind::TRANSPOSE, f); }
+ | TRANSCLOSURE_TOK LPAREN formula[f] RPAREN
+ { f = MK_EXPR(CVC4::kind::TCLOSURE, f); }
+ | TUPLE_TOK LPAREN formula[f] RPAREN
+ { std::vector<Type> types;
+ std::vector<Expr> args;
+ args.push_back(f);
+ types.push_back(f.getType());
+ DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+ const Datatype& dt = t.getDatatype();
+ args.insert( args.begin(), dt[0].getConstructor() );
+ f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+ }
+ | IDEN_TOK LPAREN formula[f] RPAREN
+ { f = MK_EXPR(CVC4::kind::IDEN, f); }
+ | bvTerm[f]
+ ;
+
bvTerm[CVC4::Expr& f]
@init {
Expr f2;
diff --git a/src/parser/cvc/cvc_input.cpp b/src/parser/cvc/cvc_input.cpp
index 17a670f40..1de624f49 100644
--- a/src/parser/cvc/cvc_input.cpp
+++ b/src/parser/cvc/cvc_input.cpp
@@ -2,9 +2,9 @@
/*! \file cvc_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters, Tim King
+ ** Christopher L. Conway, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/cvc/cvc_input.h b/src/parser/cvc/cvc_input.h
index d9a065fd5..944a125c2 100644
--- a/src/parser/cvc/cvc_input.h
+++ b/src/parser/cvc/cvc_input.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/input.cpp b/src/parser/input.cpp
index cfc4796bf..78e9b474d 100644
--- a/src/parser/input.cpp
+++ b/src/parser/input.cpp
@@ -2,9 +2,9 @@
/*! \file input.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters, Tim King
+ ** Christopher L. Conway, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/input.h b/src/parser/input.h
index 02d92749d..c8d6bbb0e 100644
--- a/src/parser/input.h
+++ b/src/parser/input.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/line_buffer.cpp b/src/parser/line_buffer.cpp
index 71b913227..35263f3ac 100644
--- a/src/parser/line_buffer.cpp
+++ b/src/parser/line_buffer.cpp
@@ -2,9 +2,9 @@
/*! \file line_buffer.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/line_buffer.h b/src/parser/line_buffer.h
index 2b447a0e9..d493ed7ae 100644
--- a/src/parser/line_buffer.h
+++ b/src/parser/line_buffer.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/memory_mapped_input_buffer.cpp b/src/parser/memory_mapped_input_buffer.cpp
index b2bc04de9..2fa0bd7b9 100644
--- a/src/parser/memory_mapped_input_buffer.cpp
+++ b/src/parser/memory_mapped_input_buffer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/memory_mapped_input_buffer.h b/src/parser/memory_mapped_input_buffer.h
index c99329d79..efa739912 100644
--- a/src/parser/memory_mapped_input_buffer.h
+++ b/src/parser/memory_mapped_input_buffer.h
@@ -2,9 +2,9 @@
/*! \file memory_mapped_input_buffer.h
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters
+ ** Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp
index 71d226c98..bc88166d3 100644
--- a/src/parser/parser.cpp
+++ b/src/parser/parser.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/parser.h b/src/parser/parser.h
index 8c18055a7..8bdc28d15 100644
--- a/src/parser/parser.h
+++ b/src/parser/parser.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp
index 95a3a7840..57b63cc0f 100644
--- a/src/parser/parser_builder.cpp
+++ b/src/parser/parser_builder.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/parser_builder.h b/src/parser/parser_builder.h
index 3e14d715a..3f48b0bdb 100644
--- a/src/parser/parser_builder.h
+++ b/src/parser/parser_builder.h
@@ -2,9 +2,9 @@
/*! \file parser_builder.h
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters, Aina Niemetz
+ ** Morgan Deters, Christopher L. Conway, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/parser_exception.h b/src/parser/parser_exception.h
index 9054b88ac..5e7e2500e 100644
--- a/src/parser/parser_exception.h
+++ b/src/parser/parser_exception.h
@@ -2,9 +2,9 @@
/*! \file parser_exception.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Christopher L. Conway
+ ** Tim King, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/Smt1.g b/src/parser/smt1/Smt1.g
index 455da3b42..ca67ec592 100644
--- a/src/parser/smt1/Smt1.g
+++ b/src/parser/smt1/Smt1.g
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1.cpp b/src/parser/smt1/smt1.cpp
index 544c6e85c..979880f8b 100644
--- a/src/parser/smt1/smt1.cpp
+++ b/src/parser/smt1/smt1.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1.h b/src/parser/smt1/smt1.h
index fe177d21e..f8a018806 100644
--- a/src/parser/smt1/smt1.h
+++ b/src/parser/smt1/smt1.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Christopher L. Conway, Morgan Deters, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1_input.cpp b/src/parser/smt1/smt1_input.cpp
index 0a8118711..b8f476687 100644
--- a/src/parser/smt1/smt1_input.cpp
+++ b/src/parser/smt1/smt1_input.cpp
@@ -2,9 +2,9 @@
/*! \file smt1_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters, Tim King
+ ** Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1_input.h b/src/parser/smt1/smt1_input.h
index 6e7a8f8c4..511ddfd53 100644
--- a/src/parser/smt1/smt1_input.h
+++ b/src/parser/smt1/smt1_input.h
@@ -2,9 +2,9 @@
/*! \file smt1_input.h
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Morgan Deters, Tim King
+ ** Morgan Deters, Christopher L. Conway, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/Smt2.g b/src/parser/smt2/Smt2.g
index c72a4f99b..00f2e944d 100644
--- a/src/parser/smt2/Smt2.g
+++ b/src/parser/smt2/Smt2.g
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -407,6 +407,8 @@ command [std::unique_ptr<CVC4::Command>* cmd]
ExprManager::VAR_FLAG_DEFINED, true);
cmd->reset(new DefineFunctionCommand(name, func, terms, expr));
}
+ | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd]
+ | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
| /* value query */
GET_VALUE_TOK { PARSER_STATE->checkThatLogicIsSet(); }
( LPAREN_TOK termList[terms,expr] RPAREN_TOK
@@ -1211,9 +1213,7 @@ extendedCommand[std::unique_ptr<CVC4::Command>* cmd]
* --smtlib2 compliance mode. */
: DECLARE_DATATYPES_2_5_TOK datatypes_2_5_DefCommand[false, cmd]
| DECLARE_CODATATYPES_2_5_TOK datatypes_2_5_DefCommand[true, cmd]
- | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd]
| DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd]
- | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
| DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
| rewriterulesCommand[cmd]
@@ -1886,7 +1886,8 @@ termNonVariable[CVC4::Expr& expr, CVC4::Expr& expr2]
Kind lassocKind = CVC4::kind::UNDEFINED_KIND;
if (args.size() >= 2)
{
- if (kind == CVC4::kind::INTS_DIVISION)
+ if (kind == CVC4::kind::INTS_DIVISION
+ || (kind == CVC4::kind::BITVECTOR_XNOR && PARSER_STATE->v2_6()))
{
// Builtin operators that are not tokenized, are left associative,
// but not internally variadic must set this.
@@ -2306,8 +2307,8 @@ termAtomic[CVC4::api::Term& atomTerm]
sortSymbol[type,CHECK_DECLARED]
sortSymbol[type2,CHECK_DECLARED]
{
- api::Term v1 = SOLVER->mkVar("_emp1", api::Sort(type));
- api::Term v2 = SOLVER->mkVar("_emp2", api::Sort(type2));
+ api::Term v1 = SOLVER->mkVar(api::Sort(type), "_emp1");
+ api::Term v2 = SOLVER->mkVar(api::Sort(type2), "_emp2");
atomTerm = SOLVER->mkTerm(api::SEP_EMP, v1, v2);
}
diff --git a/src/parser/smt2/smt2.cpp b/src/parser/smt2/smt2.cpp
index d52dd948b..47da10f42 100644
--- a/src/parser/smt2/smt2.cpp
+++ b/src/parser/smt2/smt2.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Kshitij Bansal, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/smt2.h b/src/parser/smt2/smt2.h
index 7a3dbb9db..7a3c3b0c3 100644
--- a/src/parser/smt2/smt2.h
+++ b/src/parser/smt2/smt2.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -319,15 +319,25 @@ private:
// that CVC4 permits as N-ary but the standard requires is binary
if(strictModeEnabled()) {
switch(kind) {
- case kind::BITVECTOR_CONCAT:
case kind::BITVECTOR_AND:
- case kind::BITVECTOR_OR:
- case kind::BITVECTOR_XOR:
case kind::BITVECTOR_MULT:
+ case kind::BITVECTOR_OR:
case kind::BITVECTOR_PLUS:
+ case kind::BITVECTOR_XOR:
+ if (numArgs != 2 && !v2_6())
+ {
+ parseError(
+ "Operator requires exactly 2 arguments in strict SMT-LIB "
+ "compliance mode (for versions <2.6): "
+ + kindToString(kind));
+ }
+ break;
+ case kind::BITVECTOR_CONCAT:
if(numArgs != 2) {
- parseError("Operator requires exact 2 arguments in strict SMT-LIB "
- "compliance mode: " + kindToString(kind));
+ parseError(
+ "Operator requires exactly 2 arguments in strict SMT-LIB "
+ "compliance mode: "
+ + kindToString(kind));
}
break;
default:
diff --git a/src/parser/smt2/smt2_input.cpp b/src/parser/smt2/smt2_input.cpp
index e8b52ee34..87739789b 100644
--- a/src/parser/smt2/smt2_input.cpp
+++ b/src/parser/smt2/smt2_input.cpp
@@ -2,9 +2,9 @@
/*! \file smt2_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Tim King, Morgan Deters
+ ** Christopher L. Conway, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/smt2_input.h b/src/parser/smt2/smt2_input.h
index 47b420068..a456a33f8 100644
--- a/src/parser/smt2/smt2_input.h
+++ b/src/parser/smt2/smt2_input.h
@@ -2,9 +2,9 @@
/*! \file smt2_input.h
** \verbatim
** Top contributors (to current version):
- ** Christopher L. Conway, Tim King, Andres Noetzli
+ ** Christopher L. Conway, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/sygus_input.cpp b/src/parser/smt2/sygus_input.cpp
index 00760bffc..ff1a409ae 100644
--- a/src/parser/smt2/sygus_input.cpp
+++ b/src/parser/smt2/sygus_input.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/sygus_input.h b/src/parser/smt2/sygus_input.h
index 826c81670..23227e96c 100644
--- a/src/parser/smt2/sygus_input.h
+++ b/src/parser/smt2/sygus_input.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/Tptp.g b/src/parser/tptp/Tptp.g
index 54e9b0b4a..758198e0d 100644
--- a/src/parser/tptp/Tptp.g
+++ b/src/parser/tptp/Tptp.g
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Francois Bobot, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -352,10 +352,24 @@ definedPred[CVC4::Expr& expr]
| '$lesseq' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::LEQ); }
| '$greater' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::GT); }
| '$greatereq' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::GEQ); }
- | '$is_rat' // all "real" are actually "rat" in CVC4
+ | '$is_rat'
+ // a real n is a rational if there exists q,r integers such that
+ // to_real(q) = n*to_real(r),
+ // where r is non-zero.
{ Expr n = EXPR_MANAGER->mkBoundVar("N", EXPR_MANAGER->realType());
- n = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
- expr = MK_EXPR(CVC4::kind::LAMBDA, n, MK_CONST(bool(true)));
+ Expr q = EXPR_MANAGER->mkBoundVar("Q", EXPR_MANAGER->integerType());
+ Expr qr = MK_EXPR(CVC4::kind::TO_REAL, q);
+ Expr r = EXPR_MANAGER->mkBoundVar("R", EXPR_MANAGER->integerType());
+ Expr rr = MK_EXPR(CVC4::kind::TO_REAL, r);
+ Expr body =
+ MK_EXPR(CVC4::kind::AND,
+ MK_EXPR(CVC4::kind::NOT,
+ MK_EXPR(CVC4::kind::EQUAL, r, MK_CONST(Rational(0)))),
+ MK_EXPR(CVC4::kind::EQUAL, qr, MK_EXPR(CVC4::kind::MULT, n, rr)));
+ Expr bvl = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, q, r);
+ body = MK_EXPR(CVC4::kind::EXISTS, bvl, body);
+ Expr lbvl = MK_EXPR(CVC4::kind::BOUND_VAR_LIST, n);
+ expr = MK_EXPR(CVC4::kind::LAMBDA, lbvl, body);
}
| '$is_int' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::IS_INTEGER); }
| '$distinct' { expr = EXPR_MANAGER->operatorOf(CVC4::kind::DISTINCT); }
diff --git a/src/parser/tptp/tptp.cpp b/src/parser/tptp/tptp.cpp
index ee313a202..fd593c68b 100644
--- a/src/parser/tptp/tptp.cpp
+++ b/src/parser/tptp/tptp.cpp
@@ -2,9 +2,9 @@
/*! \file tptp.cpp
** \verbatim
** Top contributors (to current version):
- ** Francois Bobot, Tim King, Andrew Reynolds
+ ** Francois Bobot, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp.h b/src/parser/tptp/tptp.h
index eb5532247..db08311f0 100644
--- a/src/parser/tptp/tptp.h
+++ b/src/parser/tptp/tptp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Francois Bobot, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp_input.cpp b/src/parser/tptp/tptp_input.cpp
index 126b28735..e17e6608e 100644
--- a/src/parser/tptp/tptp_input.cpp
+++ b/src/parser/tptp/tptp_input.cpp
@@ -2,9 +2,9 @@
/*! \file tptp_input.cpp
** \verbatim
** Top contributors (to current version):
- ** Francois Bobot, Tim King, Morgan Deters
+ ** Francois Bobot, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp_input.h b/src/parser/tptp/tptp_input.h
index e7c681804..dab98b91b 100644
--- a/src/parser/tptp/tptp_input.h
+++ b/src/parser/tptp/tptp_input.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Francois Bobot, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/assertion_pipeline.cpp b/src/preprocessing/assertion_pipeline.cpp
index 7d4351baa..382b1eb63 100644
--- a/src/preprocessing/assertion_pipeline.cpp
+++ b/src/preprocessing/assertion_pipeline.cpp
@@ -2,9 +2,9 @@
/*! \file assertion_pipeline.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Justin Xu, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/assertion_pipeline.h b/src/preprocessing/assertion_pipeline.h
index 77c5c4582..aea2554bd 100644
--- a/src/preprocessing/assertion_pipeline.h
+++ b/src/preprocessing/assertion_pipeline.h
@@ -2,9 +2,9 @@
/*! \file assertion_pipeline.h
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Justin Xu, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/apply_substs.cpp b/src/preprocessing/passes/apply_substs.cpp
index f5c3520d0..ddacc20c0 100644
--- a/src/preprocessing/passes/apply_substs.cpp
+++ b/src/preprocessing/passes/apply_substs.cpp
@@ -2,9 +2,9 @@
/*! \file apply_substs.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/apply_substs.h b/src/preprocessing/passes/apply_substs.h
index f2f77fd0e..ea8585506 100644
--- a/src/preprocessing/passes/apply_substs.h
+++ b/src/preprocessing/passes/apply_substs.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/apply_to_const.cpp b/src/preprocessing/passes/apply_to_const.cpp
index 653a915d5..12591db0b 100644
--- a/src/preprocessing/passes/apply_to_const.cpp
+++ b/src/preprocessing/passes/apply_to_const.cpp
@@ -2,9 +2,9 @@
/*! \file apply_to_const.cpp
** \verbatim
** Top contributors (to current version):
- ** Haniel Barbosa
+ ** Haniel Barbosa, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/apply_to_const.h b/src/preprocessing/passes/apply_to_const.h
index 9d5072023..3ff8dec75 100644
--- a/src/preprocessing/passes/apply_to_const.h
+++ b/src/preprocessing/passes/apply_to_const.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bool_to_bv.cpp b/src/preprocessing/passes/bool_to_bv.cpp
index 252ab941c..520e9f2a7 100644
--- a/src/preprocessing/passes/bool_to_bv.cpp
+++ b/src/preprocessing/passes/bool_to_bv.cpp
@@ -2,9 +2,9 @@
/*! \file bool_to_bv.cpp
** \verbatim
** Top contributors (to current version):
- ** Yoni Zohar, Makai Mann
+ ** Makai Mann, Yoni Zohar, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bool_to_bv.h b/src/preprocessing/passes/bool_to_bv.h
index da99d3c84..57f69a6e3 100644
--- a/src/preprocessing/passes/bool_to_bv.h
+++ b/src/preprocessing/passes/bool_to_bv.h
@@ -2,9 +2,9 @@
/*! \file bool_to_bv.h
** \verbatim
** Top contributors (to current version):
- ** Makai Mann, Yoni Zohar
+ ** Yoni Zohar, Makai Mann, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_abstraction.cpp b/src/preprocessing/passes/bv_abstraction.cpp
index 27648b45d..9c0d0ec68 100644
--- a/src/preprocessing/passes/bv_abstraction.cpp
+++ b/src/preprocessing/passes/bv_abstraction.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_abstraction.h b/src/preprocessing/passes/bv_abstraction.h
index 67e2ef296..963e99570 100644
--- a/src/preprocessing/passes/bv_abstraction.h
+++ b/src/preprocessing/passes/bv_abstraction.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_ackermann.cpp b/src/preprocessing/passes/bv_ackermann.cpp
index 2ec49b985..c8cefcb17 100644
--- a/src/preprocessing/passes/bv_ackermann.cpp
+++ b/src/preprocessing/passes/bv_ackermann.cpp
@@ -2,9 +2,9 @@
/*! \file bv_ackermann.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Yoni Zohar, Aina Niemetz, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_ackermann.h b/src/preprocessing/passes/bv_ackermann.h
index 5f799ffe4..645dd72aa 100644
--- a/src/preprocessing/passes/bv_ackermann.h
+++ b/src/preprocessing/passes/bv_ackermann.h
@@ -2,9 +2,9 @@
/*! \file bv_ackermann.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_eager_atoms.cpp b/src/preprocessing/passes/bv_eager_atoms.cpp
index 8ee46829a..a16a8347d 100644
--- a/src/preprocessing/passes/bv_eager_atoms.cpp
+++ b/src/preprocessing/passes/bv_eager_atoms.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_eager_atoms.h b/src/preprocessing/passes/bv_eager_atoms.h
index 585c108fc..c83a16491 100644
--- a/src/preprocessing/passes/bv_eager_atoms.h
+++ b/src/preprocessing/passes/bv_eager_atoms.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_gauss.cpp b/src/preprocessing/passes/bv_gauss.cpp
index 58e5f93bf..fccdfa2f9 100644
--- a/src/preprocessing/passes/bv_gauss.cpp
+++ b/src/preprocessing/passes/bv_gauss.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_gauss.h b/src/preprocessing/passes/bv_gauss.h
index 8ed5a884e..e991b17c4 100644
--- a/src/preprocessing/passes/bv_gauss.h
+++ b/src/preprocessing/passes/bv_gauss.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_intro_pow2.cpp b/src/preprocessing/passes/bv_intro_pow2.cpp
index fb9ceac71..bfc02f332 100644
--- a/src/preprocessing/passes/bv_intro_pow2.cpp
+++ b/src/preprocessing/passes/bv_intro_pow2.cpp
@@ -2,9 +2,9 @@
/*! \file bv_intro_pow2.cpp
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Mathias Preiner, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_intro_pow2.h b/src/preprocessing/passes/bv_intro_pow2.h
index a5fe8e7bb..c0238b01e 100644
--- a/src/preprocessing/passes/bv_intro_pow2.h
+++ b/src/preprocessing/passes/bv_intro_pow2.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_to_bool.cpp b/src/preprocessing/passes/bv_to_bool.cpp
index 811fe9251..3d3762ecd 100644
--- a/src/preprocessing/passes/bv_to_bool.cpp
+++ b/src/preprocessing/passes/bv_to_bool.cpp
@@ -2,9 +2,9 @@
/*! \file bv_to_bool.cpp
** \verbatim
** Top contributors (to current version):
- ** Yoni Zohar
+ ** Yoni Zohar, Liana Hadarean, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/bv_to_bool.h b/src/preprocessing/passes/bv_to_bool.h
index 2d138ee1d..83502e3d8 100644
--- a/src/preprocessing/passes/bv_to_bool.h
+++ b/src/preprocessing/passes/bv_to_bool.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Yoni Zohar, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/extended_rewriter_pass.cpp b/src/preprocessing/passes/extended_rewriter_pass.cpp
index 261a5f2ae..8bf4cc816 100644
--- a/src/preprocessing/passes/extended_rewriter_pass.cpp
+++ b/src/preprocessing/passes/extended_rewriter_pass.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/extended_rewriter_pass.h b/src/preprocessing/passes/extended_rewriter_pass.h
index f604a1af5..aa379329b 100644
--- a/src/preprocessing/passes/extended_rewriter_pass.h
+++ b/src/preprocessing/passes/extended_rewriter_pass.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/global_negate.cpp b/src/preprocessing/passes/global_negate.cpp
index 428360e8d..5e7d42632 100644
--- a/src/preprocessing/passes/global_negate.cpp
+++ b/src/preprocessing/passes/global_negate.cpp
@@ -2,9 +2,9 @@
/*! \file global_negate.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/global_negate.h b/src/preprocessing/passes/global_negate.h
index 0330aa10e..84d78d959 100644
--- a/src/preprocessing/passes/global_negate.h
+++ b/src/preprocessing/passes/global_negate.h
@@ -2,9 +2,9 @@
/*! \file global_negate.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/int_to_bv.cpp b/src/preprocessing/passes/int_to_bv.cpp
index cc95bd1f2..150e41b8f 100644
--- a/src/preprocessing/passes/int_to_bv.cpp
+++ b/src/preprocessing/passes/int_to_bv.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/int_to_bv.h b/src/preprocessing/passes/int_to_bv.h
index 072e547c9..225f9945f 100644
--- a/src/preprocessing/passes/int_to_bv.h
+++ b/src/preprocessing/passes/int_to_bv.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/ite_removal.cpp b/src/preprocessing/passes/ite_removal.cpp
index b70d2460d..bda38a6df 100644
--- a/src/preprocessing/passes/ite_removal.cpp
+++ b/src/preprocessing/passes/ite_removal.cpp
@@ -2,9 +2,9 @@
/*! \file ite_removal.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Paul Meng
+ ** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/ite_removal.h b/src/preprocessing/passes/ite_removal.h
index 27ec4f095..cdc104dbe 100644
--- a/src/preprocessing/passes/ite_removal.h
+++ b/src/preprocessing/passes/ite_removal.h
@@ -2,9 +2,9 @@
/*! \file ite_removal.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Paul Meng
+ ** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/ite_simp.cpp b/src/preprocessing/passes/ite_simp.cpp
index 02f14f508..ad00ec204 100644
--- a/src/preprocessing/passes/ite_simp.cpp
+++ b/src/preprocessing/passes/ite_simp.cpp
@@ -2,9 +2,9 @@
/*! \file ite_simp.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/ite_simp.h b/src/preprocessing/passes/ite_simp.h
index 2296d663e..8d7ad648a 100644
--- a/src/preprocessing/passes/ite_simp.h
+++ b/src/preprocessing/passes/ite_simp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/miplib_trick.cpp b/src/preprocessing/passes/miplib_trick.cpp
index 9a2dcca1f..37bc363f8 100644
--- a/src/preprocessing/passes/miplib_trick.cpp
+++ b/src/preprocessing/passes/miplib_trick.cpp
@@ -2,9 +2,9 @@
/*! \file miplib_trick.cpp
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Mathias Preiner, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/miplib_trick.h b/src/preprocessing/passes/miplib_trick.h
index 7e75372a8..93fa701d1 100644
--- a/src/preprocessing/passes/miplib_trick.h
+++ b/src/preprocessing/passes/miplib_trick.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/nl_ext_purify.cpp b/src/preprocessing/passes/nl_ext_purify.cpp
index 744bd8ad8..a6da281ba 100644
--- a/src/preprocessing/passes/nl_ext_purify.cpp
+++ b/src/preprocessing/passes/nl_ext_purify.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/nl_ext_purify.h b/src/preprocessing/passes/nl_ext_purify.h
index 8d28b0742..dcaf12b5e 100644
--- a/src/preprocessing/passes/nl_ext_purify.h
+++ b/src/preprocessing/passes/nl_ext_purify.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/non_clausal_simp.cpp b/src/preprocessing/passes/non_clausal_simp.cpp
index d8e1b3d66..4a0f38689 100644
--- a/src/preprocessing/passes/non_clausal_simp.cpp
+++ b/src/preprocessing/passes/non_clausal_simp.cpp
@@ -2,9 +2,9 @@
/*! \file non_clausal_simp.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/non_clausal_simp.h b/src/preprocessing/passes/non_clausal_simp.h
index 2a244d7ad..61706e382 100644
--- a/src/preprocessing/passes/non_clausal_simp.h
+++ b/src/preprocessing/passes/non_clausal_simp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/pseudo_boolean_processor.cpp b/src/preprocessing/passes/pseudo_boolean_processor.cpp
index 624b98ec1..d852f2d86 100644
--- a/src/preprocessing/passes/pseudo_boolean_processor.cpp
+++ b/src/preprocessing/passes/pseudo_boolean_processor.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/pseudo_boolean_processor.h b/src/preprocessing/passes/pseudo_boolean_processor.h
index 5a91fef55..efbcb502e 100644
--- a/src/preprocessing/passes/pseudo_boolean_processor.h
+++ b/src/preprocessing/passes/pseudo_boolean_processor.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/quantifier_macros.cpp b/src/preprocessing/passes/quantifier_macros.cpp
index 6bd94a3f0..0f71943c9 100644
--- a/src/preprocessing/passes/quantifier_macros.cpp
+++ b/src/preprocessing/passes/quantifier_macros.cpp
@@ -2,9 +2,9 @@
/*! \file quantifier_macros.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Kshitij Bansal
+ ** Andrew Reynolds, Yoni Zohar, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/quantifier_macros.h b/src/preprocessing/passes/quantifier_macros.h
index 092a62942..d92d8599c 100644
--- a/src/preprocessing/passes/quantifier_macros.h
+++ b/src/preprocessing/passes/quantifier_macros.h
@@ -2,9 +2,9 @@
/*! \file quantifier_macros.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Yoni Zohar, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/quantifiers_preprocess.cpp b/src/preprocessing/passes/quantifiers_preprocess.cpp
index cfc4a8103..eb6017402 100644
--- a/src/preprocessing/passes/quantifiers_preprocess.cpp
+++ b/src/preprocessing/passes/quantifiers_preprocess.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Caleb Donovick
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/quantifiers_preprocess.h b/src/preprocessing/passes/quantifiers_preprocess.h
index 56ad2f175..bb5d8f8e7 100644
--- a/src/preprocessing/passes/quantifiers_preprocess.h
+++ b/src/preprocessing/passes/quantifiers_preprocess.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Caleb Donovick
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/real_to_int.cpp b/src/preprocessing/passes/real_to_int.cpp
index 4b1fc06eb..ca47e3ea0 100644
--- a/src/preprocessing/passes/real_to_int.cpp
+++ b/src/preprocessing/passes/real_to_int.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/real_to_int.h b/src/preprocessing/passes/real_to_int.h
index eb4ac6593..a3d95b549 100644
--- a/src/preprocessing/passes/real_to_int.h
+++ b/src/preprocessing/passes/real_to_int.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/rewrite.cpp b/src/preprocessing/passes/rewrite.cpp
index 4a5eccd4b..deb58ae9f 100644
--- a/src/preprocessing/passes/rewrite.cpp
+++ b/src/preprocessing/passes/rewrite.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Caleb Donovick
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/rewrite.h b/src/preprocessing/passes/rewrite.h
index 1ab614fcd..a3d42d660 100644
--- a/src/preprocessing/passes/rewrite.h
+++ b/src/preprocessing/passes/rewrite.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Caleb Donovick
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sep_skolem_emp.cpp b/src/preprocessing/passes/sep_skolem_emp.cpp
index 95a7995ce..a81dbb4b5 100644
--- a/src/preprocessing/passes/sep_skolem_emp.cpp
+++ b/src/preprocessing/passes/sep_skolem_emp.cpp
@@ -1,10 +1,10 @@
-/**********************/
+/********************* */
/*! \file sep_skolem_emp.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Yoni Zohar
+ ** Yoni Zohar, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sep_skolem_emp.h b/src/preprocessing/passes/sep_skolem_emp.h
index 4a3dba6b8..a8ea8db1c 100644
--- a/src/preprocessing/passes/sep_skolem_emp.h
+++ b/src/preprocessing/passes/sep_skolem_emp.h
@@ -2,9 +2,9 @@
/*! \file sep_skolem_emp.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Yoni Zohar
+ ** Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sort_infer.cpp b/src/preprocessing/passes/sort_infer.cpp
index 807048696..d0612086c 100644
--- a/src/preprocessing/passes/sort_infer.cpp
+++ b/src/preprocessing/passes/sort_infer.cpp
@@ -2,9 +2,9 @@
/*! \file sort_infer.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sort_infer.h b/src/preprocessing/passes/sort_infer.h
index 7c913e9cf..e0ecd50c5 100644
--- a/src/preprocessing/passes/sort_infer.h
+++ b/src/preprocessing/passes/sort_infer.h
@@ -2,9 +2,9 @@
/*! \file sort_infer.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/static_learning.cpp b/src/preprocessing/passes/static_learning.cpp
index 26327fd5b..7af9f7fac 100644
--- a/src/preprocessing/passes/static_learning.cpp
+++ b/src/preprocessing/passes/static_learning.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/static_learning.h b/src/preprocessing/passes/static_learning.h
index ade1f5a33..27fb6f86b 100644
--- a/src/preprocessing/passes/static_learning.h
+++ b/src/preprocessing/passes/static_learning.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sygus_abduct.cpp b/src/preprocessing/passes/sygus_abduct.cpp
new file mode 100644
index 000000000..346915b51
--- /dev/null
+++ b/src/preprocessing/passes/sygus_abduct.cpp
@@ -0,0 +1,174 @@
+/********************* */
+/*! \file sygus_abduct.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of sygus abduction preprocessing pass, which
+ ** transforms an arbitrary input into an abduction problem.
+ **/
+
+#include "preprocessing/passes/sygus_abduct.h"
+
+#include "expr/node_algorithm.h"
+#include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
+#include "smt/smt_statistics_registry.h"
+#include "theory/quantifiers/quantifiers_attributes.h"
+#include "theory/quantifiers/quantifiers_rewriter.h"
+#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace preprocessing {
+namespace passes {
+
+SygusAbduct::SygusAbduct(PreprocessingPassContext* preprocContext)
+ : PreprocessingPass(preprocContext, "sygus-abduct"){};
+
+PreprocessingPassResult SygusAbduct::applyInternal(
+ AssertionPipeline* assertionsToPreprocess)
+{
+ NodeManager* nm = NodeManager::currentNM();
+ Trace("sygus-abduct") << "Run sygus abduct..." << std::endl;
+
+ Trace("sygus-abduct-debug") << "Collect symbols..." << std::endl;
+ std::unordered_set<Node, NodeHashFunction> symset;
+ std::vector<Node>& asserts = assertionsToPreprocess->ref();
+ // do we have any assumptions, e.g. via check-sat-assuming?
+ bool usingAssumptions = (assertionsToPreprocess->getNumAssumptions() > 0);
+ // The following is our set of "axioms". We construct this set only when the
+ // usingAssumptions (above) is true. In this case, our input formula is
+ // partitioned into Fa ^ Fc as described in the header of this class, where:
+ // - The conjunction of assertions marked as assumptions are the negated
+ // conjecture Fc, and
+ // - The conjunction of all other assertions are the axioms Fa.
+ std::vector<Node> axioms;
+ for (size_t i = 0, size = asserts.size(); i < size; i++)
+ {
+ expr::getSymbols(asserts[i], symset);
+ // if we are not an assumption, add it to the set of axioms
+ if (usingAssumptions && i < assertionsToPreprocess->getAssumptionsStart())
+ {
+ axioms.push_back(asserts[i]);
+ }
+ }
+ Trace("sygus-abduct-debug")
+ << "...finish, got " << symset.size() << " symbols." << std::endl;
+
+ Trace("sygus-abduct-debug") << "Setup symbols..." << std::endl;
+ std::vector<Node> syms;
+ std::vector<Node> vars;
+ std::vector<Node> varlist;
+ std::vector<TypeNode> varlistTypes;
+ for (const Node& s : symset)
+ {
+ TypeNode tn = s.getType();
+ if (tn.isFirstClass())
+ {
+ std::stringstream ss;
+ ss << s;
+ Node var = nm->mkBoundVar(tn);
+ syms.push_back(s);
+ vars.push_back(var);
+ Node vlv = nm->mkBoundVar(ss.str(), tn);
+ varlist.push_back(vlv);
+ varlistTypes.push_back(tn);
+ }
+ }
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ Trace("sygus-abduct-debug") << "Make abduction predicate..." << std::endl;
+ // make the abduction predicate to synthesize
+ TypeNode abdType = varlistTypes.empty() ? nm->booleanType()
+ : nm->mkPredicateType(varlistTypes);
+ Node abd = nm->mkBoundVar("A", abdType);
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ Trace("sygus-abduct-debug") << "Make abduction predicate app..." << std::endl;
+ std::vector<Node> achildren;
+ achildren.push_back(abd);
+ achildren.insert(achildren.end(), vars.begin(), vars.end());
+ Node abdApp = vars.empty() ? abd : nm->mkNode(APPLY_UF, achildren);
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ Trace("sygus-abduct-debug") << "Set attributes..." << std::endl;
+ // set the sygus bound variable list
+ Node abvl = nm->mkNode(BOUND_VAR_LIST, varlist);
+ abd.setAttribute(theory::SygusSynthFunVarListAttribute(), abvl);
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ Trace("sygus-abduct-debug") << "Make conjecture body..." << std::endl;
+ Node input = asserts.size() == 1 ? asserts[0] : nm->mkNode(AND, asserts);
+ input = input.substitute(syms.begin(), syms.end(), vars.begin(), vars.end());
+ // A(x) => ~input( x )
+ input = nm->mkNode(OR, abdApp.negate(), input.negate());
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ Trace("sygus-abduct-debug") << "Make conjecture..." << std::endl;
+ Node res = input.negate();
+ if (!vars.empty())
+ {
+ Node bvl = nm->mkNode(BOUND_VAR_LIST, vars);
+ // exists x. ~( A( x ) => ~input( x ) )
+ res = nm->mkNode(EXISTS, bvl, res);
+ }
+ // sygus attribute
+ Node sygusVar = nm->mkSkolem("sygus", nm->booleanType());
+ theory::SygusAttribute ca;
+ sygusVar.setAttribute(ca, true);
+ Node instAttr = nm->mkNode(INST_ATTRIBUTE, sygusVar);
+ std::vector<Node> iplc;
+ iplc.push_back(instAttr);
+ if (!axioms.empty())
+ {
+ Node aconj = axioms.size() == 1 ? axioms[0] : nm->mkNode(AND, axioms);
+ aconj =
+ aconj.substitute(syms.begin(), syms.end(), vars.begin(), vars.end());
+ Trace("sygus-abduct") << "---> Assumptions: " << aconj << std::endl;
+ Node sc = nm->mkNode(AND, aconj, abdApp);
+ Node vbvl = nm->mkNode(BOUND_VAR_LIST, vars);
+ sc = nm->mkNode(EXISTS, vbvl, sc);
+ Node sygusScVar = nm->mkSkolem("sygus_sc", nm->booleanType());
+ sygusScVar.setAttribute(theory::SygusSideConditionAttribute(), sc);
+ instAttr = nm->mkNode(INST_ATTRIBUTE, sygusScVar);
+ // build in the side condition
+ // exists x. A( x ) ^ input_axioms( x )
+ // as an additional annotation on the sygus conjecture. In other words,
+ // the abducts A we procedure must be consistent with our axioms.
+ iplc.push_back(instAttr);
+ }
+ Node instAttrList = nm->mkNode(INST_PATTERN_LIST, iplc);
+
+ Node fbvl = nm->mkNode(BOUND_VAR_LIST, abd);
+
+ // forall A. exists x. ~( A( x ) => ~input( x ) )
+ res = nm->mkNode(FORALL, fbvl, res, instAttrList);
+ Trace("sygus-abduct-debug") << "...finish" << std::endl;
+
+ res = theory::Rewriter::rewrite(res);
+
+ Trace("sygus-abduct") << "Generate: " << res << std::endl;
+
+ Node trueNode = nm->mkConst(true);
+
+ assertionsToPreprocess->replace(0, res);
+ for (size_t i = 1, size = assertionsToPreprocess->size(); i < size; ++i)
+ {
+ assertionsToPreprocess->replace(i, trueNode);
+ }
+
+ return PreprocessingPassResult::NO_CONFLICT;
+}
+
+} // namespace passes
+} // namespace preprocessing
+} // namespace CVC4
diff --git a/src/preprocessing/passes/sygus_abduct.h b/src/preprocessing/passes/sygus_abduct.h
new file mode 100644
index 000000000..8e83bf1d7
--- /dev/null
+++ b/src/preprocessing/passes/sygus_abduct.h
@@ -0,0 +1,72 @@
+/********************* */
+/*! \file sygus_abduct.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Andrew Reynolds
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Sygus abduction preprocessing pass, which transforms an arbitrary
+ ** input into an abduction problem.
+ **/
+
+#ifndef __CVC4__PREPROCESSING__PASSES__SYGUS_ABDUCT_H
+#define __CVC4__PREPROCESSING__PASSES__SYGUS_ABDUCT_H
+
+#include "preprocessing/preprocessing_pass.h"
+#include "preprocessing/preprocessing_pass_context.h"
+
+namespace CVC4 {
+namespace preprocessing {
+namespace passes {
+
+/** SygusAbduct
+ *
+ * A preprocessing utility that turns a set of quantifier-free assertions into
+ * a sygus conjecture that encodes an abduction problem. In detail, if our
+ * input formula is F( x ) for free symbols x, then we construct the sygus
+ * conjecture:
+ *
+ * exists A. forall x. ( A( x ) => ~F( x ) )
+ *
+ * where A( x ) is a predicate over the free symbols of our input. In other
+ * words, A( x ) is a sufficient condition for showing ~F( x ).
+ *
+ * Another way to view this is A( x ) is any condition such that A( x ) ^ F( x )
+ * is unsatisfiable.
+ *
+ * A common use case is to find the weakest such A that meets the above
+ * specification. We do this by streaming solutions (sygus-stream) for A
+ * while filtering stronger solutions (sygus-filter-sol=strong). These options
+ * are enabled by default when this preprocessing class is used (sygus-abduct).
+ *
+ * If the input F( x ) is partitioned into axioms Fa and negated conjecture Fc
+ * Fa( x ) ^ Fc( x ), then the sygus conjecture we construct is:
+ *
+ * exists A. ( exists y. A( y ) ^ Fa( y ) ) ^ forall x. ( A( x ) => ~F( x ) )
+ *
+ * In other words, A( y ) must be consistent with our axioms Fa and imply
+ * ~F( x ). We encode this conjecture using SygusSideConditionAttribute.
+ */
+class SygusAbduct : public PreprocessingPass
+{
+ public:
+ SygusAbduct(PreprocessingPassContext* preprocContext);
+
+ protected:
+ /**
+ * Replaces the set of assertions by an abduction sygus problem described
+ * above.
+ */
+ PreprocessingPassResult applyInternal(
+ AssertionPipeline* assertionsToPreprocess) override;
+};
+
+} // namespace passes
+} // namespace preprocessing
+} // namespace CVC4
+
+#endif /* __CVC4__PREPROCESSING__PASSES__SYGUS_ABDUCT_H_ */
diff --git a/src/preprocessing/passes/sygus_inference.cpp b/src/preprocessing/passes/sygus_inference.cpp
index b0c374ff9..78e9e639a 100644
--- a/src/preprocessing/passes/sygus_inference.cpp
+++ b/src/preprocessing/passes/sygus_inference.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/sygus_inference.h b/src/preprocessing/passes/sygus_inference.h
index 5e7c6f7d0..9350a15c7 100644
--- a/src/preprocessing/passes/sygus_inference.h
+++ b/src/preprocessing/passes/sygus_inference.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/symmetry_breaker.cpp b/src/preprocessing/passes/symmetry_breaker.cpp
index 44fdd2c79..eb83fd229 100644
--- a/src/preprocessing/passes/symmetry_breaker.cpp
+++ b/src/preprocessing/passes/symmetry_breaker.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/symmetry_breaker.h b/src/preprocessing/passes/symmetry_breaker.h
index 9f0e7bb64..6f3cd5e0b 100644
--- a/src/preprocessing/passes/symmetry_breaker.h
+++ b/src/preprocessing/passes/symmetry_breaker.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/symmetry_detect.cpp b/src/preprocessing/passes/symmetry_detect.cpp
index ec784a6ba..8d0d04149 100644
--- a/src/preprocessing/passes/symmetry_detect.cpp
+++ b/src/preprocessing/passes/symmetry_detect.cpp
@@ -2,9 +2,9 @@
/*! \file symmetry_detect.cpp
** \verbatim
** Top contributors (to current version):
- ** Paul Meng
+ ** Andrew Reynolds, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/symmetry_detect.h b/src/preprocessing/passes/symmetry_detect.h
index 67e40da00..1bc354419 100644
--- a/src/preprocessing/passes/symmetry_detect.h
+++ b/src/preprocessing/passes/symmetry_detect.h
@@ -2,9 +2,9 @@
/*! \file symmetry_detect.h
** \verbatim
** Top contributors (to current version):
- ** Paul Meng
+ ** Andrew Reynolds, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/synth_rew_rules.cpp b/src/preprocessing/passes/synth_rew_rules.cpp
index 7e687329b..f83cb7f31 100644
--- a/src/preprocessing/passes/synth_rew_rules.cpp
+++ b/src/preprocessing/passes/synth_rew_rules.cpp
@@ -2,9 +2,9 @@
/*! \file synth_rew_rules.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/synth_rew_rules.h b/src/preprocessing/passes/synth_rew_rules.h
index 2b05bbf00..4319c0243 100644
--- a/src/preprocessing/passes/synth_rew_rules.h
+++ b/src/preprocessing/passes/synth_rew_rules.h
@@ -2,9 +2,9 @@
/*! \file synth_rew_rules.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/theory_preprocess.cpp b/src/preprocessing/passes/theory_preprocess.cpp
index 3a5213f43..1399363fa 100644
--- a/src/preprocessing/passes/theory_preprocess.cpp
+++ b/src/preprocessing/passes/theory_preprocess.cpp
@@ -1,10 +1,10 @@
/********************* */
-/*! \file bv_abstraction.cpp
+/*! \file theory_preprocess.cpp
** \verbatim
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/theory_preprocess.h b/src/preprocessing/passes/theory_preprocess.h
index 58eaee611..d8f75e4ba 100644
--- a/src/preprocessing/passes/theory_preprocess.h
+++ b/src/preprocessing/passes/theory_preprocess.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/unconstrained_simplifier.cpp b/src/preprocessing/passes/unconstrained_simplifier.cpp
index f58f1a44b..c41f1fca9 100644
--- a/src/preprocessing/passes/unconstrained_simplifier.cpp
+++ b/src/preprocessing/passes/unconstrained_simplifier.cpp
@@ -2,9 +2,9 @@
/*! \file unconstrained_simplifier.cpp
** \verbatim
** Top contributors (to current version):
- ** Clark Barrett, Tim King, Andrew Reynolds
+ ** Clark Barrett, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/passes/unconstrained_simplifier.h b/src/preprocessing/passes/unconstrained_simplifier.h
index 658834ee3..f56b86489 100644
--- a/src/preprocessing/passes/unconstrained_simplifier.h
+++ b/src/preprocessing/passes/unconstrained_simplifier.h
@@ -2,9 +2,9 @@
/*! \file unconstrained_simplifier.h
** \verbatim
** Top contributors (to current version):
- ** Clark Barrett, Tim King
+ ** Clark Barrett, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/preprocessing_pass.cpp b/src/preprocessing/preprocessing_pass.cpp
index 120c68a91..84c3ca79b 100644
--- a/src/preprocessing/preprocessing_pass.cpp
+++ b/src/preprocessing/preprocessing_pass.cpp
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass.cpp
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Aina Niemetz
+ ** Justin Xu, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/preprocessing_pass.h b/src/preprocessing/preprocessing_pass.h
index 448cacb87..7ffd5dc67 100644
--- a/src/preprocessing/preprocessing_pass.h
+++ b/src/preprocessing/preprocessing_pass.h
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass.h
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Aina Niemetz
+ ** Justin Xu
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/preprocessing_pass_context.cpp b/src/preprocessing/preprocessing_pass_context.cpp
index 3f72a4559..2d25502d1 100644
--- a/src/preprocessing/preprocessing_pass_context.cpp
+++ b/src/preprocessing/preprocessing_pass_context.cpp
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass_context.cpp
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Mathias Preiner, Aina Niemetz
+ ** Aina Niemetz, Mathias Preiner, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/preprocessing_pass_context.h b/src/preprocessing/preprocessing_pass_context.h
index 3eb0f10b5..d6a3b9f0f 100644
--- a/src/preprocessing/preprocessing_pass_context.h
+++ b/src/preprocessing/preprocessing_pass_context.h
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass_context.h
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Andres Noetzli, Aina Niemetz
+ ** Aina Niemetz, Mathias Preiner, Justin Xu
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/preprocessing_pass_registry.cpp b/src/preprocessing/preprocessing_pass_registry.cpp
index f2e7c8603..15618f575 100644
--- a/src/preprocessing/preprocessing_pass_registry.cpp
+++ b/src/preprocessing/preprocessing_pass_registry.cpp
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass_registry.cpp
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Yoni Zohar
+ ** Andres Noetzli, Justin Xu, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -48,6 +48,7 @@
#include "preprocessing/passes/sep_skolem_emp.h"
#include "preprocessing/passes/sort_infer.h"
#include "preprocessing/passes/static_learning.h"
+#include "preprocessing/passes/sygus_abduct.h"
#include "preprocessing/passes/sygus_inference.h"
#include "preprocessing/passes/symmetry_breaker.h"
#include "preprocessing/passes/symmetry_detect.h"
@@ -126,6 +127,7 @@ PreprocessingPassRegistry::PreprocessingPassRegistry()
registerPassInfo("synth-rr", callCtor<SynthRewRulesPass>);
registerPassInfo("real-to-int", callCtor<RealToInt>);
registerPassInfo("sygus-infer", callCtor<SygusInference>);
+ registerPassInfo("sygus-abduct", callCtor<SygusAbduct>);
registerPassInfo("bv-to-bool", callCtor<BVToBool>);
registerPassInfo("bv-intro-pow2", callCtor<BvIntroPow2>);
registerPassInfo("sort-inference", callCtor<SortInferencePass>);
diff --git a/src/preprocessing/preprocessing_pass_registry.h b/src/preprocessing/preprocessing_pass_registry.h
index e6c98c1f9..786e59135 100644
--- a/src/preprocessing/preprocessing_pass_registry.h
+++ b/src/preprocessing/preprocessing_pass_registry.h
@@ -2,9 +2,9 @@
/*! \file preprocessing_pass_registry.h
** \verbatim
** Top contributors (to current version):
- ** Justin Xu, Yoni Zohar
+ ** Andres Noetzli, Justin Xu, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/util/ite_utilities.cpp b/src/preprocessing/util/ite_utilities.cpp
index 66d9151df..9c3db0b0d 100644
--- a/src/preprocessing/util/ite_utilities.cpp
+++ b/src/preprocessing/util/ite_utilities.cpp
@@ -2,9 +2,9 @@
/*! \file ite_utilities.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Aina Niemetz, Andres Noetzli
+ ** Tim King, Aina Niemetz, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/preprocessing/util/ite_utilities.h b/src/preprocessing/util/ite_utilities.h
index e137749db..383a087c1 100644
--- a/src/preprocessing/util/ite_utilities.h
+++ b/src/preprocessing/util/ite_utilities.h
@@ -2,9 +2,9 @@
/*! \file ite_utilities.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Aina Niemetz, Paul Meng
+ ** Tim King, Aina Niemetz, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/ast/ast_printer.cpp b/src/printer/ast/ast_printer.cpp
index 6b88a109c..1e6604d24 100644
--- a/src/printer/ast/ast_printer.cpp
+++ b/src/printer/ast/ast_printer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/ast/ast_printer.h b/src/printer/ast/ast_printer.h
index 8f2e6dcd9..d49e17da2 100644
--- a/src/printer/ast/ast_printer.h
+++ b/src/printer/ast/ast_printer.h
@@ -2,9 +2,9 @@
/*! \file ast_printer.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/cvc/cvc_printer.cpp b/src/printer/cvc/cvc_printer.cpp
index 36d2ddfb7..c95ff5781 100644
--- a/src/printer/cvc/cvc_printer.cpp
+++ b/src/printer/cvc/cvc_printer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/cvc/cvc_printer.h b/src/printer/cvc/cvc_printer.h
index 1afd096ff..e85a66a05 100644
--- a/src/printer/cvc/cvc_printer.h
+++ b/src/printer/cvc/cvc_printer.h
@@ -2,9 +2,9 @@
/*! \file cvc_printer.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/dagification_visitor.cpp b/src/printer/dagification_visitor.cpp
index 202249759..d3cfc0438 100644
--- a/src/printer/dagification_visitor.cpp
+++ b/src/printer/dagification_visitor.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/dagification_visitor.h b/src/printer/dagification_visitor.h
index b05e221f3..ed0f1ada7 100644
--- a/src/printer/dagification_visitor.h
+++ b/src/printer/dagification_visitor.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/printer.cpp b/src/printer/printer.cpp
index e834238a5..51888addd 100644
--- a/src/printer/printer.cpp
+++ b/src/printer/printer.cpp
@@ -2,9 +2,9 @@
/*! \file printer.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Aina Niemetz
+ ** Morgan Deters, Aina Niemetz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/printer.h b/src/printer/printer.h
index 6b34094e7..051eb6c97 100644
--- a/src/printer/printer.h
+++ b/src/printer/printer.h
@@ -2,9 +2,9 @@
/*! \file printer.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp
index d6ed07c12..7ea7765d8 100644
--- a/src/printer/smt2/smt2_printer.cpp
+++ b/src/printer/smt2/smt2_printer.cpp
@@ -2,9 +2,9 @@
/*! \file smt2_printer.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/smt2/smt2_printer.h b/src/printer/smt2/smt2_printer.h
index 2418e7109..3f80f0612 100644
--- a/src/printer/smt2/smt2_printer.h
+++ b/src/printer/smt2/smt2_printer.h
@@ -2,9 +2,9 @@
/*! \file smt2_printer.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/sygus_print_callback.cpp b/src/printer/sygus_print_callback.cpp
index 7fac58395..e320d5dfd 100644
--- a/src/printer/sygus_print_callback.cpp
+++ b/src/printer/sygus_print_callback.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_print_callback.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Morgan Deters, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/sygus_print_callback.h b/src/printer/sygus_print_callback.h
index 26907dbfd..5b099aa1f 100644
--- a/src/printer/sygus_print_callback.h
+++ b/src/printer/sygus_print_callback.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/tptp/tptp_printer.cpp b/src/printer/tptp/tptp_printer.cpp
index 4a3b62be4..3ed642805 100644
--- a/src/printer/tptp/tptp_printer.cpp
+++ b/src/printer/tptp/tptp_printer.cpp
@@ -2,9 +2,9 @@
/*! \file tptp_printer.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/printer/tptp/tptp_printer.h b/src/printer/tptp/tptp_printer.h
index 0cc95ed42..ae7817a47 100644
--- a/src/printer/tptp/tptp_printer.h
+++ b/src/printer/tptp/tptp_printer.h
@@ -2,9 +2,9 @@
/*! \file tptp_printer.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof.cpp b/src/proof/arith_proof.cpp
index 0d2bb5be0..8b55c29db 100644
--- a/src/proof/arith_proof.cpp
+++ b/src/proof/arith_proof.cpp
@@ -2,9 +2,9 @@
/*! \file arith_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Guy Katz, Tim King, Andrew Reynolds
+ ** Alex Ozdemir, Guy Katz, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof.h b/src/proof/arith_proof.h
index 640d2db8d..a93bf4c57 100644
--- a/src/proof/arith_proof.h
+++ b/src/proof/arith_proof.h
@@ -2,9 +2,9 @@
/*! \file arith_proof.h
** \verbatim
** Top contributors (to current version):
- ** Guy Katz, Mathias Preiner, Tim King
+ ** Alex Ozdemir, Guy Katz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof_recorder.cpp b/src/proof/arith_proof_recorder.cpp
index 097fdb51e..c240f9582 100644
--- a/src/proof/arith_proof_recorder.cpp
+++ b/src/proof/arith_proof_recorder.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof_recorder.h b/src/proof/arith_proof_recorder.h
index 2d0501332..fe7bffbd0 100644
--- a/src/proof/arith_proof_recorder.h
+++ b/src/proof/arith_proof_recorder.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/array_proof.cpp b/src/proof/array_proof.cpp
index c22f36413..131fcd3b6 100644
--- a/src/proof/array_proof.cpp
+++ b/src/proof/array_proof.cpp
@@ -2,9 +2,9 @@
/*! \file array_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Guy Katz, Yoni Zohar, Tim King
+ ** Guy Katz, Yoni Zohar, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/array_proof.h b/src/proof/array_proof.h
index 53b825522..7e3340af0 100644
--- a/src/proof/array_proof.h
+++ b/src/proof/array_proof.h
@@ -2,9 +2,9 @@
/*! \file array_proof.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Guy Katz, Tim King
+ ** Tim King, Mathias Preiner, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/bitvector_proof.cpp b/src/proof/bitvector_proof.cpp
index 90c0c9b30..18e46a292 100644
--- a/src/proof/bitvector_proof.cpp
+++ b/src/proof/bitvector_proof.cpp
@@ -2,9 +2,9 @@
/*! \file bitvector_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Guy Katz, Paul Meng
+ ** Liana Hadarean, Guy Katz, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -221,6 +221,14 @@ void BitVectorProof::printOwnedTerm(Expr term,
}
}
+void BitVectorProof::printEmptyClauseProof(std::ostream& os,
+ std::ostream& paren)
+{
+ Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER,
+ "the BV theory should only be proving bottom directly in the eager "
+ "bitblasting mode");
+}
+
void BitVectorProof::printBitOf(Expr term,
std::ostream& os,
const ProofLetMap& map)
diff --git a/src/proof/bitvector_proof.h b/src/proof/bitvector_proof.h
index 4b897a6c6..91c07fcb5 100644
--- a/src/proof/bitvector_proof.h
+++ b/src/proof/bitvector_proof.h
@@ -2,9 +2,9 @@
/*! \file bitvector_proof.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner, Guy Katz
+ ** Alex Ozdemir, Mathias Preiner, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -167,7 +167,7 @@ class BitVectorProof : public TheoryProof
* @param os the stream to print to
* @param paren any parentheses to add to the end of the global proof
*/
- virtual void printEmptyClauseProof(std::ostream& os, std::ostream& paren) = 0;
+ virtual void printEmptyClauseProof(std::ostream& os, std::ostream& paren);
/**
* Read the d_atomsInBitblastingProof member.
diff --git a/src/proof/clausal_bitvector_proof.cpp b/src/proof/clausal_bitvector_proof.cpp
index bb875d1d8..eed295b1a 100644
--- a/src/proof/clausal_bitvector_proof.cpp
+++ b/src/proof/clausal_bitvector_proof.cpp
@@ -19,10 +19,13 @@
#include <algorithm>
#include <iterator>
#include <set>
+
#include "options/bv_options.h"
#include "proof/clausal_bitvector_proof.h"
#include "proof/drat/drat_proof.h"
+#include "proof/er/er_proof.h"
#include "proof/lfsc_proof_printer.h"
+#include "proof/lrat/lrat_proof.h"
#include "theory/bv/theory_bv.h"
namespace CVC4 {
@@ -66,12 +69,12 @@ void ClausalBitVectorProof::initCnfProof(prop::CnfStream* cnfStream,
void ClausalBitVectorProof::registerUsedClause(ClauseId id,
prop::SatClause& clause)
{
- d_usedClauses.emplace_back(
- id, std::unique_ptr<prop::SatClause>(new prop::SatClause(clause)));
+ d_usedClauses.emplace_back(id, clause);
};
void ClausalBitVectorProof::calculateAtomsInBitblastingProof()
{
+ // Debug dump of DRAT Proof
if (Debug.isOn("bv::clausal"))
{
std::string serializedDratProof = d_binaryDratProof.str();
@@ -84,7 +87,16 @@ void ClausalBitVectorProof::calculateAtomsInBitblastingProof()
Debug("bv::clausal") << "Printing DRAT proof ... " << std::endl;
dratProof.outputAsText(Debug("bv::clausal"));
}
- Unimplemented();
+
+ // Empty any old record of which atoms were used
+ d_atomsInBitblastingProof.clear();
+
+ // For each used clause, ask the CNF proof which atoms are used in it
+ for (const auto& usedIndexAndClause : d_usedClauses)
+ {
+ d_cnfProof->collectAtoms(&usedIndexAndClause.second,
+ d_atomsInBitblastingProof);
+ }
}
void LfscClausalBitVectorProof::printTheoryLemmaProof(std::vector<Expr>& lemma,
@@ -101,13 +113,91 @@ void LfscClausalBitVectorProof::printBBDeclarationAndCnf(std::ostream& os,
std::ostream& paren,
ProofLetMap& letMap)
{
- Unimplemented();
+ os << "\n;; Bitblasting mappings\n";
+ printBitblasting(os, paren);
+
+ os << "\n;; BB-CNF mappings\n";
+ d_cnfProof->printAtomMapping(d_atomsInBitblastingProof, os, paren, letMap);
+
+ os << "\n;; BB-CNF proofs\n";
+ for (const auto& idAndClause : d_usedClauses)
+ {
+ d_cnfProof->printCnfProofForClause(
+ idAndClause.first, &idAndClause.second, os, paren);
+ }
}
-void LfscClausalBitVectorProof::printEmptyClauseProof(std::ostream& os,
- std::ostream& paren)
+void LfscDratBitVectorProof::printEmptyClauseProof(std::ostream& os,
+ std::ostream& paren)
{
- Unimplemented();
+ Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER,
+ "the BV theory should only be proving bottom directly in the eager "
+ "bitblasting mode");
+
+ os << "\n;; Proof of input to SAT solver\n";
+ os << "(@ proofOfSatInput ";
+ paren << ")";
+ std::vector<ClauseId> usedIds;
+ usedIds.reserve(d_usedClauses.size());
+ for (const auto& idAnd : d_usedClauses)
+ {
+ usedIds.push_back(idAnd.first);
+ };
+ LFSCProofPrinter::printSatInputProof(usedIds, os, "bb");
+
+ os << "\n;; DRAT Proof Value\n";
+ os << "(@ dratProof ";
+ paren << ")";
+ drat::DratProof::fromBinary(d_binaryDratProof.str()).outputAsLfsc(os, 2);
+ os << "\n";
+
+ os << "\n;; Verification of DRAT Proof\n";
+ os << "(drat_proof_of_bottom _ proofOfSatInput dratProof "
+ << "\n)";
+}
+
+void LfscLratBitVectorProof::printEmptyClauseProof(std::ostream& os,
+ std::ostream& paren)
+{
+ Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER,
+ "the BV theory should only be proving bottom directly in the eager "
+ "bitblasting mode");
+
+ os << "\n;; Proof of input to SAT solver\n";
+ os << "(@ proofOfCMap ";
+ paren << ")";
+ std::vector<ClauseId> usedIds;
+ usedIds.reserve(d_usedClauses.size());
+ for (const auto& idAnd : d_usedClauses)
+ {
+ usedIds.push_back(idAnd.first);
+ };
+ LFSCProofPrinter::printCMapProof(usedIds, os, "bb");
+
+ os << "\n;; DRAT Proof Value\n";
+ os << "(@ lratProof ";
+ paren << ")";
+ lrat::LratProof pf =
+ lrat::LratProof::fromDratProof(d_usedClauses, d_binaryDratProof.str());
+ pf.outputAsLfsc(os);
+ os << "\n";
+
+ os << "\n;; Verification of DRAT Proof\n";
+ os << "(lrat_proof_of_bottom _ proofOfCMap lratProof "
+ << "\n)";
+}
+
+void LfscErBitVectorProof::printEmptyClauseProof(std::ostream& os,
+ std::ostream& paren)
+{
+ Assert(options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER,
+ "the BV theory should only be proving bottom directly in the eager "
+ "bitblasting mode");
+
+ er::ErProof pf =
+ er::ErProof::fromBinaryDratProof(d_usedClauses, d_binaryDratProof.str());
+
+ pf.outputAsLfsc(os);
}
} // namespace proof
diff --git a/src/proof/clausal_bitvector_proof.h b/src/proof/clausal_bitvector_proof.h
index 85e409e0d..b53bcd5e2 100644
--- a/src/proof/clausal_bitvector_proof.h
+++ b/src/proof/clausal_bitvector_proof.h
@@ -2,7 +2,7 @@
/*! \file clausal_bitvector_proof.h
** \verbatim
** Top contributors (to current version):
- ** Alex Ozdemir
+ ** Alex Ozdemir, Mathias Preiner
** This file is part of the CVC4 project.
** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
@@ -61,8 +61,7 @@ class ClausalBitVectorProof : public BitVectorProof
protected:
// A list of all clauses and their ids which are passed into the SAT solver
- std::vector<std::pair<ClauseId, std::unique_ptr<prop::SatClause>>>
- d_usedClauses;
+ std::vector<std::pair<ClauseId, prop::SatClause>> d_usedClauses;
// Stores the proof recieved from the SAT solver.
std::ostringstream d_binaryDratProof;
};
@@ -77,7 +76,6 @@ class LfscClausalBitVectorProof : public ClausalBitVectorProof
TheoryProofEngine* proofEngine)
: ClausalBitVectorProof(bv, proofEngine)
{
- // That's all!
}
void printTheoryLemmaProof(std::vector<Expr>& lemma,
@@ -87,6 +85,49 @@ class LfscClausalBitVectorProof : public ClausalBitVectorProof
void printBBDeclarationAndCnf(std::ostream& os,
std::ostream& paren,
ProofLetMap& letMap) override;
+};
+
+/**
+ * A DRAT proof for a bit-vector problem
+ */
+class LfscDratBitVectorProof : public LfscClausalBitVectorProof
+{
+ public:
+ LfscDratBitVectorProof(theory::bv::TheoryBV* bv,
+ TheoryProofEngine* proofEngine)
+ : LfscClausalBitVectorProof(bv, proofEngine)
+ {
+ }
+
+ void printEmptyClauseProof(std::ostream& os, std::ostream& paren) override;
+};
+
+/**
+ * An LRAT proof for a bit-vector problem
+ */
+class LfscLratBitVectorProof : public LfscClausalBitVectorProof
+{
+ public:
+ LfscLratBitVectorProof(theory::bv::TheoryBV* bv,
+ TheoryProofEngine* proofEngine)
+ : LfscClausalBitVectorProof(bv, proofEngine)
+ {
+ }
+
+ void printEmptyClauseProof(std::ostream& os, std::ostream& paren) override;
+};
+
+/**
+ * An Extended Resolution proof for a bit-vector problem
+ */
+class LfscErBitVectorProof : public LfscClausalBitVectorProof
+{
+ public:
+ LfscErBitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proofEngine)
+ : LfscClausalBitVectorProof(bv, proofEngine)
+ {
+ }
+
void printEmptyClauseProof(std::ostream& os, std::ostream& paren) override;
};
diff --git a/src/proof/clause_id.h b/src/proof/clause_id.h
index 384bc560c..e8b9841c8 100644
--- a/src/proof/clause_id.h
+++ b/src/proof/clause_id.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/cnf_proof.cpp b/src/proof/cnf_proof.cpp
index 4e8d20162..9c263e08f 100644
--- a/src/proof/cnf_proof.cpp
+++ b/src/proof/cnf_proof.cpp
@@ -2,9 +2,9 @@
/*! \file cnf_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Andrew Reynolds, Guy Katz
+ ** Liana Hadarean, Andrew Reynolds, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -349,6 +349,39 @@ void CnfProof::collectAssertionsForClauses(const IdToSatClause& clauses,
}
}
+// Detects whether a clause has x v ~x for some x
+// If so, returns the positive occurence's idx first, then the negative's
+Maybe<std::pair<size_t, size_t>> CnfProof::detectTrivialTautology(
+ const prop::SatClause& clause)
+{
+ // a map from a SatVariable to its previous occurence's polarity and location
+ std::map<prop::SatVariable, std::pair<bool, size_t>> varsToPolsAndIndices;
+ for (size_t i = 0; i < clause.size(); ++i)
+ {
+ prop::SatLiteral lit = clause[i];
+ prop::SatVariable var = lit.getSatVariable();
+ bool polarity = !lit.isNegated();
+
+ // Check if this var has already occured w/ opposite polarity
+ auto iter = varsToPolsAndIndices.find(var);
+ if (iter != varsToPolsAndIndices.end() && iter->second.first != polarity)
+ {
+ if (iter->second.first)
+ {
+ return Maybe<std::pair<size_t, size_t>>{
+ std::make_pair(iter->second.second, i)};
+ }
+ else
+ {
+ return Maybe<std::pair<size_t, size_t>>{
+ std::make_pair(i, iter->second.second)};
+ }
+ }
+ varsToPolsAndIndices[var] = std::make_pair(polarity, i);
+ }
+ return Maybe<std::pair<size_t, size_t>>{};
+}
+
void LFSCCnfProof::printAtomMapping(const std::set<Node>& atoms,
std::ostream& os,
std::ostream& paren) {
@@ -431,61 +464,98 @@ void LFSCCnfProof::printCnfProofForClause(ClauseId id,
Assert( clause->size()>0 );
- Node base_assertion = getDefinitionForClause(id);
-
- //get the assertion for the clause id
- std::map<Node, unsigned > childIndex;
- std::map<Node, bool > childPol;
- Node assertion = clauseToNode( *clause, childIndex, childPol );
- //if there is no reason, construct assertion directly. This can happen for unit clauses.
- if( base_assertion.isNull() ){
- base_assertion = assertion;
+ // If the clause contains x v ~x, it's easy!
+ //
+ // It's important to check for this case, because our other logic for
+ // recording the location of variables in the clause assumes the clause is
+ // not tautological
+ Maybe<std::pair<size_t, size_t>> isTrivialTaut =
+ detectTrivialTautology(*clause);
+ if (isTrivialTaut.just())
+ {
+ size_t posIndexInClause = isTrivialTaut.value().first;
+ size_t negIndexInClause = isTrivialTaut.value().second;
+ Trace("cnf-pf") << "; Indices " << posIndexInClause << " (+) and "
+ << negIndexInClause << " (-) make this clause a tautology"
+ << std::endl;
+
+ std::string proofOfPos =
+ ProofManager::getLitName((*clause)[negIndexInClause], d_name);
+ std::string proofOfNeg =
+ ProofManager::getLitName((*clause)[posIndexInClause], d_name);
+ os << "(contra _ " << proofOfPos << " " << proofOfNeg << ")";
}
- //os_base is proof of base_assertion
- std::stringstream os_base;
-
- // checks if tautological definitional clause or top-level clause
- // and prints the proof of the top-level formula
- bool is_input = printProofTopLevel(base_assertion, os_base);
+ else
+ {
+ Node base_assertion = getDefinitionForClause(id);
+
+ // get the assertion for the clause id
+ std::map<Node, unsigned> childIndex;
+ std::map<Node, bool> childPol;
+ Node assertion = clauseToNode(*clause, childIndex, childPol);
+ // if there is no reason, construct assertion directly. This can happen
+ // for unit clauses.
+ if (base_assertion.isNull())
+ {
+ base_assertion = assertion;
+ }
+ // os_base is proof of base_assertion
+ std::stringstream os_base;
+
+ // checks if tautological definitional clause or top-level clause
+ // and prints the proof of the top-level formula
+ bool is_input = printProofTopLevel(base_assertion, os_base);
+
+ if (is_input)
+ {
+ Debug("cnf-pf") << std::endl
+ << "; base assertion is input. proof: " << os_base.str()
+ << std::endl;
+ }
- if (is_input) {
- Debug("cnf-pf") << std::endl << "; base assertion is input. proof: " << os_base.str() << std::endl;
- }
+ // get base assertion with polarity
+ bool base_pol = base_assertion.getKind() != kind::NOT;
+ base_assertion = base_assertion.getKind() == kind::NOT ? base_assertion[0]
+ : base_assertion;
- //get base assertion with polarity
- bool base_pol = base_assertion.getKind()!=kind::NOT;
- base_assertion = base_assertion.getKind()==kind::NOT ? base_assertion[0] : base_assertion;
-
- std::map< Node, unsigned >::iterator itci = childIndex.find( base_assertion );
- bool is_in_clause = itci!=childIndex.end();
- unsigned base_index = is_in_clause ? itci->second : 0;
- Trace("cnf-pf") << std::endl;
- Trace("cnf-pf") << "; input = " << is_input << ", is_in_clause = " << is_in_clause << ", id = " << id << ", assertion = " << assertion << ", base assertion = " << base_assertion << std::endl;
- if (!is_input){
- Assert(is_in_clause);
- prop::SatLiteral blit = (*clause)[ base_index ];
- os_base << ProofManager::getLitName(blit, d_name);
- base_pol = !childPol[base_assertion]; // WHY? if the case is =>
- }
- Trace("cnf-pf") << "; polarity of base assertion = " << base_pol << std::endl;
- Trace("cnf-pf") << "; proof of base : " << os_base.str() << std::endl;
-
- bool success = false;
- if( is_input &&
- is_in_clause &&
- childPol[base_assertion]==base_pol ){
- //if both in input and in clause, the proof is trivial. this is the case for unit clauses.
- Trace("cnf-pf") << "; trivial" << std::endl;
- os << "(contra _ ";
- success = true;
- prop::SatLiteral lit = (*clause)[itci->second];
- if( base_pol ){
- os << os_base.str() << " " << ProofManager::getLitName(lit, d_name);
- }else{
- os << ProofManager::getLitName(lit, d_name) << " " << os_base.str();
+ std::map<Node, unsigned>::iterator itci = childIndex.find(base_assertion);
+ bool is_in_clause = itci != childIndex.end();
+ unsigned base_index = is_in_clause ? itci->second : 0;
+ Trace("cnf-pf") << std::endl;
+ Trace("cnf-pf") << "; input = " << is_input
+ << ", is_in_clause = " << is_in_clause << ", id = " << id
+ << ", assertion = " << assertion
+ << ", base assertion = " << base_assertion << std::endl;
+ if (!is_input)
+ {
+ Assert(is_in_clause);
+ prop::SatLiteral blit = (*clause)[base_index];
+ os_base << ProofManager::getLitName(blit, d_name);
+ base_pol = !childPol[base_assertion]; // WHY? if the case is =>
}
- os << ")";
- } else if ((base_assertion.getKind()==kind::AND && !base_pol) ||
+ Trace("cnf-pf") << "; polarity of base assertion = " << base_pol
+ << std::endl;
+ Trace("cnf-pf") << "; proof of base : " << os_base.str() << std::endl;
+
+ bool success = false;
+ if (is_input && is_in_clause && childPol[base_assertion] == base_pol)
+ {
+ // if both in input and in clause, the proof is trivial. this is the case
+ // for unit clauses.
+ Trace("cnf-pf") << "; trivial" << std::endl;
+ os << "(contra _ ";
+ success = true;
+ prop::SatLiteral lit = (*clause)[itci->second];
+ if (base_pol)
+ {
+ os << os_base.str() << " " << ProofManager::getLitName(lit, d_name);
+ }
+ else
+ {
+ os << ProofManager::getLitName(lit, d_name) << " " << os_base.str();
+ }
+ os << ")";
+ } else if ((base_assertion.getKind()==kind::AND && !base_pol) ||
((base_assertion.getKind()==kind::OR ||
base_assertion.getKind()==kind::IMPLIES) && base_pol)) {
Trace("cnf-pf") << "; and/or case 1" << std::endl;
@@ -776,6 +846,7 @@ void LFSCCnfProof::printCnfProofForClause(ClauseId id,
Trace("cnf-pf") << std::endl;
os << "trust-bad";
}
+ }
os << ")" << clause_paren.str()
<< " (\\ " << ProofManager::getInputClauseName(id, d_name) << "\n";
diff --git a/src/proof/cnf_proof.h b/src/proof/cnf_proof.h
index 78ddeebd0..a17777c66 100644
--- a/src/proof/cnf_proof.h
+++ b/src/proof/cnf_proof.h
@@ -2,9 +2,9 @@
/*! \file cnf_proof.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Guy Katz, Tim King
+ ** Liana Hadarean, Guy Katz, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -29,6 +29,7 @@
#include "proof/clause_id.h"
#include "proof/lemma_proof.h"
#include "proof/sat_proof.h"
+#include "util/maybe.h"
#include "util/proof.h"
namespace CVC4 {
@@ -164,6 +165,10 @@ public:
std::ostream& paren,
ProofLetMap &letMap) = 0;
+ // Detects whether a clause has x v ~x for some x
+ // If so, returns the positive occurence's idx first, then the negative's
+ static Maybe<std::pair<size_t, size_t>> detectTrivialTautology(
+ const prop::SatClause& clause);
virtual void printClause(const prop::SatClause& clause,
std::ostream& os,
std::ostream& paren) = 0;
diff --git a/src/proof/dimacs_printer.cpp b/src/proof/dimacs_printer.cpp
index 48199066e..04f880e11 100644
--- a/src/proof/dimacs_printer.cpp
+++ b/src/proof/dimacs_printer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/dimacs_printer.h b/src/proof/dimacs_printer.h
index d11adea3f..f46cb51ec 100644
--- a/src/proof/dimacs_printer.h
+++ b/src/proof/dimacs_printer.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/drat/drat_proof.cpp b/src/proof/drat/drat_proof.cpp
index c2f2fa49e..5a01ffdfd 100644
--- a/src/proof/drat/drat_proof.cpp
+++ b/src/proof/drat/drat_proof.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -259,12 +259,12 @@ void DratProof::outputAsLfsc(std::ostream& os, uint8_t indentation) const
{
case ADDITION:
{
- os << "DRATProofa";
+ os << "DRATProofa ";
break;
}
case DELETION:
{
- os << "DRATProofd";
+ os << "DRATProofd ";
break;
}
default: { Unreachable("Unrecognized DRAT instruction kind");
@@ -273,7 +273,7 @@ void DratProof::outputAsLfsc(std::ostream& os, uint8_t indentation) const
for (const SatLiteral& l : i.d_clause)
{
os << "(clc (" << (l.isNegated() ? "neg " : "pos ")
- << ProofManager::getVarName(l.getSatVariable()) << ") ";
+ << ProofManager::getVarName(l.getSatVariable(), "bb") << ") ";
}
os << "cln";
std::fill_n(std::ostream_iterator<char>(os), i.d_clause.size(), ')');
diff --git a/src/proof/drat/drat_proof.h b/src/proof/drat/drat_proof.h
index 4715b38f4..c4b7c2e02 100644
--- a/src/proof/drat/drat_proof.h
+++ b/src/proof/drat/drat_proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/er/er_proof.cpp b/src/proof/er/er_proof.cpp
new file mode 100644
index 000000000..22903c3c9
--- /dev/null
+++ b/src/proof/er/er_proof.cpp
@@ -0,0 +1,391 @@
+/********************* */
+/*! \file er_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Alex Ozdemir
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief ER Proof Format
+ **
+ ** Declares C++ types that represent an ER/TRACECHECK proof.
+ ** Defines serialization for these types.
+ **
+ ** You can find details about the way ER is encoded in the TRACECHECK
+ ** format at these locations:
+ ** https://github.com/benjaminkiesl/drat2er
+ ** http://www.cs.utexas.edu/users/marijn/publications/ijcar18.pdf
+ **/
+
+#include "proof/er/er_proof.h"
+
+#include <unistd.h>
+#include <algorithm>
+#include <fstream>
+#include <iostream>
+#include <iterator>
+#include <unordered_set>
+
+#include "base/cvc4_assert.h"
+#include "base/map_util.h"
+#include "proof/dimacs_printer.h"
+#include "proof/lfsc_proof_printer.h"
+#include "proof/proof_manager.h"
+
+#if CVC4_USE_DRAT2ER
+#include "drat2er.h"
+#include "drat2er_options.h"
+#endif
+
+namespace CVC4 {
+namespace proof {
+namespace er {
+
+TraceCheckProof TraceCheckProof::fromText(std::istream& in)
+{
+ TraceCheckProof pf;
+ TraceCheckIdx idx = 0;
+ int64_t token = 0;
+
+ // For each line of the proof, start with the idx
+ // If there is no idx, then you're done!
+ in >> idx;
+ for (; !in.eof(); in >> idx)
+ {
+ Assert(in.good());
+
+ // Then parse the clause (it's 0-terminated)
+ std::vector<prop::SatLiteral> clause;
+ in >> token;
+ for (; token != 0; in >> token)
+ {
+ clause.emplace_back(std::abs(token) - 1, token < 0);
+ }
+
+ // Then parse the chain of literals (it's also 0-terminated)
+ std::vector<TraceCheckIdx> chain;
+ in >> token;
+ for (; token != 0; in >> token)
+ {
+ Assert(token > 0);
+ chain.push_back(token);
+ }
+
+ // Add the line to the proof
+ pf.d_lines.emplace_back(idx, std::move(clause), std::move(chain));
+ }
+ return pf;
+}
+
+ErProof ErProof::fromBinaryDratProof(const ClauseUseRecord& usedClauses,
+ const std::string& dratBinary)
+{
+ std::ostringstream cmd;
+ char formulaFilename[] = "/tmp/cvc4-dimacs-XXXXXX";
+ char dratFilename[] = "/tmp/cvc4-drat-XXXXXX";
+ char tracecheckFilename[] = "/tmp/cvc4-tracecheck-er-XXXXXX";
+
+ int r;
+ r = mkstemp(formulaFilename);
+ AlwaysAssert(r > 0);
+ close(r);
+ r = mkstemp(dratFilename);
+ AlwaysAssert(r > 0);
+ close(r);
+ r = mkstemp(tracecheckFilename);
+ AlwaysAssert(r > 0);
+ close(r);
+
+ // Write the formula
+ std::ofstream formStream(formulaFilename);
+ printDimacs(formStream, usedClauses);
+ formStream.close();
+
+ // Write the (binary) DRAT proof
+ std::ofstream dratStream(dratFilename);
+ dratStream << dratBinary;
+ dratStream.close();
+
+ // Invoke drat2er
+#if CVC4_USE_DRAT2ER
+ drat2er::TransformDRATToExtendedResolution(formulaFilename,
+ dratFilename,
+ tracecheckFilename,
+ false,
+ drat2er::options::QUIET,
+ false);
+
+#else
+ Unimplemented(
+ "ER proof production requires drat2er.\n"
+ "Run contrib/get-drat2er, reconfigure with --drat2er, and rebuild");
+#endif
+
+ // Parse the resulting TRACECHECK proof into an ER proof.
+ std::ifstream tracecheckStream(tracecheckFilename);
+ ErProof proof(usedClauses, TraceCheckProof::fromText(tracecheckStream));
+ tracecheckStream.close();
+
+ remove(formulaFilename);
+ remove(dratFilename);
+ remove(tracecheckFilename);
+
+ return proof;
+}
+
+ErProof::ErProof(const ClauseUseRecord& usedClauses,
+ TraceCheckProof&& tracecheck)
+ : d_inputClauseIds(), d_definitions(), d_tracecheck(tracecheck)
+{
+ // Step zero, save input clause Ids for future printing
+ std::transform(usedClauses.begin(),
+ usedClauses.end(),
+ std::back_inserter(d_inputClauseIds),
+ [](const std::pair<ClauseId, prop::SatClause>& pair) {
+ return pair.first;
+ });
+
+ // Step one, verify the formula starts the proof
+ if (Configuration::isAssertionBuild())
+ {
+ for (size_t i = 0, n = usedClauses.size(); i < n; ++i)
+ {
+ Assert(d_tracecheck.d_lines[i].d_idx = i + 1);
+ Assert(d_tracecheck.d_lines[i].d_chain.size() == 0);
+ std::unordered_set<prop::SatLiteral, prop::SatLiteralHashFunction>
+ traceCheckClause{d_tracecheck.d_lines[i].d_clause.begin(),
+ d_tracecheck.d_lines[i].d_clause.end()};
+ std::unordered_set<prop::SatLiteral, prop::SatLiteralHashFunction>
+ originalClause{usedClauses[i].second.begin(),
+ usedClauses[i].second.end()};
+ Assert(traceCheckClause == originalClause);
+ Assert(d_tracecheck.d_lines[i].d_idx = i + 1);
+ Assert(d_tracecheck.d_lines[i].d_chain.size() == 0);
+ Assert(d_tracecheck.d_lines[i].d_clause.size()
+ == usedClauses[i].second.size());
+ for (size_t j = 0, m = usedClauses[i].second.size(); j < m; ++j)
+ {
+ Assert(usedClauses[i].second[j] == d_tracecheck.d_lines[i].d_clause[j]);
+ }
+ }
+ }
+
+ // Step two, identify definitions. They correspond to lines that follow the
+ // input lines, are in bounds, and have no justifying chain.
+ for (size_t i = usedClauses.size(), n = d_tracecheck.d_lines.size();
+ i < n && d_tracecheck.d_lines[i].d_chain.size() == 0;)
+ {
+ prop::SatClause c = d_tracecheck.d_lines[i].d_clause;
+ Assert(c.size() > 0);
+ Assert(!c[0].isNegated());
+
+ // Get the new variable of the definition -- the first variable of the
+ // first clause
+ prop::SatVariable newVar = c[0].getSatVariable();
+
+ // The rest of the literals in the clause of the 'other literals' of the def
+ std::vector<prop::SatLiteral> otherLiterals{++c.begin(), c.end()};
+
+ size_t nLinesForThisDef = 2 + otherLiterals.size();
+ // Look at the negation of the second literal in the second clause to get
+ // the old literal
+ AlwaysAssert(d_tracecheck.d_lines.size() > i + 1,
+ "Malformed definition in TRACECHECK proof from drat2er");
+ d_definitions.emplace_back(newVar,
+ ~d_tracecheck.d_lines[i + 1].d_clause[1],
+ std::move(otherLiterals));
+
+ // Advance over the lines for this definition
+ i += nLinesForThisDef;
+ }
+}
+
+void ErProof::outputAsLfsc(std::ostream& os) const
+{
+ // How many parens to close?
+ size_t parenCount = 0;
+ std::unordered_set<prop::SatVariable> newVariables;
+
+ // Print Definitions
+ for (const ErDefinition& def : d_definitions)
+ {
+ os << "\n (decl_rat_elimination_def ("
+ << (def.d_oldLiteral.isNegated() ? "neg " : "pos ")
+ << ProofManager::getVarName(def.d_oldLiteral.getSatVariable(), "bb")
+ << ") ";
+ LFSCProofPrinter::printSatClause(def.d_otherLiterals, os, "bb");
+ os << " (\\ er.v" << def.d_newVariable << " (\\ er.def"
+ << def.d_newVariable;
+ newVariables.insert(def.d_newVariable);
+ }
+ parenCount += 3 * d_definitions.size();
+
+ // Clausify Definitions
+ TraceCheckIdx firstDefClause = d_inputClauseIds.size() + 1;
+ for (const ErDefinition& def : d_definitions)
+ {
+ os << "\n (clausify_rat_elimination_def _ _ _ "
+ << "er.def " << def.d_newVariable << " _ _ (\\ er.c" << firstDefClause
+ << " (\\ er.c" << (firstDefClause + 1) << " (\\ er.cnf"
+ << def.d_newVariable;
+
+ firstDefClause += 2 + def.d_otherLiterals.size();
+ }
+ parenCount += 4 * d_definitions.size();
+
+ // Unroll proofs of CNFs to proofs of clauses
+ firstDefClause = d_inputClauseIds.size() + 1;
+ for (const ErDefinition& def : d_definitions)
+ {
+ for (size_t i = 0, n = def.d_otherLiterals.size(); i < n; ++i)
+ {
+ os << "\n (cnfc_unroll _ _ ";
+ os << "er.cnf" << def.d_newVariable;
+ if (i != 0)
+ {
+ os << ".u" << i;
+ }
+ os << " (\\ er.c" << (firstDefClause + 2 + i);
+ os << " (\\ er.cnf" << def.d_newVariable << ".u" << (i + 1);
+ }
+ parenCount += 3 * def.d_otherLiterals.size();
+
+ firstDefClause += 2 + def.d_otherLiterals.size();
+ }
+
+ // NB: At this point `firstDefClause` points to the first clause resulting
+ // from a resolution chain
+
+ // Now, elaborate each resolution chain
+ for (size_t cId = firstDefClause, nLines = d_tracecheck.d_lines.size();
+ cId <= nLines;
+ ++cId)
+ {
+ const std::vector<TraceCheckIdx>& chain =
+ d_tracecheck.d_lines[cId - 1].d_chain;
+ const std::vector<prop::SatLiteral> pivots = computePivotsForChain(chain);
+ Assert(chain.size() > 0);
+ Assert(chain.size() == pivots.size() + 1);
+
+ os << "\n (satlem_simplify _ _ _ ";
+ parenCount += 1;
+
+ // Print resolution openings (reverse order)
+ for (int64_t i = pivots.size() - 1; i >= 0; --i)
+ {
+ prop::SatLiteral pivot = pivots[i];
+ os << "(" << (pivot.isNegated() ? 'Q' : 'R') << " _ _ ";
+ }
+
+ // Print resolution start
+ writeIdForClauseProof(os, chain[0]);
+ os << " ";
+
+ // Print resolution closings (forward order)
+ for (size_t i = 0, n = pivots.size(); i < n; ++i)
+ {
+ prop::SatVariable pivotVar = pivots[i].getSatVariable();
+ TraceCheckIdx clauseId = chain[i + 1];
+ writeIdForClauseProof(os, clauseId);
+ os << " ";
+ if (ContainsKey(newVariables, pivotVar))
+ {
+ // This is a defined variable
+ os << "er.v" << pivotVar;
+ }
+ else
+ {
+ os << ProofManager::getVarName(pivotVar, "bb");
+ }
+ os << ") ";
+ }
+ os << "(\\ er.c" << cId;
+ parenCount += 1;
+ }
+
+ // Write proof of bottom
+ Assert(d_tracecheck.d_lines.back().d_clause.size() == 0,
+ "The TRACECHECK proof from drat2er did not prove bottom.");
+ os << "\n er.c" << d_tracecheck.d_lines.back().d_idx
+ << " ; (holds cln)\n";
+
+ // Finally, close the parentheses!
+ std::fill_n(std::ostream_iterator<char>(os), parenCount, ')');
+}
+
+namespace {
+/**
+ * Resolves two clauses
+ *
+ * @param dest one of the inputs, and the output too. **This is an input and
+ * output**
+ * @param src the other input
+ *
+ * @return the unique literal that was resolved on, with the polarization that
+ * it originally had in `dest`.
+ *
+ * For example, if dest = (1 3 -4 5) and src = (1 -3 5), then 3 is returned and
+ * after the call dest = (1 -4 5).
+ */
+prop::SatLiteral resolveModify(
+ std::unordered_set<prop::SatLiteral, prop::SatLiteralHashFunction>& dest,
+ const prop::SatClause& src)
+{
+ bool foundPivot = false;
+ prop::SatLiteral pivot(0, false);
+
+ for (prop::SatLiteral lit : src)
+ {
+ auto negationLocation = dest.find(~lit);
+ if (negationLocation != dest.end())
+ {
+ Assert(!foundPivot);
+ foundPivot = true;
+ dest.erase(negationLocation);
+ pivot = ~lit;
+ }
+ dest.insert(lit);
+ }
+
+ Assert(foundPivot);
+ return pivot;
+}
+} // namespace
+
+std::vector<prop::SatLiteral> ErProof::computePivotsForChain(
+ const std::vector<TraceCheckIdx>& chain) const
+{
+ std::vector<prop::SatLiteral> pivots;
+
+ const prop::SatClause& first = d_tracecheck.d_lines[chain[0] - 1].d_clause;
+ std::unordered_set<prop::SatLiteral, prop::SatLiteralHashFunction>
+ runningClause{first.begin(), first.end()};
+
+ for (auto idx = ++chain.cbegin(), end = chain.cend(); idx != end; ++idx)
+ {
+ pivots.push_back(
+ resolveModify(runningClause, d_tracecheck.d_lines[*idx - 1].d_clause));
+ }
+ return pivots;
+}
+
+void ErProof::writeIdForClauseProof(std::ostream& o, TraceCheckIdx i) const
+{
+ if (i <= d_inputClauseIds.size())
+ {
+ // This clause is an input clause! Ask the ProofManager for its name
+ o << ProofManager::getInputClauseName(d_inputClauseIds[i - 1], "bb");
+ }
+ else
+ {
+ // This clause was introduced by a definition or resolution chain
+ o << "er.c" << i;
+ }
+}
+
+} // namespace er
+} // namespace proof
+} // namespace CVC4
diff --git a/src/proof/er/er_proof.h b/src/proof/er/er_proof.h
new file mode 100644
index 000000000..0a0038738
--- /dev/null
+++ b/src/proof/er/er_proof.h
@@ -0,0 +1,208 @@
+/********************* */
+/*! \file er_proof.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Alex Ozdemir
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief ER Proof Format
+ **
+ ** Declares C++ types that represent an ER/TRACECHECK proof.
+ ** Defines serialization for these types.
+ **
+ ** You can find details about the way ER is encoded in the TRACECHECK
+ ** format at these locations:
+ ** https://github.com/benjaminkiesl/drat2er
+ ** http://www.cs.utexas.edu/users/marijn/publications/ijcar18.pdf
+ **
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__PROOF__ER__ER_PROOF_H
+#define __CVC4__PROOF__ER__ER_PROOF_H
+
+#include <memory>
+#include <vector>
+
+#include "proof/clause_id.h"
+#include "prop/sat_solver_types.h"
+
+namespace CVC4 {
+namespace proof {
+namespace er {
+
+using ClauseUseRecord = std::vector<std::pair<ClauseId, prop::SatClause>>;
+
+/**
+ * A definition of the form:
+ * newVar <-> p v (~x_1 ^ ~x_2 ^ ... ^ ~x_n)
+ */
+struct ErDefinition
+{
+ ErDefinition(prop::SatVariable newVariable,
+ prop::SatLiteral oldLiteral,
+ std::vector<prop::SatLiteral>&& otherLiterals)
+ : d_newVariable(newVariable),
+ d_oldLiteral(oldLiteral),
+ d_otherLiterals(otherLiterals)
+ {
+ }
+
+ // newVar
+ prop::SatVariable d_newVariable;
+ // p
+ prop::SatLiteral d_oldLiteral;
+ // A list of the x_i's
+ std::vector<prop::SatLiteral> d_otherLiterals;
+};
+
+// For representing a clause's index within a TRACECHECK proof.
+using TraceCheckIdx = size_t;
+
+/**
+ * A single line in a TRACECHECK proof.
+ *
+ * Consists of the index of a new clause, the literals of that clause, and the
+ * indices for preceding clauses which can be combined in a resolution chain to
+ * produce this new clause.
+ */
+struct TraceCheckLine
+{
+ TraceCheckLine(TraceCheckIdx idx,
+ std::vector<prop::SatLiteral>&& clause,
+ std::vector<TraceCheckIdx>&& chain)
+ : d_idx(idx), d_clause(clause), d_chain(chain)
+ {
+ }
+
+ // The index of the new clause
+ TraceCheckIdx d_idx;
+ // The new clause
+ std::vector<prop::SatLiteral> d_clause;
+ /**
+ * Indices of clauses which must be resolved to produce this new clause.
+ * While the TRACECHECK format does not specify the order, we require them to
+ * be in resolution-order.
+ */
+ std::vector<TraceCheckIdx> d_chain;
+};
+
+/**
+ * A TRACECHECK proof -- just a list of lines
+ */
+struct TraceCheckProof
+{
+ static TraceCheckProof fromText(std::istream& in);
+ TraceCheckProof() : d_lines() {}
+
+ // The lines of this proof.
+ std::vector<TraceCheckLine> d_lines;
+};
+
+/**
+ * An extended resolution proof.
+ * It supports resolution, along with extensions of the form
+ *
+ * newVar <-> p v (~x_1 ^ ~x_2 ^ ... ^ ~x_n)
+ */
+class ErProof
+{
+ public:
+ /**
+ * Construct an ER proof from a DRAT proof, using drat2er
+ *
+ * @param usedClauses The CNF formula that we're deriving bottom from.
+ * @param dratBinary The DRAT proof from the SAT solver, as a binary stream.
+ */
+ static ErProof fromBinaryDratProof(const ClauseUseRecord& usedClauses,
+ const std::string& dratBinary);
+
+ /**
+ * Construct an ER proof from a TRACECHECK ER proof
+ *
+ * This basically just identifies groups of lines which correspond to
+ * definitions, and extracts them.
+ *
+ * @param usedClauses The CNF formula that we're deriving bottom from.
+ * @param tracecheck The TRACECHECK proof, as a stream.
+ */
+ ErProof(const ClauseUseRecord& usedClauses, TraceCheckProof&& tracecheck);
+
+ /**
+ * Write the ER proof as an LFSC value of type (holds cln).
+ * The format is from the LFSC signature er.plf
+ *
+ * Reads the current `ProofManager` to determine what the variables should be
+ * named.
+ *
+ * @param os the stream to write to
+ */
+ void outputAsLfsc(std::ostream& os) const;
+
+ const std::vector<ClauseId>& getInputClauseIds() const
+ {
+ return d_inputClauseIds;
+ }
+
+ const std::vector<ErDefinition>& getDefinitions() const
+ {
+ return d_definitions;
+ }
+
+ const TraceCheckProof& getTraceCheckProof() const { return d_tracecheck; }
+
+ private:
+ /**
+ * Creates an empty ErProof.
+ */
+ ErProof() : d_inputClauseIds(), d_definitions(), d_tracecheck() {}
+
+ /**
+ * Computes the pivots on the basis of which an in-order resolution chain is
+ * resolved.
+ *
+ * c0 c1
+ * \ / Clauses c_i being resolved in a chain around
+ * v1 c2 pivots v_i.
+ * \ /
+ * v2 c3
+ * \ /
+ * v3 c4
+ * \ /
+ * v4
+ *
+ *
+ * @param chain the chain, of N clause indices
+ *
+ * @return a list of N - 1 variables, the list ( v_i ) from i = 1 to N - 1
+ */
+ std::vector<prop::SatLiteral> computePivotsForChain(
+ const std::vector<TraceCheckIdx>& chain) const;
+
+ /**
+ * Write the LFSC identifier for the proof of a clause
+ *
+ * @param o where to write to
+ * @param i the TRACECHECK index for the clause whose proof identifier to
+ * print
+ */
+ void writeIdForClauseProof(std::ostream& o, TraceCheckIdx i) const;
+
+ // A list of the Ids for the input clauses, in order.
+ std::vector<ClauseId> d_inputClauseIds;
+ // A list of new variable definitions, in order.
+ std::vector<ErDefinition> d_definitions;
+ // The underlying TRACECHECK proof.
+ TraceCheckProof d_tracecheck;
+};
+
+} // namespace er
+} // namespace proof
+} // namespace CVC4
+
+#endif // __CVC4__PROOF__ER__ER_PROOF_H
diff --git a/src/proof/lemma_proof.cpp b/src/proof/lemma_proof.cpp
index 392805473..6bb2c2854 100644
--- a/src/proof/lemma_proof.cpp
+++ b/src/proof/lemma_proof.cpp
@@ -2,9 +2,9 @@
/*! \file lemma_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Guy Katz
+ ** Guy Katz, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/lemma_proof.h b/src/proof/lemma_proof.h
index 857632083..b4b40ef1b 100644
--- a/src/proof/lemma_proof.h
+++ b/src/proof/lemma_proof.h
@@ -2,9 +2,9 @@
/*! \file lemma_proof.h
** \verbatim
** Top contributors (to current version):
- ** Guy Katz
+ ** Guy Katz, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/lfsc_proof_printer.cpp b/src/proof/lfsc_proof_printer.cpp
index be1259837..1a18d06a6 100644
--- a/src/proof/lfsc_proof_printer.cpp
+++ b/src/proof/lfsc_proof_printer.cpp
@@ -2,9 +2,9 @@
/*! \file lfsc_proof_printer.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Alex Ozdemir, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/lfsc_proof_printer.h b/src/proof/lfsc_proof_printer.h
index 36a3490f7..beef4823e 100644
--- a/src/proof/lfsc_proof_printer.h
+++ b/src/proof/lfsc_proof_printer.h
@@ -2,9 +2,9 @@
/*! \file lfsc_proof_printer.h
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/lrat/lrat_proof.cpp b/src/proof/lrat/lrat_proof.cpp
index 0b7af7aa5..a1939ec92 100644
--- a/src/proof/lrat/lrat_proof.cpp
+++ b/src/proof/lrat/lrat_proof.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/lrat/lrat_proof.h b/src/proof/lrat/lrat_proof.h
index a999e5ca6..f231e5a6b 100644
--- a/src/proof/lrat/lrat_proof.h
+++ b/src/proof/lrat/lrat_proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/proof.h b/src/proof/proof.h
index 3ee8d66ef..b39d73134 100644
--- a/src/proof/proof.h
+++ b/src/proof/proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_manager.cpp b/src/proof/proof_manager.cpp
index 9878972bf..005a23378 100644
--- a/src/proof/proof_manager.cpp
+++ b/src/proof/proof_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Guy Katz, Liana Hadarean, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -30,6 +30,7 @@
#include "proof/theory_proof.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
+#include "smt/smt_statistics_registry.h"
#include "smt_util/node_visitor.h"
#include "theory/arrays/theory_arrays.h"
#include "theory/output_channel.h"
@@ -559,6 +560,9 @@ void LFSCProof::toStream(std::ostream& out, const ProofLetMap& map) const
void LFSCProof::toStream(std::ostream& out) const
{
+ TimerStat::CodeTimer proofProductionTimer(
+ *ProofManager::currentPM()->getProofProductionTime());
+
Assert(!d_satProof->proofConstructed());
d_satProof->constructProof();
@@ -730,8 +734,7 @@ void LFSCProof::toStream(std::ostream& out) const
out << ";; Printing final unsat proof \n";
if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER && ProofManager::getBitVectorProof()) {
- proof::LFSCProofPrinter::printResolutionEmptyClause(
- ProofManager::getBitVectorProof()->getSatProof(), out, paren);
+ ProofManager::getBitVectorProof()->printEmptyClauseProof(out, paren);
} else {
// print actual resolution proof
proof::LFSCProofPrinter::printResolutions(d_satProof, out, paren);
@@ -1069,4 +1072,16 @@ void ProofManager::printTrustedTerm(Node term,
tpe->printTheoryTerm(term.toExpr(), os, globalLetMap);
if (tpe->printsAsBool(term)) os << ")";
}
+
+ProofManager::ProofManagerStatistics::ProofManagerStatistics()
+ : d_proofProductionTime("proof::ProofManager::proofProductionTime")
+{
+ smtStatisticsRegistry()->registerStat(&d_proofProductionTime);
+}
+
+ProofManager::ProofManagerStatistics::~ProofManagerStatistics()
+{
+ smtStatisticsRegistry()->unregisterStat(&d_proofProductionTime);
+}
+
} /* CVC4 namespace */
diff --git a/src/proof/proof_manager.h b/src/proof/proof_manager.h
index 82efbab0f..0d3250b12 100644
--- a/src/proof/proof_manager.h
+++ b/src/proof/proof_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Guy Katz, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -24,9 +24,9 @@
#include <unordered_map>
#include <unordered_set>
-#include "expr/node.h"
-#include "context/cdhashset.h"
#include "context/cdhashmap.h"
+#include "context/cdhashset.h"
+#include "expr/node.h"
#include "proof/clause_id.h"
#include "proof/proof.h"
#include "proof/proof_utils.h"
@@ -34,7 +34,7 @@
#include "theory/logic_info.h"
#include "theory/substitutions.h"
#include "util/proof.h"
-
+#include "util/statistics_registry.h"
namespace CVC4 {
@@ -298,9 +298,26 @@ public:
std::ostream& out,
std::ostringstream& paren);
-private:
+ TimerStat* getProofProductionTime() { return &d_stats.d_proofProductionTime; }
+
+ private:
void constructSatProof();
std::set<Node> satClauseToNodeSet(prop::SatClause* clause);
+
+ struct ProofManagerStatistics
+ {
+ ProofManagerStatistics();
+ ~ProofManagerStatistics();
+
+ /**
+ * Time spent producing proofs (i.e. generating the proof from the logging
+ * information)
+ */
+ TimerStat d_proofProductionTime;
+ }; /* struct ProofManagerStatistics */
+
+ ProofManagerStatistics d_stats;
+
};/* class ProofManager */
class LFSCProof : public Proof
diff --git a/src/proof/proof_output_channel.cpp b/src/proof/proof_output_channel.cpp
index 1489e83bd..449e12225 100644
--- a/src/proof/proof_output_channel.cpp
+++ b/src/proof/proof_output_channel.cpp
@@ -2,9 +2,9 @@
/*! \file proof_output_channel.cpp
** \verbatim
** Top contributors (to current version):
- ** Guy Katz, Tim King
+ ** Guy Katz, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_output_channel.h b/src/proof/proof_output_channel.h
index 8be434f50..9bf1e0e5c 100644
--- a/src/proof/proof_output_channel.h
+++ b/src/proof/proof_output_channel.h
@@ -2,9 +2,9 @@
/*! \file proof_output_channel.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Guy Katz
+ ** Tim King, Guy Katz, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_utils.cpp b/src/proof/proof_utils.cpp
index ead70ddde..3342d421a 100644
--- a/src/proof/proof_utils.cpp
+++ b/src/proof/proof_utils.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Andrew Reynolds, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_utils.h b/src/proof/proof_utils.h
index c24897c8d..cb509063d 100644
--- a/src/proof/proof_utils.h
+++ b/src/proof/proof_utils.h
@@ -2,9 +2,9 @@
/*! \file proof_utils.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Guy Katz, Tim King
+ ** Liana Hadarean, Guy Katz, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/resolution_bitvector_proof.cpp b/src/proof/resolution_bitvector_proof.cpp
index 1db673949..505500d5e 100644
--- a/src/proof/resolution_bitvector_proof.cpp
+++ b/src/proof/resolution_bitvector_proof.cpp
@@ -2,9 +2,9 @@
/*! \file resolution_bitvector_proof.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Guy Katz, Paul Meng
+ ** Alex Ozdemir, Liana Hadarean, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/resolution_bitvector_proof.h b/src/proof/resolution_bitvector_proof.h
index 6c2ae589f..24d1bc76f 100644
--- a/src/proof/resolution_bitvector_proof.h
+++ b/src/proof/resolution_bitvector_proof.h
@@ -2,9 +2,9 @@
/*! \file resolution_bitvector_proof.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner, Guy Katz
+ ** Alex Ozdemir, Mathias Preiner, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/sat_proof.h b/src/proof/sat_proof.h
index 8fd2cb9eb..82bd93947 100644
--- a/src/proof/sat_proof.h
+++ b/src/proof/sat_proof.h
@@ -2,9 +2,9 @@
/*! \file sat_proof.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Tim King, Guy Katz
+ ** Liana Hadarean, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/sat_proof_implementation.h b/src/proof/sat_proof_implementation.h
index 96f99be47..bc32b7959 100644
--- a/src/proof/sat_proof_implementation.h
+++ b/src/proof/sat_proof_implementation.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/simplify_boolean_node.cpp b/src/proof/simplify_boolean_node.cpp
index 0ad6d0500..0fd69fc20 100644
--- a/src/proof/simplify_boolean_node.cpp
+++ b/src/proof/simplify_boolean_node.cpp
@@ -2,9 +2,9 @@
/*! \file simplify_boolean_node.cpp
** \verbatim
** Top contributors (to current version):
- ** Guy Katz
+ ** Guy Katz, Liana Hadarean, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/simplify_boolean_node.h b/src/proof/simplify_boolean_node.h
index 1c479e38d..0b1cf4990 100644
--- a/src/proof/simplify_boolean_node.h
+++ b/src/proof/simplify_boolean_node.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/skolemization_manager.cpp b/src/proof/skolemization_manager.cpp
index f5fba4003..b0397d08c 100644
--- a/src/proof/skolemization_manager.cpp
+++ b/src/proof/skolemization_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/skolemization_manager.h b/src/proof/skolemization_manager.h
index d8feb959f..54b30e6f0 100644
--- a/src/proof/skolemization_manager.h
+++ b/src/proof/skolemization_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Guy Katz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/theory_proof.cpp b/src/proof/theory_proof.cpp
index fe9acfef3..c66aa59e4 100644
--- a/src/proof/theory_proof.cpp
+++ b/src/proof/theory_proof.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Guy Katz, Liana Hadarean, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -85,8 +85,27 @@ void TheoryProofEngine::registerTheory(theory::Theory* th) {
if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER
&& options::bvSatSolver() == theory::bv::SAT_SOLVER_CRYPTOMINISAT)
{
- proof::BitVectorProof* bvp =
- new proof::LfscClausalBitVectorProof(thBv, this);
+ proof::BitVectorProof* bvp = nullptr;
+ switch (options::bvProofFormat())
+ {
+ case theory::bv::BvProofFormat::BITVECTOR_PROOF_DRAT:
+ {
+ bvp = new proof::LfscDratBitVectorProof(thBv, this);
+ break;
+ }
+ case theory::bv::BvProofFormat::BITVECTOR_PROOF_LRAT:
+ {
+ bvp = new proof::LfscLratBitVectorProof(thBv, this);
+ break;
+ }
+ case theory::bv::BvProofFormat::BITVECTOR_PROOF_ER:
+ {
+ bvp = new proof::LfscErBitVectorProof(thBv, this);
+ break;
+ }
+ default: { Unreachable("Invalid BvProofFormat");
+ }
+ };
d_theoryProofTable[id] = bvp;
}
else
diff --git a/src/proof/theory_proof.h b/src/proof/theory_proof.h
index 2f2ce83fd..94765d95a 100644
--- a/src/proof/theory_proof.h
+++ b/src/proof/theory_proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Guy Katz, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/uf_proof.cpp b/src/proof/uf_proof.cpp
index 5d4a1ce11..43a648da7 100644
--- a/src/proof/uf_proof.cpp
+++ b/src/proof/uf_proof.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Guy Katz, Yoni Zohar
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/uf_proof.h b/src/proof/uf_proof.h
index 6f69a3d00..e5fd396c5 100644
--- a/src/proof/uf_proof.h
+++ b/src/proof/uf_proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/unsat_core.cpp b/src/proof/unsat_core.cpp
index 0321ccd29..4212331af 100644
--- a/src/proof/unsat_core.cpp
+++ b/src/proof/unsat_core.cpp
@@ -2,9 +2,9 @@
/*! \file unsat_core.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Clark Barrett
+ ** Morgan Deters, Clark Barrett, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/proof/unsat_core.h b/src/proof/unsat_core.h
index 77f65e24a..6e0c84840 100644
--- a/src/proof/unsat_core.h
+++ b/src/proof/unsat_core.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/bv_sat_solver_notify.h b/src/prop/bv_sat_solver_notify.h
index 686848829..d5a361eb8 100644
--- a/src/prop/bv_sat_solver_notify.h
+++ b/src/prop/bv_sat_solver_notify.h
@@ -1,10 +1,10 @@
/********************* */
-/*! \file sat_solver_notify.h
+/*! \file bv_sat_solver_notify.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** Liana Hadarean, Alex Ozdemir, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/bvminisat/bvminisat.cpp b/src/prop/bvminisat/bvminisat.cpp
index 57ef8ef30..76d473395 100644
--- a/src/prop/bvminisat/bvminisat.cpp
+++ b/src/prop/bvminisat/bvminisat.cpp
@@ -2,9 +2,9 @@
/*! \file bvminisat.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Liana Hadarean, Tim King
+ ** Liana Hadarean, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/bvminisat/bvminisat.h b/src/prop/bvminisat/bvminisat.h
index efb90a3f0..ca9c553d9 100644
--- a/src/prop/bvminisat/bvminisat.h
+++ b/src/prop/bvminisat/bvminisat.h
@@ -2,9 +2,9 @@
/*! \file bvminisat.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Mathias Preiner, Liana Hadarean
+ ** Mathias Preiner, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cadical.cpp b/src/prop/cadical.cpp
index 3fd210699..5a0968ec8 100644
--- a/src/prop/cadical.cpp
+++ b/src/prop/cadical.cpp
@@ -2,9 +2,9 @@
/*! \file cadical.cpp
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Mathias Preiner, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cadical.h b/src/prop/cadical.h
index 2e2c1cc51..747c9ddb2 100644
--- a/src/prop/cadical.h
+++ b/src/prop/cadical.h
@@ -2,9 +2,9 @@
/*! \file cadical.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Mathias Preiner, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cnf_stream.cpp b/src/prop/cnf_stream.cpp
index 84c315547..dc4722fa1 100644
--- a/src/prop/cnf_stream.cpp
+++ b/src/prop/cnf_stream.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cnf_stream.h b/src/prop/cnf_stream.h
index e0996014a..c35b3d2fa 100644
--- a/src/prop/cnf_stream.h
+++ b/src/prop/cnf_stream.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cryptominisat.cpp b/src/prop/cryptominisat.cpp
index 970ba13cf..62e2c5a43 100644
--- a/src/prop/cryptominisat.cpp
+++ b/src/prop/cryptominisat.cpp
@@ -2,9 +2,9 @@
/*! \file cryptominisat.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/cryptominisat.h b/src/prop/cryptominisat.h
index 17cc1568c..4aa53909a 100644
--- a/src/prop/cryptominisat.h
+++ b/src/prop/cryptominisat.h
@@ -2,9 +2,9 @@
/*! \file cryptominisat.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner
+ ** Mathias Preiner, Liana Hadarean, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/minisat/minisat.cpp b/src/prop/minisat/minisat.cpp
index 3c11d5ad8..4995a60dd 100644
--- a/src/prop/minisat/minisat.cpp
+++ b/src/prop/minisat/minisat.cpp
@@ -2,9 +2,9 @@
/*! \file minisat.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Tim King
+ ** Liana Hadarean, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/minisat/minisat.h b/src/prop/minisat/minisat.h
index dc42066d7..d4720def5 100644
--- a/src/prop/minisat/minisat.h
+++ b/src/prop/minisat/minisat.h
@@ -2,9 +2,9 @@
/*! \file minisat.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Mathias Preiner, Morgan Deters
+ ** Mathias Preiner, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/prop_engine.cpp b/src/prop/prop_engine.cpp
index e1200c7e5..b12573085 100644
--- a/src/prop/prop_engine.cpp
+++ b/src/prop/prop_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/prop_engine.h b/src/prop/prop_engine.h
index 2ff862d18..4815a3c35 100644
--- a/src/prop/prop_engine.h
+++ b/src/prop/prop_engine.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/registrar.h b/src/prop/registrar.h
index 46c2cdd0d..01d69e14c 100644
--- a/src/prop/registrar.h
+++ b/src/prop/registrar.h
@@ -2,9 +2,9 @@
/*! \file registrar.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Liana Hadarean, Morgan Deters
+ ** Liana Hadarean, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver.h b/src/prop/sat_solver.h
index 70e46eceb..c3716aeea 100644
--- a/src/prop/sat_solver.h
+++ b/src/prop/sat_solver.h
@@ -2,9 +2,9 @@
/*! \file sat_solver.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_factory.cpp b/src/prop/sat_solver_factory.cpp
index 81e15777d..cfab5703c 100644
--- a/src/prop/sat_solver_factory.cpp
+++ b/src/prop/sat_solver_factory.cpp
@@ -2,9 +2,9 @@
/*! \file sat_solver_factory.cpp
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner, Dejan Jovanovic, Tim King
+ ** Mathias Preiner, Liana Hadarean, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_factory.h b/src/prop/sat_solver_factory.h
index eb588af13..68c23de0b 100644
--- a/src/prop/sat_solver_factory.h
+++ b/src/prop/sat_solver_factory.h
@@ -2,9 +2,9 @@
/*! \file sat_solver_factory.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner, Dejan Jovanovic, Liana Hadarean
+ ** Mathias Preiner, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_types.h b/src/prop/sat_solver_types.h
index ed1c5397d..f1fd6233e 100644
--- a/src/prop/sat_solver_types.h
+++ b/src/prop/sat_solver_types.h
@@ -2,9 +2,9 @@
/*! \file sat_solver_types.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Kshitij Bansal, Liana Hadarean
+ ** Dejan Jovanovic, Liana Hadarean, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -26,6 +26,7 @@
#include <sstream>
#include <string>
+#include <unordered_set>
#include <vector>
namespace CVC4 {
@@ -167,6 +168,21 @@ struct SatLiteralHashFunction {
*/
typedef std::vector<SatLiteral> SatClause;
+struct SatClauseSetHashFunction
+{
+ inline size_t operator()(
+ const std::unordered_set<SatLiteral, SatLiteralHashFunction>& clause)
+ const
+ {
+ size_t acc = 0;
+ for (const auto& l : clause)
+ {
+ acc ^= l.hash();
+ }
+ return acc;
+ }
+};
+
/**
* Each object in the SAT solver, such as as variables and clauses, can be assigned a life span,
* so that the SAT solver can (or should) remove them when the lifespan is over.
diff --git a/src/prop/theory_proxy.cpp b/src/prop/theory_proxy.cpp
index 2526830f9..f6cd42eff 100644
--- a/src/prop/theory_proxy.cpp
+++ b/src/prop/theory_proxy.cpp
@@ -2,9 +2,9 @@
/*! \file theory_proxy.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Guy Katz
+ ** Morgan Deters, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/prop/theory_proxy.h b/src/prop/theory_proxy.h
index e2923ddff..9b1069fc7 100644
--- a/src/prop/theory_proxy.h
+++ b/src/prop/theory_proxy.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/command.cpp b/src/smt/command.cpp
index 5198ea2d1..ecd3c6f16 100644
--- a/src/smt/command.cpp
+++ b/src/smt/command.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/command.h b/src/smt/command.h
index f7824c1aa..f3b17b318 100644
--- a/src/smt/command.h
+++ b/src/smt/command.h
@@ -2,9 +2,9 @@
/*! \file command.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Andrew Reynolds
+ ** Tim King, Morgan Deters, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/command_list.cpp b/src/smt/command_list.cpp
index a78a01fdc..43bb6b268 100644
--- a/src/smt/command_list.cpp
+++ b/src/smt/command_list.cpp
@@ -2,9 +2,9 @@
/*! \file command_list.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/command_list.h b/src/smt/command_list.h
index 01df7afce..61226da41 100644
--- a/src/smt/command_list.h
+++ b/src/smt/command_list.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/dump.cpp b/src/smt/dump.cpp
index eae11606f..90c89cd3d 100644
--- a/src/smt/dump.cpp
+++ b/src/smt/dump.cpp
@@ -2,9 +2,9 @@
/*! \file dump.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Clark Barrett, Morgan Deters
+ ** Morgan Deters, Clark Barrett, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/dump.h b/src/smt/dump.h
index 9de8eb0ce..a68f712ca 100644
--- a/src/smt/dump.h
+++ b/src/smt/dump.h
@@ -2,9 +2,9 @@
/*! \file dump.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_exception.h b/src/smt/logic_exception.h
index 1ce3b2e0b..5b197a124 100644
--- a/src/smt/logic_exception.h
+++ b/src/smt/logic_exception.h
@@ -2,9 +2,9 @@
/*! \file logic_exception.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_request.cpp b/src/smt/logic_request.cpp
index c9ddad176..c24378cb1 100644
--- a/src/smt/logic_request.cpp
+++ b/src/smt/logic_request.cpp
@@ -2,9 +2,9 @@
/*! \file logic_request.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Mathias Preiner, Martin Brain, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_request.h b/src/smt/logic_request.h
index 23add1cf4..4d2957f87 100644
--- a/src/smt/logic_request.h
+++ b/src/smt/logic_request.h
@@ -2,9 +2,9 @@
/*! \file logic_request.h
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Tim King
+ ** Martin Brain, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/managed_ostreams.cpp b/src/smt/managed_ostreams.cpp
index 300465d3d..fbc1bb242 100644
--- a/src/smt/managed_ostreams.cpp
+++ b/src/smt/managed_ostreams.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/managed_ostreams.h b/src/smt/managed_ostreams.h
index 32075d011..a78bf57ee 100644
--- a/src/smt/managed_ostreams.h
+++ b/src/smt/managed_ostreams.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/model.cpp b/src/smt/model.cpp
index f4b1af49a..e452905e1 100644
--- a/src/smt/model.cpp
+++ b/src/smt/model.cpp
@@ -2,9 +2,9 @@
/*! \file model.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Morgan Deters, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/model.h b/src/smt/model.h
index 3ad35fa5f..214581778 100644
--- a/src/smt/model.h
+++ b/src/smt/model.h
@@ -2,9 +2,9 @@
/*! \file model.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Clark Barrett
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/model_core_builder.cpp b/src/smt/model_core_builder.cpp
index a077bb2fa..168ded839 100644
--- a/src/smt/model_core_builder.cpp
+++ b/src/smt/model_core_builder.cpp
@@ -2,9 +2,9 @@
/*! \file model_core_builder.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/model_core_builder.h b/src/smt/model_core_builder.h
index a60a3767c..1fbe9011a 100644
--- a/src/smt/model_core_builder.h
+++ b/src/smt/model_core_builder.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 68b7e2251..d035f88c1 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -111,6 +111,10 @@
#include "util/random.h"
#include "util/resource_manager.h"
+#if (IS_LFSC_BUILD && IS_PROOFS_BUILD)
+#include "lfscc.h"
+#endif
+
using namespace std;
using namespace CVC4;
using namespace CVC4::smt;
@@ -120,6 +124,11 @@ using namespace CVC4::context;
using namespace CVC4::theory;
namespace CVC4 {
+
+namespace proof {
+extern const char* const plf_signatures;
+} // namespace proof
+
namespace smt {
struct DeleteCommandFunction : public std::unary_function<const Command*, void>
@@ -178,10 +187,12 @@ struct SmtEngineStatistics {
IntStat d_numAssertionsPre;
/** Num of assertions after ite removal */
IntStat d_numAssertionsPost;
+ /** Size of all proofs generated */
+ IntStat d_proofsSize;
/** time spent in checkModel() */
TimerStat d_checkModelTime;
- /** time spent in checkProof() */
- TimerStat d_checkProofTime;
+ /** time spent checking the proof with LFSC */
+ TimerStat d_lfscCheckProofTime;
/** time spent in checkUnsatCore() */
TimerStat d_checkUnsatCoreTime;
/** time spent in PropEngine::checkSat() */
@@ -196,28 +207,30 @@ struct SmtEngineStatistics {
/** Number of resource units spent. */
ReferenceStat<uint64_t> d_resourceUnitsUsed;
- SmtEngineStatistics() :
- d_definitionExpansionTime("smt::SmtEngine::definitionExpansionTime"),
- d_numConstantProps("smt::SmtEngine::numConstantProps", 0),
- d_cnfConversionTime("smt::SmtEngine::cnfConversionTime"),
- d_numAssertionsPre("smt::SmtEngine::numAssertionsPreITERemoval", 0),
- d_numAssertionsPost("smt::SmtEngine::numAssertionsPostITERemoval", 0),
- d_checkModelTime("smt::SmtEngine::checkModelTime"),
- d_checkProofTime("smt::SmtEngine::checkProofTime"),
- d_checkUnsatCoreTime("smt::SmtEngine::checkUnsatCoreTime"),
- d_solveTime("smt::SmtEngine::solveTime"),
- d_pushPopTime("smt::SmtEngine::pushPopTime"),
- d_processAssertionsTime("smt::SmtEngine::processAssertionsTime"),
- d_simplifiedToFalse("smt::SmtEngine::simplifiedToFalse", 0),
- d_resourceUnitsUsed("smt::SmtEngine::resourceUnitsUsed")
- {
+ SmtEngineStatistics()
+ : d_definitionExpansionTime("smt::SmtEngine::definitionExpansionTime"),
+ d_numConstantProps("smt::SmtEngine::numConstantProps", 0),
+ d_cnfConversionTime("smt::SmtEngine::cnfConversionTime"),
+ d_numAssertionsPre("smt::SmtEngine::numAssertionsPreITERemoval", 0),
+ d_numAssertionsPost("smt::SmtEngine::numAssertionsPostITERemoval", 0),
+ d_proofsSize("smt::SmtEngine::proofsSize", 0),
+ d_checkModelTime("smt::SmtEngine::checkModelTime"),
+ d_lfscCheckProofTime("smt::SmtEngine::lfscCheckProofTime"),
+ d_checkUnsatCoreTime("smt::SmtEngine::checkUnsatCoreTime"),
+ d_solveTime("smt::SmtEngine::solveTime"),
+ d_pushPopTime("smt::SmtEngine::pushPopTime"),
+ d_processAssertionsTime("smt::SmtEngine::processAssertionsTime"),
+ d_simplifiedToFalse("smt::SmtEngine::simplifiedToFalse", 0),
+ d_resourceUnitsUsed("smt::SmtEngine::resourceUnitsUsed")
+ {
smtStatisticsRegistry()->registerStat(&d_definitionExpansionTime);
smtStatisticsRegistry()->registerStat(&d_numConstantProps);
smtStatisticsRegistry()->registerStat(&d_cnfConversionTime);
smtStatisticsRegistry()->registerStat(&d_numAssertionsPre);
smtStatisticsRegistry()->registerStat(&d_numAssertionsPost);
+ smtStatisticsRegistry()->registerStat(&d_proofsSize);
smtStatisticsRegistry()->registerStat(&d_checkModelTime);
- smtStatisticsRegistry()->registerStat(&d_checkProofTime);
+ smtStatisticsRegistry()->registerStat(&d_lfscCheckProofTime);
smtStatisticsRegistry()->registerStat(&d_checkUnsatCoreTime);
smtStatisticsRegistry()->registerStat(&d_solveTime);
smtStatisticsRegistry()->registerStat(&d_pushPopTime);
@@ -232,8 +245,9 @@ struct SmtEngineStatistics {
smtStatisticsRegistry()->unregisterStat(&d_cnfConversionTime);
smtStatisticsRegistry()->unregisterStat(&d_numAssertionsPre);
smtStatisticsRegistry()->unregisterStat(&d_numAssertionsPost);
+ smtStatisticsRegistry()->unregisterStat(&d_proofsSize);
smtStatisticsRegistry()->unregisterStat(&d_checkModelTime);
- smtStatisticsRegistry()->unregisterStat(&d_checkProofTime);
+ smtStatisticsRegistry()->unregisterStat(&d_lfscCheckProofTime);
smtStatisticsRegistry()->unregisterStat(&d_checkUnsatCoreTime);
smtStatisticsRegistry()->unregisterStat(&d_solveTime);
smtStatisticsRegistry()->unregisterStat(&d_pushPopTime);
@@ -865,6 +879,7 @@ SmtEngine::SmtEngine(ExprManager* em)
d_defineCommands(),
d_logic(),
d_originalOptions(),
+ d_isInternalSubsolver(false),
d_pendingPops(0),
d_fullyInited(false),
d_problemExtended(false),
@@ -1195,6 +1210,12 @@ void SmtEngine::setDefaults() {
if(options::forceLogicString.wasSetByUser()) {
d_logic = LogicInfo(options::forceLogicString());
}else if (options::solveIntAsBV() > 0) {
+ if (!(d_logic <= LogicInfo("QF_NIA")))
+ {
+ throw OptionException(
+ "--solve-int-as-bv=X only supported for pure integer logics (QF_NIA, "
+ "QF_LIA, QF_IDL)");
+ }
d_logic = LogicInfo("QF_BV");
}else if (d_logic.getLogicString() == "QF_NRA" && options::solveRealAsInt()) {
d_logic = LogicInfo("QF_NIA");
@@ -1244,16 +1265,20 @@ void SmtEngine::setDefaults() {
}
// sygus inference may require datatypes
- if (options::sygusInference() || options::sygusRewSynthInput())
+ if (!d_isInternalSubsolver)
{
- d_logic = d_logic.getUnlockedCopy();
- // sygus requires arithmetic, datatypes and quantifiers
- d_logic.enableTheory(THEORY_ARITH);
- d_logic.enableTheory(THEORY_DATATYPES);
- d_logic.enableTheory(THEORY_QUANTIFIERS);
- d_logic.lock();
- // since we are trying to recast as sygus, we assume the input is sygus
- is_sygus = true;
+ if (options::sygusInference() || options::sygusRewSynthInput()
+ || options::sygusAbduct())
+ {
+ d_logic = d_logic.getUnlockedCopy();
+ // sygus requires arithmetic, datatypes and quantifiers
+ d_logic.enableTheory(THEORY_ARITH);
+ d_logic.enableTheory(THEORY_DATATYPES);
+ d_logic.enableTheory(THEORY_QUANTIFIERS);
+ d_logic.lock();
+ // since we are trying to recast as sygus, we assume the input is sygus
+ is_sygus = true;
+ }
}
if ((options::checkModels() || options::checkSynthSol()
@@ -1938,8 +1963,16 @@ void SmtEngine::setDefaults() {
options::sygusExtRew.set(false);
}
}
+ if (options::sygusAbduct())
+ {
+ // if doing abduction, we should filter strong solutions
+ if (!options::sygusFilterSolMode.wasSetByUser())
+ {
+ options::sygusFilterSolMode.set(quantifiers::SYGUS_FILTER_SOL_STRONG);
+ }
+ }
if (options::sygusRewSynth() || options::sygusRewVerify()
- || options::sygusQueryGen())
+ || options::sygusQueryGen() || options::sygusAbduct())
{
// rewrite rule synthesis implies that sygus stream must be true
options::sygusStream.set(true);
@@ -1947,8 +1980,9 @@ void SmtEngine::setDefaults() {
if (options::sygusStream())
{
// Streaming is incompatible with techniques that focus the search towards
- // finding a single solution. This currently includes the PBE solver and
- // static template inference for invariant synthesis.
+ // finding a single solution. This currently includes the PBE solver,
+ // static template inference for invariant synthesis, and single
+ // invocation techniques.
if (!options::sygusUnifPbe.wasSetByUser())
{
options::sygusUnifPbe.set(false);
@@ -1962,6 +1996,10 @@ void SmtEngine::setDefaults() {
{
options::sygusInvTemplMode.set(quantifiers::SYGUS_INV_TEMPL_MODE_NONE);
}
+ if (!options::cegqiSingleInvMode.wasSetByUser())
+ {
+ options::cegqiSingleInvMode.set(quantifiers::CEGQI_SI_MODE_NONE);
+ }
}
//do not allow partial functions
if( !options::bitvectorDivByZeroConst.wasSetByUser() ){
@@ -2262,11 +2300,13 @@ void SmtEngine::setDefaults() {
"--sygus-expr-miner-check-timeout=N requires "
"--sygus-expr-miner-check-use-export");
}
- if (options::sygusRewSynthInput())
+ if (options::sygusRewSynthInput() || options::sygusAbduct())
{
- throw OptionException(
- "--sygus-rr-synth-input requires "
- "--sygus-expr-miner-check-use-export");
+ std::stringstream ss;
+ ss << (options::sygusRewSynthInput() ? "--sygus-rr-synth-input"
+ : "--sygus-abduct");
+ ss << "requires --sygus-expr-miner-check-use-export";
+ throw OptionException(ss.str());
}
}
@@ -3294,10 +3334,6 @@ void SmtEnginePrivate::processAssertions() {
d_smt.d_fmfRecFunctionsDefined->push_back( f );
}
}
- if (options::sygusInference())
- {
- d_passes["sygus-infer"]->apply(&d_assertions);
- }
}
if( options::sortInference() || options::ufssFairnessMonotone() ){
@@ -3308,10 +3344,22 @@ void SmtEnginePrivate::processAssertions() {
d_passes["pseudo-boolean-processor"]->apply(&d_assertions);
}
- if (options::sygusRewSynthInput())
+ // rephrasing normal inputs as sygus problems
+ if (!d_smt.d_isInternalSubsolver)
{
- // do candidate rewrite rule synthesis
- d_passes["synth-rr"]->apply(&d_assertions);
+ if (options::sygusInference())
+ {
+ d_passes["sygus-infer"]->apply(&d_assertions);
+ }
+ else if (options::sygusAbduct())
+ {
+ d_passes["sygus-abduct"]->apply(&d_assertions);
+ }
+ else if (options::sygusRewSynthInput())
+ {
+ // do candidate rewrite rule synthesis
+ d_passes["synth-rr"]->apply(&d_assertions);
+ }
}
Trace("smt-proc") << "SmtEnginePrivate::processAssertions() : pre-simplify" << endl;
@@ -3545,8 +3593,10 @@ Result SmtEngine::checkSat(const vector<Expr>& assumptions, bool inUnsatCore)
Result SmtEngine::query(const Expr& assumption, bool inUnsatCore)
{
- Assert(!assumption.isNull());
- return checkSatisfiability(assumption, inUnsatCore, true);
+ return checkSatisfiability(
+ assumption.isNull() ? std::vector<Expr>() : std::vector<Expr>{assumption},
+ inUnsatCore,
+ true);
}
Result SmtEngine::query(const vector<Expr>& assumptions, bool inUnsatCore)
@@ -3559,7 +3609,7 @@ Result SmtEngine::checkSatisfiability(const Expr& expr,
bool isQuery)
{
return checkSatisfiability(
- expr.isNull() ? vector<Expr>() : vector<Expr>{expr},
+ expr.isNull() ? std::vector<Expr>() : std::vector<Expr>{expr},
inUnsatCore,
isQuery);
}
@@ -3712,7 +3762,6 @@ Result SmtEngine::checkSatisfiability(const vector<Expr>& assumptions,
// Check that UNSAT results generate a proof correctly.
if(options::checkProofs()) {
if(r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
- TimerStat::CodeTimer checkProofTimer(d_stats->d_checkProofTime);
checkProof();
}
}
@@ -4367,6 +4416,57 @@ Expr SmtEngine::getSepHeapExpr() { return getSepHeapAndNilExpr().first; }
Expr SmtEngine::getSepNilExpr() { return getSepHeapAndNilExpr().second; }
+void SmtEngine::checkProof()
+{
+#if (IS_LFSC_BUILD && IS_PROOFS_BUILD)
+
+ Chat() << "generating proof..." << endl;
+
+ const Proof& pf = getProof();
+
+ Chat() << "checking proof..." << endl;
+
+ std::string logicString = d_logic.getLogicString();
+
+ if (!(
+ // Pure logics
+ logicString == "QF_UF" || logicString == "QF_AX"
+ || logicString == "QF_BV" ||
+ // Non-pure logics
+ logicString == "QF_AUF" || logicString == "QF_UFBV"
+ || logicString == "QF_ABV" || logicString == "QF_AUFBV"))
+ {
+ // This logic is not yet supported
+ Notice() << "Notice: no proof-checking for " << logicString << " proofs yet"
+ << endl;
+ return;
+ }
+
+ std::stringstream pfStream;
+
+ pfStream << proof::plf_signatures << endl;
+ int64_t sizeBeforeProof = static_cast<int64_t>(pfStream.tellp());
+
+ pf.toStream(pfStream);
+ d_stats->d_proofsSize +=
+ static_cast<int64_t>(pfStream.tellp()) - sizeBeforeProof;
+
+ {
+ TimerStat::CodeTimer checkProofTimer(d_stats->d_lfscCheckProofTime);
+ lfscc_init();
+ lfscc_check_file(pfStream, false, false, false, false, false, false, false);
+ }
+ // FIXME: we should actually call lfscc_cleanup here, but lfscc_cleanup
+ // segfaults on regress0/bv/core/bitvec7.smt
+ // lfscc_cleanup();
+
+#else /* (IS_LFSC_BUILD && IS_PROOFS_BUILD) */
+ Unreachable(
+ "This version of CVC4 was built without proof support; cannot check "
+ "proofs.");
+#endif /* (IS_LFSC_BUILD && IS_PROOFS_BUILD) */
+}
+
UnsatCore SmtEngine::getUnsatCoreInternal()
{
#if IS_PROOFS_BUILD
@@ -5225,6 +5325,7 @@ void SmtEngine::setOption(const std::string& key, const CVC4::SExpr& value)
nodeManagerOptions.setOption(key, optionarg);
}
+void SmtEngine::setIsInternalSubsolver() { d_isInternalSubsolver = true; }
CVC4::SExpr SmtEngine::getOption(const std::string& key) const
{
NodeManagerScope nms(d_nodeManager);
diff --git a/src/smt/smt_engine.h b/src/smt/smt_engine.h
index e53d1eb55..39264fb01 100644
--- a/src/smt/smt_engine.h
+++ b/src/smt/smt_engine.h
@@ -2,9 +2,9 @@
/*! \file smt_engine.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Morgan Deters, Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -209,6 +209,9 @@ class CVC4_PUBLIC SmtEngine {
*/
Options d_originalOptions;
+ /** whether this is an internal subsolver */
+ bool d_isInternalSubsolver;
+
/**
* Number of internal pops that have been deferred.
*/
@@ -502,6 +505,15 @@ class CVC4_PUBLIC SmtEngine {
void setOption(const std::string& key, const CVC4::SExpr& value)
/* throw(OptionException, ModalException) */;
+ /** Set is internal subsolver.
+ *
+ * This function is called on SmtEngine objects that are created internally.
+ * It is used to mark that this SmtEngine should not perform preprocessing
+ * passes that rephrase the input, such as --sygus-rr-synth-input or
+ * --sygus-abduct.
+ */
+ void setIsInternalSubsolver();
+
/** sets the input name */
void setFilename(std::string filename);
/** return the input name (if any) */
diff --git a/src/smt/smt_engine_check_proof.cpp b/src/smt/smt_engine_check_proof.cpp
deleted file mode 100644
index c86ec7a89..000000000
--- a/src/smt/smt_engine_check_proof.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/********************* */
-/*! \file smt_engine_check_proof.cpp
- ** \verbatim
- ** Top contributors (to current version):
- ** Morgan Deters, Mark Laws, Guy Katz
- ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
- ** in the top-level source directory) and their institutional affiliations.
- ** All rights reserved. See the file COPYING in the top-level source
- ** directory for licensing information.\endverbatim
- **
- ** \brief [[ Add one-line brief description here ]]
- **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
- **/
-
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
-#include <io.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include <cstdlib>
-#include <cstring>
-#include <fstream>
-#include <string>
-
-#include "base/configuration_private.h"
-#include "base/cvc4_assert.h"
-#include "base/output.h"
-#include "smt/smt_engine.h"
-#include "util/proof.h"
-#include "util/statistics_registry.h"
-
-#if (IS_LFSC_BUILD && IS_PROOFS_BUILD)
-#include "lfscc.h"
-#endif
-
-using namespace CVC4;
-using namespace std;
-
-namespace CVC4 {
-
-namespace proof {
- extern const char *const plf_signatures;
-}/* CVC4::proof namespace */
-
-namespace smt {
-
-class UnlinkProofFile {
- string d_filename;
-public:
- UnlinkProofFile(const char* filename) : d_filename(filename) {}
- ~UnlinkProofFile() { unlink(d_filename.c_str()); }
-};/* class UnlinkProofFile */
-
-}/* CVC4::smt namespace */
-
-}/* CVC4 namespace */
-
-void SmtEngine::checkProof() {
-
-#if (IS_LFSC_BUILD && IS_PROOFS_BUILD)
-
- Chat() << "generating proof..." << endl;
-
- const Proof& pf = getProof();
-
- Chat() << "checking proof..." << endl;
-
- std::string logicString = d_logic.getLogicString();
-
- if (!(
- // Pure logics
- logicString == "QF_UF" ||
- logicString == "QF_AX" ||
- logicString == "QF_BV" ||
- // Non-pure logics
- logicString == "QF_AUF" ||
- logicString == "QF_UFBV" ||
- logicString == "QF_ABV" ||
- logicString == "QF_AUFBV"
- )) {
- // This logic is not yet supported
- Notice() << "Notice: no proof-checking for " << logicString << " proofs yet" << endl;
- return;
- }
-
- char *pfFile = tempnam(NULL, "cvc4_");
- if (!pfFile) {
- Notice() << "Error: couldn't get path from tempnam() during proof checking" << endl;
- return;
- }
-#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
- int fd = _open(pfFile,
- _O_CREAT | _O_EXCL | _O_SHORT_LIVED | _O_RDWR,
- _S_IREAD | _S_IWRITE);
-#else
- mode_t openmode = S_IRUSR | S_IWUSR;
- int fd = open(pfFile, O_CREAT | O_EXCL | O_RDWR, openmode);
-#endif
- if (fd == -1) {
- free(pfFile);
- Notice() << "Error: failed to open temporary file during proof checking" << endl;
- return;
- }
-
- // ensure this temp file is removed after
- smt::UnlinkProofFile unlinker(pfFile);
-
- ofstream pfStream(pfFile);
- pfStream << proof::plf_signatures << endl;
- pf.toStream(pfStream);
- pfStream.close();
- lfscc_init();
- lfscc_check_file(pfFile, false, false, false, false, false, false, false);
- // FIXME: we should actually call lfscc_cleanup here, but lfscc_cleanup
- // segfaults on regress0/bv/core/bitvec7.smt
- //lfscc_cleanup();
- free(pfFile);
- close(fd);
-
-#else /* (IS_LFSC_BUILD && IS_PROOFS_BUILD) */
- Unreachable("This version of CVC4 was built without proof support; cannot check proofs.");
-#endif /* (IS_LFSC_BUILD && IS_PROOFS_BUILD) */
-}
diff --git a/src/smt/smt_engine_scope.cpp b/src/smt/smt_engine_scope.cpp
index a4a0967b2..c16278962 100644
--- a/src/smt/smt_engine_scope.cpp
+++ b/src/smt/smt_engine_scope.cpp
@@ -2,9 +2,9 @@
/*! \file smt_engine_scope.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli, Morgan Deters
+ ** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_engine_scope.h b/src/smt/smt_engine_scope.h
index 8e40d54ff..b6db0c20c 100644
--- a/src/smt/smt_engine_scope.h
+++ b/src/smt/smt_engine_scope.h
@@ -2,9 +2,9 @@
/*! \file smt_engine_scope.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andres Noetzli, Tim King
+ ** Andres Noetzli, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_statistics_registry.cpp b/src/smt/smt_statistics_registry.cpp
index 2584ac404..1912b0eb2 100644
--- a/src/smt/smt_statistics_registry.cpp
+++ b/src/smt/smt_statistics_registry.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_statistics_registry.h b/src/smt/smt_statistics_registry.h
index 9a8e61101..e6932a084 100644
--- a/src/smt/smt_statistics_registry.h
+++ b/src/smt/smt_statistics_registry.h
@@ -2,9 +2,9 @@
/*! \file smt_statistics_registry.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/term_formula_removal.cpp b/src/smt/term_formula_removal.cpp
index 2e18899a2..f610cc7df 100644
--- a/src/smt/term_formula_removal.cpp
+++ b/src/smt/term_formula_removal.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -84,9 +84,13 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
TypeNode nodeType = node.getType();
Node skolem;
Node newAssertion;
- if(node.getKind() == kind::ITE) {
- // If an ITE, replace it
- if (!nodeType.isBoolean() && (!inQuant || !expr::hasBoundVar(node)))
+ // Handle non-Boolean ITEs here. Boolean ones (within terms) are handled
+ // in the "non-variable Boolean term within term" case below.
+ if (node.getKind() == kind::ITE && !nodeType.isBoolean())
+ {
+ // Here, we eliminate the ITE if we are not Boolean and if we do not contain
+ // a bound variable.
+ if (!inQuant || !expr::hasBoundVar(node))
{
skolem = getSkolemForNode(node);
if (skolem.isNull())
@@ -163,13 +167,15 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
&& inTerm
&& !inQuant)
{
- // if a non-variable Boolean term, replace it
+ // if a non-variable Boolean term within another term, replace it
skolem = getSkolemForNode(node);
if (skolem.isNull())
{
// Make the skolem to represent the Boolean term
- // skolem = nodeManager->mkSkolem("termBT", nodeType, "a variable
- // introduced due to Boolean term removal");
+ // Skolems introduced for Boolean formulas appearing in terms have a
+ // special kind (BOOLEAN_TERM_VARIABLE) that ensures they are handled
+ // properly in theory combination. We must use this kind here instead of a
+ // generic skolem.
skolem = nodeManager->mkBooleanTermVariable();
d_skolem_cache.insert(node, skolem);
diff --git a/src/smt/term_formula_removal.h b/src/smt/term_formula_removal.h
index 27a15429b..b6456bda6 100644
--- a/src/smt/term_formula_removal.h
+++ b/src/smt/term_formula_removal.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt/update_ostream.h b/src/smt/update_ostream.h
index 06bce33a8..30fb98c02 100644
--- a/src/smt/update_ostream.h
+++ b/src/smt/update_ostream.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/boolean_simplification.cpp b/src/smt_util/boolean_simplification.cpp
index 190de2a97..199841279 100644
--- a/src/smt_util/boolean_simplification.cpp
+++ b/src/smt_util/boolean_simplification.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/boolean_simplification.h b/src/smt_util/boolean_simplification.h
index 8e4d8aa25..71e0b55f3 100644
--- a/src/smt_util/boolean_simplification.h
+++ b/src/smt_util/boolean_simplification.h
@@ -2,9 +2,9 @@
/*! \file boolean_simplification.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_channels.cpp b/src/smt_util/lemma_channels.cpp
index 057b1bac2..d65a2596e 100644
--- a/src/smt_util/lemma_channels.cpp
+++ b/src/smt_util/lemma_channels.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_channels.h b/src/smt_util/lemma_channels.h
index b2af0dfe4..beafac58f 100644
--- a/src/smt_util/lemma_channels.h
+++ b/src/smt_util/lemma_channels.h
@@ -2,9 +2,9 @@
/*! \file lemma_channels.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_input_channel.h b/src/smt_util/lemma_input_channel.h
index 1247d74b9..2140e9297 100644
--- a/src/smt_util/lemma_input_channel.h
+++ b/src/smt_util/lemma_input_channel.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_output_channel.h b/src/smt_util/lemma_output_channel.h
index b38c757f1..e53f1b8bc 100644
--- a/src/smt_util/lemma_output_channel.h
+++ b/src/smt_util/lemma_output_channel.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/nary_builder.cpp b/src/smt_util/nary_builder.cpp
index e527e4c24..2c2256d47 100644
--- a/src/smt_util/nary_builder.cpp
+++ b/src/smt_util/nary_builder.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/nary_builder.h b/src/smt_util/nary_builder.h
index 809286bce..889591909 100644
--- a/src/smt_util/nary_builder.h
+++ b/src/smt_util/nary_builder.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/smt_util/node_visitor.h b/src/smt_util/node_visitor.h
index 31a436f81..58070c0b2 100644
--- a/src/smt_util/node_visitor.h
+++ b/src/smt_util/node_visitor.h
@@ -2,9 +2,9 @@
/*! \file node_visitor.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Liana Hadarean, Morgan Deters
+ ** Dejan Jovanovic, Morgan Deters, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/approx_simplex.cpp b/src/theory/arith/approx_simplex.cpp
index bc7efdaf7..e621131d5 100644
--- a/src/theory/arith/approx_simplex.cpp
+++ b/src/theory/arith/approx_simplex.cpp
@@ -2,9 +2,9 @@
/*! \file approx_simplex.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andres Noetzli, Morgan Deters
+ ** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/approx_simplex.h b/src/theory/arith/approx_simplex.h
index a0982169d..2914c2da8 100644
--- a/src/theory/arith/approx_simplex.h
+++ b/src/theory/arith/approx_simplex.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_ite_utils.cpp b/src/theory/arith/arith_ite_utils.cpp
index 5b51e162d..3980b41b8 100644
--- a/src/theory/arith/arith_ite_utils.cpp
+++ b/src/theory/arith/arith_ite_utils.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Aina Niemetz, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_ite_utils.h b/src/theory/arith/arith_ite_utils.h
index 2c6a30758..2d06e4be9 100644
--- a/src/theory/arith/arith_ite_utils.h
+++ b/src/theory/arith/arith_ite_utils.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_msum.cpp b/src/theory/arith/arith_msum.cpp
index f08b4c0ba..7f13ce07d 100644
--- a/src/theory/arith/arith_msum.cpp
+++ b/src/theory/arith/arith_msum.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_msum.h b/src/theory/arith/arith_msum.h
index 195db38c9..44cce854c 100644
--- a/src/theory/arith/arith_msum.h
+++ b/src/theory/arith/arith_msum.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_rewriter.cpp b/src/theory/arith/arith_rewriter.cpp
index c3327e620..267fcc383 100644
--- a/src/theory/arith/arith_rewriter.cpp
+++ b/src/theory/arith/arith_rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_rewriter.h b/src/theory/arith/arith_rewriter.h
index 7d137bdfd..88b931229 100644
--- a/src/theory/arith/arith_rewriter.h
+++ b/src/theory/arith/arith_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_static_learner.cpp b/src/theory/arith/arith_static_learner.cpp
index 4bfc1a4f9..2138b513e 100644
--- a/src/theory/arith/arith_static_learner.cpp
+++ b/src/theory/arith/arith_static_learner.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_static_learner.h b/src/theory/arith/arith_static_learner.h
index a6b57411b..d5f432187 100644
--- a/src/theory/arith/arith_static_learner.h
+++ b/src/theory/arith/arith_static_learner.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_utilities.h b/src/theory/arith/arith_utilities.h
index 14c7fcefe..aabc5326d 100644
--- a/src/theory/arith/arith_utilities.h
+++ b/src/theory/arith/arith_utilities.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arithvar.cpp b/src/theory/arith/arithvar.cpp
index 8ac72276d..2eb349984 100644
--- a/src/theory/arith/arithvar.cpp
+++ b/src/theory/arith/arithvar.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arithvar.h b/src/theory/arith/arithvar.h
index cb1fb7b5f..9ab452947 100644
--- a/src/theory/arith/arithvar.h
+++ b/src/theory/arith/arithvar.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arithvar_node_map.h b/src/theory/arith/arithvar_node_map.h
index 0606eb65d..308d63b0c 100644
--- a/src/theory/arith/arithvar_node_map.h
+++ b/src/theory/arith/arithvar_node_map.h
@@ -2,9 +2,9 @@
/*! \file arithvar_node_map.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Dejan Jovanovic
+ ** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/attempt_solution_simplex.cpp b/src/theory/arith/attempt_solution_simplex.cpp
index 025571650..f269847de 100644
--- a/src/theory/arith/attempt_solution_simplex.cpp
+++ b/src/theory/arith/attempt_solution_simplex.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/attempt_solution_simplex.h b/src/theory/arith/attempt_solution_simplex.h
index 7e5b41936..1fd8ee146 100644
--- a/src/theory/arith/attempt_solution_simplex.h
+++ b/src/theory/arith/attempt_solution_simplex.h
@@ -2,9 +2,9 @@
/*! \file attempt_solution_simplex.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Mathias Preiner
+ ** Tim King, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/bound_counts.h b/src/theory/arith/bound_counts.h
index 7debbad13..7bd69190e 100644
--- a/src/theory/arith/bound_counts.h
+++ b/src/theory/arith/bound_counts.h
@@ -2,9 +2,9 @@
/*! \file bound_counts.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Clark Barrett
+ ** Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/callbacks.cpp b/src/theory/arith/callbacks.cpp
index 86240b949..a11dd729b 100644
--- a/src/theory/arith/callbacks.cpp
+++ b/src/theory/arith/callbacks.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/callbacks.h b/src/theory/arith/callbacks.h
index 8b79ff659..ee39c76f9 100644
--- a/src/theory/arith/callbacks.h
+++ b/src/theory/arith/callbacks.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/congruence_manager.cpp b/src/theory/arith/congruence_manager.cpp
index bf251660d..ce45141ef 100644
--- a/src/theory/arith/congruence_manager.cpp
+++ b/src/theory/arith/congruence_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Paul Meng, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/congruence_manager.h b/src/theory/arith/congruence_manager.h
index 11c229399..bccd2e943 100644
--- a/src/theory/arith/congruence_manager.h
+++ b/src/theory/arith/congruence_manager.h
@@ -2,9 +2,9 @@
/*! \file congruence_manager.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Paul Meng, Mathias Preiner
+ ** Tim King, Mathias Preiner, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/constraint.cpp b/src/theory/arith/constraint.cpp
index 297e3de37..c7251d4c4 100644
--- a/src/theory/arith/constraint.cpp
+++ b/src/theory/arith/constraint.cpp
@@ -2,9 +2,9 @@
/*! \file constraint.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King, Alex Ozdemir, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/constraint.h b/src/theory/arith/constraint.h
index 51575bb2f..36a347feb 100644
--- a/src/theory/arith/constraint.h
+++ b/src/theory/arith/constraint.h
@@ -2,9 +2,9 @@
/*! \file constraint.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King, Alex Ozdemir, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/constraint_forward.h b/src/theory/arith/constraint_forward.h
index b08b572be..4be468f80 100644
--- a/src/theory/arith/constraint_forward.h
+++ b/src/theory/arith/constraint_forward.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/cut_log.cpp b/src/theory/arith/cut_log.cpp
index dcdadd76f..e9df7559d 100644
--- a/src/theory/arith/cut_log.cpp
+++ b/src/theory/arith/cut_log.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/cut_log.h b/src/theory/arith/cut_log.h
index 5fd585588..44553a15b 100644
--- a/src/theory/arith/cut_log.h
+++ b/src/theory/arith/cut_log.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/delta_rational.cpp b/src/theory/arith/delta_rational.cpp
index 758f8af4a..35640ac1a 100644
--- a/src/theory/arith/delta_rational.cpp
+++ b/src/theory/arith/delta_rational.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/delta_rational.h b/src/theory/arith/delta_rational.h
index 9a8e4586e..831c631f8 100644
--- a/src/theory/arith/delta_rational.h
+++ b/src/theory/arith/delta_rational.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dio_solver.cpp b/src/theory/arith/dio_solver.cpp
index 718034f62..b30dc515b 100644
--- a/src/theory/arith/dio_solver.cpp
+++ b/src/theory/arith/dio_solver.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dio_solver.h b/src/theory/arith/dio_solver.h
index aeb82a82b..a7842ddb2 100644
--- a/src/theory/arith/dio_solver.h
+++ b/src/theory/arith/dio_solver.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dual_simplex.cpp b/src/theory/arith/dual_simplex.cpp
index c2b95890a..47a196353 100644
--- a/src/theory/arith/dual_simplex.cpp
+++ b/src/theory/arith/dual_simplex.cpp
@@ -2,9 +2,9 @@
/*! \file dual_simplex.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andres Noetzli
+ ** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dual_simplex.h b/src/theory/arith/dual_simplex.h
index 56eaf9a50..ab04bc616 100644
--- a/src/theory/arith/dual_simplex.h
+++ b/src/theory/arith/dual_simplex.h
@@ -2,9 +2,9 @@
/*! \file dual_simplex.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Mathias Preiner
+ ** Tim King, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/error_set.cpp b/src/theory/arith/error_set.cpp
index d5b86143d..80c1e03ec 100644
--- a/src/theory/arith/error_set.cpp
+++ b/src/theory/arith/error_set.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/error_set.h b/src/theory/arith/error_set.h
index 2eb2b60d2..8839739a2 100644
--- a/src/theory/arith/error_set.h
+++ b/src/theory/arith/error_set.h
@@ -2,9 +2,9 @@
/*! \file error_set.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/fc_simplex.cpp b/src/theory/arith/fc_simplex.cpp
index 07c6b1691..827323302 100644
--- a/src/theory/arith/fc_simplex.cpp
+++ b/src/theory/arith/fc_simplex.cpp
@@ -2,9 +2,9 @@
/*! \file fc_simplex.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andres Noetzli
+ ** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/fc_simplex.h b/src/theory/arith/fc_simplex.h
index 0fc646151..cfeef1d26 100644
--- a/src/theory/arith/fc_simplex.h
+++ b/src/theory/arith/fc_simplex.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/infer_bounds.cpp b/src/theory/arith/infer_bounds.cpp
index 501b3507c..5ce617061 100644
--- a/src/theory/arith/infer_bounds.cpp
+++ b/src/theory/arith/infer_bounds.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/infer_bounds.h b/src/theory/arith/infer_bounds.h
index 8a48cb8bc..bce9a07db 100644
--- a/src/theory/arith/infer_bounds.h
+++ b/src/theory/arith/infer_bounds.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/linear_equality.cpp b/src/theory/arith/linear_equality.cpp
index e424c714e..7f729751b 100644
--- a/src/theory/arith/linear_equality.cpp
+++ b/src/theory/arith/linear_equality.cpp
@@ -2,9 +2,9 @@
/*! \file linear_equality.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/linear_equality.h b/src/theory/arith/linear_equality.h
index 531b52c3a..1f5bb9ea4 100644
--- a/src/theory/arith/linear_equality.h
+++ b/src/theory/arith/linear_equality.h
@@ -2,9 +2,9 @@
/*! \file linear_equality.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Mathias Preiner, Clark Barrett
+ ** Tim King, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/matrix.cpp b/src/theory/arith/matrix.cpp
index 5da2ab2f6..c6332fd23 100644
--- a/src/theory/arith/matrix.cpp
+++ b/src/theory/arith/matrix.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/matrix.h b/src/theory/arith/matrix.h
index ef045ea37..02b8dc194 100644
--- a/src/theory/arith/matrix.h
+++ b/src/theory/arith/matrix.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/nonlinear_extension.cpp b/src/theory/arith/nonlinear_extension.cpp
index 929c7808d..29b1cf2fc 100644
--- a/src/theory/arith/nonlinear_extension.cpp
+++ b/src/theory/arith/nonlinear_extension.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -2621,8 +2621,10 @@ void NonlinearExtension::mkPi(){
d_pi_neg = Rewriter::rewrite(NodeManager::currentNM()->mkNode(
MULT, d_pi, NodeManager::currentNM()->mkConst(Rational(-1))));
//initialize bounds
- d_pi_bound[0] = NodeManager::currentNM()->mkConst( Rational(333)/Rational(106) );
- d_pi_bound[1] = NodeManager::currentNM()->mkConst( Rational(355)/Rational(113) );
+ d_pi_bound[0] =
+ NodeManager::currentNM()->mkConst(Rational(103993) / Rational(33102));
+ d_pi_bound[1] =
+ NodeManager::currentNM()->mkConst(Rational(104348) / Rational(33215));
}
}
@@ -4358,31 +4360,21 @@ bool NonlinearExtension::checkTfTangentPlanesFun(Node tf,
{
// compute tangent plane
// Figure 3: T( x )
- Node tplane;
- Node poly_approx_deriv = getDerivative(poly_approx, d_taylor_real_fv);
- Assert(!poly_approx_deriv.isNull());
- poly_approx_deriv = Rewriter::rewrite(poly_approx_deriv);
- Trace("nl-ext-tftp-debug2") << "...derivative of " << poly_approx << " is "
- << poly_approx_deriv << std::endl;
- std::vector<Node> taylor_subs;
- taylor_subs.push_back(c);
- Assert(taylor_vars.size() == taylor_subs.size());
- Node poly_approx_c_deriv = poly_approx_deriv.substitute(taylor_vars.begin(),
- taylor_vars.end(),
- taylor_subs.begin(),
- taylor_subs.end());
- tplane = nm->mkNode(
- PLUS,
- poly_approx_c,
- nm->mkNode(MULT, poly_approx_c_deriv, nm->mkNode(MINUS, tf[0], c)));
+ // We use zero slope tangent planes, since the concavity of the Taylor
+ // approximation cannot be easily established.
+ Node tplane = poly_approx_c;
Node lem = nm->mkNode(concavity == 1 ? GEQ : LEQ, tf, tplane);
std::vector<Node> antec;
+ int mdir = regionToMonotonicityDir(k, region);
for (unsigned i = 0; i < 2; i++)
{
- if (!bounds[i].isNull())
+ // Tangent plane is valid in the interval [c,u) if the slope of the
+ // function matches its concavity, and is valid in (l, c] otherwise.
+ Node use_bound = (mdir == concavity) == (i == 0) ? c : bounds[i];
+ if (!use_bound.isNull())
{
- Node ant = nm->mkNode(i == 0 ? GEQ : LEQ, tf[0], bounds[i]);
+ Node ant = nm->mkNode(i == 0 ? GEQ : LEQ, tf[0], use_bound);
antec.push_back(ant);
}
}
diff --git a/src/theory/arith/nonlinear_extension.h b/src/theory/arith/nonlinear_extension.h
index cb74502d6..043aa0db7 100644
--- a/src/theory/arith/nonlinear_extension.h
+++ b/src/theory/arith/nonlinear_extension.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/normal_form.cpp b/src/theory/arith/normal_form.cpp
index 12bf90f2e..ee298bc66 100644
--- a/src/theory/arith/normal_form.cpp
+++ b/src/theory/arith/normal_form.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/normal_form.h b/src/theory/arith/normal_form.h
index b4d9e9f13..36f8f20ad 100644
--- a/src/theory/arith/normal_form.h
+++ b/src/theory/arith/normal_form.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/partial_model.cpp b/src/theory/arith/partial_model.cpp
index 4364b730a..855b673c5 100644
--- a/src/theory/arith/partial_model.cpp
+++ b/src/theory/arith/partial_model.cpp
@@ -2,9 +2,9 @@
/*! \file partial_model.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/partial_model.h b/src/theory/arith/partial_model.h
index 9e8a51b9f..6bc01f2f2 100644
--- a/src/theory/arith/partial_model.h
+++ b/src/theory/arith/partial_model.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex.cpp b/src/theory/arith/simplex.cpp
index 4ee613f4c..77872fb55 100644
--- a/src/theory/arith/simplex.cpp
+++ b/src/theory/arith/simplex.cpp
@@ -2,9 +2,9 @@
/*! \file simplex.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andres Noetzli, Morgan Deters
+ ** Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex.h b/src/theory/arith/simplex.h
index 477e0c1fe..56a9bc95f 100644
--- a/src/theory/arith/simplex.h
+++ b/src/theory/arith/simplex.h
@@ -2,9 +2,9 @@
/*! \file simplex.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Clark Barrett
+ ** Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex_update.cpp b/src/theory/arith/simplex_update.cpp
index 634d17a55..011e07143 100644
--- a/src/theory/arith/simplex_update.cpp
+++ b/src/theory/arith/simplex_update.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex_update.h b/src/theory/arith/simplex_update.h
index f823be36c..cfd00ac30 100644
--- a/src/theory/arith/simplex_update.h
+++ b/src/theory/arith/simplex_update.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/soi_simplex.cpp b/src/theory/arith/soi_simplex.cpp
index 31301df61..e23273a09 100644
--- a/src/theory/arith/soi_simplex.cpp
+++ b/src/theory/arith/soi_simplex.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/soi_simplex.h b/src/theory/arith/soi_simplex.h
index 68af680d0..6fd8cf7c1 100644
--- a/src/theory/arith/soi_simplex.h
+++ b/src/theory/arith/soi_simplex.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau.cpp b/src/theory/arith/tableau.cpp
index e0f5fc9e3..aa4c3d454 100644
--- a/src/theory/arith/tableau.cpp
+++ b/src/theory/arith/tableau.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau.h b/src/theory/arith/tableau.h
index 338baea7f..3f3bf883a 100644
--- a/src/theory/arith/tableau.h
+++ b/src/theory/arith/tableau.h
@@ -2,9 +2,9 @@
/*! \file tableau.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau_sizes.cpp b/src/theory/arith/tableau_sizes.cpp
index d7434529e..aec7b0384 100644
--- a/src/theory/arith/tableau_sizes.cpp
+++ b/src/theory/arith/tableau_sizes.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau_sizes.h b/src/theory/arith/tableau_sizes.h
index 228ce06b8..95820dc93 100644
--- a/src/theory/arith/tableau_sizes.h
+++ b/src/theory/arith/tableau_sizes.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp
index 9902121d0..6943c5546 100644
--- a/src/theory/arith/theory_arith.cpp
+++ b/src/theory/arith/theory_arith.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Dejan Jovanovic, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith.h b/src/theory/arith/theory_arith.h
index e4b1c5b26..b39ab961f 100644
--- a/src/theory/arith/theory_arith.h
+++ b/src/theory/arith/theory_arith.h
@@ -2,9 +2,9 @@
/*! \file theory_arith.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Dejan Jovanovic
+ ** Tim King, Alex Ozdemir, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_private.cpp b/src/theory/arith/theory_arith_private.cpp
index 48d1b0188..c775a2611 100644
--- a/src/theory/arith/theory_arith_private.cpp
+++ b/src/theory/arith/theory_arith_private.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_private.h b/src/theory/arith/theory_arith_private.h
index 2d8d61736..03cb81785 100644
--- a/src/theory/arith/theory_arith_private.h
+++ b/src/theory/arith/theory_arith_private.h
@@ -2,9 +2,9 @@
/*! \file theory_arith_private.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds, Martin Brain
+ ** Tim King, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_private_forward.h b/src/theory/arith/theory_arith_private_forward.h
index 4bd242037..84dea1b4e 100644
--- a/src/theory/arith/theory_arith_private_forward.h
+++ b/src/theory/arith/theory_arith_private_forward.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_type_rules.h b/src/theory/arith/theory_arith_type_rules.h
index bde1730a2..b75563f76 100644
--- a/src/theory/arith/theory_arith_type_rules.h
+++ b/src/theory/arith/theory_arith_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/type_enumerator.h b/src/theory/arith/type_enumerator.h
index ab0dff020..2a6d55715 100644
--- a/src/theory/arith/type_enumerator.h
+++ b/src/theory/arith/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_info.cpp b/src/theory/arrays/array_info.cpp
index 406ae5329..e92947c7f 100644
--- a/src/theory/arrays/array_info.cpp
+++ b/src/theory/arrays/array_info.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Clark Barrett, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_info.h b/src/theory/arrays/array_info.h
index ed8594ca7..c221569bb 100644
--- a/src/theory/arrays/array_info.h
+++ b/src/theory/arrays/array_info.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Clark Barrett, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_proof_reconstruction.cpp b/src/theory/arrays/array_proof_reconstruction.cpp
index e0f3b03be..c25ce1aba 100644
--- a/src/theory/arrays/array_proof_reconstruction.cpp
+++ b/src/theory/arrays/array_proof_reconstruction.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Guy Katz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_proof_reconstruction.h b/src/theory/arrays/array_proof_reconstruction.h
index 7132b2f3e..3c656de1a 100644
--- a/src/theory/arrays/array_proof_reconstruction.h
+++ b/src/theory/arrays/array_proof_reconstruction.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/static_fact_manager.cpp b/src/theory/arrays/static_fact_manager.cpp
index d7758d00c..63dfae173 100644
--- a/src/theory/arrays/static_fact_manager.cpp
+++ b/src/theory/arrays/static_fact_manager.cpp
@@ -2,9 +2,9 @@
/*! \file static_fact_manager.cpp
** \verbatim
** Top contributors (to current version):
- ** Clark Barrett, Tim King
+ ** Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/static_fact_manager.h b/src/theory/arrays/static_fact_manager.h
index 1f3c3d1df..135e46790 100644
--- a/src/theory/arrays/static_fact_manager.h
+++ b/src/theory/arrays/static_fact_manager.h
@@ -2,9 +2,9 @@
/*! \file static_fact_manager.h
** \verbatim
** Top contributors (to current version):
- ** Clark Barrett, Tim King, Morgan Deters
+ ** Clark Barrett, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
index c21fda430..9f06950bd 100644
--- a/src/theory/arrays/theory_arrays.cpp
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Morgan Deters, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays.h b/src/theory/arrays/theory_arrays.h
index e0f187e33..51e95844f 100644
--- a/src/theory/arrays/theory_arrays.h
+++ b/src/theory/arrays/theory_arrays.h
@@ -2,9 +2,9 @@
/*! \file theory_arrays.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Clark Barrett, Tim King
+ ** Morgan Deters, Clark Barrett, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays_rewriter.cpp b/src/theory/arrays/theory_arrays_rewriter.cpp
index eaf7b5ff9..43c6153c7 100644
--- a/src/theory/arrays/theory_arrays_rewriter.cpp
+++ b/src/theory/arrays/theory_arrays_rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays_rewriter.h b/src/theory/arrays/theory_arrays_rewriter.h
index d17c4d4ab..21cc56dbc 100644
--- a/src/theory/arrays/theory_arrays_rewriter.h
+++ b/src/theory/arrays/theory_arrays_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays_type_rules.h b/src/theory/arrays/theory_arrays_type_rules.h
index 171a03555..e789b8445 100644
--- a/src/theory/arrays/theory_arrays_type_rules.h
+++ b/src/theory/arrays/theory_arrays_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Clark Barrett, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/type_enumerator.h b/src/theory/arrays/type_enumerator.h
index f9a88f2ae..2e09763e4 100644
--- a/src/theory/arrays/type_enumerator.h
+++ b/src/theory/arrays/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Clark Barrett, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/union_find.cpp b/src/theory/arrays/union_find.cpp
index f919f9260..af2cf3c3f 100644
--- a/src/theory/arrays/union_find.cpp
+++ b/src/theory/arrays/union_find.cpp
@@ -2,9 +2,9 @@
/*! \file union_find.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/union_find.h b/src/theory/arrays/union_find.h
index 617c9a1ba..5b552c7f8 100644
--- a/src/theory/arrays/union_find.h
+++ b/src/theory/arrays/union_find.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/assertion.cpp b/src/theory/assertion.cpp
index bef29131e..4f428e85c 100644
--- a/src/theory/assertion.cpp
+++ b/src/theory/assertion.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/assertion.h b/src/theory/assertion.h
index c9748f8c8..d68ff87aa 100644
--- a/src/theory/assertion.h
+++ b/src/theory/assertion.h
@@ -2,9 +2,9 @@
/*! \file assertion.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/atom_requests.cpp b/src/theory/atom_requests.cpp
index 85c7907bb..6054ac603 100644
--- a/src/theory/atom_requests.cpp
+++ b/src/theory/atom_requests.cpp
@@ -2,9 +2,9 @@
/*! \file atom_requests.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/atom_requests.h b/src/theory/atom_requests.h
index 678a0f3f0..6a3ffe5e9 100644
--- a/src/theory/atom_requests.h
+++ b/src/theory/atom_requests.h
@@ -2,9 +2,9 @@
/*! \file atom_requests.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/circuit_propagator.cpp b/src/theory/booleans/circuit_propagator.cpp
index 2548cf5c3..150403b67 100644
--- a/src/theory/booleans/circuit_propagator.cpp
+++ b/src/theory/booleans/circuit_propagator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/circuit_propagator.h b/src/theory/booleans/circuit_propagator.h
index 077a019fd..c5e1cc022 100644
--- a/src/theory/booleans/circuit_propagator.h
+++ b/src/theory/booleans/circuit_propagator.h
@@ -2,9 +2,9 @@
/*! \file circuit_propagator.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Dejan Jovanovic, Clark Barrett
+ ** Aina Niemetz, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool.cpp b/src/theory/booleans/theory_bool.cpp
index d025c4966..8fbe83951 100644
--- a/src/theory/booleans/theory_bool.cpp
+++ b/src/theory/booleans/theory_bool.cpp
@@ -2,9 +2,9 @@
/*! \file theory_bool.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Dejan Jovanovic
+ ** Andrew Reynolds, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool.h b/src/theory/booleans/theory_bool.h
index b81ed50f1..44abdf87d 100644
--- a/src/theory/booleans/theory_bool.h
+++ b/src/theory/booleans/theory_bool.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_rewriter.cpp b/src/theory/booleans/theory_bool_rewriter.cpp
index 28f86da7a..d071e4e3d 100644
--- a/src/theory/booleans/theory_bool_rewriter.cpp
+++ b/src/theory/booleans/theory_bool_rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Dejan Jovanovic, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_rewriter.h b/src/theory/booleans/theory_bool_rewriter.h
index 11c7b16a2..4aad1e63f 100644
--- a/src/theory/booleans/theory_bool_rewriter.h
+++ b/src/theory/booleans/theory_bool_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_type_rules.h b/src/theory/booleans/theory_bool_type_rules.h
index 7498b7de4..427a1addb 100644
--- a/src/theory/booleans/theory_bool_type_rules.h
+++ b/src/theory/booleans/theory_bool_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/type_enumerator.h b/src/theory/booleans/type_enumerator.h
index 2e00f22ce..9628ee6e2 100644
--- a/src/theory/booleans/type_enumerator.h
+++ b/src/theory/booleans/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin.cpp b/src/theory/builtin/theory_builtin.cpp
index ec22eb3f6..b819b883d 100644
--- a/src/theory/builtin/theory_builtin.cpp
+++ b/src/theory/builtin/theory_builtin.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin.h b/src/theory/builtin/theory_builtin.h
index c987941f6..3b2a57397 100644
--- a/src/theory/builtin/theory_builtin.h
+++ b/src/theory/builtin/theory_builtin.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_rewriter.cpp b/src/theory/builtin/theory_builtin_rewriter.cpp
index 4c14ec177..5b893ffc6 100644
--- a/src/theory/builtin/theory_builtin_rewriter.cpp
+++ b/src/theory/builtin/theory_builtin_rewriter.cpp
@@ -2,9 +2,9 @@
/*! \file theory_builtin_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Dejan Jovanovic, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_rewriter.h b/src/theory/builtin/theory_builtin_rewriter.h
index 8f45cc0fd..2fe91e8cb 100644
--- a/src/theory/builtin/theory_builtin_rewriter.h
+++ b/src/theory/builtin/theory_builtin_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_type_rules.h b/src/theory/builtin/theory_builtin_type_rules.h
index c471caf86..adeec48a9 100644
--- a/src/theory/builtin/theory_builtin_type_rules.h
+++ b/src/theory/builtin/theory_builtin_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/type_enumerator.cpp b/src/theory/builtin/type_enumerator.cpp
index 7a088bd8d..10c6d16dc 100644
--- a/src/theory/builtin/type_enumerator.cpp
+++ b/src/theory/builtin/type_enumerator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/type_enumerator.h b/src/theory/builtin/type_enumerator.h
index bea3b7c18..63c34161c 100644
--- a/src/theory/builtin/type_enumerator.h
+++ b/src/theory/builtin/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/abstraction.cpp b/src/theory/bv/abstraction.cpp
index 081590810..16f77f925 100644
--- a/src/theory/bv/abstraction.cpp
+++ b/src/theory/bv/abstraction.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/abstraction.h b/src/theory/bv/abstraction.h
index a6bc5f12f..09e3ce10c 100644
--- a/src/theory/bv/abstraction.h
+++ b/src/theory/bv/abstraction.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/aig_bitblaster.cpp b/src/theory/bv/bitblast/aig_bitblaster.cpp
index b69704dfb..3ed926f84 100644
--- a/src/theory/bv/bitblast/aig_bitblaster.cpp
+++ b/src/theory/bv/bitblast/aig_bitblaster.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/aig_bitblaster.h b/src/theory/bv/bitblast/aig_bitblaster.h
index 3b48928ca..cc821d333 100644
--- a/src/theory/bv/bitblast/aig_bitblaster.h
+++ b/src/theory/bv/bitblast/aig_bitblaster.h
@@ -2,9 +2,9 @@
/*! \file aig_bitblaster.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/bitblast_strategies_template.h b/src/theory/bv/bitblast/bitblast_strategies_template.h
index c081b87cf..6b8cafb7b 100644
--- a/src/theory/bv/bitblast/bitblast_strategies_template.h
+++ b/src/theory/bv/bitblast/bitblast_strategies_template.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/bitblast_utils.h b/src/theory/bv/bitblast/bitblast_utils.h
index 731ffb3dd..a4c4261d2 100644
--- a/src/theory/bv/bitblast/bitblast_utils.h
+++ b/src/theory/bv/bitblast/bitblast_utils.h
@@ -2,9 +2,9 @@
/*! \file bitblast_utils.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner, Andrew Reynolds
+ ** Liana Hadarean, Dejan Jovanovic, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/bitblaster.h b/src/theory/bv/bitblast/bitblaster.h
index b28ff3e2a..f29882b0d 100644
--- a/src/theory/bv/bitblast/bitblaster.h
+++ b/src/theory/bv/bitblast/bitblaster.h
@@ -2,9 +2,9 @@
/*! \file bitblaster.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Alex Ozdemir
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/eager_bitblaster.cpp b/src/theory/bv/bitblast/eager_bitblaster.cpp
index 1e557bb64..77ff6f885 100644
--- a/src/theory/bv/bitblast/eager_bitblaster.cpp
+++ b/src/theory/bv/bitblast/eager_bitblaster.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/eager_bitblaster.h b/src/theory/bv/bitblast/eager_bitblaster.h
index 1c183b509..296014b76 100644
--- a/src/theory/bv/bitblast/eager_bitblaster.h
+++ b/src/theory/bv/bitblast/eager_bitblaster.h
@@ -2,9 +2,9 @@
/*! \file eager_bitblaster.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner, Andres Noetzli
+ ** Mathias Preiner, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/lazy_bitblaster.cpp b/src/theory/bv/bitblast/lazy_bitblaster.cpp
index 3b44bfddf..845fd399e 100644
--- a/src/theory/bv/bitblast/lazy_bitblaster.cpp
+++ b/src/theory/bv/bitblast/lazy_bitblaster.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast/lazy_bitblaster.h b/src/theory/bv/bitblast/lazy_bitblaster.h
index 8dbf7807d..920b669a6 100644
--- a/src/theory/bv/bitblast/lazy_bitblaster.h
+++ b/src/theory/bv/bitblast/lazy_bitblaster.h
@@ -2,9 +2,9 @@
/*! \file lazy_bitblaster.h
** \verbatim
** Top contributors (to current version):
- ** Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_eager_solver.cpp b/src/theory/bv/bv_eager_solver.cpp
index 336529dfd..dd0458a70 100644
--- a/src/theory/bv/bv_eager_solver.cpp
+++ b/src/theory/bv/bv_eager_solver.cpp
@@ -2,9 +2,9 @@
/*! \file bv_eager_solver.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner, Tim King
+ ** Mathias Preiner, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_eager_solver.h b/src/theory/bv/bv_eager_solver.h
index 0b518ca4a..5322cca9a 100644
--- a/src/theory/bv/bv_eager_solver.h
+++ b/src/theory/bv/bv_eager_solver.h
@@ -2,9 +2,9 @@
/*! \file bv_eager_solver.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Tim King, Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_inequality_graph.cpp b/src/theory/bv/bv_inequality_graph.cpp
index 3d1ce4f27..89d5e1883 100644
--- a/src/theory/bv/bv_inequality_graph.cpp
+++ b/src/theory/bv/bv_inequality_graph.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_inequality_graph.h b/src/theory/bv/bv_inequality_graph.h
index e1f2fbf7c..a3a2f0445 100644
--- a/src/theory/bv/bv_inequality_graph.h
+++ b/src/theory/bv/bv_inequality_graph.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_quick_check.cpp b/src/theory/bv/bv_quick_check.cpp
index d81300b84..0183dd6e7 100644
--- a/src/theory/bv/bv_quick_check.cpp
+++ b/src/theory/bv/bv_quick_check.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_quick_check.h b/src/theory/bv/bv_quick_check.h
index b2c31edcb..c1ac95946 100644
--- a/src/theory/bv/bv_quick_check.h
+++ b/src/theory/bv/bv_quick_check.h
@@ -2,9 +2,9 @@
/*! \file bv_quick_check.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Morgan Deters, Tim King
+ ** Liana Hadarean, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory.h b/src/theory/bv/bv_subtheory.h
index e2b649841..84a6f1b35 100644
--- a/src/theory/bv/bv_subtheory.h
+++ b/src/theory/bv/bv_subtheory.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_algebraic.cpp b/src/theory/bv/bv_subtheory_algebraic.cpp
index df7ba29b5..1f4aef42d 100644
--- a/src/theory/bv/bv_subtheory_algebraic.cpp
+++ b/src/theory/bv/bv_subtheory_algebraic.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_algebraic.h b/src/theory/bv/bv_subtheory_algebraic.h
index 42f5faa7c..7f38b1563 100644
--- a/src/theory/bv/bv_subtheory_algebraic.h
+++ b/src/theory/bv/bv_subtheory_algebraic.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_bitblast.cpp b/src/theory/bv/bv_subtheory_bitblast.cpp
index ceb02af40..94dfdee14 100644
--- a/src/theory/bv/bv_subtheory_bitblast.cpp
+++ b/src/theory/bv/bv_subtheory_bitblast.cpp
@@ -2,9 +2,9 @@
/*! \file bv_subtheory_bitblast.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Aina Niemetz
+ ** Liana Hadarean, Aina Niemetz, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_bitblast.h b/src/theory/bv/bv_subtheory_bitblast.h
index e028dbbdc..0b0a9521b 100644
--- a/src/theory/bv/bv_subtheory_bitblast.h
+++ b/src/theory/bv/bv_subtheory_bitblast.h
@@ -2,9 +2,9 @@
/*! \file bv_subtheory_bitblast.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_core.cpp b/src/theory/bv/bv_subtheory_core.cpp
index 9285141a0..f809c38c0 100644
--- a/src/theory/bv/bv_subtheory_core.cpp
+++ b/src/theory/bv/bv_subtheory_core.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_core.h b/src/theory/bv/bv_subtheory_core.h
index ce570d531..e2026d4a5 100644
--- a/src/theory/bv/bv_subtheory_core.h
+++ b/src/theory/bv/bv_subtheory_core.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_inequality.cpp b/src/theory/bv/bv_subtheory_inequality.cpp
index 6fc167793..b527eada4 100644
--- a/src/theory/bv/bv_subtheory_inequality.cpp
+++ b/src/theory/bv/bv_subtheory_inequality.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_inequality.h b/src/theory/bv/bv_subtheory_inequality.h
index 1bdec8386..b64b229f9 100644
--- a/src/theory/bv/bv_subtheory_inequality.h
+++ b/src/theory/bv/bv_subtheory_inequality.h
@@ -2,9 +2,9 @@
/*! \file bv_subtheory_inequality.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Morgan Deters, Mathias Preiner
+ ** Liana Hadarean, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/slicer.cpp b/src/theory/bv/slicer.cpp
index 4c4b7c723..e633792d8 100644
--- a/src/theory/bv/slicer.cpp
+++ b/src/theory/bv/slicer.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/slicer.h b/src/theory/bv/slicer.h
index e6ddfb93c..ec715d2f5 100644
--- a/src/theory/bv/slicer.h
+++ b/src/theory/bv/slicer.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv.cpp b/src/theory/bv/theory_bv.cpp
index 04a6cf52c..b7e52205f 100644
--- a/src/theory/bv/theory_bv.cpp
+++ b/src/theory/bv/theory_bv.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Andrew Reynolds, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv.h b/src/theory/bv/theory_bv.h
index 3d151cfb1..55aad0ba7 100644
--- a/src/theory/bv/theory_bv.h
+++ b/src/theory/bv/theory_bv.h
@@ -2,9 +2,9 @@
/*! \file theory_bv.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Morgan Deters, Tim King
+ ** Liana Hadarean, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules.h b/src/theory/bv/theory_bv_rewrite_rules.h
index c6cd9eb1c..eefda524e 100644
--- a/src/theory/bv/theory_bv_rewrite_rules.h
+++ b/src/theory/bv/theory_bv_rewrite_rules.h
@@ -2,9 +2,9 @@
/*! \file theory_bv_rewrite_rules.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Clark Barrett
+ ** Liana Hadarean, Dejan Jovanovic, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
index 1eb813116..22a12cc10 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Clark Barrett, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_core.h b/src/theory/bv/theory_bv_rewrite_rules_core.h
index 42bf09d92..4a66aa847 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_core.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_core.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Liana Hadarean, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_normalization.h b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
index 1293f8311..cada3d30c 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_normalization.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
index 575a40aff..80974b2a5 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Aina Niemetz, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_simplification.h b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
index c58d69f6f..0e42886b5 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_simplification.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
@@ -2,9 +2,9 @@
/*! \file theory_bv_rewrite_rules_simplification.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Mathias Preiner, Aina Niemetz
+ ** Liana Hadarean, Aina Niemetz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewriter.cpp b/src/theory/bv/theory_bv_rewriter.cpp
index 0c6f1d37a..0f7629c5f 100644
--- a/src/theory/bv/theory_bv_rewriter.cpp
+++ b/src/theory/bv/theory_bv_rewriter.cpp
@@ -2,9 +2,9 @@
/*! \file theory_bv_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** Liana Hadarean, Aina Niemetz, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -173,12 +173,19 @@ RewriteResponse TheoryBVRewriter::RewriteITEBv(TNode node, bool prerewrite)
RewriteRule<BvIteConstCond>,
RewriteRule<BvIteEqualChildren>,
RewriteRule<BvIteConstChildren>,
- RewriteRule<BvIteEqualCond>,
- RewriteRule<BvIteMergeThenIf>,
+ RewriteRule<BvIteEqualCond>>::apply(node);
+ if (resultNode != node)
+ {
+ return RewriteResponse(REWRITE_AGAIN, resultNode);
+ }
+
+ resultNode =
+ LinearRewriteStrategy<RewriteRule<BvIteMergeThenIf>,
RewriteRule<BvIteMergeElseIf>,
RewriteRule<BvIteMergeThenElse>,
RewriteRule<BvIteMergeElseElse>>::apply(node);
- return RewriteResponse(REWRITE_DONE, resultNode);
+ return RewriteResponse(resultNode == node ? REWRITE_DONE : REWRITE_AGAIN_FULL,
+ resultNode);
}
RewriteResponse TheoryBVRewriter::RewriteNot(TNode node, bool prerewrite){
diff --git a/src/theory/bv/theory_bv_rewriter.h b/src/theory/bv/theory_bv_rewriter.h
index aa771fc94..8009daf3c 100644
--- a/src/theory/bv/theory_bv_rewriter.h
+++ b/src/theory/bv/theory_bv_rewriter.h
@@ -2,9 +2,9 @@
/*! \file theory_bv_rewriter.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Dejan Jovanovic, Morgan Deters
+ ** Liana Hadarean, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_type_rules.h b/src/theory/bv/theory_bv_type_rules.h
index 616a03f6b..79c69b9f0 100644
--- a/src/theory/bv/theory_bv_type_rules.h
+++ b/src/theory/bv/theory_bv_type_rules.h
@@ -2,9 +2,9 @@
/*! \file theory_bv_type_rules.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Dejan Jovanovic, Morgan Deters
+ ** Aina Niemetz, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -348,7 +348,7 @@ class BitVectorRotateLeftOpTypeRule
TNode n,
bool check)
{
- Assert(n.getKind() == kind::BITVECTOR_ROTATE_LEFT);
+ Assert(n.getKind() == kind::BITVECTOR_ROTATE_LEFT_OP);
return nodeManager->builtinOperatorType();
}
}; /* class BitVectorRotateLeftOpTypeRule */
@@ -360,7 +360,7 @@ class BitVectorRotateRightOpTypeRule
TNode n,
bool check)
{
- Assert(n.getKind() == kind::BITVECTOR_ROTATE_RIGHT);
+ Assert(n.getKind() == kind::BITVECTOR_ROTATE_RIGHT_OP);
return nodeManager->builtinOperatorType();
}
}; /* class BitVectorRotateRightOpTypeRule */
diff --git a/src/theory/bv/theory_bv_utils.cpp b/src/theory/bv/theory_bv_utils.cpp
index 9ccaa58e9..f1cb197ab 100644
--- a/src/theory/bv/theory_bv_utils.cpp
+++ b/src/theory/bv/theory_bv_utils.cpp
@@ -2,9 +2,9 @@
/*! \file theory_bv_utils.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Tim King, Mathias Preiner
+ ** Aina Niemetz, Liana Hadarean, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_utils.h b/src/theory/bv/theory_bv_utils.h
index 2ece472e4..975796719 100644
--- a/src/theory/bv/theory_bv_utils.h
+++ b/src/theory/bv/theory_bv_utils.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/type_enumerator.h b/src/theory/bv/type_enumerator.h
index fdf7dfbd3..0bb67be42 100644
--- a/src/theory/bv/type_enumerator.h
+++ b/src/theory/bv/type_enumerator.h
@@ -2,9 +2,9 @@
/*! \file type_enumerator.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Mathias Preiner
+ ** Morgan Deters, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/care_graph.h b/src/theory/care_graph.h
index d81cd8389..12e63aa26 100644
--- a/src/theory/care_graph.h
+++ b/src/theory/care_graph.h
@@ -2,9 +2,9 @@
/*! \file care_graph.h
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Dejan Jovanovic, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/datatypes_rewriter.cpp b/src/theory/datatypes/datatypes_rewriter.cpp
index a2458e2eb..5d3a92cdc 100644
--- a/src/theory/datatypes/datatypes_rewriter.cpp
+++ b/src/theory/datatypes/datatypes_rewriter.cpp
@@ -2,9 +2,9 @@
/*! \file datatypes_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -32,7 +32,7 @@ RewriteResponse DatatypesRewriter::postRewrite(TNode in)
{
return rewriteConstructor(in);
}
- else if (k == kind::APPLY_SELECTOR_TOTAL)
+ else if (k == kind::APPLY_SELECTOR_TOTAL || k == kind::APPLY_SELECTOR)
{
return rewriteSelector(in);
}
@@ -331,6 +331,7 @@ RewriteResponse DatatypesRewriter::rewriteConstructor(TNode in)
RewriteResponse DatatypesRewriter::rewriteSelector(TNode in)
{
+ Kind k = in.getKind();
if (in[0].getKind() == kind::APPLY_CONSTRUCTOR)
{
// Have to be careful not to rewrite well-typed expressions
@@ -338,17 +339,41 @@ RewriteResponse DatatypesRewriter::rewriteSelector(TNode in)
// e.g. "pred(zero)".
TypeNode tn = in.getType();
TypeNode argType = in[0].getType();
- TNode selector = in.getOperator();
+ Expr selector = in.getOperator().toExpr();
TNode constructor = in[0].getOperator();
size_t constructorIndex = indexOf(constructor);
- const Datatype& dt = Datatype::datatypeOf(selector.toExpr());
+ const Datatype& dt = Datatype::datatypeOf(selector);
const DatatypeConstructor& c = dt[constructorIndex];
Trace("datatypes-rewrite-debug") << "Rewriting collapsable selector : "
<< in;
Trace("datatypes-rewrite-debug") << ", cindex = " << constructorIndex
<< ", selector is " << selector
<< std::endl;
- int selectorIndex = c.getSelectorIndexInternal(selector.toExpr());
+ // The argument that the selector extracts, or -1 if the selector is
+ // is wrongly applied.
+ int selectorIndex = -1;
+ if (k == kind::APPLY_SELECTOR_TOTAL)
+ {
+ // The argument index of internal selectors is obtained by
+ // getSelectorIndexInternal.
+ selectorIndex = c.getSelectorIndexInternal(selector);
+ }
+ else
+ {
+ // The argument index of external selectors (applications of
+ // APPLY_SELECTOR) is given by an attribute and obtained via indexOf below
+ // The argument is only valid if it is the proper constructor.
+ selectorIndex = Datatype::indexOf(selector);
+ if (selectorIndex < 0
+ || selectorIndex >= static_cast<int>(c.getNumArgs()))
+ {
+ selectorIndex = -1;
+ }
+ else if (c[selectorIndex].getSelector() != selector)
+ {
+ selectorIndex = -1;
+ }
+ }
Trace("datatypes-rewrite-debug") << "Internal selector index is "
<< selectorIndex << std::endl;
if (selectorIndex >= 0)
@@ -374,7 +399,7 @@ RewriteResponse DatatypesRewriter::rewriteSelector(TNode in)
return RewriteResponse(REWRITE_DONE, in[0][selectorIndex]);
}
}
- else
+ else if (k == kind::APPLY_SELECTOR_TOTAL)
{
Node gt;
bool useTe = true;
diff --git a/src/theory/datatypes/datatypes_rewriter.h b/src/theory/datatypes/datatypes_rewriter.h
index 2eeecbb0e..a6103a8c5 100644
--- a/src/theory/datatypes/datatypes_rewriter.h
+++ b/src/theory/datatypes/datatypes_rewriter.h
@@ -2,9 +2,9 @@
/*! \file datatypes_rewriter.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/datatypes_sygus.cpp b/src/theory/datatypes/datatypes_sygus.cpp
index cb2968bd5..ea3bb5f72 100644
--- a/src/theory/datatypes/datatypes_sygus.cpp
+++ b/src/theory/datatypes/datatypes_sygus.cpp
@@ -2,9 +2,9 @@
/*! \file datatypes_sygus.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/datatypes_sygus.h b/src/theory/datatypes/datatypes_sygus.h
index 6cf1d7d37..b10ec169b 100644
--- a/src/theory/datatypes/datatypes_sygus.h
+++ b/src/theory/datatypes/datatypes_sygus.h
@@ -2,9 +2,9 @@
/*! \file datatypes_sygus.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Andres Noetzli
+ ** Andrew Reynolds, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/sygus_simple_sym.cpp b/src/theory/datatypes/sygus_simple_sym.cpp
index a35ab2a03..fb8bd7515 100644
--- a/src/theory/datatypes/sygus_simple_sym.cpp
+++ b/src/theory/datatypes/sygus_simple_sym.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_simple_sym.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/sygus_simple_sym.h b/src/theory/datatypes/sygus_simple_sym.h
index 7fb7f4653..0a4ed0c6e 100644
--- a/src/theory/datatypes/sygus_simple_sym.h
+++ b/src/theory/datatypes/sygus_simple_sym.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/theory_datatypes.cpp b/src/theory/datatypes/theory_datatypes.cpp
index 5ed623190..609cdaf6e 100644
--- a/src/theory/datatypes/theory_datatypes.cpp
+++ b/src/theory/datatypes/theory_datatypes.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -552,100 +552,130 @@ void TheoryDatatypes::finishInit() {
}
Node TheoryDatatypes::expandDefinition(LogicRequest &logicRequest, Node n) {
- switch( n.getKind() ){
- case kind::APPLY_SELECTOR: {
- Trace("dt-expand") << "Dt Expand definition : " << n << std::endl;
- Node selector = n.getOperator();
- Expr selectorExpr = selector.toExpr();
- // APPLY_SELECTOR always applies to an external selector, cindexOf is legal here
- size_t cindex = Datatype::cindexOf(selectorExpr);
- const Datatype& dt = Datatype::datatypeOf(selectorExpr);
- const DatatypeConstructor& c = dt[cindex];
- Node selector_use;
- TypeNode ndt = n[0].getType();
- if( options::dtSharedSelectors() ){
- size_t selectorIndex = DatatypesRewriter::indexOf(selector);
- Trace("dt-expand") << "...selector index = " << selectorIndex << std::endl;
- Assert( selectorIndex<c.getNumArgs() );
- selector_use = Node::fromExpr( c.getSelectorInternal( ndt.toType(), selectorIndex ) );
- }else{
- selector_use = selector;
- }
- Node sel = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, selector_use, n[0] );
- if( options::dtRewriteErrorSel() ){
- return sel;
- }else{
- Expr tester = c.getTester();
- Node tst = NodeManager::currentNM()->mkNode( kind::APPLY_TESTER, Node::fromExpr( tester ), n[0] );
- tst = Rewriter::rewrite( tst );
- Node n_ret;
- if( tst==d_true ){
- n_ret = sel;
+ NodeManager* nm = NodeManager::currentNM();
+ switch (n.getKind())
+ {
+ case kind::APPLY_SELECTOR:
+ {
+ Trace("dt-expand") << "Dt Expand definition : " << n << std::endl;
+ Node selector = n.getOperator();
+ Expr selectorExpr = selector.toExpr();
+ // APPLY_SELECTOR always applies to an external selector, cindexOf is
+ // legal here
+ size_t cindex = Datatype::cindexOf(selectorExpr);
+ const Datatype& dt = Datatype::datatypeOf(selectorExpr);
+ const DatatypeConstructor& c = dt[cindex];
+ Node selector_use;
+ TypeNode ndt = n[0].getType();
+ if (options::dtSharedSelectors())
+ {
+ size_t selectorIndex = DatatypesRewriter::indexOf(selector);
+ Trace("dt-expand") << "...selector index = " << selectorIndex
+ << std::endl;
+ Assert(selectorIndex < c.getNumArgs());
+ selector_use =
+ Node::fromExpr(c.getSelectorInternal(ndt.toType(), selectorIndex));
}else{
- mkExpDefSkolem( selector, ndt, n.getType() );
- Node sk = NodeManager::currentNM()->mkNode( kind::APPLY_UF, d_exp_def_skolem[ndt][ selector ], n[0] );
- if( tst==NodeManager::currentNM()->mkConst( false ) ){
- n_ret = sk;
+ selector_use = selector;
+ }
+ Node sel = nm->mkNode(kind::APPLY_SELECTOR_TOTAL, selector_use, n[0]);
+ if (options::dtRewriteErrorSel())
+ {
+ return sel;
+ }
+ else
+ {
+ Expr tester = c.getTester();
+ Node tst = nm->mkNode(kind::APPLY_TESTER, Node::fromExpr(tester), n[0]);
+ tst = Rewriter::rewrite(tst);
+ Node n_ret;
+ if (tst == d_true)
+ {
+ n_ret = sel;
}else{
- n_ret = NodeManager::currentNM()->mkNode( kind::ITE, tst, sel, sk );
+ mkExpDefSkolem(selector, ndt, n.getType());
+ Node sk =
+ nm->mkNode(kind::APPLY_UF, d_exp_def_skolem[ndt][selector], n[0]);
+ if (tst == nm->mkConst(false))
+ {
+ n_ret = sk;
+ }
+ else
+ {
+ n_ret = nm->mkNode(kind::ITE, tst, sel, sk);
+ }
}
+ // n_ret = Rewriter::rewrite( n_ret );
+ Trace("dt-expand") << "Expand def : " << n << " to " << n_ret
+ << std::endl;
+ return n_ret;
}
- //n_ret = Rewriter::rewrite( n_ret );
- Trace("dt-expand") << "Expand def : " << n << " to " << n_ret << std::endl;
- return n_ret;
}
- }
break;
- default:
- return n;
+ case TUPLE_UPDATE:
+ case RECORD_UPDATE:
+ {
+ TypeNode t = n.getType();
+ Assert(t.isDatatype());
+ const Datatype& dt = DatatypeType(t.toType()).getDatatype();
+ NodeBuilder<> b(APPLY_CONSTRUCTOR);
+ b << Node::fromExpr(dt[0].getConstructor());
+ size_t size, updateIndex;
+ if (n.getKind() == TUPLE_UPDATE)
+ {
+ Assert(t.isTuple());
+ size = t.getTupleLength();
+ updateIndex = n.getOperator().getConst<TupleUpdate>().getIndex();
+ }
+ else
+ {
+ Assert(t.isRecord());
+ const Record& record = t.getRecord();
+ size = record.getNumFields();
+ updateIndex = record.getIndex(
+ n.getOperator().getConst<RecordUpdate>().getField());
+ }
+ Debug("tuprec") << "expr is " << n << std::endl;
+ Debug("tuprec") << "updateIndex is " << updateIndex << std::endl;
+ Debug("tuprec") << "t is " << t << std::endl;
+ Debug("tuprec") << "t has arity " << size << std::endl;
+ for (size_t i = 0; i < size; ++i)
+ {
+ if (i == updateIndex)
+ {
+ b << n[1];
+ Debug("tuprec") << "arg " << i << " gets updated to " << n[1]
+ << std::endl;
+ }
+ else
+ {
+ b << nm->mkNode(
+ APPLY_SELECTOR_TOTAL,
+ Node::fromExpr(dt[0].getSelectorInternal(t.toType(), i)),
+ n[0]);
+ Debug("tuprec") << "arg " << i << " copies "
+ << b[b.getNumChildren() - 1] << std::endl;
+ }
+ }
+ Node n_ret = b;
+ Debug("tuprec") << "return " << n_ret << std::endl;
+ return n_ret;
+ }
break;
+ default: return n; break;
}
Unreachable();
}
-void TheoryDatatypes::presolve() {
+void TheoryDatatypes::presolve()
+{
Debug("datatypes") << "TheoryDatatypes::presolve()" << endl;
}
-Node TheoryDatatypes::ppRewrite(TNode in) {
+Node TheoryDatatypes::ppRewrite(TNode in)
+{
Debug("tuprec") << "TheoryDatatypes::ppRewrite(" << in << ")" << endl;
- TypeNode t = in.getType();
-
- if(in.getKind() == kind::TUPLE_UPDATE || in.getKind() == kind::RECORD_UPDATE) {
- Assert( t.isDatatype() );
- const Datatype& dt = DatatypeType(t.toType()).getDatatype();
- NodeBuilder<> b(kind::APPLY_CONSTRUCTOR);
- b << Node::fromExpr(dt[0].getConstructor());
- size_t size, updateIndex;
- if(in.getKind() == kind::TUPLE_UPDATE) {
- Assert( t.isTuple() );
- size = t.getTupleLength();
- updateIndex = in.getOperator().getConst<TupleUpdate>().getIndex();
- } else { // kind::RECORD_UPDATE
- Assert( t.isRecord() );
- const Record& record = t.getRecord();
- size = record.getNumFields();
- updateIndex = record.getIndex(in.getOperator().getConst<RecordUpdate>().getField());
- }
- Debug("tuprec") << "expr is " << in << std::endl;
- Debug("tuprec") << "updateIndex is " << updateIndex << std::endl;
- Debug("tuprec") << "t is " << t << std::endl;
- Debug("tuprec") << "t has arity " << size << std::endl;
- for(size_t i = 0; i < size; ++i) {
- if(i == updateIndex) {
- b << in[1];
- Debug("tuprec") << "arg " << i << " gets updated to " << in[1] << std::endl;
- } else {
- b << NodeManager::currentNM()->mkNode(kind::APPLY_SELECTOR_TOTAL, Node::fromExpr(dt[0].getSelectorInternal( t.toType(), i )), in[0]);
- Debug("tuprec") << "arg " << i << " copies " << b[b.getNumChildren() - 1] << std::endl;
- }
- }
- Debug("tuprec") << "builder says " << b << std::endl;
- Node n = b;
- return n;
- }
-
if( in.getKind()==EQUAL ){
Node nn;
std::vector< Node > rew;
diff --git a/src/theory/datatypes/theory_datatypes.h b/src/theory/datatypes/theory_datatypes.h
index a7b40e282..e5d037b38 100644
--- a/src/theory/datatypes/theory_datatypes.h
+++ b/src/theory/datatypes/theory_datatypes.h
@@ -2,9 +2,9 @@
/*! \file theory_datatypes.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/theory_datatypes_type_rules.h b/src/theory/datatypes/theory_datatypes_type_rules.h
index 8a5849010..6f7635209 100644
--- a/src/theory/datatypes/theory_datatypes_type_rules.h
+++ b/src/theory/datatypes/theory_datatypes_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/type_enumerator.cpp b/src/theory/datatypes/type_enumerator.cpp
index afe6e182f..609106b46 100644
--- a/src/theory/datatypes/type_enumerator.cpp
+++ b/src/theory/datatypes/type_enumerator.cpp
@@ -2,9 +2,9 @@
/*! \file type_enumerator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/type_enumerator.h b/src/theory/datatypes/type_enumerator.h
index 13d590508..fff4731f3 100644
--- a/src/theory/datatypes/type_enumerator.h
+++ b/src/theory/datatypes/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/decision_manager.cpp b/src/theory/decision_manager.cpp
index 5c43e6159..3eda45b00 100644
--- a/src/theory/decision_manager.cpp
+++ b/src/theory/decision_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/decision_manager.h b/src/theory/decision_manager.h
index fbc0e2cd6..1cf0e5115 100644
--- a/src/theory/decision_manager.h
+++ b/src/theory/decision_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/decision_strategy.cpp b/src/theory/decision_strategy.cpp
index fcd11f6ba..b14936ee9 100644
--- a/src/theory/decision_strategy.cpp
+++ b/src/theory/decision_strategy.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/decision_strategy.h b/src/theory/decision_strategy.h
index 04788f515..a01cf25c0 100644
--- a/src/theory/decision_strategy.h
+++ b/src/theory/decision_strategy.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/evaluator.cpp b/src/theory/evaluator.cpp
index 0a0176f25..818f40e8c 100644
--- a/src/theory/evaluator.cpp
+++ b/src/theory/evaluator.cpp
@@ -2,9 +2,9 @@
/*! \file evaluator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/evaluator.h b/src/theory/evaluator.h
index 0d7ddbec8..fc96ea115 100644
--- a/src/theory/evaluator.h
+++ b/src/theory/evaluator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/example/ecdata.cpp b/src/theory/example/ecdata.cpp
index 4089ad45d..6a66f5491 100644
--- a/src/theory/example/ecdata.cpp
+++ b/src/theory/example/ecdata.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/example/ecdata.h b/src/theory/example/ecdata.h
index 7c62f9833..9941a6b89 100644
--- a/src/theory/example/ecdata.h
+++ b/src/theory/example/ecdata.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/example/theory_uf_tim.cpp b/src/theory/example/theory_uf_tim.cpp
index fa329f1d5..54d2e3209 100644
--- a/src/theory/example/theory_uf_tim.cpp
+++ b/src/theory/example/theory_uf_tim.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/example/theory_uf_tim.h b/src/theory/example/theory_uf_tim.h
index ccdab9d35..ba9733a95 100644
--- a/src/theory/example/theory_uf_tim.h
+++ b/src/theory/example/theory_uf_tim.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/ext_theory.cpp b/src/theory/ext_theory.cpp
index c1e7c971f..5a37889a2 100644
--- a/src/theory/ext_theory.cpp
+++ b/src/theory/ext_theory.cpp
@@ -2,9 +2,9 @@
/*! \file ext_theory.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds, Dejan Jovanovic
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/ext_theory.h b/src/theory/ext_theory.h
index 8657d0fb8..0ad314f6f 100644
--- a/src/theory/ext_theory.h
+++ b/src/theory/ext_theory.h
@@ -2,9 +2,9 @@
/*! \file ext_theory.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/fp_converter.cpp b/src/theory/fp/fp_converter.cpp
index dc6c001c9..a69cf8c96 100644
--- a/src/theory/fp/fp_converter.cpp
+++ b/src/theory/fp/fp_converter.cpp
@@ -2,9 +2,9 @@
/*! \file fp_converter.cpp
** \verbatim
** Top contributors (to current version):
- ** Martin Brain
+ ** Martin Brain, Andres Noetzli, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/fp_converter.h b/src/theory/fp/fp_converter.h
index 018f3ee66..163da6fac 100644
--- a/src/theory/fp/fp_converter.h
+++ b/src/theory/fp/fp_converter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Martin Brain
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp.cpp b/src/theory/fp/theory_fp.cpp
index 364df3890..2c93553fe 100644
--- a/src/theory/fp/theory_fp.cpp
+++ b/src/theory/fp/theory_fp.cpp
@@ -2,9 +2,9 @@
/*! \file theory_fp.cpp
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Andrew Reynolds, Tim King
+ ** Martin Brain, Andres Noetzli, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,9 +15,12 @@
** \todo document this file
**/
-#include "theory/fp/theory_fp.h"
+
+#include "options/fp_options.h"
#include "theory/rewriter.h"
#include "theory/theory_model.h"
+#include "theory/fp/theory_fp.h"
+
#include <set>
#include <stack>
@@ -306,7 +309,7 @@ Node TheoryFp::toRealUF(Node node) {
std::vector<TypeNode> args(1);
args[0] = t;
fun = nm->mkSkolem("floatingpoint_to_real_infinity_and_NaN_case",
- nm->mkFunctionType(args, nm->realType()),
+ nm->mkFunctionType(args, nm->realType()),
"floatingpoint_to_real_infinity_and_NaN_case",
NodeManager::SKOLEM_EXACT_NAME);
d_toRealMap.insert(t, fun);
@@ -876,7 +879,27 @@ bool TheoryFp::isRegistered(TNode node) {
return !(d_registeredTerms.find(node) == d_registeredTerms.end());
}
-void TheoryFp::preRegisterTerm(TNode node) {
+void TheoryFp::preRegisterTerm(TNode node)
+{
+ if (Configuration::isBuiltWithSymFPU() && !options::fpExp())
+ {
+ TypeNode tn = node.getType();
+ if (tn.isFloatingPoint())
+ {
+ unsigned exp_sz = tn.getFloatingPointExponentSize();
+ unsigned sig_sz = tn.getFloatingPointSignificandSize();
+ if (!((exp_sz == 8 && sig_sz == 24) || (exp_sz == 11 && sig_sz == 53)))
+ {
+ std::stringstream ss;
+ ss << "FP term " << node << " with type whose size is " << exp_sz << "/"
+ << sig_sz
+ << " is not supported, only Float32 (8/24) or Float64 (11/53) types "
+ "are supported in default mode. Try the experimental solver via "
+ "--fp-exp";
+ throw LogicException(ss.str());
+ }
+ }
+ }
Trace("fp-preRegisterTerm")
<< "TheoryFp::preRegisterTerm(): " << node << std::endl;
registerTerm(node);
@@ -1084,6 +1107,41 @@ bool TheoryFp::collectModelInfo(TheoryModel *m)
{
return false;
}
+
+ if (Configuration::isAssertionBuild() && isLeaf(node) && !node.isConst()
+ && node.getType().isFloatingPoint())
+ {
+ // Check that the equality engine has asssigned values to all the
+ // components of `node` except `(sign node)` (the sign component is
+ // assignable, meaning that the model builder can pick an arbitrary value
+ // for it if it hasn't been assigned in the equality engine).
+ NodeManager* nm = NodeManager::currentNM();
+ Node compNaN = nm->mkNode(kind::FLOATINGPOINT_COMPONENT_NAN, node);
+ Node compInf = nm->mkNode(kind::FLOATINGPOINT_COMPONENT_INF, node);
+ Node compZero = nm->mkNode(kind::FLOATINGPOINT_COMPONENT_ZERO, node);
+ Node compExponent =
+ nm->mkNode(kind::FLOATINGPOINT_COMPONENT_EXPONENT, node);
+ Node compSignificand =
+ nm->mkNode(kind::FLOATINGPOINT_COMPONENT_SIGNIFICAND, node);
+
+ eq::EqualityEngine* ee = m->getEqualityEngine();
+ Assert(ee->hasTerm(compNaN) && ee->getRepresentative(compNaN).isConst());
+ Assert(ee->hasTerm(compInf) && ee->getRepresentative(compInf).isConst());
+ Assert(ee->hasTerm(compZero)
+ && ee->getRepresentative(compZero).isConst());
+ Assert(ee->hasTerm(compExponent)
+ && ee->getRepresentative(compExponent).isConst());
+ Assert(ee->hasTerm(compSignificand));
+ Assert(ee->getRepresentative(compSignificand).isConst());
+
+ // At most one of the flags (NaN, inf, zero) can be set
+ Node one = nm->mkConst(BitVector(1U, 1U));
+ size_t numFlags = 0;
+ numFlags += ee->getRepresentative(compNaN) == one ? 1 : 0;
+ numFlags += ee->getRepresentative(compInf) == one ? 1 : 0;
+ numFlags += ee->getRepresentative(compZero) == one ? 1 : 0;
+ Assert(numFlags <= 1);
+ }
}
return true;
diff --git a/src/theory/fp/theory_fp.h b/src/theory/fp/theory_fp.h
index 3d13cc63f..49d457d7a 100644
--- a/src/theory/fp/theory_fp.h
+++ b/src/theory/fp/theory_fp.h
@@ -2,9 +2,9 @@
/*! \file theory_fp.h
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Mathias Preiner, Tim King
+ ** Martin Brain, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_rewriter.cpp b/src/theory/fp/theory_fp_rewriter.cpp
index 875471ded..68ea01eb8 100644
--- a/src/theory/fp/theory_fp_rewriter.cpp
+++ b/src/theory/fp/theory_fp_rewriter.cpp
@@ -2,10 +2,10 @@
/*! \file theory_fp_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Clark Barrett, Andrew Reynolds
+ ** Martin Brain, Martin Brain, Andrew Reynolds
** Copyright (c) 2013 University of Oxford
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_rewriter.h b/src/theory/fp/theory_fp_rewriter.h
index e39a95615..ec042dfe9 100644
--- a/src/theory/fp/theory_fp_rewriter.h
+++ b/src/theory/fp/theory_fp_rewriter.h
@@ -2,9 +2,9 @@
/*! \file theory_fp_rewriter.h
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Paul Meng
+ ** Martin Brain
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_type_rules.h b/src/theory/fp/theory_fp_type_rules.h
index 94ce476bf..307247608 100644
--- a/src/theory/fp/theory_fp_type_rules.h
+++ b/src/theory/fp/theory_fp_type_rules.h
@@ -2,9 +2,9 @@
/*! \file theory_fp_type_rules.h
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Tim King
+ ** Martin Brain, Tim King, Martin Brain
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/type_enumerator.h b/src/theory/fp/type_enumerator.h
index eeb1ac4f8..cd73ff824 100644
--- a/src/theory/fp/type_enumerator.h
+++ b/src/theory/fp/type_enumerator.h
@@ -2,10 +2,10 @@
/*! \file type_enumerator.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Martin Brain
+ ** Tim King, Martin Brain, Andrew Reynolds
** Copyright (c) 2009-2015 New York University and The University of Iowa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion.cpp b/src/theory/idl/idl_assertion.cpp
index 8b5758f5a..1e3905537 100644
--- a/src/theory/idl/idl_assertion.cpp
+++ b/src/theory/idl/idl_assertion.cpp
@@ -2,9 +2,9 @@
/*! \file idl_assertion.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion.h b/src/theory/idl/idl_assertion.h
index 6804945f3..e24fbfc67 100644
--- a/src/theory/idl/idl_assertion.h
+++ b/src/theory/idl/idl_assertion.h
@@ -2,9 +2,9 @@
/*! \file idl_assertion.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion_db.cpp b/src/theory/idl/idl_assertion_db.cpp
index 150d0814a..865d8b4f5 100644
--- a/src/theory/idl/idl_assertion_db.cpp
+++ b/src/theory/idl/idl_assertion_db.cpp
@@ -2,9 +2,9 @@
/*! \file idl_assertion_db.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion_db.h b/src/theory/idl/idl_assertion_db.h
index 8d7edc87c..ac87282d9 100644
--- a/src/theory/idl/idl_assertion_db.h
+++ b/src/theory/idl/idl_assertion_db.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_model.cpp b/src/theory/idl/idl_model.cpp
index 98a7ed7c2..729a18ee4 100644
--- a/src/theory/idl/idl_model.cpp
+++ b/src/theory/idl/idl_model.cpp
@@ -2,9 +2,9 @@
/*! \file idl_model.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters
+ ** Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_model.h b/src/theory/idl/idl_model.h
index a58c2d79c..87e67edea 100644
--- a/src/theory/idl/idl_model.h
+++ b/src/theory/idl/idl_model.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/theory_idl.cpp b/src/theory/idl/theory_idl.cpp
index ab87cb1a9..12ac1e802 100644
--- a/src/theory/idl/theory_idl.cpp
+++ b/src/theory/idl/theory_idl.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/theory_idl.h b/src/theory/idl/theory_idl.h
index 17f19ca4a..1d48d0785 100644
--- a/src/theory/idl/theory_idl.h
+++ b/src/theory/idl/theory_idl.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/interrupted.h b/src/theory/interrupted.h
index 8ab6f0ba7..291528a78 100644
--- a/src/theory/interrupted.h
+++ b/src/theory/interrupted.h
@@ -2,9 +2,9 @@
/*! \file interrupted.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/logic_info.cpp b/src/theory/logic_info.cpp
index 7d41ff5e6..1712bb30a 100644
--- a/src/theory/logic_info.cpp
+++ b/src/theory/logic_info.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/logic_info.h b/src/theory/logic_info.h
index 2edc049c6..4c35b8d7f 100644
--- a/src/theory/logic_info.h
+++ b/src/theory/logic_info.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/output_channel.h b/src/theory/output_channel.h
index bb8103891..38fd94003 100644
--- a/src/theory/output_channel.h
+++ b/src/theory/output_channel.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/alpha_equivalence.cpp b/src/theory/quantifiers/alpha_equivalence.cpp
index 577b2c31f..bb0cdde83 100644
--- a/src/theory/quantifiers/alpha_equivalence.cpp
+++ b/src/theory/quantifiers/alpha_equivalence.cpp
@@ -2,9 +2,9 @@
/*! \file alpha_equivalence.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/alpha_equivalence.h b/src/theory/quantifiers/alpha_equivalence.h
index 4ab45b015..5ab7d0fc2 100644
--- a/src/theory/quantifiers/alpha_equivalence.h
+++ b/src/theory/quantifiers/alpha_equivalence.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/anti_skolem.cpp b/src/theory/quantifiers/anti_skolem.cpp
index 08e215d72..5d1967bb4 100644
--- a/src/theory/quantifiers/anti_skolem.cpp
+++ b/src/theory/quantifiers/anti_skolem.cpp
@@ -2,9 +2,9 @@
/*! \file anti_skolem.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/anti_skolem.h b/src/theory/quantifiers/anti_skolem.h
index 162140ff1..e02c85866 100644
--- a/src/theory/quantifiers/anti_skolem.h
+++ b/src/theory/quantifiers/anti_skolem.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/bv_inverter.cpp b/src/theory/quantifiers/bv_inverter.cpp
index 2525f5d18..24e3a85b5 100644
--- a/src/theory/quantifiers/bv_inverter.cpp
+++ b/src/theory/quantifiers/bv_inverter.cpp
@@ -2,9 +2,9 @@
/*! \file bv_inverter.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Mathias Preiner, Andrew Reynolds
+ ** Aina Niemetz, Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/bv_inverter.h b/src/theory/quantifiers/bv_inverter.h
index ad16a2ed9..b4cfe2bed 100644
--- a/src/theory/quantifiers/bv_inverter.h
+++ b/src/theory/quantifiers/bv_inverter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/bv_inverter_utils.cpp b/src/theory/quantifiers/bv_inverter_utils.cpp
index 8ad26a422..e01af3f38 100644
--- a/src/theory/quantifiers/bv_inverter_utils.cpp
+++ b/src/theory/quantifiers/bv_inverter_utils.cpp
@@ -1,10 +1,10 @@
/********************* */
-/*! \file bv_inverter.cpp
+/*! \file bv_inverter_utils.cpp
** \verbatim
** Top contributors (to current version):
** Aina Niemetz, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/bv_inverter_utils.h b/src/theory/quantifiers/bv_inverter_utils.h
index 0fec00579..4ab677f0e 100644
--- a/src/theory/quantifiers/bv_inverter_utils.h
+++ b/src/theory/quantifiers/bv_inverter_utils.h
@@ -1,10 +1,10 @@
/********************* */
-/*! \file bv_inverter.cpp
+/*! \file bv_inverter_utils.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Mathias Preiner
+ ** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/candidate_rewrite_database.cpp b/src/theory/quantifiers/candidate_rewrite_database.cpp
index 2d2e9ce30..e00bc957f 100644
--- a/src/theory/quantifiers/candidate_rewrite_database.cpp
+++ b/src/theory/quantifiers/candidate_rewrite_database.cpp
@@ -2,9 +2,9 @@
/*! \file candidate_rewrite_database.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -69,9 +69,29 @@ void CandidateRewriteDatabase::initializeSygus(const std::vector<Node>& vars,
}
bool CandidateRewriteDatabase::addTerm(Node sol,
+ bool rec,
std::ostream& out,
bool& rew_print)
{
+ // have we added this term before?
+ std::unordered_map<Node, bool, NodeHashFunction>::iterator itac =
+ d_add_term_cache.find(sol);
+ if (itac != d_add_term_cache.end())
+ {
+ return itac->second;
+ }
+
+ if (rec)
+ {
+ // if recursive, we first add all subterms
+ for (const Node& solc : sol)
+ {
+ // whether a candidate rewrite is printed for any subterm is irrelevant
+ bool rew_printc = false;
+ addTerm(solc, rec, out, rew_printc);
+ }
+ }
+ // register the term
bool is_unique_term = true;
Node eq_sol = d_sampler->registerTerm(sol);
// eq_sol is a candidate solution that is equivalent to sol
@@ -117,9 +137,9 @@ bool CandidateRewriteDatabase::addTerm(Node sol,
// options as the SmtEngine we belong to, where we ensure that
// produce-models is set.
bool needExport = false;
- ExprManagerMapCollection varMap;
ExprManager em(nm->getOptions());
std::unique_ptr<SmtEngine> rrChecker;
+ ExprManagerMapCollection varMap;
initializeChecker(rrChecker, em, varMap, crr, needExport);
Result r = rrChecker->checkSat();
Trace("rr-check") << "...result : " << r << std::endl;
@@ -252,13 +272,18 @@ bool CandidateRewriteDatabase::addTerm(Node sol,
// it discards it as a redundant candidate rewrite rule before
// checking its correctness.
}
+ d_add_term_cache[sol] = is_unique_term;
return is_unique_term;
}
-bool CandidateRewriteDatabase::addTerm(Node sol, std::ostream& out)
+bool CandidateRewriteDatabase::addTerm(Node sol, bool rec, std::ostream& out)
{
bool rew_print = false;
- return addTerm(sol, out, rew_print);
+ return addTerm(sol, rec, out, rew_print);
+}
+bool CandidateRewriteDatabase::addTerm(Node sol, std::ostream& out)
+{
+ return addTerm(sol, false, out);
}
void CandidateRewriteDatabase::setSilent(bool flag) { d_silent = flag; }
@@ -298,7 +323,7 @@ bool CandidateRewriteDatabaseGen::addTerm(Node n, std::ostream& out)
Trace("synth-rr-dbg") << "...finish." << std::endl;
}
Trace("synth-rr-dbg") << "Add term " << nr << " for " << tn << std::endl;
- return itc->second.addTerm(nr, out);
+ return itc->second.addTerm(nr, false, out);
}
} /* CVC4::theory::quantifiers namespace */
diff --git a/src/theory/quantifiers/candidate_rewrite_database.h b/src/theory/quantifiers/candidate_rewrite_database.h
index 5b8ffbd94..9daaa970e 100644
--- a/src/theory/quantifiers/candidate_rewrite_database.h
+++ b/src/theory/quantifiers/candidate_rewrite_database.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -71,9 +71,13 @@ class CandidateRewriteDatabase : public ExprMiner
* cause a candidate-rewrite to be printed on the output stream out.
* We return true if the term sol is distinct (up to equivalence) with
* all previous terms added to this class. The argument rew_print is set to
- * true if this class printed a rewrite.
+ * true if this class printed a rewrite involving sol.
+ *
+ * If the flag rec is true, then we also recursively add all subterms of sol
+ * to this class as well.
*/
- bool addTerm(Node sol, std::ostream& out, bool& rew_print);
+ bool addTerm(Node sol, bool rec, std::ostream& out, bool& rew_print);
+ bool addTerm(Node sol, bool rec, std::ostream& out);
bool addTerm(Node sol, std::ostream& out) override;
/** sets whether this class should output candidate rewrites it finds */
void setSilent(bool flag);
@@ -93,6 +97,8 @@ class CandidateRewriteDatabase : public ExprMiner
bool d_using_sygus;
/** candidate rewrite filter */
CandidateRewriteFilter d_crewrite_filter;
+ /** the cache for results of addTerm */
+ std::unordered_map<Node, bool, NodeHashFunction> d_add_term_cache;
/** if true, we silence the output of candidate rewrites */
bool d_silent;
};
@@ -115,7 +121,8 @@ class CandidateRewriteDatabaseGen
* This registers term n with this class. We generate the candidate rewrite
* database of the appropriate type (if not allocated already), and register
* n with this database. This may result in "candidate-rewrite" being
- * printed on the output stream out.
+ * printed on the output stream out. We return true if the term sol is
+ * distinct (up to equivalence) with all previous terms added to this class.
*/
bool addTerm(Node n, std::ostream& out);
diff --git a/src/theory/quantifiers/candidate_rewrite_filter.cpp b/src/theory/quantifiers/candidate_rewrite_filter.cpp
index 0d3878149..53c40464f 100644
--- a/src/theory/quantifiers/candidate_rewrite_filter.cpp
+++ b/src/theory/quantifiers/candidate_rewrite_filter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -290,6 +290,12 @@ bool CandidateRewriteFilter::filterPair(Node n, Node eq_n)
// ----- check rewriting redundancy
if (keep && options::sygusRewSynthFilterCong())
{
+ // When using sygus types, this filtering applies to the builtin versions
+ // of n and eq_n. This means that we may filter out a rewrite rule for one
+ // sygus type based on another, e.g. we won't report x=x+0 for both A and B
+ // in:
+ // A -> x | 0 | A+A
+ // B -> x | 0 | B+B
Trace("cr-filter-debug") << "Check equal rewrite pair..." << std::endl;
if (d_drewrite->areEqual(bn, beq_n))
{
@@ -309,7 +315,9 @@ bool CandidateRewriteFilter::filterPair(Node n, Node eq_n)
Node bni = d_drewrite->toInternal(bn);
if (!bni.isNull())
{
- if (!d_match_trie.getMatches(bni, &d_ssenm))
+ // as with congruence filtering, we cache based on the builtin type
+ TypeNode tn = bn.getType();
+ if (!d_match_trie[tn].getMatches(bni, &d_ssenm))
{
keep = false;
Trace("cr-filter") << "...redundant (matchable)" << std::endl;
@@ -357,6 +365,8 @@ void CandidateRewriteFilter::registerRelevantPair(Node n, Node eq_n)
}
if (options::sygusRewSynthFilterMatch())
{
+ // cache based on the builtin type
+ TypeNode tn = bn.getType();
// add to match information
for (unsigned r = 0; r < 2; r++)
{
@@ -369,7 +379,7 @@ void CandidateRewriteFilter::registerRelevantPair(Node n, Node eq_n)
Node ti = d_drewrite->toInternal(t);
if (!ti.isNull())
{
- d_match_trie.addTerm(ti);
+ d_match_trie[tn].addTerm(ti);
}
}
d_pairs[t].insert(to);
diff --git a/src/theory/quantifiers/candidate_rewrite_filter.h b/src/theory/quantifiers/candidate_rewrite_filter.h
index ca071faa4..63d5d6fec 100644
--- a/src/theory/quantifiers/candidate_rewrite_filter.h
+++ b/src/theory/quantifiers/candidate_rewrite_filter.h
@@ -2,9 +2,9 @@
/*! \file candidate_rewrite_filter.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -165,14 +165,16 @@ class CandidateRewriteFilter
* detail, if (t,s) is a relevant pair, then t in d_pairs[s].
*/
std::map<Node, std::unordered_set<Node, NodeHashFunction> > d_pairs;
- /** Match trie storing all terms in the domain of d_pairs.
+ /**
+ * For each (builtin) type, a match trie storing all terms in the domain of
+ * d_pairs.
*
* Notice that we store d_drewrite->toInternal(t) instead of t, for each
* term t, so that polymorphism is handled properly. In particular, this
* prevents matches between terms select( x, y ) and select( z, y ) where
* the type of x and z are different.
*/
- MatchTrie d_match_trie;
+ std::map<TypeNode, MatchTrie> d_match_trie;
/** Notify class */
class CandidateRewriteFilterNotifyMatch : public NotifyMatch
{
diff --git a/src/theory/quantifiers/cegqi/ceg_arith_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_arith_instantiator.cpp
index 4ea006d54..fa02c6d09 100644
--- a/src/theory/quantifiers/cegqi/ceg_arith_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_arith_instantiator.cpp
@@ -2,9 +2,9 @@
/*! \file ceg_arith_instantiator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_arith_instantiator.h b/src/theory/quantifiers/cegqi/ceg_arith_instantiator.h
index b6e22329d..5bc75f801 100644
--- a/src/theory/quantifiers/cegqi/ceg_arith_instantiator.h
+++ b/src/theory/quantifiers/cegqi/ceg_arith_instantiator.h
@@ -2,9 +2,9 @@
/*! \file ceg_arith_instantiator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_bv_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_bv_instantiator.cpp
index 272914c25..28a24d884 100644
--- a/src/theory/quantifiers/cegqi/ceg_bv_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_bv_instantiator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_bv_instantiator.h b/src/theory/quantifiers/cegqi/ceg_bv_instantiator.h
index 35bc6c042..b9c35b3e0 100644
--- a/src/theory/quantifiers/cegqi/ceg_bv_instantiator.h
+++ b/src/theory/quantifiers/cegqi/ceg_bv_instantiator.h
@@ -2,9 +2,9 @@
/*! \file ceg_bv_instantiator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Aina Niemetz
+ ** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.cpp b/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.cpp
index b74d358ac..b351dc83c 100644
--- a/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.cpp
@@ -1,10 +1,10 @@
/********************* */
-/*! \file ceg_bv_instantiator.cpp
+/*! \file ceg_bv_instantiator_utils.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Aina Niemetz
+ ** Mathias Preiner, Aina Niemetz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h b/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h
index 551ce08e0..3156e745c 100644
--- a/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h
+++ b/src/theory/quantifiers/cegqi/ceg_bv_instantiator_utils.h
@@ -1,10 +1,10 @@
/********************* */
-/*! \file ceg_bv_instantiator.cpp
+/*! \file ceg_bv_instantiator_utils.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Aina Niemetz
+ ** Mathias Preiner, Aina Niemetz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_dt_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_dt_instantiator.cpp
index e56d5f5db..0bdcbe0d7 100644
--- a/src/theory/quantifiers/cegqi/ceg_dt_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_dt_instantiator.cpp
@@ -2,9 +2,9 @@
/*! \file ceg_dt_instantiator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_dt_instantiator.h b/src/theory/quantifiers/cegqi/ceg_dt_instantiator.h
index 6cf3bdf42..ea3db0e9b 100644
--- a/src/theory/quantifiers/cegqi/ceg_dt_instantiator.h
+++ b/src/theory/quantifiers/cegqi/ceg_dt_instantiator.h
@@ -2,9 +2,9 @@
/*! \file ceg_dt_instantiator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_epr_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_epr_instantiator.cpp
index df6690273..f0ea7ab7b 100644
--- a/src/theory/quantifiers/cegqi/ceg_epr_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_epr_instantiator.cpp
@@ -2,9 +2,9 @@
/*! \file ceg_epr_instantiator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_epr_instantiator.h b/src/theory/quantifiers/cegqi/ceg_epr_instantiator.h
index f5057ad86..2ed76ba27 100644
--- a/src/theory/quantifiers/cegqi/ceg_epr_instantiator.h
+++ b/src/theory/quantifiers/cegqi/ceg_epr_instantiator.h
@@ -2,9 +2,9 @@
/*! \file ceg_epr_instantiator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
index 46649154e..b11358543 100644
--- a/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
@@ -2,9 +2,9 @@
/*! \file ceg_instantiator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/ceg_instantiator.h b/src/theory/quantifiers/cegqi/ceg_instantiator.h
index ae191cf91..a813c91b0 100644
--- a/src/theory/quantifiers/cegqi/ceg_instantiator.h
+++ b/src/theory/quantifiers/cegqi/ceg_instantiator.h
@@ -2,9 +2,9 @@
/*! \file ceg_instantiator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp b/src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
index 3ea3e72e4..7cfda5ba1 100644
--- a/src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
+++ b/src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
@@ -2,9 +2,9 @@
/*! \file inst_strategy_cegqi.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/cegqi/inst_strategy_cegqi.h b/src/theory/quantifiers/cegqi/inst_strategy_cegqi.h
index 0a19727b8..c5c90b64a 100644
--- a/src/theory/quantifiers/cegqi/inst_strategy_cegqi.h
+++ b/src/theory/quantifiers/cegqi/inst_strategy_cegqi.h
@@ -2,9 +2,9 @@
/*! \file inst_strategy_cegqi.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/conjecture_generator.cpp b/src/theory/quantifiers/conjecture_generator.cpp
index 7408678e7..1d9ed1639 100644
--- a/src/theory/quantifiers/conjecture_generator.cpp
+++ b/src/theory/quantifiers/conjecture_generator.cpp
@@ -2,9 +2,9 @@
/*! \file conjecture_generator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Dejan Jovanovic
+ ** Andrew Reynolds, Aina Niemetz, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/conjecture_generator.h b/src/theory/quantifiers/conjecture_generator.h
index 8fff7eafe..236c08138 100644
--- a/src/theory/quantifiers/conjecture_generator.h
+++ b/src/theory/quantifiers/conjecture_generator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/dynamic_rewrite.cpp b/src/theory/quantifiers/dynamic_rewrite.cpp
index f48f73aee..cd73ffe33 100644
--- a/src/theory/quantifiers/dynamic_rewrite.cpp
+++ b/src/theory/quantifiers/dynamic_rewrite.cpp
@@ -2,9 +2,9 @@
/*! \file dynamic_rewrite.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Andres Noetzli
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/dynamic_rewrite.h b/src/theory/quantifiers/dynamic_rewrite.h
index 50bae0268..6d0a1625c 100644
--- a/src/theory/quantifiers/dynamic_rewrite.h
+++ b/src/theory/quantifiers/dynamic_rewrite.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/candidate_generator.cpp b/src/theory/quantifiers/ematching/candidate_generator.cpp
index 612a1938a..cb0fcaf50 100644
--- a/src/theory/quantifiers/ematching/candidate_generator.cpp
+++ b/src/theory/quantifiers/ematching/candidate_generator.cpp
@@ -2,9 +2,9 @@
/*! \file candidate_generator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Francois Bobot
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/candidate_generator.h b/src/theory/quantifiers/ematching/candidate_generator.h
index da4ec2d83..d2718fa1f 100644
--- a/src/theory/quantifiers/ematching/candidate_generator.h
+++ b/src/theory/quantifiers/ematching/candidate_generator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/ho_trigger.cpp b/src/theory/quantifiers/ematching/ho_trigger.cpp
index 2fcfa19d9..7598e6fdc 100644
--- a/src/theory/quantifiers/ematching/ho_trigger.cpp
+++ b/src/theory/quantifiers/ematching/ho_trigger.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -270,6 +270,11 @@ bool HigherOrderTrigger::sendInstantiation(InstMatch& m)
// Assert( f==value );
for (unsigned k = 0, size = args.size(); k < size; k++)
{
+ // must now subsitute back, to handle cases like
+ // (@ x y) matching (@ t (@ t s))
+ // where the above substitution would produce (@ x (@ x s)),
+ // but the argument should be (@ t s).
+ args[k] = args[k].substitute(var, value);
Node val = args[k];
std::map<unsigned, Node>::iterator itf = fixed_vals.find(k);
if (itf == fixed_vals.end())
diff --git a/src/theory/quantifiers/ematching/ho_trigger.h b/src/theory/quantifiers/ematching/ho_trigger.h
index 8840c949f..b57db5799 100644
--- a/src/theory/quantifiers/ematching/ho_trigger.h
+++ b/src/theory/quantifiers/ematching/ho_trigger.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/inst_match_generator.cpp b/src/theory/quantifiers/ematching/inst_match_generator.cpp
index f26df5b79..0a4386db9 100644
--- a/src/theory/quantifiers/ematching/inst_match_generator.cpp
+++ b/src/theory/quantifiers/ematching/inst_match_generator.cpp
@@ -2,9 +2,9 @@
/*! \file inst_match_generator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/inst_match_generator.h b/src/theory/quantifiers/ematching/inst_match_generator.h
index 83d4ce82e..f9fd2be25 100644
--- a/src/theory/quantifiers/ematching/inst_match_generator.h
+++ b/src/theory/quantifiers/ematching/inst_match_generator.h
@@ -2,9 +2,9 @@
/*! \file inst_match_generator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Clark Barrett
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/inst_strategy_e_matching.cpp b/src/theory/quantifiers/ematching/inst_strategy_e_matching.cpp
index 6784fb8e3..8f671fb55 100644
--- a/src/theory/quantifiers/ematching/inst_strategy_e_matching.cpp
+++ b/src/theory/quantifiers/ematching/inst_strategy_e_matching.cpp
@@ -2,9 +2,9 @@
/*! \file inst_strategy_e_matching.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/inst_strategy_e_matching.h b/src/theory/quantifiers/ematching/inst_strategy_e_matching.h
index a8d53cf4b..d715d7f7a 100644
--- a/src/theory/quantifiers/ematching/inst_strategy_e_matching.h
+++ b/src/theory/quantifiers/ematching/inst_strategy_e_matching.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/instantiation_engine.cpp b/src/theory/quantifiers/ematching/instantiation_engine.cpp
index 2aa8af53d..d2650f01f 100644
--- a/src/theory/quantifiers/ematching/instantiation_engine.cpp
+++ b/src/theory/quantifiers/ematching/instantiation_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/instantiation_engine.h b/src/theory/quantifiers/ematching/instantiation_engine.h
index c94320b74..cd82e67a3 100644
--- a/src/theory/quantifiers/ematching/instantiation_engine.h
+++ b/src/theory/quantifiers/ematching/instantiation_engine.h
@@ -2,9 +2,9 @@
/*! \file instantiation_engine.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/trigger.cpp b/src/theory/quantifiers/ematching/trigger.cpp
index b50deea11..31bd1aa96 100644
--- a/src/theory/quantifiers/ematching/trigger.cpp
+++ b/src/theory/quantifiers/ematching/trigger.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ematching/trigger.h b/src/theory/quantifiers/ematching/trigger.h
index bbd7c386b..9a65f0c02 100644
--- a/src/theory/quantifiers/ematching/trigger.h
+++ b/src/theory/quantifiers/ematching/trigger.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_infer.cpp b/src/theory/quantifiers/equality_infer.cpp
index f4a4a34a7..ef80af5f5 100644
--- a/src/theory/quantifiers/equality_infer.cpp
+++ b/src/theory/quantifiers/equality_infer.cpp
@@ -2,9 +2,9 @@
/*! \file equality_infer.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_infer.h b/src/theory/quantifiers/equality_infer.h
index 49d208d99..be1d6d81d 100644
--- a/src/theory/quantifiers/equality_infer.h
+++ b/src/theory/quantifiers/equality_infer.h
@@ -2,9 +2,9 @@
/*! \file equality_infer.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Andres Noetzli
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_query.cpp b/src/theory/quantifiers/equality_query.cpp
index ae560c5e5..030b0dccb 100644
--- a/src/theory/quantifiers/equality_query.cpp
+++ b/src/theory/quantifiers/equality_query.cpp
@@ -2,9 +2,9 @@
/*! \file equality_query.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_query.h b/src/theory/quantifiers/equality_query.h
index 8f836f9c6..9b62c5714 100644
--- a/src/theory/quantifiers/equality_query.h
+++ b/src/theory/quantifiers/equality_query.h
@@ -2,9 +2,9 @@
/*! \file equality_query.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/expr_miner.cpp b/src/theory/quantifiers/expr_miner.cpp
index b65d1c522..98d07fdea 100644
--- a/src/theory/quantifiers/expr_miner.cpp
+++ b/src/theory/quantifiers/expr_miner.cpp
@@ -2,9 +2,9 @@
/*! \file expr_miner.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -87,9 +87,11 @@ void ExprMiner::initializeChecker(std::unique_ptr<SmtEngine>& checker,
try
{
checker.reset(new SmtEngine(&em));
+ checker->setIsInternalSubsolver();
checker->setTimeLimit(options::sygusExprMinerCheckTimeout(), true);
checker->setLogic(smt::currentSmtEngine()->getLogicInfo());
checker->setOption("sygus-rr-synth-input", false);
+ checker->setOption("sygus-abduct", false);
checker->setOption("input-language", "smt2");
Expr equery = squery.toExpr().exportTo(&em, varMap);
checker->assertFormula(equery);
@@ -129,9 +131,9 @@ Result ExprMiner::doCheck(Node query)
}
NodeManager* nm = NodeManager::currentNM();
bool needExport = false;
- ExprManagerMapCollection varMap;
ExprManager em(nm->getOptions());
std::unique_ptr<SmtEngine> smte;
+ ExprManagerMapCollection varMap;
initializeChecker(smte, em, varMap, queryr, needExport);
return smte->checkSat();
}
diff --git a/src/theory/quantifiers/expr_miner.h b/src/theory/quantifiers/expr_miner.h
index 59d9989c5..9420b495a 100644
--- a/src/theory/quantifiers/expr_miner.h
+++ b/src/theory/quantifiers/expr_miner.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/expr_miner_manager.cpp b/src/theory/quantifiers/expr_miner_manager.cpp
index a808d386c..3db0e14ab 100644
--- a/src/theory/quantifiers/expr_miner_manager.cpp
+++ b/src/theory/quantifiers/expr_miner_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,6 +15,8 @@
#include "theory/quantifiers/expr_miner_manager.h"
#include "theory/quantifiers_engine.h"
+#include "options/quantifiers_options.h"
+
namespace CVC4 {
namespace theory {
namespace quantifiers {
@@ -140,7 +142,7 @@ bool ExpressionMinerManager::addTerm(Node sol,
bool ret = true;
if (d_doRewSynth)
{
- ret = d_crd.addTerm(sol, out, rew_print);
+ ret = d_crd.addTerm(sol, options::sygusRewSynthRec(), out, rew_print);
}
// a unique term, let's try the query generator
diff --git a/src/theory/quantifiers/expr_miner_manager.h b/src/theory/quantifiers/expr_miner_manager.h
index d817d3775..dc0a8fab5 100644
--- a/src/theory/quantifiers/expr_miner_manager.h
+++ b/src/theory/quantifiers/expr_miner_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/extended_rewrite.cpp b/src/theory/quantifiers/extended_rewrite.cpp
index 46dcb7151..0fbd971fd 100644
--- a/src/theory/quantifiers/extended_rewrite.cpp
+++ b/src/theory/quantifiers/extended_rewrite.cpp
@@ -2,9 +2,9 @@
/*! \file extended_rewrite.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/extended_rewrite.h b/src/theory/quantifiers/extended_rewrite.h
index da77bda51..920732e0f 100644
--- a/src/theory/quantifiers/extended_rewrite.h
+++ b/src/theory/quantifiers/extended_rewrite.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/first_order_model.cpp b/src/theory/quantifiers/first_order_model.cpp
index 5eb65ed21..5428d9f1a 100644
--- a/src/theory/quantifiers/first_order_model.cpp
+++ b/src/theory/quantifiers/first_order_model.cpp
@@ -2,9 +2,9 @@
/*! \file first_order_model.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/first_order_model.h b/src/theory/quantifiers/first_order_model.h
index b96b42dc2..dc257ea0a 100644
--- a/src/theory/quantifiers/first_order_model.h
+++ b/src/theory/quantifiers/first_order_model.h
@@ -2,9 +2,9 @@
/*! \file first_order_model.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Paul Meng
+ ** Andrew Reynolds, Paul Meng, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/bounded_integers.cpp b/src/theory/quantifiers/fmf/bounded_integers.cpp
index cafa4a749..e15fc85bb 100644
--- a/src/theory/quantifiers/fmf/bounded_integers.cpp
+++ b/src/theory/quantifiers/fmf/bounded_integers.cpp
@@ -2,9 +2,9 @@
/*! \file bounded_integers.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/bounded_integers.h b/src/theory/quantifiers/fmf/bounded_integers.h
index b3132a4a7..1eab28fd9 100644
--- a/src/theory/quantifiers/fmf/bounded_integers.h
+++ b/src/theory/quantifiers/fmf/bounded_integers.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/full_model_check.cpp b/src/theory/quantifiers/fmf/full_model_check.cpp
index 481048105..ace5c2b26 100644
--- a/src/theory/quantifiers/fmf/full_model_check.cpp
+++ b/src/theory/quantifiers/fmf/full_model_check.cpp
@@ -2,9 +2,9 @@
/*! \file full_model_check.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Kshitij Bansal
+ ** Andrew Reynolds, Morgan Deters, Francois Bobot
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/full_model_check.h b/src/theory/quantifiers/fmf/full_model_check.h
index f0f9a1798..d662898c3 100644
--- a/src/theory/quantifiers/fmf/full_model_check.h
+++ b/src/theory/quantifiers/fmf/full_model_check.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/model_builder.cpp b/src/theory/quantifiers/fmf/model_builder.cpp
index 8ef30fc4d..51cd8481f 100644
--- a/src/theory/quantifiers/fmf/model_builder.cpp
+++ b/src/theory/quantifiers/fmf/model_builder.cpp
@@ -2,9 +2,9 @@
/*! \file model_builder.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/model_builder.h b/src/theory/quantifiers/fmf/model_builder.h
index b73716169..b5f9c809a 100644
--- a/src/theory/quantifiers/fmf/model_builder.h
+++ b/src/theory/quantifiers/fmf/model_builder.h
@@ -2,9 +2,9 @@
/*! \file model_builder.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fmf/model_engine.cpp b/src/theory/quantifiers/fmf/model_engine.cpp
index d2579b4ee..5609cade6 100644
--- a/src/theory/quantifiers/fmf/model_engine.cpp
+++ b/src/theory/quantifiers/fmf/model_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -266,7 +266,8 @@ void ModelEngine::exhaustiveInstantiate( Node f, int effort ){
}
d_triedLemmas += mb->getNumTriedLemmas()-prev_tlem;
d_addedLemmas += mb->getNumAddedLemmas()-prev_alem;
- d_quantEngine->d_statistics.d_instantiations_fmf_mbqi += mb->getNumAddedLemmas();
+ d_quantEngine->d_statistics.d_instantiations_fmf_mbqi +=
+ (mb->getNumAddedLemmas() - prev_alem);
}else{
if( Trace.isOn("fmf-exh-inst-debug") ){
Trace("fmf-exh-inst-debug") << " Instantiation Constants: ";
diff --git a/src/theory/quantifiers/fmf/model_engine.h b/src/theory/quantifiers/fmf/model_engine.h
index a11115f33..4202988ae 100644
--- a/src/theory/quantifiers/fmf/model_engine.h
+++ b/src/theory/quantifiers/fmf/model_engine.h
@@ -2,9 +2,9 @@
/*! \file model_engine.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fun_def_process.cpp b/src/theory/quantifiers/fun_def_process.cpp
index 1671fa1a0..185a349c0 100644
--- a/src/theory/quantifiers/fun_def_process.cpp
+++ b/src/theory/quantifiers/fun_def_process.cpp
@@ -2,9 +2,9 @@
/*! \file fun_def_process.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fun_def_process.h b/src/theory/quantifiers/fun_def_process.h
index 78adc710c..f455d4a47 100644
--- a/src/theory/quantifiers/fun_def_process.h
+++ b/src/theory/quantifiers/fun_def_process.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_match.cpp b/src/theory/quantifiers/inst_match.cpp
index a16e03420..069d5b888 100644
--- a/src/theory/quantifiers/inst_match.cpp
+++ b/src/theory/quantifiers/inst_match.cpp
@@ -2,9 +2,9 @@
/*! \file inst_match.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Clark Barrett
+ ** Andrew Reynolds, Morgan Deters, Francois Bobot
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_match.h b/src/theory/quantifiers/inst_match.h
index 5695d1294..db2f7b8a0 100644
--- a/src/theory/quantifiers/inst_match.h
+++ b/src/theory/quantifiers/inst_match.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Francois Bobot
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_match_trie.cpp b/src/theory/quantifiers/inst_match_trie.cpp
index aba4a3b5e..8b8689835 100644
--- a/src/theory/quantifiers/inst_match_trie.cpp
+++ b/src/theory/quantifiers/inst_match_trie.cpp
@@ -2,9 +2,9 @@
/*! \file inst_match_trie.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_match_trie.h b/src/theory/quantifiers/inst_match_trie.h
index 50df50786..6f5b16bb1 100644
--- a/src/theory/quantifiers/inst_match_trie.h
+++ b/src/theory/quantifiers/inst_match_trie.h
@@ -2,9 +2,9 @@
/*! \file inst_match_trie.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_propagator.cpp b/src/theory/quantifiers/inst_propagator.cpp
index 15dd35c26..56be1506c 100644
--- a/src/theory/quantifiers/inst_propagator.cpp
+++ b/src/theory/quantifiers/inst_propagator.cpp
@@ -2,9 +2,9 @@
/*! \file inst_propagator.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_propagator.h b/src/theory/quantifiers/inst_propagator.h
index 1ba359228..d82991b0a 100644
--- a/src/theory/quantifiers/inst_propagator.h
+++ b/src/theory/quantifiers/inst_propagator.h
@@ -2,9 +2,9 @@
/*! \file inst_propagator.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_strategy_enumerative.cpp b/src/theory/quantifiers/inst_strategy_enumerative.cpp
index 9d70d0d4b..7a2f62864 100644
--- a/src/theory/quantifiers/inst_strategy_enumerative.cpp
+++ b/src/theory/quantifiers/inst_strategy_enumerative.cpp
@@ -2,9 +2,9 @@
/*! \file inst_strategy_enumerative.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -70,46 +70,89 @@ void InstStrategyEnum::check(Theory::Effort e, QEffort quant_e)
doCheck = quant_e == QEFFORT_LAST_CALL;
fullEffort = !d_quantEngine->hasAddedLemma();
}
- if (doCheck)
+ if (!doCheck)
{
- double clSet = 0;
- if (Trace.isOn("fs-engine"))
- {
- clSet = double(clock()) / double(CLOCKS_PER_SEC);
- Trace("fs-engine") << "---Full Saturation Round, effort = " << e << "---"
- << std::endl;
- }
- int addedLemmas = 0;
- for (unsigned i = 0;
- i < d_quantEngine->getModel()->getNumAssertedQuantifiers();
- i++)
+ return;
+ }
+ double clSet = 0;
+ if (Trace.isOn("fs-engine"))
+ {
+ clSet = double(clock()) / double(CLOCKS_PER_SEC);
+ Trace("fs-engine") << "---Full Saturation Round, effort = " << e << "---"
+ << std::endl;
+ }
+ unsigned rstart = options::fullSaturateQuantRd() ? 0 : 1;
+ unsigned rend = fullEffort ? 1 : rstart;
+ unsigned addedLemmas = 0;
+ // First try in relevant domain of all quantified formulas, if no
+ // instantiations exist, try arbitrary ground terms.
+ // Notice that this stratification of effort levels makes it so that some
+ // quantified formulas may not be instantiated (if they have no instances
+ // at effort level r=0 but another quantified formula does). We prefer
+ // this stratification since effort level r=1 may be highly expensive in the
+ // case where we have a quantified formula with many entailed instances.
+ FirstOrderModel* fm = d_quantEngine->getModel();
+ RelevantDomain* rd = d_quantEngine->getRelevantDomain();
+ unsigned nquant = fm->getNumAssertedQuantifiers();
+ std::map<Node, bool> alreadyProc;
+ for (unsigned r = rstart; r <= rend; r++)
+ {
+ if (rd || r > 0)
{
- Node q = d_quantEngine->getModel()->getAssertedQuantifier(i, true);
- if (d_quantEngine->hasOwnership(q, this)
- && d_quantEngine->getModel()->isQuantifierActive(q))
+ if (r == 0)
+ {
+ Trace("inst-alg") << "-> Relevant domain instantiate..." << std::endl;
+ Trace("inst-alg-debug") << "Compute relevant domain..." << std::endl;
+ rd->compute();
+ Trace("inst-alg-debug") << "...finished" << std::endl;
+ }
+ else
+ {
+ Trace("inst-alg") << "-> Ground term instantiate..." << std::endl;
+ }
+ for (unsigned i = 0; i < nquant; i++)
{
- if (process(q, fullEffort))
+ Node q = fm->getAssertedQuantifier(i, true);
+ bool doProcess = d_quantEngine->hasOwnership(q, this)
+ && fm->isQuantifierActive(q)
+ && alreadyProc.find(q) == alreadyProc.end();
+ if (doProcess)
{
- // added lemma
- addedLemmas++;
- if (d_quantEngine->inConflict())
+ if (process(q, fullEffort, r == 0))
{
- break;
+ // don't need to mark this if we are not stratifying
+ if (!options::fullSaturateStratify())
+ {
+ alreadyProc[q] = true;
+ }
+ // added lemma
+ addedLemmas++;
+ if (d_quantEngine->inConflict())
+ {
+ break;
+ }
}
}
}
+ if (d_quantEngine->inConflict()
+ || (addedLemmas > 0 && options::fullSaturateStratify()))
+ {
+ // we break if we are in conflict, or if we added any lemma at this
+ // effort level and we stratify effort levels.
+ break;
+ }
}
- if (Trace.isOn("fs-engine"))
- {
- Trace("fs-engine") << "Added lemmas = " << addedLemmas << std::endl;
- double clSet2 = double(clock()) / double(CLOCKS_PER_SEC);
- Trace("fs-engine") << "Finished full saturation engine, time = "
- << (clSet2 - clSet) << std::endl;
- }
+ }
+ if (Trace.isOn("fs-engine"))
+ {
+ Trace("fs-engine") << "Added lemmas = " << addedLemmas << std::endl;
+ double clSet2 = double(clock()) / double(CLOCKS_PER_SEC);
+ Trace("fs-engine") << "Finished full saturation engine, time = "
+ << (clSet2 - clSet) << std::endl;
}
}
-bool InstStrategyEnum::process(Node f, bool fullEffort)
+bool InstStrategyEnum::process(Node f, bool fullEffort, bool isRd)
{
// ignore if constant true (rare case of non-standard quantifier whose body is
// rewritten to true)
@@ -117,178 +160,156 @@ bool InstStrategyEnum::process(Node f, bool fullEffort)
{
return false;
}
- // first, try from relevant domain
RelevantDomain* rd = d_quantEngine->getRelevantDomain();
- unsigned rstart = options::fullSaturateQuantRd() ? 0 : 1;
- unsigned rend = fullEffort ? 1 : rstart;
- for (unsigned r = rstart; r <= rend; r++)
+ unsigned final_max_i = 0;
+ std::vector<unsigned> maxs;
+ std::vector<bool> max_zero;
+ bool has_zero = false;
+ std::map<TypeNode, std::vector<Node> > term_db_list;
+ std::vector<TypeNode> ftypes;
+ TermDb* tdb = d_quantEngine->getTermDatabase();
+ EqualityQuery* qy = d_quantEngine->getEqualityQuery();
+ // iterate over substitutions for variables
+ for (unsigned i = 0; i < f[0].getNumChildren(); i++)
{
- if (rd || r > 0)
+ TypeNode tn = f[0][i].getType();
+ ftypes.push_back(tn);
+ unsigned ts;
+ if (isRd)
{
- if (r == 0)
+ ts = rd->getRDomain(f, i)->d_terms.size();
+ }
+ else
+ {
+ ts = tdb->getNumTypeGroundTerms(tn);
+ std::map<TypeNode, std::vector<Node> >::iterator ittd =
+ term_db_list.find(tn);
+ if (ittd == term_db_list.end())
{
- Trace("inst-alg") << "-> Relevant domain instantiate " << f << "..."
- << std::endl;
- Trace("inst-alg-debug") << "Compute relevant domain..." << std::endl;
- rd->compute();
- Trace("inst-alg-debug") << "...finished" << std::endl;
+ std::map<Node, Node> reps_found;
+ for (unsigned j = 0; j < ts; j++)
+ {
+ Node gt = tdb->getTypeGroundTerm(ftypes[i], j);
+ if (!options::cbqi() || !quantifiers::TermUtil::hasInstConstAttr(gt))
+ {
+ Node rep = qy->getRepresentative(gt);
+ if (reps_found.find(rep) == reps_found.end())
+ {
+ reps_found[rep] = gt;
+ term_db_list[tn].push_back(gt);
+ }
+ }
+ }
+ ts = term_db_list[tn].size();
}
else
{
- Trace("inst-alg") << "-> Ground term instantiate " << f << "..."
- << std::endl;
+ ts = ittd->second.size();
}
- unsigned final_max_i = 0;
- std::vector<unsigned> maxs;
- std::vector<bool> max_zero;
- bool has_zero = false;
- std::map<TypeNode, std::vector<Node> > term_db_list;
- std::vector<TypeNode> ftypes;
- // iterate over substitutions for variables
- for (unsigned i = 0; i < f[0].getNumChildren(); i++)
+ }
+ // consider a default value if at full effort
+ max_zero.push_back(fullEffort && ts == 0);
+ ts = (fullEffort && ts == 0) ? 1 : ts;
+ Trace("inst-alg-rd") << "Variable " << i << " has " << ts
+ << " in relevant domain." << std::endl;
+ if (ts == 0)
+ {
+ has_zero = true;
+ break;
+ }
+ maxs.push_back(ts);
+ if (ts > final_max_i)
+ {
+ final_max_i = ts;
+ }
+ }
+ if (!has_zero)
+ {
+ Trace("inst-alg-rd") << "Will do " << final_max_i
+ << " stages of instantiation." << std::endl;
+ unsigned max_i = 0;
+ bool success;
+ Instantiate* ie = d_quantEngine->getInstantiate();
+ while (max_i <= final_max_i)
+ {
+ Trace("inst-alg-rd") << "Try stage " << max_i << "..." << std::endl;
+ std::vector<unsigned> childIndex;
+ int index = 0;
+ do
{
- TypeNode tn = f[0][i].getType();
- ftypes.push_back(tn);
- unsigned ts;
- if (r == 0)
- {
- ts = rd->getRDomain(f, i)->d_terms.size();
- }
- else
+ while (index >= 0 && index < (int)f[0].getNumChildren())
{
- ts = d_quantEngine->getTermDatabase()->getNumTypeGroundTerms(tn);
- std::map<TypeNode, std::vector<Node> >::iterator ittd =
- term_db_list.find(tn);
- if (ittd == term_db_list.end())
+ if (index == static_cast<int>(childIndex.size()))
{
- std::map<Node, Node> reps_found;
- for (unsigned j = 0; j < ts; j++)
- {
- Node gt = d_quantEngine->getTermDatabase()->getTypeGroundTerm(
- ftypes[i], j);
- if (!options::cbqi()
- || !quantifiers::TermUtil::hasInstConstAttr(gt))
- {
- Node rep =
- d_quantEngine->getEqualityQuery()->getRepresentative(gt);
- if (reps_found.find(rep) == reps_found.end())
- {
- reps_found[rep] = gt;
- term_db_list[tn].push_back(gt);
- }
- }
- }
- ts = term_db_list[tn].size();
+ childIndex.push_back(-1);
}
else
{
- ts = ittd->second.size();
+ Assert(index == static_cast<int>(childIndex.size()) - 1);
+ unsigned nv = childIndex[index] + 1;
+ if (nv < maxs[index] && nv <= max_i)
+ {
+ childIndex[index] = nv;
+ index++;
+ }
+ else
+ {
+ childIndex.pop_back();
+ index--;
+ }
}
}
- // consider a default value if at full effort
- max_zero.push_back(fullEffort && ts == 0);
- ts = (fullEffort && ts == 0) ? 1 : ts;
- Trace("inst-alg-rd") << "Variable " << i << " has " << ts
- << " in relevant domain." << std::endl;
- if (ts == 0)
+ success = index >= 0;
+ if (success)
{
- has_zero = true;
- break;
- }
- else
- {
- maxs.push_back(ts);
- if (ts > final_max_i)
+ if (Trace.isOn("inst-alg-rd"))
{
- final_max_i = ts;
+ Trace("inst-alg-rd") << "Try instantiation { ";
+ for (unsigned i : childIndex)
+ {
+ Trace("inst-alg-rd") << i << " ";
+ }
+ Trace("inst-alg-rd") << "}" << std::endl;
}
- }
- }
- if (!has_zero)
- {
- Trace("inst-alg-rd") << "Will do " << final_max_i
- << " stages of instantiation." << std::endl;
- unsigned max_i = 0;
- bool success;
- while (max_i <= final_max_i)
- {
- Trace("inst-alg-rd") << "Try stage " << max_i << "..." << std::endl;
- std::vector<unsigned> childIndex;
- int index = 0;
- do
+ // try instantiation
+ std::vector<Node> terms;
+ for (unsigned i = 0, nchild = f[0].getNumChildren(); i < nchild; i++)
{
- while (index >= 0 && index < (int)f[0].getNumChildren())
+ if (max_zero[i])
{
- if (index == (int)childIndex.size())
- {
- childIndex.push_back(-1);
- }
- else
- {
- Assert(index == (int)(childIndex.size()) - 1);
- unsigned nv = childIndex[index] + 1;
- if (nv < maxs[index] && nv <= max_i)
- {
- childIndex[index] = nv;
- index++;
- }
- else
- {
- childIndex.pop_back();
- index--;
- }
- }
+ // no terms available, will report incomplete instantiation
+ terms.push_back(Node::null());
+ Trace("inst-alg-rd") << " null" << std::endl;
}
- success = index >= 0;
- if (success)
+ else if (isRd)
{
- Trace("inst-alg-rd") << "Try instantiation { ";
- for (unsigned j = 0; j < childIndex.size(); j++)
- {
- Trace("inst-alg-rd") << childIndex[j] << " ";
- }
- Trace("inst-alg-rd") << "}" << std::endl;
- // try instantiation
- std::vector<Node> terms;
- for (unsigned i = 0; i < f[0].getNumChildren(); i++)
- {
- if (max_zero[i])
- {
- // no terms available, will report incomplete instantiation
- terms.push_back(Node::null());
- Trace("inst-alg-rd") << " null" << std::endl;
- }
- else if (r == 0)
- {
- terms.push_back(rd->getRDomain(f, i)->d_terms[childIndex[i]]);
- Trace("inst-alg-rd")
- << " " << rd->getRDomain(f, i)->d_terms[childIndex[i]]
- << std::endl;
- }
- else
- {
- Assert(childIndex[i] < term_db_list[ftypes[i]].size());
- terms.push_back(term_db_list[ftypes[i]][childIndex[i]]);
- Trace("inst-alg-rd") << " "
- << term_db_list[ftypes[i]][childIndex[i]]
- << std::endl;
- }
- }
- if (d_quantEngine->getInstantiate()->addInstantiation(f, terms))
- {
- Trace("inst-alg-rd") << "Success!" << std::endl;
- ++(d_quantEngine->d_statistics.d_instantiations_guess);
- return true;
- }
- else
- {
- index--;
- }
+ terms.push_back(rd->getRDomain(f, i)->d_terms[childIndex[i]]);
+ Trace("inst-alg-rd")
+ << " " << rd->getRDomain(f, i)->d_terms[childIndex[i]]
+ << std::endl;
}
- } while (success);
- max_i++;
+ else
+ {
+ Assert(childIndex[i] < term_db_list[ftypes[i]].size());
+ terms.push_back(term_db_list[ftypes[i]][childIndex[i]]);
+ Trace("inst-alg-rd")
+ << " " << term_db_list[ftypes[i]][childIndex[i]]
+ << std::endl;
+ }
+ }
+ if (ie->addInstantiation(f, terms))
+ {
+ Trace("inst-alg-rd") << "Success!" << std::endl;
+ ++(d_quantEngine->d_statistics.d_instantiations_guess);
+ return true;
+ }
+ else
+ {
+ index--;
+ }
}
- }
+ } while (success);
+ max_i++;
}
}
// TODO : term enumerator instantiation?
diff --git a/src/theory/quantifiers/inst_strategy_enumerative.h b/src/theory/quantifiers/inst_strategy_enumerative.h
index be0f452e4..f011efdfc 100644
--- a/src/theory/quantifiers/inst_strategy_enumerative.h
+++ b/src/theory/quantifiers/inst_strategy_enumerative.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -92,8 +92,12 @@ class InstStrategyEnum : public QuantifiersModule
* well-typed term *not* occurring in the current context.
* This handles corner cases where there are no well-typed
* ground terms in the current context to instantiate with.
+ *
+ * The flag isRd indicates whether we are trying relevant domain
+ * instantiations. If this flag is false, we are trying arbitrary ground
+ * term instantiations.
*/
- bool process(Node q, bool fullEffort);
+ bool process(Node q, bool fullEffort, bool isRd);
}; /* class InstStrategyEnum */
} /* CVC4::theory::quantifiers namespace */
diff --git a/src/theory/quantifiers/instantiate.cpp b/src/theory/quantifiers/instantiate.cpp
index 96a28cde6..623db032a 100644
--- a/src/theory/quantifiers/instantiate.cpp
+++ b/src/theory/quantifiers/instantiate.cpp
@@ -2,9 +2,9 @@
/*! \file instantiate.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/instantiate.h b/src/theory/quantifiers/instantiate.h
index 62e0ddb55..25f333fbb 100644
--- a/src/theory/quantifiers/instantiate.h
+++ b/src/theory/quantifiers/instantiate.h
@@ -2,9 +2,9 @@
/*! \file instantiate.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/lazy_trie.cpp b/src/theory/quantifiers/lazy_trie.cpp
index 35049b8ba..a50352df5 100644
--- a/src/theory/quantifiers/lazy_trie.cpp
+++ b/src/theory/quantifiers/lazy_trie.cpp
@@ -2,9 +2,9 @@
/*! \file lazy_trie.cpp
** \verbatim
** Top contributors (to current version):
- ** Haniel Barbosa
+ ** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/lazy_trie.h b/src/theory/quantifiers/lazy_trie.h
index 156f1abde..ce6d841cc 100644
--- a/src/theory/quantifiers/lazy_trie.h
+++ b/src/theory/quantifiers/lazy_trie.h
@@ -2,9 +2,9 @@
/*! \file lazy_trie.h
** \verbatim
** Top contributors (to current version):
- ** Haniel Barbosa
+ ** Haniel Barbosa, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/local_theory_ext.cpp b/src/theory/quantifiers/local_theory_ext.cpp
index 752d61489..520088328 100644
--- a/src/theory/quantifiers/local_theory_ext.cpp
+++ b/src/theory/quantifiers/local_theory_ext.cpp
@@ -2,9 +2,9 @@
/*! \file local_theory_ext.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Paul Meng
+ ** Andrew Reynolds, Morgan Deters, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/local_theory_ext.h b/src/theory/quantifiers/local_theory_ext.h
index b8b0e34fa..7a6182394 100644
--- a/src/theory/quantifiers/local_theory_ext.h
+++ b/src/theory/quantifiers/local_theory_ext.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_conflict_find.cpp b/src/theory/quantifiers/quant_conflict_find.cpp
index 5b57af14c..203c3d6a7 100644
--- a/src/theory/quantifiers/quant_conflict_find.cpp
+++ b/src/theory/quantifiers/quant_conflict_find.cpp
@@ -2,9 +2,9 @@
/*! \file quant_conflict_find.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_conflict_find.h b/src/theory/quantifiers/quant_conflict_find.h
index 9fa37a96c..b40840756 100644
--- a/src/theory/quantifiers/quant_conflict_find.h
+++ b/src/theory/quantifiers/quant_conflict_find.h
@@ -2,9 +2,9 @@
/*! \file quant_conflict_find.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_epr.cpp b/src/theory/quantifiers/quant_epr.cpp
index eedea6767..e03a2c120 100644
--- a/src/theory/quantifiers/quant_epr.cpp
+++ b/src/theory/quantifiers/quant_epr.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_epr.h b/src/theory/quantifiers/quant_epr.h
index 07569a09b..9eda74d25 100644
--- a/src/theory/quantifiers/quant_epr.h
+++ b/src/theory/quantifiers/quant_epr.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_relevance.cpp b/src/theory/quantifiers/quant_relevance.cpp
index a05388d17..de54fa05f 100644
--- a/src/theory/quantifiers/quant_relevance.cpp
+++ b/src/theory/quantifiers/quant_relevance.cpp
@@ -2,9 +2,9 @@
/*! \file quant_relevance.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_relevance.h b/src/theory/quantifiers/quant_relevance.h
index 21017e783..43bb4c548 100644
--- a/src/theory/quantifiers/quant_relevance.h
+++ b/src/theory/quantifiers/quant_relevance.h
@@ -2,9 +2,9 @@
/*! \file quant_relevance.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_split.cpp b/src/theory/quantifiers/quant_split.cpp
index fb5492eb3..808c6006f 100644
--- a/src/theory/quantifiers/quant_split.cpp
+++ b/src/theory/quantifiers/quant_split.cpp
@@ -2,9 +2,9 @@
/*! \file quant_split.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_split.h b/src/theory/quantifiers/quant_split.h
index 6a752fe3f..ec40bc52f 100644
--- a/src/theory/quantifiers/quant_split.h
+++ b/src/theory/quantifiers/quant_split.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_util.cpp b/src/theory/quantifiers/quant_util.cpp
index b1b34fb98..6d28c574a 100644
--- a/src/theory/quantifiers/quant_util.cpp
+++ b/src/theory/quantifiers/quant_util.cpp
@@ -2,9 +2,9 @@
/*! \file quant_util.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_util.h b/src/theory/quantifiers/quant_util.h
index e324bc36f..3cfd3b2df 100644
--- a/src/theory/quantifiers/quant_util.h
+++ b/src/theory/quantifiers/quant_util.h
@@ -2,9 +2,9 @@
/*! \file quant_util.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_attributes.cpp b/src/theory/quantifiers/quantifiers_attributes.cpp
index e3463df0d..d93de6a54 100644
--- a/src/theory/quantifiers/quantifiers_attributes.cpp
+++ b/src/theory/quantifiers/quantifiers_attributes.cpp
@@ -2,9 +2,9 @@
/*! \file quantifiers_attributes.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Paul Meng, Tim King
+ ** Andrew Reynolds, Paul Meng, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_attributes.h b/src/theory/quantifiers/quantifiers_attributes.h
index d3acc9434..46cb5a4ce 100644
--- a/src/theory/quantifiers/quantifiers_attributes.h
+++ b/src/theory/quantifiers/quantifiers_attributes.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_rewriter.cpp b/src/theory/quantifiers/quantifiers_rewriter.cpp
index e2a26f6e6..015bf9c5a 100644
--- a/src/theory/quantifiers/quantifiers_rewriter.cpp
+++ b/src/theory/quantifiers/quantifiers_rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_rewriter.h b/src/theory/quantifiers/quantifiers_rewriter.h
index a1d6d25c3..e44672d66 100644
--- a/src/theory/quantifiers/quantifiers_rewriter.h
+++ b/src/theory/quantifiers/quantifiers_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/query_generator.cpp b/src/theory/quantifiers/query_generator.cpp
index e62f3513c..bc7538c1f 100644
--- a/src/theory/quantifiers/query_generator.cpp
+++ b/src/theory/quantifiers/query_generator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -185,9 +185,9 @@ void QueryGenerator::checkQuery(Node qy, unsigned spIndex)
NodeManager* nm = NodeManager::currentNM();
// make the satisfiability query
bool needExport = false;
- ExprManagerMapCollection varMap;
ExprManager em(nm->getOptions());
std::unique_ptr<SmtEngine> queryChecker;
+ ExprManagerMapCollection varMap;
initializeChecker(queryChecker, em, varMap, qy, needExport);
Result r = queryChecker->checkSat();
Trace("sygus-qgen-check") << " query: ...got : " << r << std::endl;
diff --git a/src/theory/quantifiers/query_generator.h b/src/theory/quantifiers/query_generator.h
index f0b3fa565..b283d818b 100644
--- a/src/theory/quantifiers/query_generator.h
+++ b/src/theory/quantifiers/query_generator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/relevant_domain.cpp b/src/theory/quantifiers/relevant_domain.cpp
index 849e73822..071bd7933 100644
--- a/src/theory/quantifiers/relevant_domain.cpp
+++ b/src/theory/quantifiers/relevant_domain.cpp
@@ -2,9 +2,9 @@
/*! \file relevant_domain.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -169,7 +169,9 @@ void RelevantDomain::computeRelevantDomain( Node q, Node n, bool hasPol, bool po
computeRelevantDomainOpCh( rf, n[i] );
}
}
- if( n[i].getKind()!=FORALL ){
+ // do not recurse under nested closures
+ if (!n[i].isClosure())
+ {
bool newHasPol;
bool newPol;
QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
diff --git a/src/theory/quantifiers/relevant_domain.h b/src/theory/quantifiers/relevant_domain.h
index 78fe23890..ff419666f 100644
--- a/src/theory/quantifiers/relevant_domain.h
+++ b/src/theory/quantifiers/relevant_domain.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/rewrite_engine.cpp b/src/theory/quantifiers/rewrite_engine.cpp
index ed9666d80..ff42a9c89 100644
--- a/src/theory/quantifiers/rewrite_engine.cpp
+++ b/src/theory/quantifiers/rewrite_engine.cpp
@@ -2,9 +2,9 @@
/*! \file rewrite_engine.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/rewrite_engine.h b/src/theory/quantifiers/rewrite_engine.h
index febcc0126..88a9882ca 100644
--- a/src/theory/quantifiers/rewrite_engine.h
+++ b/src/theory/quantifiers/rewrite_engine.h
@@ -2,9 +2,9 @@
/*! \file rewrite_engine.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Tim King
+ ** Andrew Reynolds, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/single_inv_partition.cpp b/src/theory/quantifiers/single_inv_partition.cpp
index 851204a84..153ab71cc 100644
--- a/src/theory/quantifiers/single_inv_partition.cpp
+++ b/src/theory/quantifiers/single_inv_partition.cpp
@@ -2,9 +2,9 @@
/*! \file single_inv_partition.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/single_inv_partition.h b/src/theory/quantifiers/single_inv_partition.h
index 199ab29d4..1a01f3b8b 100644
--- a/src/theory/quantifiers/single_inv_partition.h
+++ b/src/theory/quantifiers/single_inv_partition.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/skolemize.cpp b/src/theory/quantifiers/skolemize.cpp
index 2f12c000c..1d2b869c4 100644
--- a/src/theory/quantifiers/skolemize.cpp
+++ b/src/theory/quantifiers/skolemize.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/skolemize.h b/src/theory/quantifiers/skolemize.h
index 5605c8c5f..3db3aa838 100644
--- a/src/theory/quantifiers/skolemize.h
+++ b/src/theory/quantifiers/skolemize.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/solution_filter.cpp b/src/theory/quantifiers/solution_filter.cpp
index 19d39e997..2c6186372 100644
--- a/src/theory/quantifiers/solution_filter.cpp
+++ b/src/theory/quantifiers/solution_filter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/solution_filter.h b/src/theory/quantifiers/solution_filter.h
index d162f41f0..80af05eb8 100644
--- a/src/theory/quantifiers/solution_filter.h
+++ b/src/theory/quantifiers/solution_filter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp b/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
index aa20c1f76..00d040af5 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
@@ -2,9 +2,9 @@
/*! \file ce_guided_single_inv.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv.h b/src/theory/quantifiers/sygus/ce_guided_single_inv.h
index 0de7b4290..93b972fbc 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv.h
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
index 7f7c56f84..074971622 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
@@ -2,9 +2,9 @@
/*! \file ce_guided_single_inv_sol.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
index fb0862413..bdafe7bef 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis.cpp b/src/theory/quantifiers/sygus/cegis.cpp
index 6aca71ca3..314b43711 100644
--- a/src/theory/quantifiers/sygus/cegis.cpp
+++ b/src/theory/quantifiers/sygus/cegis.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis.h b/src/theory/quantifiers/sygus/cegis.h
index 849a39639..f706e3d97 100644
--- a/src/theory/quantifiers/sygus/cegis.h
+++ b/src/theory/quantifiers/sygus/cegis.h
@@ -2,9 +2,9 @@
/*! \file cegis.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
+ ** Andrew Reynolds, Haniel Barbosa, FabianWolff
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis_unif.cpp b/src/theory/quantifiers/sygus/cegis_unif.cpp
index 18e313bf0..e34669425 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.cpp
+++ b/src/theory/quantifiers/sygus/cegis_unif.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis_unif.h b/src/theory/quantifiers/sygus/cegis_unif.h
index 972d07af7..4255966c6 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.h
+++ b/src/theory/quantifiers/sygus/cegis_unif.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/enum_stream_substitution.cpp b/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
index e8daa4256..b568b8f53 100644
--- a/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
+++ b/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/enum_stream_substitution.h b/src/theory/quantifiers/sygus/enum_stream_substitution.h
index 476a364ea..4d4c85703 100644
--- a/src/theory/quantifiers/sygus/enum_stream_substitution.h
+++ b/src/theory/quantifiers/sygus/enum_stream_substitution.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_enumerator.cpp b/src/theory/quantifiers/sygus/sygus_enumerator.cpp
index 9981b5141..bd85ea496 100644
--- a/src/theory/quantifiers/sygus/sygus_enumerator.cpp
+++ b/src/theory/quantifiers/sygus/sygus_enumerator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -476,6 +476,13 @@ bool SygusEnumerator::TermEnumSlave::validateIndex()
{
Assert(d_index == tc.getNumTerms());
Trace("sygus-enum-debug2") << "slave(" << d_tn << ") : force master...\n";
+ // if the size of the master is larger than the size limit, then
+ // there is no use continuing, since there are no more terms that this
+ // slave enumerator can return.
+ if (d_master->getCurrentSize() > d_sizeLim)
+ {
+ return false;
+ }
// must push the master index
if (!d_master->increment())
{
@@ -655,9 +662,14 @@ bool SygusEnumerator::TermEnumMaster::increment()
{
return false;
}
+ Trace("sygus-enum-summary") << "SygusEnumerator::TermEnumMaster: increment "
+ << d_tn << "..." << std::endl;
d_isIncrementing = true;
bool ret = incrementInternal();
d_isIncrementing = false;
+ Trace("sygus-enum-summary")
+ << "SygusEnumerator::TermEnumMaster: finished increment " << d_tn
+ << std::endl;
return ret;
}
@@ -789,7 +801,15 @@ bool SygusEnumerator::TermEnumMaster::incrementInternal()
// restart with constructor class one (skip nullary constructors)
d_consClassNum = 1;
- return incrementInternal();
+
+ // We break for a round: return the null term when we cross a size
+ // boundary. This ensures that the necessary breaks are taken, e.g.
+ // in slave enumerators who may instead want to abandon this call to
+ // increment master when the size of the master makes their increment
+ // infeasible.
+ d_currTermSet = true;
+ d_currTerm = Node::null();
+ return true;
}
bool incSuccess = false;
@@ -819,6 +839,8 @@ bool SygusEnumerator::TermEnumMaster::incrementInternal()
// the term was not unique based on rewriting
Trace("sygus-enum-debug2") << "master(" << d_tn
<< "): failed addTerm\n";
+ // we will return null (d_currTermSet is true at this point)
+ Assert(d_currTermSet);
d_currTerm = Node::null();
}
}
diff --git a/src/theory/quantifiers/sygus/sygus_enumerator.h b/src/theory/quantifiers/sygus/sygus_enumerator.h
index 716a047d2..5bfe60f49 100644
--- a/src/theory/quantifiers/sygus/sygus_enumerator.h
+++ b/src/theory/quantifiers/sygus/sygus_enumerator.h
@@ -1,10 +1,10 @@
-/******************** */
+/********************* */
/*! \file sygus_enumerator.h
** \verbatim
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp b/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
index ac7467c00..e44b604d0 100644
--- a/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
+++ b/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_eval_unfold.h b/src/theory/quantifiers/sygus/sygus_eval_unfold.h
index 94f37c845..ad1e3331d 100644
--- a/src/theory/quantifiers/sygus/sygus_eval_unfold.h
+++ b/src/theory/quantifiers/sygus/sygus_eval_unfold.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_explain.cpp b/src/theory/quantifiers/sygus/sygus_explain.cpp
index ddf52001e..f55ce2097 100644
--- a/src/theory/quantifiers/sygus/sygus_explain.cpp
+++ b/src/theory/quantifiers/sygus/sygus_explain.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_explain.h b/src/theory/quantifiers/sygus/sygus_explain.h
index 3f18a65d6..522d6ee8a 100644
--- a/src/theory/quantifiers/sygus/sygus_explain.h
+++ b/src/theory/quantifiers/sygus/sygus_explain.h
@@ -2,9 +2,9 @@
/*! \file sygus_explain.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, FabianWolff
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp b/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
index 67fa1398e..48da8e8e8 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_cons.h b/src/theory/quantifiers/sygus/sygus_grammar_cons.h
index bf377bd33..e39943866 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_cons.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_cons.h
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_cons.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp b/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
index 8e41b6b07..fb6b23132 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_norm.h b/src/theory/quantifiers/sygus/sygus_grammar_norm.h
index 993d41668..e186fb02c 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_norm.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_norm.h
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_norm.h
** \verbatim
** Top contributors (to current version):
- ** Haniel Barbosa, Tim King, Andrew Reynolds
+ ** Haniel Barbosa, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_red.cpp b/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
index 24aa74c9e..6ad590f28 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_red.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_red.h b/src/theory/quantifiers/sygus/sygus_grammar_red.h
index ce83402c9..eb43b5c3c 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_red.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_red.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_invariance.cpp b/src/theory/quantifiers/sygus/sygus_invariance.cpp
index 5ea01ef57..b494e085e 100644
--- a/src/theory/quantifiers/sygus/sygus_invariance.cpp
+++ b/src/theory/quantifiers/sygus/sygus_invariance.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_invariance.h b/src/theory/quantifiers/sygus/sygus_invariance.h
index 02c249411..a5b32cb0d 100644
--- a/src/theory/quantifiers/sygus/sygus_invariance.h
+++ b/src/theory/quantifiers/sygus/sygus_invariance.h
@@ -2,9 +2,9 @@
/*! \file sygus_invariance.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_module.cpp b/src/theory/quantifiers/sygus/sygus_module.cpp
index 3471472fa..42a125ae5 100644
--- a/src/theory/quantifiers/sygus/sygus_module.cpp
+++ b/src/theory/quantifiers/sygus/sygus_module.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_module.h b/src/theory/quantifiers/sygus/sygus_module.h
index fef24e9bb..07bce1791 100644
--- a/src/theory/quantifiers/sygus/sygus_module.h
+++ b/src/theory/quantifiers/sygus/sygus_module.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_pbe.cpp b/src/theory/quantifiers/sygus/sygus_pbe.cpp
index 7891814be..2ab51f1fb 100644
--- a/src/theory/quantifiers/sygus/sygus_pbe.cpp
+++ b/src/theory/quantifiers/sygus/sygus_pbe.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_pbe.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
+ ** Andrew Reynolds, Haniel Barbosa, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_pbe.h b/src/theory/quantifiers/sygus/sygus_pbe.h
index dc7f1cc51..3738c40b7 100644
--- a/src/theory/quantifiers/sygus/sygus_pbe.h
+++ b/src/theory/quantifiers/sygus/sygus_pbe.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_process_conj.cpp b/src/theory/quantifiers/sygus/sygus_process_conj.cpp
index a2454758a..2b9592d4d 100644
--- a/src/theory/quantifiers/sygus/sygus_process_conj.cpp
+++ b/src/theory/quantifiers/sygus/sygus_process_conj.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_process_conj.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_process_conj.h b/src/theory/quantifiers/sygus/sygus_process_conj.h
index 199619699..86e066b6b 100644
--- a/src/theory/quantifiers/sygus/sygus_process_conj.h
+++ b/src/theory/quantifiers/sygus/sygus_process_conj.h
@@ -2,9 +2,9 @@
/*! \file sygus_process_conj.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_repair_const.cpp b/src/theory/quantifiers/sygus/sygus_repair_const.cpp
index 09525712f..85a0a4bf8 100644
--- a/src/theory/quantifiers/sygus/sygus_repair_const.cpp
+++ b/src/theory/quantifiers/sygus/sygus_repair_const.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_repair_const.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -115,6 +115,7 @@ void SygusRepairConst::initializeChecker(std::unique_ptr<SmtEngine>& checker,
try
{
checker.reset(new SmtEngine(&em));
+ checker->setIsInternalSubsolver();
checker->setTimeLimit(options::sygusRepairConstTimeout(), true);
checker->setLogic(smt::currentSmtEngine()->getLogicInfo());
// renable options disabled by sygus
diff --git a/src/theory/quantifiers/sygus/sygus_repair_const.h b/src/theory/quantifiers/sygus/sygus_repair_const.h
index c6bfd2806..ee23d9732 100644
--- a/src/theory/quantifiers/sygus/sygus_repair_const.h
+++ b/src/theory/quantifiers/sygus/sygus_repair_const.h
@@ -2,9 +2,9 @@
/*! \file sygus_repair_const.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif.cpp b/src/theory/quantifiers/sygus/sygus_unif.cpp
index 5d7017a1c..2eb508fde 100644
--- a/src/theory/quantifiers/sygus/sygus_unif.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_unif.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Aina Niemetz, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif.h b/src/theory/quantifiers/sygus/sygus_unif.h
index 0784644f8..f7a218ec0 100644
--- a/src/theory/quantifiers/sygus/sygus_unif.h
+++ b/src/theory/quantifiers/sygus/sygus_unif.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_io.cpp b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
index c9db62735..207aa4c8e 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_io.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_unif_io.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -161,7 +161,12 @@ bool UnifContextIo::getStringIncrement(SygusUnifIo* sui,
if (d_vals[j] == sui->d_true)
{
// example is active in this context
- Assert(vals[j].isConst());
+ if (!vals[j].isConst())
+ {
+ // the value is unknown, thus we cannot use it to increment the strings
+ // position
+ return false;
+ }
String mystr = vals[j].getConst<String>();
ival = mystr.size();
if (mystr.size() <= ex_vals[j].size())
@@ -199,7 +204,11 @@ bool UnifContextIo::isStringSolved(SygusUnifIo* sui,
if (d_vals[j] == sui->d_true)
{
// example is active in this context
- Assert(vals[j].isConst());
+ if (!vals[j].isConst())
+ {
+ // value is unknown, thus it does not solve
+ return false;
+ }
String mystr = vals[j].getConst<String>();
if (ex_vals[j] != mystr)
{
@@ -448,12 +457,23 @@ void SubsumeTrie::getLeavesInternal(const std::vector<Node>& vals,
++it)
{
int new_status = status;
- // if the current value is true
+ bool success = true;
+ // If the current value is true, then this is a relevant point.
+ // We must consider the value of this child.
if (curr_val_true)
{
- if (status != 0)
+ if (it->first.isNull())
{
- Assert(it->first.isConst() && it->first.getType().isBoolean());
+ // The value of this child is unknown on this point, hence we
+ // do not recurse
+ success = false;
+ }
+ else if (status != 0)
+ {
+ // if the status is not zero (indicating that we have a mix of T/F),
+ // then we must compute the new status.
+ Assert(it->first.getType().isBoolean());
+ Assert(it->first.isConst());
new_status = (it->first.getConst<bool>() ? 1 : -1);
if (status != -2 && new_status != status)
{
@@ -461,7 +481,10 @@ void SubsumeTrie::getLeavesInternal(const std::vector<Node>& vals,
}
}
}
- it->second.getLeavesInternal(vals, pol, v, index + 1, new_status);
+ if (success)
+ {
+ it->second.getLeavesInternal(vals, pol, v, index + 1, new_status);
+ }
}
}
}
@@ -641,23 +664,41 @@ void SygusUnifIo::notifyEnumeration(Node e, Node v, std::vector<Node>& lemmas)
for (unsigned j = 0, size = itsr->second.size(); j < size; j++)
{
Node res = itsr->second[j];
- Assert(res.isConst());
+ // The value of this term for this example, or the truth value of
+ // the I/O pair if the role of this enumerator is enum_io.
Node resb;
if (eiv.getRole() == enum_io)
{
Node out = d_examples_out[j];
Assert(out.isConst());
- resb = res == out ? d_true : d_false;
+ // If the result is not constant, then we assume that it does
+ // not satisfy the example. This is a safe underapproximation
+ // of the good behavior of the current term, that is, we only
+ // produce solutions whose values are fully evaluatable on all input
+ // points. Notice that terms may be used as leaves of decision
+ // trees that are fully evaluatable on points in that branch, but
+ // are not evaluatable on others, e.g. (head x) in the solution:
+ // (ite ((_ is cons) x) (head x) 5)
+ resb = (res.isConst() && res == out) ? d_true : d_false;
}
else
{
- resb = res;
+ // We only set resb if it is constant, otherwise it remains null.
+ // This indicates its value cannot be determined.
+ if (res.isConst())
+ {
+ resb = res;
+ }
}
cond_vals[resb] = true;
results.push_back(resb);
if (Trace.isOn("sygus-sui-enum"))
{
- if (resb.getType().isBoolean())
+ if (resb.isNull())
+ {
+ Trace("sygus-sui-enum") << "_";
+ }
+ else if (resb.getType().isBoolean())
{
Trace("sygus-sui-enum") << (resb == d_true ? "1" : "0");
}
@@ -677,6 +718,7 @@ void SygusUnifIo::notifyEnumeration(Node e, Node v, std::vector<Node>& lemmas)
std::vector<Node> subsume;
if (cond_vals.find(d_false) == cond_vals.end())
{
+ Assert(cond_vals.size() == 1);
// it is the entire solution, we are done
Trace("sygus-sui-enum")
<< " ...success, full solution added to PBE pool : "
@@ -917,23 +959,27 @@ bool SygusUnifIo::getExplanationForEnumeratorExclude(
std::vector<unsigned> cmp_indices;
for (unsigned i = 0, size = results.size(); i < size; i++)
{
- Assert(results[i].isConst());
- Assert(d_examples_out[i].isConst());
- Trace("sygus-sui-cterm-debug")
- << " " << results[i] << " <> " << d_examples_out[i];
- Node cont = nm->mkNode(STRING_STRCTN, d_examples_out[i], results[i]);
- Node contr = Rewriter::rewrite(cont);
- if (contr == d_false)
- {
- cmp_indices.push_back(i);
- Trace("sygus-sui-cterm-debug") << "...not contained." << std::endl;
- }
- else
+ // If the result is not constant, then it is worthless. It does not
+ // impact whether the term is excluded.
+ if (results[i].isConst())
{
- Trace("sygus-sui-cterm-debug") << "...contained." << std::endl;
- if (isConditional)
+ Assert(d_examples_out[i].isConst());
+ Trace("sygus-sui-cterm-debug")
+ << " " << results[i] << " <> " << d_examples_out[i];
+ Node cont = nm->mkNode(STRING_STRCTN, d_examples_out[i], results[i]);
+ Node contr = Rewriter::rewrite(cont);
+ if (contr == d_false)
{
- return false;
+ cmp_indices.push_back(i);
+ Trace("sygus-sui-cterm-debug") << "...not contained." << std::endl;
+ }
+ else
+ {
+ Trace("sygus-sui-cterm-debug") << "...contained." << std::endl;
+ if (isConditional)
+ {
+ return false;
+ }
}
}
}
diff --git a/src/theory/quantifiers/sygus/sygus_unif_io.h b/src/theory/quantifiers/sygus/sygus_unif_io.h
index 7f48645bf..fced29871 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_io.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_io.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -218,7 +218,24 @@ class SubsumeTrie
int status,
bool checkExistsOnly,
bool checkSubsume);
- /** helper function for above functions */
+ /** helper function for above functions
+ *
+ * This adds to v[-1], v[0], v[1] the children of the trie that occur
+ * along paths that contain only false (v[-1]), a mix of true/false (v[0]),
+ * and only true (v[1]) values for respectively for relevant points.
+ *
+ * vals/pol is used to determine the relevant points, which impacts which
+ * paths of the trie to traverse on this call.
+ * In particular, all points such that (pol ? vals[index] : !vals[index])
+ * are relevant.
+ *
+ * Paths that contain an unknown value for any relevant point are not
+ * traversed. In the larger picture, this ensures that terms are not used in a
+ * way such that their unknown value is relevant to the overall behavior of
+ * a synthesis solution.
+ *
+ * status holds the current value of v (0,1,-1) that we will be adding to.
+ */
void getLeavesInternal(const std::vector<Node>& vals,
bool pol,
std::map<int, std::vector<Node>>& v,
diff --git a/src/theory/quantifiers/sygus/sygus_unif_rl.cpp b/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
index ee07efdfe..3514ccbeb 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_rl.h b/src/theory/quantifiers/sygus/sygus_unif_rl.h
index 179a5ac16..0f0b2c533 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_rl.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_rl.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_strat.cpp b/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
index 3cbac1eaa..acf5a2d7f 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_strat.h b/src/theory/quantifiers/sygus/sygus_unif_strat.h
index 41923f7a1..54933a2af 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_strat.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_strat.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/synth_conjecture.cpp b/src/theory/quantifiers/sygus/synth_conjecture.cpp
index e25e8a225..756e1f791 100644
--- a/src/theory/quantifiers/sygus/synth_conjecture.cpp
+++ b/src/theory/quantifiers/sygus/synth_conjecture.cpp
@@ -2,9 +2,9 @@
/*! \file synth_conjecture.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -540,6 +540,7 @@ bool SynthConjecture::doCheck(std::vector<Node>& lems)
Trace("cegqi-engine") << "Check side condition..." << std::endl;
Trace("cegqi-debug") << "Check side condition : " << sc << std::endl;
SmtEngine scSmt(nm->toExprManager());
+ scSmt.setIsInternalSubsolver();
scSmt.setLogic(smt::currentSmtEngine()->getLogicInfo());
scSmt.assertFormula(sc.toExpr());
Result r = scSmt.checkSat();
@@ -572,6 +573,7 @@ bool SynthConjecture::doCheck(std::vector<Node>& lems)
{
Trace("cegqi-engine") << " *** Verify with subcall..." << std::endl;
SmtEngine verifySmt(nm->toExprManager());
+ verifySmt.setIsInternalSubsolver();
verifySmt.setLogic(smt::currentSmtEngine()->getLogicInfo());
verifySmt.assertFormula(query.toExpr());
Result r = verifySmt.checkSat();
diff --git a/src/theory/quantifiers/sygus/synth_conjecture.h b/src/theory/quantifiers/sygus/synth_conjecture.h
index cf6178fdb..923d1d57c 100644
--- a/src/theory/quantifiers/sygus/synth_conjecture.h
+++ b/src/theory/quantifiers/sygus/synth_conjecture.h
@@ -2,9 +2,9 @@
/*! \file synth_conjecture.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/synth_engine.cpp b/src/theory/quantifiers/sygus/synth_engine.cpp
index d3eff1750..fc1ed938d 100644
--- a/src/theory/quantifiers/sygus/synth_engine.cpp
+++ b/src/theory/quantifiers/sygus/synth_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -159,6 +159,7 @@ void SynthEngine::assignConjecture(Node q)
{
// create new smt engine to do quantifier elimination
SmtEngine smt_qe(nm->toExprManager());
+ smt_qe.setIsInternalSubsolver();
smt_qe.setLogic(smt::currentSmtEngine()->getLogicInfo());
Trace("cegqi-qep") << "Property is non-ground single invocation, run "
"QE to obtain single invocation."
diff --git a/src/theory/quantifiers/sygus/synth_engine.h b/src/theory/quantifiers/sygus/synth_engine.h
index a7346b888..2dbd20827 100644
--- a/src/theory/quantifiers/sygus/synth_engine.h
+++ b/src/theory/quantifiers/sygus/synth_engine.h
@@ -2,9 +2,9 @@
/*! \file synth_engine.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Tim King
+ ** Andrew Reynolds, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/term_database_sygus.cpp b/src/theory/quantifiers/sygus/term_database_sygus.cpp
index 9198f7e56..b1e6dc96d 100644
--- a/src/theory/quantifiers/sygus/term_database_sygus.cpp
+++ b/src/theory/quantifiers/sygus/term_database_sygus.cpp
@@ -2,9 +2,9 @@
/*! \file term_database_sygus.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/term_database_sygus.h b/src/theory/quantifiers/sygus/term_database_sygus.h
index 7a522ded6..cdeaf1803 100644
--- a/src/theory/quantifiers/sygus/term_database_sygus.h
+++ b/src/theory/quantifiers/sygus/term_database_sygus.h
@@ -2,9 +2,9 @@
/*! \file term_database_sygus.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus_sampler.cpp b/src/theory/quantifiers/sygus_sampler.cpp
index f1908fc19..10d7ef6ab 100644
--- a/src/theory/quantifiers/sygus_sampler.cpp
+++ b/src/theory/quantifiers/sygus_sampler.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_sampler.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -40,7 +40,6 @@ void SygusSampler::initialize(TypeNode tn,
d_tds = nullptr;
d_use_sygus_type = false;
d_is_valid = true;
- d_tn = tn;
d_ftn = TypeNode::null();
d_type_vars.clear();
d_vars.clear();
@@ -95,7 +94,6 @@ void SygusSampler::initializeSygus(TermDbSygus* tds,
Assert(d_ftn.isDatatype());
const Datatype& dt = static_cast<DatatypeType>(d_ftn.toType()).getDatatype();
Assert(dt.isSygus());
- d_tn = TypeNode::fromType(dt.getSygusType());
Trace("sygus-sample") << "Register sampler for " << f << std::endl;
@@ -264,28 +262,30 @@ bool SygusSampler::PtTrie::add(std::vector<Node>& pt)
Node SygusSampler::registerTerm(Node n, bool forceKeep)
{
- if (d_is_valid)
+ if (!d_is_valid)
{
- Node bn = n;
- // if this is a sygus type, get its builtin analog
- if (d_use_sygus_type)
- {
- Assert(!d_ftn.isNull());
- bn = d_tds->sygusToBuiltin(n);
- Assert(d_builtin_to_sygus.find(bn) == d_builtin_to_sygus.end()
- || d_builtin_to_sygus[bn] == n);
- d_builtin_to_sygus[bn] = n;
- }
- Assert(bn.getType() == d_tn);
- Node res = d_trie.add(bn, this, 0, d_samples.size(), forceKeep);
- if (d_use_sygus_type)
- {
- Assert(d_builtin_to_sygus.find(res) != d_builtin_to_sygus.end());
- res = res != bn ? d_builtin_to_sygus[res] : n;
- }
- return res;
+ // do nothing
+ return n;
+ }
+ Node bn = n;
+ TypeNode tn = n.getType();
+ // If we are using sygus types, get the builtin analog of n.
+ if (d_use_sygus_type)
+ {
+ bn = d_tds->sygusToBuiltin(n);
+ d_builtin_to_sygus[tn][bn] = n;
+ }
+ // cache based on the (original) type of n
+ Node res = d_trie[tn].add(bn, this, 0, d_samples.size(), forceKeep);
+ // If we are using sygus types, map back to an original.
+ // Notice that d_builtin_to_sygus is not necessarily bijective.
+ if (d_use_sygus_type)
+ {
+ std::map<Node, Node>& bts = d_builtin_to_sygus[tn];
+ Assert(bts.find(res) != bts.end());
+ res = res != bn ? bts[res] : n;
}
- return n;
+ return res;
}
bool SygusSampler::isContiguous(Node n)
diff --git a/src/theory/quantifiers/sygus_sampler.h b/src/theory/quantifiers/sygus_sampler.h
index 28f715b34..3a2c42b9d 100644
--- a/src/theory/quantifiers/sygus_sampler.h
+++ b/src/theory/quantifiers/sygus_sampler.h
@@ -2,9 +2,9 @@
/*! \file sygus_sampler.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, FabianWolff, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -194,14 +194,15 @@ class SygusSampler : public LazyTrieEvaluator
};
/** a trie for samples */
PtTrie d_samples_trie;
- /** type of nodes we will be registering with this class */
- TypeNode d_tn;
/** the sygus type for this sampler (if applicable). */
TypeNode d_ftn;
- /** whether we are registering terms of type d_ftn */
+ /** whether we are registering terms of sygus types with this sampler */
bool d_use_sygus_type;
- /** map from builtin terms to the sygus term they correspond to */
- std::map<Node, Node> d_builtin_to_sygus;
+ /**
+ * For each (sygus) type, a map from builtin terms to the sygus term they
+ * correspond to.
+ */
+ std::map<TypeNode, std::map<Node, Node> > d_builtin_to_sygus;
/** all variables we are sampling values for */
std::vector<Node> d_vars;
/** type variables
@@ -235,8 +236,22 @@ class SygusSampler : public LazyTrieEvaluator
* that type.
*/
std::map<TypeNode, std::vector<Node> > d_type_consts;
- /** the lazy trie */
- LazyTrie d_trie;
+ /** a lazy trie for each type
+ *
+ * This stores the evaluation of all terms registered to this class.
+ *
+ * Notice if we are registering sygus terms with this class, then terms
+ * are grouped into this trie according to their sygus type, and not their
+ * builtin type. For example, for grammar:
+ * A -> x | B+1
+ * B -> x | 0 | 1 | B+B
+ * If we register C^B_+( C^B_x(), C^B_0() ) and C^A_x() with this class,
+ * then x+0 is registered to d_trie[B] and x is registered to d_trie[A],
+ * and no rewrite rule is reported. The reason for this is that otherwise
+ * we would end up reporting many useless rewrites since the same builtin
+ * term can be generated by multiple sygus types (e.g. C^B_x() and C^A_x()).
+ */
+ std::map<TypeNode, LazyTrie> d_trie;
/** is this sampler valid?
*
* A sampler can be invalid if sample points cannot be generated for a type
diff --git a/src/theory/quantifiers/term_canonize.cpp b/src/theory/quantifiers/term_canonize.cpp
index d257198d9..9817da5a1 100644
--- a/src/theory/quantifiers/term_canonize.cpp
+++ b/src/theory/quantifiers/term_canonize.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_canonize.h b/src/theory/quantifiers/term_canonize.h
index e23627271..b433992c8 100644
--- a/src/theory/quantifiers/term_canonize.h
+++ b/src/theory/quantifiers/term_canonize.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp
index 44c5586c3..472e2561f 100644
--- a/src/theory/quantifiers/term_database.cpp
+++ b/src/theory/quantifiers/term_database.cpp
@@ -2,9 +2,9 @@
/*! \file term_database.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Francois Bobot
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_database.h b/src/theory/quantifiers/term_database.h
index cc9a24d08..3cc8dbaa9 100644
--- a/src/theory/quantifiers/term_database.h
+++ b/src/theory/quantifiers/term_database.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_enumeration.cpp b/src/theory/quantifiers/term_enumeration.cpp
index 8e3219768..0336700ad 100644
--- a/src/theory/quantifiers/term_enumeration.cpp
+++ b/src/theory/quantifiers/term_enumeration.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -87,6 +87,26 @@ bool TermEnumeration::mayComplete(TypeNode tn, unsigned maxCard)
return mc;
}
+bool TermEnumeration::getDomain(TypeNode tn, std::vector<Node>& dom)
+{
+ if (!mayComplete(tn))
+ {
+ return false;
+ }
+ Node curre;
+ unsigned counter = 0;
+ do
+ {
+ curre = getEnumerateTerm(tn, counter);
+ counter++;
+ if (!curre.isNull())
+ {
+ dom.push_back(curre);
+ }
+ } while (!curre.isNull());
+ return true;
+}
+
} /* CVC4::theory::quantifiers namespace */
} /* CVC4::theory namespace */
} /* CVC4 namespace */
diff --git a/src/theory/quantifiers/term_enumeration.h b/src/theory/quantifiers/term_enumeration.h
index cf25335f4..ed6529ef1 100644
--- a/src/theory/quantifiers/term_enumeration.h
+++ b/src/theory/quantifiers/term_enumeration.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -56,6 +56,14 @@ class TermEnumeration
*/
static bool mayComplete(TypeNode tn, unsigned cardMax);
+ /** get domain
+ *
+ * If tn is a type such that mayComplete(tn) returns true, this method
+ * adds all domain elements of tn to dom and returns true. Otherwise, this
+ * method returns false.
+ */
+ bool getDomain(TypeNode tn, std::vector<Node>& dom);
+
private:
/** ground terms enumerated for types */
std::unordered_map<TypeNode, std::vector<Node>, TypeNodeHashFunction>
diff --git a/src/theory/quantifiers/term_util.cpp b/src/theory/quantifiers/term_util.cpp
index 4c9cf2c8d..065096607 100644
--- a/src/theory/quantifiers/term_util.cpp
+++ b/src/theory/quantifiers/term_util.cpp
@@ -2,9 +2,9 @@
/*! \file term_util.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Paul Meng, Yoni Zohar
+ ** Andrew Reynolds, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_util.h b/src/theory/quantifiers/term_util.h
index 820821991..061da81df 100644
--- a/src/theory/quantifiers/term_util.h
+++ b/src/theory/quantifiers/term_util.h
@@ -2,9 +2,9 @@
/*! \file term_util.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Morgan Deters, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/theory_quantifiers.cpp b/src/theory/quantifiers/theory_quantifiers.cpp
index 6f647aeb1..f24a4bb2b 100644
--- a/src/theory/quantifiers/theory_quantifiers.cpp
+++ b/src/theory/quantifiers/theory_quantifiers.cpp
@@ -2,9 +2,9 @@
/*! \file theory_quantifiers.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -38,8 +38,6 @@ using namespace CVC4::theory::quantifiers;
TheoryQuantifiers::TheoryQuantifiers(Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
Theory(THEORY_QUANTIFIERS, c, u, out, valuation, logicInfo)
{
- d_numInstantiations = 0;
- d_baseDecLevel = -1;
out.handleUserAttribute( "axiom", this );
out.handleUserAttribute( "conjecture", this );
out.handleUserAttribute( "fun-def", this );
@@ -71,13 +69,6 @@ void TheoryQuantifiers::preRegisterTerm(TNode n) {
return;
}
Debug("quantifiers-prereg") << "TheoryQuantifiers::preRegisterTerm() " << n << endl;
- if (options::cbqi() && !options::recurseCbqi()
- && TermUtil::hasInstConstAttr(n))
- {
- Debug("quantifiers-prereg")
- << "TheoryQuantifiers::preRegisterTerm() done, unused " << n << endl;
- return;
- }
// Preregister the quantified formula.
// This initializes the modules used for handling n in this user context.
getQuantifiersEngine()->preRegisterQuantifier(n);
@@ -135,7 +126,7 @@ void TheoryQuantifiers::check(Effort e) {
Trace("quantifiers-assert") << "quantifiers::assert(): " << assertion << std::endl;
switch(assertion.getKind()) {
case kind::FORALL:
- assertUniversal( assertion );
+ getQuantifiersEngine()->assertQuantifier(assertion, true);
break;
case kind::INST_CLOSURE:
getQuantifiersEngine()->addTermToDatabase( assertion[0], false, true );
@@ -150,7 +141,7 @@ void TheoryQuantifiers::check(Effort e) {
{
switch( assertion[0].getKind()) {
case kind::FORALL:
- assertExistential( assertion );
+ getQuantifiersEngine()->assertQuantifier(assertion[0], false);
break;
case kind::EQUAL:
//do nothing
@@ -171,20 +162,6 @@ void TheoryQuantifiers::check(Effort e) {
getQuantifiersEngine()->check( e );
}
-void TheoryQuantifiers::assertUniversal( Node n ){
- Assert( n.getKind()==FORALL );
- if( !options::cbqi() || options::recurseCbqi() || !TermUtil::hasInstConstAttr(n) ){
- getQuantifiersEngine()->assertQuantifier( n, true );
- }
-}
-
-void TheoryQuantifiers::assertExistential( Node n ){
- Assert( n.getKind()== NOT && n[0].getKind()==FORALL );
- if( !options::cbqi() || options::recurseCbqi() || !TermUtil::hasInstConstAttr(n[0]) ){
- getQuantifiersEngine()->assertQuantifier( n[0], false );
- }
-}
-
void TheoryQuantifiers::setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value){
QuantAttributes::setUserAttribute( attr, n, node_values, str_value );
}
diff --git a/src/theory/quantifiers/theory_quantifiers.h b/src/theory/quantifiers/theory_quantifiers.h
index 55047fe2b..f6e19f700 100644
--- a/src/theory/quantifiers/theory_quantifiers.h
+++ b/src/theory/quantifiers/theory_quantifiers.h
@@ -2,9 +2,9 @@
/*! \file theory_quantifiers.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andrew Reynolds
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -56,13 +56,6 @@ class TheoryQuantifiers : public Theory {
std::vector<Node> node_values,
std::string str_value) override;
- private:
- void assertUniversal( Node n );
- void assertExistential( Node n );
- /** number of instantiations */
- int d_numInstantiations;
- int d_baseDecLevel;
-
};/* class TheoryQuantifiers */
}/* CVC4::theory::quantifiers namespace */
diff --git a/src/theory/quantifiers/theory_quantifiers_type_rules.h b/src/theory/quantifiers/theory_quantifiers_type_rules.h
index bac3ca58f..18aa7f6ee 100644
--- a/src/theory/quantifiers/theory_quantifiers_type_rules.h
+++ b/src/theory/quantifiers/theory_quantifiers_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp
index 433621d31..f86d82874 100644
--- a/src/theory/quantifiers_engine.cpp
+++ b/src/theory/quantifiers_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h
index 512f0c651..37d2deb40 100644
--- a/src/theory/quantifiers_engine.h
+++ b/src/theory/quantifiers_engine.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp
index dcd90c236..0530e7889 100644
--- a/src/theory/rep_set.cpp
+++ b/src/theory/rep_set.cpp
@@ -2,9 +2,9 @@
/*! \file rep_set.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rep_set.h b/src/theory/rep_set.h
index d5de1e520..6e990051a 100644
--- a/src/theory/rep_set.h
+++ b/src/theory/rep_set.h
@@ -2,9 +2,9 @@
/*! \file rep_set.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Morgan Deters
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter.cpp b/src/theory/rewriter.cpp
index 58f4832c0..3f9405785 100644
--- a/src/theory/rewriter.cpp
+++ b/src/theory/rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter.h b/src/theory/rewriter.h
index cc948ae7c..5a15d15fb 100644
--- a/src/theory/rewriter.h
+++ b/src/theory/rewriter.h
@@ -2,9 +2,9 @@
/*! \file rewriter.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Liana Hadarean
+ ** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter_attributes.h b/src/theory/rewriter_attributes.h
index 7fb6dbfaa..93120735e 100644
--- a/src/theory/rewriter_attributes.h
+++ b/src/theory/rewriter_attributes.h
@@ -2,9 +2,9 @@
/*! \file rewriter_attributes.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Tim King
+ ** Dejan Jovanovic, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter_tables_template.h b/src/theory/rewriter_tables_template.h
index f34972781..531b62a49 100644
--- a/src/theory/rewriter_tables_template.h
+++ b/src/theory/rewriter_tables_template.h
@@ -2,9 +2,9 @@
/*! \file rewriter_tables_template.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Tim King, Morgan Deters
+ ** Dejan Jovanovic, Tim King, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/theory_sep.cpp b/src/theory/sep/theory_sep.cpp
index d1ba65dd8..b787cd94f 100644
--- a/src/theory/sep/theory_sep.cpp
+++ b/src/theory/sep/theory_sep.cpp
@@ -2,9 +2,9 @@
/*! \file theory_sep.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/theory_sep.h b/src/theory/sep/theory_sep.h
index f8bb58784..8d5d3442a 100644
--- a/src/theory/sep/theory_sep.h
+++ b/src/theory/sep/theory_sep.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/theory_sep_rewriter.cpp b/src/theory/sep/theory_sep_rewriter.cpp
index 614d4f7c4..92e7db7aa 100644
--- a/src/theory/sep/theory_sep_rewriter.cpp
+++ b/src/theory/sep/theory_sep_rewriter.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/theory_sep_rewriter.h b/src/theory/sep/theory_sep_rewriter.h
index 8ed8c3de2..6112632d8 100644
--- a/src/theory/sep/theory_sep_rewriter.h
+++ b/src/theory/sep/theory_sep_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/theory_sep_type_rules.h b/src/theory/sep/theory_sep_type_rules.h
index f5a59c41c..52a72e5dc 100644
--- a/src/theory/sep/theory_sep_type_rules.h
+++ b/src/theory/sep/theory_sep_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/normal_form.h b/src/theory/sets/normal_form.h
index 16a32d989..9c5e4e9c8 100644
--- a/src/theory/sets/normal_form.h
+++ b/src/theory/sets/normal_form.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/rels_utils.h b/src/theory/sets/rels_utils.h
index 39175bf0f..1bbbb359b 100644
--- a/src/theory/sets/rels_utils.h
+++ b/src/theory/sets/rels_utils.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets.cpp b/src/theory/sets/theory_sets.cpp
index 188523a10..563a981b1 100644
--- a/src/theory/sets/theory_sets.cpp
+++ b/src/theory/sets/theory_sets.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets.h b/src/theory/sets/theory_sets.h
index e679d33c3..3caa4ae16 100644
--- a/src/theory/sets/theory_sets.h
+++ b/src/theory/sets/theory_sets.h
@@ -2,9 +2,9 @@
/*! \file theory_sets.h
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Tim King, Andrew Reynolds
+ ** Tim King, Kshitij Bansal, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_private.cpp b/src/theory/sets/theory_sets_private.cpp
index 1c302573e..a62a235c3 100644
--- a/src/theory/sets/theory_sets_private.cpp
+++ b/src/theory/sets/theory_sets_private.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Kshitij Bansal, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -700,9 +700,11 @@ void TheorySetsPrivate::fullEffortCheck(){
checkUpwardsClosure( lemmas );
flushLemmas( lemmas );
if( !hasProcessed() ){
- std::vector< Node > intro_sets;
- //for cardinality
- if( d_card_enabled ){
+ checkDisequalities(lemmas);
+ flushLemmas(lemmas);
+ if (!hasProcessed() && d_card_enabled)
+ {
+ // for cardinality
checkCardBuildGraph( lemmas );
flushLemmas( lemmas );
if( !hasProcessed() ){
@@ -712,28 +714,24 @@ void TheorySetsPrivate::fullEffortCheck(){
checkCardCycles( lemmas );
flushLemmas( lemmas );
if( !hasProcessed() ){
+ std::vector<Node> intro_sets;
checkNormalForms( lemmas, intro_sets );
flushLemmas( lemmas );
+ if (!hasProcessed() && !intro_sets.empty())
+ {
+ Assert(intro_sets.size() == 1);
+ Trace("sets-intro")
+ << "Introduce term : " << intro_sets[0] << std::endl;
+ Trace("sets-intro") << " Actual Intro : ";
+ debugPrintSet(intro_sets[0], "sets-nf");
+ Trace("sets-nf") << std::endl;
+ Node k = getProxy(intro_sets[0]);
+ d_sentLemma = true;
+ }
}
}
}
}
- if( !hasProcessed() ){
- checkDisequalities( lemmas );
- flushLemmas( lemmas );
- if( !hasProcessed() ){
- //introduce splitting on venn regions (absolute last resort)
- if( d_card_enabled && !hasProcessed() && !intro_sets.empty() ){
- Assert( intro_sets.size()==1 );
- Trace("sets-intro") << "Introduce term : " << intro_sets[0] << std::endl;
- Trace("sets-intro") << " Actual Intro : ";
- debugPrintSet( intro_sets[0], "sets-nf" );
- Trace("sets-nf") << std::endl;
- Node k = getProxy( intro_sets[0] );
- d_sentLemma = true;
- }
- }
- }
}
}
}
@@ -1380,8 +1378,8 @@ void TheorySetsPrivate::checkNormalForm( Node eqc, std::vector< Node >& intro_se
Assert( d_nf.find( eqc )==d_nf.end() );
bool success = true;
+ Node emp_set = getEmptySet(tn);
if( !base.isNull() ){
- Node emp_set = getEmptySet( tn );
for( unsigned j=0; j<comps.size(); j++ ){
//compare if equal
std::vector< Node > c;
@@ -1491,12 +1489,24 @@ void TheorySetsPrivate::checkNormalForm( Node eqc, std::vector< Node >& intro_se
Trace("sets-nf") << "----> N " << eqc << " => F " << base << std::endl;
}else{
Trace("sets-nf") << "failed to build N " << eqc << std::endl;
- Assert( false );
}
}else{
- //normal form is this equivalence class
- d_nf[eqc].push_back( eqc );
- Trace("sets-nf") << "----> N " << eqc << " => { " << eqc << " }" << std::endl;
+ // must ensure disequal from empty
+ if (!eqc.isConst() && !ee_areDisequal(eqc, emp_set)
+ && (d_pol_mems[0].find(eqc) == d_pol_mems[0].end()
+ || d_pol_mems[0][eqc].empty()))
+ {
+ Trace("sets-nf-debug") << "Split on leaf " << eqc << std::endl;
+ split(eqc.eqNode(emp_set));
+ success = false;
+ }
+ else
+ {
+ // normal form is this equivalence class
+ d_nf[eqc].push_back(eqc);
+ Trace("sets-nf") << "----> N " << eqc << " => { " << eqc << " }"
+ << std::endl;
+ }
}
if( success ){
//send to parents
diff --git a/src/theory/sets/theory_sets_private.h b/src/theory/sets/theory_sets_private.h
index 447ac33a1..5cda78271 100644
--- a/src/theory/sets/theory_sets_private.h
+++ b/src/theory/sets/theory_sets_private.h
@@ -2,9 +2,9 @@
/*! \file theory_sets_private.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Kshitij Bansal, Mathias Preiner
+ ** Andrew Reynolds, Kshitij Bansal, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_rels.cpp b/src/theory/sets/theory_sets_rels.cpp
index ebfa6f8bb..74d0e5bd8 100644
--- a/src/theory/sets/theory_sets_rels.cpp
+++ b/src/theory/sets/theory_sets_rels.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Paul Meng, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_rels.h b/src/theory/sets/theory_sets_rels.h
index 161b5195e..7cad0f18d 100644
--- a/src/theory/sets/theory_sets_rels.h
+++ b/src/theory/sets/theory_sets_rels.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Paul Meng, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_rewriter.cpp b/src/theory/sets/theory_sets_rewriter.cpp
index 2a2015319..15cec0856 100644
--- a/src/theory/sets/theory_sets_rewriter.cpp
+++ b/src/theory/sets/theory_sets_rewriter.cpp
@@ -2,9 +2,9 @@
/*! \file theory_sets_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Kshitij Bansal, Andrew Reynolds, Paul Meng
+ ** Andrew Reynolds, Kshitij Bansal, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_rewriter.h b/src/theory/sets/theory_sets_rewriter.h
index c506f19a5..af071dc60 100644
--- a/src/theory/sets/theory_sets_rewriter.h
+++ b/src/theory/sets/theory_sets_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_type_enumerator.h b/src/theory/sets/theory_sets_type_enumerator.h
index 65a614f9a..cb6532abf 100644
--- a/src/theory/sets/theory_sets_type_enumerator.h
+++ b/src/theory/sets/theory_sets_type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_type_rules.h b/src/theory/sets/theory_sets_type_rules.h
index 8cbb62883..1ba30f1e6 100644
--- a/src/theory/sets/theory_sets_type_rules.h
+++ b/src/theory/sets/theory_sets_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Kshitij Bansal, Andrew Reynolds, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/shared_terms_database.cpp b/src/theory/shared_terms_database.cpp
index ca10314e8..a13ac207a 100644
--- a/src/theory/shared_terms_database.cpp
+++ b/src/theory/shared_terms_database.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/shared_terms_database.h b/src/theory/shared_terms_database.h
index 5389c021f..0c73195c5 100644
--- a/src/theory/shared_terms_database.h
+++ b/src/theory/shared_terms_database.h
@@ -2,9 +2,9 @@
/*! \file shared_terms_database.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Mathias Preiner
+ ** Dejan Jovanovic, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sort_inference.cpp b/src/theory/sort_inference.cpp
index 74f2e4803..6c141cf2a 100644
--- a/src/theory/sort_inference.cpp
+++ b/src/theory/sort_inference.cpp
@@ -2,9 +2,9 @@
/*! \file sort_inference.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Paul Meng, Tim King
+ ** Andrew Reynolds, Paul Meng, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/sort_inference.h b/src/theory/sort_inference.h
index b93d5531c..98c85ebe7 100644
--- a/src/theory/sort_inference.h
+++ b/src/theory/sort_inference.h
@@ -2,9 +2,9 @@
/*! \file sort_inference.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Paul Meng, Tim King
+ ** Andrew Reynolds, Paul Meng
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_elim.cpp b/src/theory/strings/regexp_elim.cpp
index 749816280..afffce2c8 100644
--- a/src/theory/strings/regexp_elim.cpp
+++ b/src/theory/strings/regexp_elim.cpp
@@ -2,9 +2,9 @@
/*! \file regexp_elim.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_elim.h b/src/theory/strings/regexp_elim.h
index eddf33e71..6d2f28eaa 100644
--- a/src/theory/strings/regexp_elim.h
+++ b/src/theory/strings/regexp_elim.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_operation.cpp b/src/theory/strings/regexp_operation.cpp
index f53f82cc4..91beb1ab5 100644
--- a/src/theory/strings/regexp_operation.cpp
+++ b/src/theory/strings/regexp_operation.cpp
@@ -2,9 +2,9 @@
/*! \file regexp_operation.cpp
** \verbatim
** Top contributors (to current version):
- ** Tianyi Liang, Tim King, Andrew Reynolds
+ ** Tianyi Liang, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_operation.h b/src/theory/strings/regexp_operation.h
index 57e68abfb..4a7b7b293 100644
--- a/src/theory/strings/regexp_operation.h
+++ b/src/theory/strings/regexp_operation.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tianyi Liang, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_solver.cpp b/src/theory/strings/regexp_solver.cpp
new file mode 100644
index 000000000..f0e68890a
--- /dev/null
+++ b/src/theory/strings/regexp_solver.cpp
@@ -0,0 +1,547 @@
+/********************* */
+/*! \file regexp_solver.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Andrew Reynolds, Tianyi Liang, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Implementation of the regular expression solver for the theory of
+ ** strings.
+ **
+ **/
+
+#include "theory/strings/regexp_solver.h"
+
+#include <cmath>
+
+#include "options/strings_options.h"
+#include "theory/strings/theory_strings.h"
+#include "theory/strings/theory_strings_rewriter.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+using namespace CVC4::context;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+RegExpSolver::RegExpSolver(TheoryStrings& p,
+ context::Context* c,
+ context::UserContext* u)
+ : d_parent(p),
+ d_regexp_memberships(c),
+ d_regexp_ucached(u),
+ d_regexp_ccached(c),
+ d_pos_memberships(c),
+ d_neg_memberships(c),
+ d_inter_cache(c),
+ d_inter_index(c),
+ d_processed_memberships(c)
+{
+ d_emptyString = NodeManager::currentNM()->mkConst(::CVC4::String(""));
+ std::vector<Node> nvec;
+ d_emptyRegexp = NodeManager::currentNM()->mkNode(REGEXP_EMPTY, nvec);
+ d_true = NodeManager::currentNM()->mkConst(true);
+ d_false = NodeManager::currentNM()->mkConst(false);
+}
+
+unsigned RegExpSolver::getNumMemberships(Node n, bool isPos)
+{
+ if (isPos)
+ {
+ NodeUIntMap::const_iterator it = d_pos_memberships.find(n);
+ if (it != d_pos_memberships.end())
+ {
+ return (*it).second;
+ }
+ }
+ else
+ {
+ NodeUIntMap::const_iterator it = d_neg_memberships.find(n);
+ if (it != d_neg_memberships.end())
+ {
+ return (*it).second;
+ }
+ }
+ return 0;
+}
+
+Node RegExpSolver::getMembership(Node n, bool isPos, unsigned i)
+{
+ return isPos ? d_pos_memberships_data[n][i] : d_neg_memberships_data[n][i];
+}
+
+Node RegExpSolver::mkAnd(Node c1, Node c2)
+{
+ return NodeManager::currentNM()->mkNode(AND, c1, c2);
+}
+
+void RegExpSolver::check()
+{
+ bool addedLemma = false;
+ bool changed = false;
+ std::vector<Node> processed;
+ std::vector<Node> cprocessed;
+
+ Trace("regexp-debug") << "Checking Memberships ... " << std::endl;
+ for (NodeUIntMap::const_iterator itr_xr = d_pos_memberships.begin();
+ itr_xr != d_pos_memberships.end();
+ ++itr_xr)
+ {
+ bool spflag = false;
+ Node x = (*itr_xr).first;
+ Trace("regexp-debug") << "Checking Memberships for " << x << std::endl;
+ if (d_inter_index.find(x) == d_inter_index.end())
+ {
+ d_inter_index[x] = 0;
+ }
+ int cur_inter_idx = d_inter_index[x];
+ unsigned n_pmem = (*itr_xr).second;
+ Assert(getNumMemberships(x, true) == n_pmem);
+ if (cur_inter_idx != (int)n_pmem)
+ {
+ if (n_pmem == 1)
+ {
+ d_inter_cache[x] = getMembership(x, true, 0);
+ d_inter_index[x] = 1;
+ Trace("regexp-debug") << "... only one choice " << std::endl;
+ }
+ else if (n_pmem > 1)
+ {
+ Node r;
+ if (d_inter_cache.find(x) != d_inter_cache.end())
+ {
+ r = d_inter_cache[x];
+ }
+ if (r.isNull())
+ {
+ r = getMembership(x, true, 0);
+ cur_inter_idx = 1;
+ }
+
+ unsigned k_start = cur_inter_idx;
+ Trace("regexp-debug") << "... staring from : " << cur_inter_idx
+ << ", we have " << n_pmem << std::endl;
+ for (unsigned k = k_start; k < n_pmem; k++)
+ {
+ Node r2 = getMembership(x, true, k);
+ r = d_regexp_opr.intersect(r, r2, spflag);
+ if (spflag)
+ {
+ break;
+ }
+ else if (r == d_emptyRegexp)
+ {
+ std::vector<Node> vec_nodes;
+ for (unsigned kk = 0; kk <= k; kk++)
+ {
+ Node rr = getMembership(x, true, kk);
+ Node n =
+ NodeManager::currentNM()->mkNode(STRING_IN_REGEXP, x, rr);
+ vec_nodes.push_back(n);
+ }
+ Node conc;
+ d_parent.sendInference(vec_nodes, conc, "INTERSECT CONFLICT", true);
+ addedLemma = true;
+ break;
+ }
+ if (d_parent.inConflict())
+ {
+ break;
+ }
+ }
+ // updates
+ if (!d_parent.inConflict() && !spflag)
+ {
+ d_inter_cache[x] = r;
+ d_inter_index[x] = (int)n_pmem;
+ }
+ }
+ }
+ }
+
+ Trace("regexp-debug")
+ << "... No Intersect Conflict in Memberships, addedLemma: " << addedLemma
+ << std::endl;
+ if (!addedLemma)
+ {
+ NodeManager* nm = NodeManager::currentNM();
+ for (unsigned i = 0; i < d_regexp_memberships.size(); i++)
+ {
+ // check regular expression membership
+ Node assertion = d_regexp_memberships[i];
+ Trace("regexp-debug")
+ << "Check : " << assertion << " "
+ << (d_regexp_ucached.find(assertion) == d_regexp_ucached.end()) << " "
+ << (d_regexp_ccached.find(assertion) == d_regexp_ccached.end())
+ << std::endl;
+ if (d_regexp_ucached.find(assertion) == d_regexp_ucached.end()
+ && d_regexp_ccached.find(assertion) == d_regexp_ccached.end())
+ {
+ Trace("strings-regexp")
+ << "We have regular expression assertion : " << assertion
+ << std::endl;
+ Node atom = assertion.getKind() == NOT ? assertion[0] : assertion;
+ bool polarity = assertion.getKind() != NOT;
+ bool flag = true;
+ Node x = atom[0];
+ Node r = atom[1];
+ std::vector<Node> rnfexp;
+
+ if (!x.isConst())
+ {
+ x = d_parent.getNormalString(x, rnfexp);
+ changed = true;
+ }
+ if (!d_regexp_opr.checkConstRegExp(r))
+ {
+ r = getNormalSymRegExp(r, rnfexp);
+ changed = true;
+ }
+ Trace("strings-regexp-nf") << "Term " << atom << " is normalized to "
+ << x << " IN " << r << std::endl;
+ if (changed)
+ {
+ Node tmp = Rewriter::rewrite(nm->mkNode(STRING_IN_REGEXP, x, r));
+ if (!polarity)
+ {
+ tmp = tmp.negate();
+ }
+ if (tmp == d_true)
+ {
+ d_regexp_ccached.insert(assertion);
+ continue;
+ }
+ else if (tmp == d_false)
+ {
+ std::vector<Node> exp_n;
+ exp_n.push_back(assertion);
+ Node conc = Node::null();
+ d_parent.sendInference(rnfexp, exp_n, conc, "REGEXP NF Conflict");
+ addedLemma = true;
+ break;
+ }
+ }
+
+ if (polarity)
+ {
+ flag = checkPDerivative(x, r, atom, addedLemma, rnfexp);
+ }
+ else
+ {
+ if (!options::stringExp())
+ {
+ throw LogicException(
+ "Strings Incomplete (due to Negative Membership) by default, "
+ "try --strings-exp option.");
+ }
+ }
+ if (flag)
+ {
+ // check if the term is atomic
+ Node xr = d_parent.getRepresentative(x);
+ Trace("strings-regexp")
+ << "Unroll/simplify membership of atomic term " << xr
+ << std::endl;
+ // if so, do simple unrolling
+ std::vector<Node> nvec;
+ if (nvec.empty())
+ {
+ d_regexp_opr.simplify(atom, nvec, polarity);
+ }
+ std::vector<Node> exp_n;
+ exp_n.push_back(assertion);
+ Node conc = nvec.size() == 1 ? nvec[0] : nm->mkNode(AND, nvec);
+ conc = Rewriter::rewrite(conc);
+ d_parent.sendInference(rnfexp, exp_n, conc, "REGEXP_Unfold");
+ addedLemma = true;
+ if (changed)
+ {
+ cprocessed.push_back(assertion);
+ }
+ else
+ {
+ processed.push_back(assertion);
+ }
+ }
+ }
+ if (d_parent.inConflict())
+ {
+ break;
+ }
+ }
+ }
+ if (addedLemma)
+ {
+ if (!d_parent.inConflict())
+ {
+ for (unsigned i = 0; i < processed.size(); i++)
+ {
+ Trace("strings-regexp")
+ << "...add " << processed[i] << " to u-cache." << std::endl;
+ d_regexp_ucached.insert(processed[i]);
+ }
+ for (unsigned i = 0; i < cprocessed.size(); i++)
+ {
+ Trace("strings-regexp")
+ << "...add " << cprocessed[i] << " to c-cache." << std::endl;
+ d_regexp_ccached.insert(cprocessed[i]);
+ }
+ }
+ }
+}
+
+bool RegExpSolver::checkPDerivative(
+ Node x, Node r, Node atom, bool& addedLemma, std::vector<Node>& nf_exp)
+{
+ if (d_parent.areEqual(x, d_emptyString))
+ {
+ Node exp;
+ switch (d_regexp_opr.delta(r, exp))
+ {
+ case 0:
+ {
+ std::vector<Node> exp_n;
+ exp_n.push_back(atom);
+ exp_n.push_back(x.eqNode(d_emptyString));
+ d_parent.sendInference(nf_exp, exp_n, exp, "RegExp Delta");
+ addedLemma = true;
+ d_regexp_ccached.insert(atom);
+ return false;
+ }
+ case 1:
+ {
+ d_regexp_ccached.insert(atom);
+ break;
+ }
+ case 2:
+ {
+ std::vector<Node> exp_n;
+ exp_n.push_back(atom);
+ exp_n.push_back(x.eqNode(d_emptyString));
+ Node conc;
+ d_parent.sendInference(nf_exp, exp_n, conc, "RegExp Delta CONFLICT");
+ addedLemma = true;
+ d_regexp_ccached.insert(atom);
+ return false;
+ }
+ default:
+ // Impossible
+ break;
+ }
+ }
+ else
+ {
+ if (deriveRegExp(x, r, atom, nf_exp))
+ {
+ addedLemma = true;
+ d_regexp_ccached.insert(atom);
+ return false;
+ }
+ }
+ return true;
+}
+
+CVC4::String RegExpSolver::getHeadConst(Node x)
+{
+ if (x.isConst())
+ {
+ return x.getConst<String>();
+ }
+ else if (x.getKind() == STRING_CONCAT)
+ {
+ if (x[0].isConst())
+ {
+ return x[0].getConst<String>();
+ }
+ }
+ return d_emptyString.getConst<String>();
+}
+
+bool RegExpSolver::deriveRegExp(Node x,
+ Node r,
+ Node atom,
+ std::vector<Node>& ant)
+{
+ Assert(x != d_emptyString);
+ Trace("regexp-derive") << "RegExpSolver::deriveRegExp: x=" << x
+ << ", r= " << r << std::endl;
+ CVC4::String s = getHeadConst(x);
+ if (!s.isEmptyString() && d_regexp_opr.checkConstRegExp(r))
+ {
+ Node conc = Node::null();
+ Node dc = r;
+ bool flag = true;
+ for (unsigned i = 0; i < s.size(); ++i)
+ {
+ CVC4::String c = s.substr(i, 1);
+ Node dc2;
+ int rt = d_regexp_opr.derivativeS(dc, c, dc2);
+ dc = dc2;
+ if (rt == 2)
+ {
+ // CONFLICT
+ flag = false;
+ break;
+ }
+ }
+ // send lemma
+ if (flag)
+ {
+ if (x.isConst())
+ {
+ Assert(false,
+ "Impossible: RegExpSolver::deriveRegExp: const string in const "
+ "regular expression.");
+ return false;
+ }
+ else
+ {
+ Assert(x.getKind() == STRING_CONCAT);
+ std::vector<Node> vec_nodes;
+ for (unsigned int i = 1; i < x.getNumChildren(); ++i)
+ {
+ vec_nodes.push_back(x[i]);
+ }
+ Node left = TheoryStringsRewriter::mkConcat(STRING_CONCAT, vec_nodes);
+ left = Rewriter::rewrite(left);
+ conc = NodeManager::currentNM()->mkNode(STRING_IN_REGEXP, left, dc);
+ }
+ }
+ std::vector<Node> exp_n;
+ exp_n.push_back(atom);
+ d_parent.sendInference(ant, exp_n, conc, "RegExp-Derive");
+ return true;
+ }
+ return false;
+}
+
+void RegExpSolver::addMembership(Node assertion)
+{
+ bool polarity = assertion.getKind() != NOT;
+ TNode atom = polarity ? assertion : assertion[0];
+ Node x = atom[0];
+ Node r = atom[1];
+ if (polarity)
+ {
+ unsigned index = 0;
+ NodeUIntMap::const_iterator it = d_pos_memberships.find(x);
+ if (it != d_pos_memberships.end())
+ {
+ index = (*it).second;
+ for (unsigned k = 0; k < index; k++)
+ {
+ if (k < d_pos_memberships_data[x].size())
+ {
+ if (d_pos_memberships_data[x][k] == r)
+ {
+ return;
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ d_pos_memberships[x] = index + 1;
+ if (index < d_pos_memberships_data[x].size())
+ {
+ d_pos_memberships_data[x][index] = r;
+ }
+ else
+ {
+ d_pos_memberships_data[x].push_back(r);
+ }
+ }
+ else if (!options::stringIgnNegMembership())
+ {
+ unsigned index = 0;
+ NodeUIntMap::const_iterator it = d_neg_memberships.find(x);
+ if (it != d_neg_memberships.end())
+ {
+ index = (*it).second;
+ for (unsigned k = 0; k < index; k++)
+ {
+ if (k < d_neg_memberships_data[x].size())
+ {
+ if (d_neg_memberships_data[x][k] == r)
+ {
+ return;
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ d_neg_memberships[x] = index + 1;
+ if (index < d_neg_memberships_data[x].size())
+ {
+ d_neg_memberships_data[x][index] = r;
+ }
+ else
+ {
+ d_neg_memberships_data[x].push_back(r);
+ }
+ }
+ // old
+ if (polarity || !options::stringIgnNegMembership())
+ {
+ d_regexp_memberships.push_back(assertion);
+ }
+}
+
+Node RegExpSolver::getNormalSymRegExp(Node r, std::vector<Node>& nf_exp)
+{
+ Node ret = r;
+ switch (r.getKind())
+ {
+ case REGEXP_EMPTY:
+ case REGEXP_SIGMA: break;
+ case STRING_TO_REGEXP:
+ {
+ if (!r[0].isConst())
+ {
+ Node tmp = d_parent.getNormalString(r[0], nf_exp);
+ if (tmp != r[0])
+ {
+ ret = NodeManager::currentNM()->mkNode(STRING_TO_REGEXP, tmp);
+ }
+ }
+ break;
+ }
+ case REGEXP_CONCAT:
+ case REGEXP_UNION:
+ case REGEXP_INTER:
+ case REGEXP_STAR:
+ {
+ std::vector<Node> vec_nodes;
+ for (const Node& cr : r)
+ {
+ vec_nodes.push_back(getNormalSymRegExp(cr, nf_exp));
+ }
+ ret = Rewriter::rewrite(
+ NodeManager::currentNM()->mkNode(r.getKind(), vec_nodes));
+ break;
+ }
+ default:
+ {
+ Trace("strings-error") << "Unsupported term: " << r
+ << " in normalization SymRegExp." << std::endl;
+ Assert(false);
+ }
+ }
+ return ret;
+}
+
+} // namespace strings
+} // namespace theory
+} // namespace CVC4
diff --git a/src/theory/strings/regexp_solver.h b/src/theory/strings/regexp_solver.h
new file mode 100644
index 000000000..8b78e6ebc
--- /dev/null
+++ b/src/theory/strings/regexp_solver.h
@@ -0,0 +1,106 @@
+/********************* */
+/*! \file regexp_solver.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ ** Andrew Reynolds, Tianyi Liang, Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved. See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Regular expression solver for the theory of strings.
+ **
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__STRINGS__REGEXP_SOLVER_H
+#define __CVC4__THEORY__STRINGS__REGEXP_SOLVER_H
+
+#include <map>
+#include "context/cdhashset.h"
+#include "context/cdlist.h"
+#include "context/context.h"
+#include "expr/node.h"
+#include "theory/strings/regexp_operation.h"
+#include "util/regexp.h"
+
+namespace CVC4 {
+namespace theory {
+namespace strings {
+
+class TheoryStrings;
+
+class RegExpSolver
+{
+ typedef context::CDList<Node> NodeList;
+ typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
+ typedef context::CDHashMap<Node, int, NodeHashFunction> NodeIntMap;
+ typedef context::CDHashMap<Node, unsigned, NodeHashFunction> NodeUIntMap;
+ typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
+ typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+
+ public:
+ RegExpSolver(TheoryStrings& p, context::Context* c, context::UserContext* u);
+ ~RegExpSolver() {}
+
+ /** add membership
+ *
+ * This informs this class that assertion is asserted in the current context.
+ * We expect that assertion is a (possibly negated) regular expression
+ * membership.
+ */
+ void addMembership(Node assertion);
+ /** check
+ *
+ * Tells this solver to check whether the regular expressions asserted to it
+ * are consistent. If they are not, then this class will call the
+ * sendInference method of its parent TheoryString object, indicating that
+ * it requires a conflict or lemma to be processed.
+ */
+ void check();
+
+ private:
+ // Constants
+ Node d_emptyString;
+ Node d_emptyRegexp;
+ Node d_true;
+ Node d_false;
+ /** the parent of this object */
+ TheoryStrings& d_parent;
+ // check membership constraints
+ Node mkAnd(Node c1, Node c2);
+ bool checkPDerivative(
+ Node x, Node r, Node atom, bool& addedLemma, std::vector<Node>& nf_exp);
+ Node getMembership(Node n, bool isPos, unsigned i);
+ unsigned getNumMemberships(Node n, bool isPos);
+ CVC4::String getHeadConst(Node x);
+ bool deriveRegExp(Node x, Node r, Node atom, std::vector<Node>& ant);
+ Node getNormalSymRegExp(Node r, std::vector<Node>& nf_exp);
+ // regular expression memberships
+ NodeList d_regexp_memberships;
+ NodeSet d_regexp_ucached;
+ NodeSet d_regexp_ccached;
+ // stored assertions
+ NodeUIntMap d_pos_memberships;
+ std::map<Node, std::vector<Node> > d_pos_memberships_data;
+ NodeUIntMap d_neg_memberships;
+ std::map<Node, std::vector<Node> > d_neg_memberships_data;
+ // semi normal forms for symbolic expression
+ std::map<Node, Node> d_nf_regexps;
+ std::map<Node, std::vector<Node> > d_nf_regexps_exp;
+ // intersection
+ NodeNodeMap d_inter_cache;
+ NodeIntMap d_inter_index;
+ // processed memberships
+ NodeSet d_processed_memberships;
+ /** regular expression operation module */
+ RegExpOpr d_regexp_opr;
+}; /* class TheoryStrings */
+
+} // namespace strings
+} // namespace theory
+} // namespace CVC4
+
+#endif /* __CVC4__THEORY__STRINGS__THEORY_STRINGS_H */
diff --git a/src/theory/strings/skolem_cache.cpp b/src/theory/strings/skolem_cache.cpp
index 276cb70d6..669b424a4 100644
--- a/src/theory/strings/skolem_cache.cpp
+++ b/src/theory/strings/skolem_cache.cpp
@@ -2,9 +2,9 @@
/*! \file skolem_cache.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/skolem_cache.h b/src/theory/strings/skolem_cache.h
index a6e91a246..fd40e2521 100644
--- a/src/theory/strings/skolem_cache.h
+++ b/src/theory/strings/skolem_cache.h
@@ -2,9 +2,9 @@
/*! \file skolem_cache.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 23b818984..14216f8aa 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tianyi Liang, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -121,15 +121,7 @@ TheoryStrings::TheoryStrings(context::Context* c,
d_functionsTerms(c),
d_has_extf(c, false),
d_has_str_code(false),
- d_regexp_memberships(c),
- d_regexp_ucached(u),
- d_regexp_ccached(c),
- d_pos_memberships(c),
- d_neg_memberships(c),
- d_inter_cache(c),
- d_inter_index(c),
- d_processed_memberships(c),
- d_regexp_ant(c),
+ d_regexp_solver(*this, c, u),
d_input_vars(u),
d_input_var_lsum(u),
d_cardinality_lits(u),
@@ -169,8 +161,6 @@ TheoryStrings::TheoryStrings(context::Context* c,
d_one = NodeManager::currentNM()->mkConst( Rational( 1 ) );
d_neg_one = NodeManager::currentNM()->mkConst(Rational(-1));
d_emptyString = NodeManager::currentNM()->mkConst( ::CVC4::String("") );
- std::vector< Node > nvec;
- d_emptyRegexp = NodeManager::currentNM()->mkNode( kind::REGEXP_EMPTY, nvec );
d_true = NodeManager::currentNM()->mkConst( true );
d_false = NodeManager::currentNM()->mkConst( false );
@@ -258,6 +248,39 @@ Node TheoryStrings::getLength( Node t, std::vector< Node >& exp ) {
return getLengthExp( t, exp, t );
}
+Node TheoryStrings::getNormalString(Node x, std::vector<Node>& nf_exp)
+{
+ if (!x.isConst())
+ {
+ Node xr = getRepresentative(x);
+ if (d_normal_forms.find(xr) != d_normal_forms.end())
+ {
+ Node ret = mkConcat(d_normal_forms[xr]);
+ nf_exp.insert(nf_exp.end(),
+ d_normal_forms_exp[xr].begin(),
+ d_normal_forms_exp[xr].end());
+ addToExplanation(x, d_normal_forms_base[xr], nf_exp);
+ Trace("strings-debug")
+ << "Term: " << x << " has a normal form " << ret << std::endl;
+ return ret;
+ }
+ // if x does not have a normal form, then it should not occur in the
+ // equality engine and hence should be its own representative.
+ Assert(xr == x);
+ if (x.getKind() == kind::STRING_CONCAT)
+ {
+ std::vector<Node> vec_nodes;
+ for (unsigned i = 0; i < x.getNumChildren(); i++)
+ {
+ Node nc = getNormalString(x[i], nf_exp);
+ vec_nodes.push_back(nc);
+ }
+ return mkConcat(vec_nodes);
+ }
+ }
+ return x;
+}
+
void TheoryStrings::setMasterEqualityEngine(eq::EqualityEngine* eq) {
d_equalityEngine.setMasterEqualityEngine(eq);
}
@@ -885,8 +908,15 @@ void TheoryStrings::preRegisterTerm(TNode n) {
// Function applications/predicates
d_equalityEngine.addTerm(n);
}
- //concat terms do not contribute to theory combination? TODO: verify
- if (n.hasOperator() && kindToTheoryId(k) == THEORY_STRINGS
+ // Set d_functionsTerms stores all function applications that are
+ // relevant to theory combination. Notice that this is a subset of
+ // the applications whose kinds are function kinds in the equality
+ // engine. This means it does not include applications of operators
+ // like re.++, which is not a function kind in the equality engine.
+ // Concatenation terms do not need to be considered here because
+ // their arguments have string type and do not introduce any shared
+ // terms.
+ if (n.hasOperator() && d_equalityEngine.isFunctionKind(k)
&& k != kind::STRING_CONCAT)
{
d_functionsTerms.push_back( n );
@@ -1023,6 +1053,30 @@ void TheoryStrings::checkExtfReductions( int effort ) {
}
}
+void TheoryStrings::checkMemberships()
+{
+ // add the memberships
+ std::vector<Node> mems = getExtTheory()->getActive(kind::STRING_IN_REGEXP);
+ for (unsigned i = 0; i < mems.size(); i++)
+ {
+ Node n = mems[i];
+ Assert(d_extf_info_tmp.find(n) != d_extf_info_tmp.end());
+ if (!d_extf_info_tmp[n].d_const.isNull())
+ {
+ bool pol = d_extf_info_tmp[n].d_const.getConst<bool>();
+ Trace("strings-process-debug")
+ << " add membership : " << n << ", pol = " << pol << std::endl;
+ d_regexp_solver.addMembership(pol ? n : n.negate());
+ }
+ else
+ {
+ Trace("strings-process-debug")
+ << " irrelevant (non-asserted) membership : " << n << std::endl;
+ }
+ }
+ d_regexp_solver.check();
+}
+
TheoryStrings::EqcInfo::EqcInfo(context::Context* c)
: d_length_term(c),
d_code_term(c),
@@ -1572,7 +1626,6 @@ void TheoryStrings::checkExtfEval( int effort ) {
einfo.d_exp.insert(einfo.d_exp.end(), exp[i].begin(), exp[i].end());
// inference is rewriting the substituted node
Node nrc = Rewriter::rewrite( sn );
- Kind nrck = nrc.getKind();
//if rewrites to a constant, then do the inference and mark as reduced
if( nrc.isConst() ){
if( effort<3 ){
@@ -1649,25 +1702,37 @@ void TheoryStrings::checkExtfEval( int effort ) {
einfo.d_model_active = false;
}
}
- //if it reduces to a conjunction, infer each and reduce
}
- else if ((nrck == OR && einfo.d_const == d_false)
- || (nrck == AND && einfo.d_const == d_true))
+ else
{
- Assert( effort<3 );
- getExtTheory()->markReduced( n );
- einfo.d_exp.push_back(einfo.d_const == d_false ? n.negate() : n);
- Trace("strings-extf-debug") << " decomposable..." << std::endl;
- Trace("strings-extf") << " resolve extf : " << sn << " -> " << nrc
- << ", const = " << einfo.d_const << std::endl;
- for (const Node& nrcc : nrc)
+ bool reduced = false;
+ if (!einfo.d_const.isNull() && nrc.getType().isBoolean())
{
- sendInternalInference(einfo.d_exp,
- einfo.d_const == d_false ? nrcc.negate() : nrcc,
- effort == 0 ? "EXTF_d" : "EXTF_d-N");
+ bool pol = einfo.d_const == d_true;
+ Node nrcAssert = pol ? nrc : nrc.negate();
+ Node nAssert = pol ? n : n.negate();
+ Assert(effort < 3);
+ einfo.d_exp.push_back(nAssert);
+ Trace("strings-extf-debug") << " decomposable..." << std::endl;
+ Trace("strings-extf") << " resolve extf : " << sn << " -> " << nrc
+ << ", const = " << einfo.d_const << std::endl;
+ reduced = sendInternalInference(
+ einfo.d_exp, nrcAssert, effort == 0 ? "EXTF_d" : "EXTF_d-N");
+ if (!reduced)
+ {
+ Trace("strings-extf") << "EXT: could not fully reduce ";
+ Trace("strings-extf")
+ << nAssert << " via " << nrcAssert << std::endl;
+ }
+ }
+ if (reduced)
+ {
+ getExtTheory()->markReduced(n);
+ }
+ else
+ {
+ to_reduce = nrc;
}
- }else{
- to_reduce = nrc;
}
}else{
to_reduce = sterms[i];
@@ -3477,7 +3542,6 @@ TheoryStrings::ProcessLoopResult TheoryStrings::processLoop(
nm->mkNode(kind::REGEXP_STAR,
nm->mkNode(kind::STRING_TO_REGEXP, restr))));
cc = cc == d_true ? conc2 : nm->mkNode(kind::AND, cc, conc2);
- d_regexp_ant[conc2] = ant;
vconc.push_back(cc);
}
conc = vconc.size() == 0 ? Node::null() : vconc.size() == 1
@@ -3527,11 +3591,6 @@ TheoryStrings::ProcessLoopResult TheoryStrings::processLoop(
conc = nm->mkNode(kind::AND, vec_conc);
} // normal case
- // set its antecedant to ant, to say when it is relevant
- if (!str_in_re.isNull())
- {
- d_regexp_ant[str_in_re] = ant;
- }
// we will be done
info.d_conc = conc;
info.d_id = INFER_FLOOP;
@@ -3943,17 +4002,22 @@ void TheoryStrings::registerTerm( Node n, int effort ) {
}
}
-void TheoryStrings::sendInternalInference(std::vector<Node>& exp,
+bool TheoryStrings::sendInternalInference(std::vector<Node>& exp,
Node conc,
const char* c)
{
- if (conc.getKind() == AND)
+ if (conc.getKind() == AND
+ || (conc.getKind() == NOT && conc[0].getKind() == OR))
{
- for (const Node& cc : conc)
+ Node conj = conc.getKind() == AND ? conc : conc[0];
+ bool pol = conc.getKind() == AND;
+ bool ret = true;
+ for (const Node& cc : conj)
{
- sendInternalInference(exp, cc, c);
+ bool retc = sendInternalInference(exp, pol ? cc : cc.negate(), c);
+ ret = ret && retc;
}
- return;
+ return ret;
}
bool pol = conc.getKind() != NOT;
Node lit = pol ? conc : conc[0];
@@ -3964,13 +4028,13 @@ void TheoryStrings::sendInternalInference(std::vector<Node>& exp,
if (!lit[i].isConst() && !hasTerm(lit[i]))
{
// introduces a new non-constant term, do not infer
- return;
+ return false;
}
}
// does it already hold?
if (pol ? areEqual(lit[0], lit[1]) : areDisequal(lit[0], lit[1]))
{
- return;
+ return true;
}
}
else if (lit.isConst())
@@ -3979,20 +4043,21 @@ void TheoryStrings::sendInternalInference(std::vector<Node>& exp,
{
Assert(pol);
// trivially holds
- return;
+ return true;
}
}
else if (!hasTerm(lit))
{
// introduces a new non-constant term, do not infer
- return;
+ return false;
}
else if (areEqual(lit, pol ? d_true : d_false))
{
// already holds
- return;
+ return true;
}
sendInference(exp, conc, c);
+ return true;
}
void TheoryStrings::sendInference( std::vector< Node >& exp, std::vector< Node >& exp_n, Node eq, const char * c, bool asLemma ) {
@@ -4712,525 +4777,6 @@ TheoryStrings::Statistics::~Statistics(){
smtStatisticsRegistry()->unregisterStat(&d_loop_lemmas);
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//// Regular Expressions
-
-
-unsigned TheoryStrings::getNumMemberships( Node n, bool isPos ) {
- if( isPos ){
- NodeIntMap::const_iterator it = d_pos_memberships.find( n );
- if( it!=d_pos_memberships.end() ){
- return (*it).second;
- }
- }else{
- NodeIntMap::const_iterator it = d_neg_memberships.find( n );
- if( it!=d_neg_memberships.end() ){
- return (*it).second;
- }
- }
- return 0;
-}
-
-Node TheoryStrings::getMembership( Node n, bool isPos, unsigned i ) {
- return isPos ? d_pos_memberships_data[n][i] : d_neg_memberships_data[n][i];
-}
-
-Node TheoryStrings::mkRegExpAntec(Node atom, Node ant) {
- if(d_regexp_ant.find(atom) == d_regexp_ant.end()) {
- return NodeManager::currentNM()->mkNode(kind::AND, ant, atom);
- } else {
- Node n = d_regexp_ant[atom];
- return NodeManager::currentNM()->mkNode(kind::AND, ant, n);
- }
-}
-
-void TheoryStrings::checkMemberships() {
- //add the memberships
- std::vector<Node> mems = getExtTheory()->getActive(kind::STRING_IN_REGEXP);
- for (unsigned i = 0; i < mems.size(); i++) {
- Node n = mems[i];
- Assert( d_extf_info_tmp.find( n )!=d_extf_info_tmp.end() );
- if (!d_extf_info_tmp[n].d_const.isNull())
- {
- bool pol = d_extf_info_tmp[n].d_const.getConst<bool>();
- Trace("strings-process-debug") << " add membership : " << n << ", pol = " << pol << std::endl;
- addMembership( pol ? n : n.negate() );
- }else{
- Trace("strings-process-debug") << " irrelevant (non-asserted) membership : " << n << std::endl;
- }
- }
-
- bool addedLemma = false;
- bool changed = false;
- std::vector< Node > processed;
- std::vector< Node > cprocessed;
-
- Trace("regexp-debug") << "Checking Memberships ... " << std::endl;
- //if(options::stringEIT()) {
- //TODO: Opt for normal forms
- for( NodeIntMap::const_iterator itr_xr = d_pos_memberships.begin(); itr_xr != d_pos_memberships.end(); ++itr_xr ){
- bool spflag = false;
- Node x = (*itr_xr).first;
- Trace("regexp-debug") << "Checking Memberships for " << x << std::endl;
- if(d_inter_index.find(x) == d_inter_index.end()) {
- d_inter_index[x] = 0;
- }
- int cur_inter_idx = d_inter_index[x];
- unsigned n_pmem = (*itr_xr).second;
- Assert( getNumMemberships( x, true )==n_pmem );
- if( cur_inter_idx != (int)n_pmem ) {
- if( n_pmem == 1) {
- d_inter_cache[x] = getMembership( x, true, 0 );
- d_inter_index[x] = 1;
- Trace("regexp-debug") << "... only one choice " << std::endl;
- } else if(n_pmem > 1) {
- Node r;
- if(d_inter_cache.find(x) != d_inter_cache.end()) {
- r = d_inter_cache[x];
- }
- if(r.isNull()) {
- r = getMembership( x, true, 0 );
- cur_inter_idx = 1;
- }
-
- unsigned k_start = cur_inter_idx;
- Trace("regexp-debug") << "... staring from : " << cur_inter_idx << ", we have " << n_pmem << std::endl;
- for(unsigned k = k_start; k<n_pmem; k++) {
- Node r2 = getMembership( x, true, k );
- r = d_regexp_opr.intersect(r, r2, spflag);
- if(spflag) {
- break;
- } else if(r == d_emptyRegexp) {
- std::vector< Node > vec_nodes;
- for( unsigned kk=0; kk<=k; kk++ ){
- Node rr = getMembership( x, true, kk );
- Node n = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, rr);
- vec_nodes.push_back( n );
- }
- Node conc;
- sendInference(vec_nodes, conc, "INTERSECT CONFLICT", true);
- addedLemma = true;
- break;
- }
- if(d_conflict) {
- break;
- }
- }
- //updates
- if(!d_conflict && !spflag) {
- d_inter_cache[x] = r;
- d_inter_index[x] = (int)n_pmem;
- }
- }
- }
- }
- //}
-
- Trace("regexp-debug") << "... No Intersect Conflict in Memberships, addedLemma: " << addedLemma << std::endl;
- if(!addedLemma) {
- NodeManager* nm = NodeManager::currentNM();
- for( unsigned i=0; i<d_regexp_memberships.size(); i++ ) {
- //check regular expression membership
- Node assertion = d_regexp_memberships[i];
- Trace("regexp-debug") << "Check : " << assertion << " " << (d_regexp_ucached.find(assertion) == d_regexp_ucached.end()) << " " << (d_regexp_ccached.find(assertion) == d_regexp_ccached.end()) << std::endl;
- if( d_regexp_ucached.find(assertion) == d_regexp_ucached.end()
- && d_regexp_ccached.find(assertion) == d_regexp_ccached.end() ) {
- Trace("strings-regexp") << "We have regular expression assertion : " << assertion << std::endl;
- Node atom = assertion.getKind()==kind::NOT ? assertion[0] : assertion;
- bool polarity = assertion.getKind()!=kind::NOT;
- bool flag = true;
- Node x = atom[0];
- Node r = atom[1];
- std::vector< Node > rnfexp;
-
- if (!x.isConst())
- {
- x = getNormalString(x, rnfexp);
- changed = true;
- }
- if (!d_regexp_opr.checkConstRegExp(r))
- {
- r = getNormalSymRegExp(r, rnfexp);
- changed = true;
- }
- Trace("strings-regexp-nf") << "Term " << atom << " is normalized to "
- << x << " IN " << r << std::endl;
- if (changed)
- {
- Node tmp =
- Rewriter::rewrite(nm->mkNode(kind::STRING_IN_REGEXP, x, r));
- if (!polarity)
- {
- tmp = tmp.negate();
- }
- if (tmp == d_true)
- {
- d_regexp_ccached.insert(assertion);
- continue;
- }
- else if (tmp == d_false)
- {
- Node antec = mkRegExpAntec(assertion, mkExplain(rnfexp));
- Node conc = Node::null();
- sendLemma(antec, conc, "REGEXP NF Conflict");
- addedLemma = true;
- break;
- }
- }
-
- if( polarity ) {
- flag = checkPDerivative(x, r, atom, addedLemma, rnfexp);
- } else {
- if(! options::stringExp()) {
- throw LogicException("Strings Incomplete (due to Negative Membership) by default, try --strings-exp option.");
- }
- }
- if(flag) {
- //check if the term is atomic
- Node xr = getRepresentative( x );
- //Trace("strings-regexp") << xr << " is rep of " << x << std::endl;
- //Assert( d_normal_forms.find( xr )!=d_normal_forms.end() );
- Trace("strings-regexp")
- << "Unroll/simplify membership of atomic term " << xr
- << std::endl;
- // if so, do simple unrolling
- std::vector<Node> nvec;
-
- if (nvec.empty())
- {
- d_regexp_opr.simplify(atom, nvec, polarity);
- }
- Node antec = assertion;
- if (d_regexp_ant.find(assertion) != d_regexp_ant.end())
- {
- antec = d_regexp_ant[assertion];
- for (std::vector<Node>::const_iterator itr = nvec.begin();
- itr < nvec.end();
- itr++)
- {
- if (itr->getKind() == kind::STRING_IN_REGEXP)
- {
- if (d_regexp_ant.find(*itr) == d_regexp_ant.end())
- {
- d_regexp_ant[*itr] = antec;
- }
- }
- }
- }
- antec = NodeManager::currentNM()->mkNode(
- kind::AND, antec, mkExplain(rnfexp));
- Node conc = nvec.size() == 1
- ? nvec[0]
- : NodeManager::currentNM()->mkNode(kind::AND, nvec);
- conc = Rewriter::rewrite(conc);
- sendLemma(antec, conc, "REGEXP_Unfold");
- addedLemma = true;
- if (changed)
- {
- cprocessed.push_back(assertion);
- }
- else
- {
- processed.push_back(assertion);
- }
- // d_regexp_ucached[assertion] = true;
- }
- }
- if(d_conflict) {
- break;
- }
- }
- }
- if( addedLemma ) {
- if( !d_conflict ){
- for( unsigned i=0; i<processed.size(); i++ ) {
- Trace("strings-regexp") << "...add " << processed[i] << " to u-cache." << std::endl;
- d_regexp_ucached.insert(processed[i]);
- }
- for( unsigned i=0; i<cprocessed.size(); i++ ) {
- Trace("strings-regexp") << "...add " << cprocessed[i] << " to c-cache." << std::endl;
- d_regexp_ccached.insert(cprocessed[i]);
- }
- }
- }
-}
-
-bool TheoryStrings::checkPDerivative( Node x, Node r, Node atom, bool &addedLemma, std::vector< Node > &nf_exp ) {
-
- Node antnf = mkExplain(nf_exp);
-
- if(areEqual(x, d_emptyString)) {
- Node exp;
- switch(d_regexp_opr.delta(r, exp)) {
- case 0: {
- Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
- antec = NodeManager::currentNM()->mkNode(kind::AND, antec, antnf);
- sendLemma(antec, exp, "RegExp Delta");
- addedLemma = true;
- d_regexp_ccached.insert(atom);
- return false;
- }
- case 1: {
- d_regexp_ccached.insert(atom);
- break;
- }
- case 2: {
- Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
- antec = NodeManager::currentNM()->mkNode(kind::AND, antec, antnf);
- Node conc = Node::null();
- sendLemma(antec, conc, "RegExp Delta CONFLICT");
- addedLemma = true;
- d_regexp_ccached.insert(atom);
- return false;
- }
- default:
- //Impossible
- break;
- }
- } else {
- /*Node xr = getRepresentative( x );
- if(x != xr) {
- Node n = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, xr, r);
- Node nn = Rewriter::rewrite( n );
- if(nn == d_true) {
- d_regexp_ccached.insert(atom);
- return false;
- } else if(nn == d_false) {
- Node antec = mkRegExpAntec(atom, x.eqNode(xr));
- Node conc = Node::null();
- sendLemma(antec, conc, "RegExp Delta CONFLICT");
- addedLemma = true;
- d_regexp_ccached.insert(atom);
- return false;
- }
- }*/
- Node sREant = mkRegExpAntec(atom, d_true);
- sREant = NodeManager::currentNM()->mkNode(kind::AND, sREant, antnf);
- if(deriveRegExp( x, r, sREant )) {
- addedLemma = true;
- d_regexp_ccached.insert(atom);
- return false;
- }
- }
- return true;
-}
-
-CVC4::String TheoryStrings::getHeadConst( Node x ) {
- if( x.isConst() ) {
- return x.getConst< String >();
- } else if( x.getKind() == kind::STRING_CONCAT ) {
- if( x[0].isConst() ) {
- return x[0].getConst< String >();
- } else {
- return d_emptyString.getConst< String >();
- }
- } else {
- return d_emptyString.getConst< String >();
- }
-}
-
-bool TheoryStrings::deriveRegExp( Node x, Node r, Node ant ) {
- // TODO cstr in vre
- Assert(x != d_emptyString);
- Trace("regexp-derive") << "TheoryStrings::deriveRegExp: x=" << x << ", r= " << r << std::endl;
- //if(x.isConst()) {
- // Node n = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, x, r );
- // Node r = Rewriter::rewrite( n );
- // if(n != r) {
- // sendLemma(ant, r, "REGEXP REWRITE");
- // return true;
- // }
- //}
- CVC4::String s = getHeadConst( x );
- if( !s.isEmptyString() && d_regexp_opr.checkConstRegExp( r ) ) {
- Node conc = Node::null();
- Node dc = r;
- bool flag = true;
- for(unsigned i=0; i<s.size(); ++i) {
- CVC4::String c = s.substr(i, 1);
- Node dc2;
- int rt = d_regexp_opr.derivativeS(dc, c, dc2);
- dc = dc2;
- if(rt == 0) {
- //TODO
- } else if(rt == 2) {
- // CONFLICT
- flag = false;
- break;
- }
- }
- // send lemma
- if(flag) {
- if(x.isConst()) {
- Assert(false, "Impossible: TheoryStrings::deriveRegExp: const string in const regular expression.");
- return false;
- } else {
- Assert( x.getKind() == kind::STRING_CONCAT );
- std::vector< Node > vec_nodes;
- for(unsigned int i=1; i<x.getNumChildren(); ++i ) {
- vec_nodes.push_back( x[i] );
- }
- Node left = mkConcat( vec_nodes );
- left = Rewriter::rewrite( left );
- conc = NodeManager::currentNM()->mkNode( kind::STRING_IN_REGEXP, left, dc );
-
- /*std::vector< Node > sdc;
- d_regexp_opr.simplify(conc, sdc, true);
- if(sdc.size() == 1) {
- conc = sdc[0];
- } else {
- conc = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, conc));
- }*/
- }
- }
- sendLemma(ant, conc, "RegExp-Derive");
- return true;
- } else {
- return false;
- }
-}
-
-void TheoryStrings::addMembership(Node assertion) {
- bool polarity = assertion.getKind() != kind::NOT;
- TNode atom = polarity ? assertion : assertion[0];
- Node x = atom[0];
- Node r = atom[1];
- if(polarity) {
- int index = 0;
- NodeIntMap::const_iterator it = d_pos_memberships.find( x );
- if( it!=d_nf_pairs.end() ){
- index = (*it).second;
- for( int k=0; k<index; k++ ){
- if( k<(int)d_pos_memberships_data[x].size() ){
- if( d_pos_memberships_data[x][k]==r ){
- return;
- }
- }else{
- break;
- }
- }
- }
- d_pos_memberships[x] = index + 1;
- if( index<(int)d_pos_memberships_data[x].size() ){
- d_pos_memberships_data[x][index] = r;
- }else{
- d_pos_memberships_data[x].push_back( r );
- }
- } else if(!options::stringIgnNegMembership()) {
- /*if(options::stringEIT() && d_regexp_opr.checkConstRegExp(r)) {
- int rt;
- Node r2 = d_regexp_opr.complement(r, rt);
- Node a = NodeManager::currentNM()->mkNode(kind::STRING_IN_REGEXP, x, r2);
- }*/
- int index = 0;
- NodeIntMap::const_iterator it = d_neg_memberships.find( x );
- if( it!=d_nf_pairs.end() ){
- index = (*it).second;
- for( int k=0; k<index; k++ ){
- if( k<(int)d_neg_memberships_data[x].size() ){
- if( d_neg_memberships_data[x][k]==r ){
- return;
- }
- }else{
- break;
- }
- }
- }
- d_neg_memberships[x] = index + 1;
- if( index<(int)d_neg_memberships_data[x].size() ){
- d_neg_memberships_data[x][index] = r;
- }else{
- d_neg_memberships_data[x].push_back( r );
- }
- }
- // old
- if(polarity || !options::stringIgnNegMembership()) {
- d_regexp_memberships.push_back( assertion );
- }
-}
-
-Node TheoryStrings::getNormalString( Node x, std::vector< Node >& nf_exp ){
- if( !x.isConst() ){
- Node xr = getRepresentative( x );
- if( d_normal_forms.find( xr ) != d_normal_forms.end() ){
- Node ret = mkConcat( d_normal_forms[xr] );
- nf_exp.insert( nf_exp.end(), d_normal_forms_exp[xr].begin(), d_normal_forms_exp[xr].end() );
- addToExplanation( x, d_normal_forms_base[xr], nf_exp );
- Trace("strings-debug") << "Term: " << x << " has a normal form " << ret << std::endl;
- return ret;
- } else {
- if(x.getKind() == kind::STRING_CONCAT) {
- std::vector< Node > vec_nodes;
- for(unsigned i=0; i<x.getNumChildren(); i++) {
- Node nc = getNormalString( x[i], nf_exp );
- vec_nodes.push_back( nc );
- }
- return mkConcat( vec_nodes );
- }
- }
- }
- return x;
-}
-
-Node TheoryStrings::getNormalSymRegExp(Node r, std::vector<Node> &nf_exp) {
- Node ret = r;
- switch( r.getKind() ) {
- case kind::REGEXP_EMPTY:
- case kind::REGEXP_SIGMA:
- break;
- case kind::STRING_TO_REGEXP: {
- if(!r[0].isConst()) {
- Node tmp = getNormalString( r[0], nf_exp );
- if(tmp != r[0]) {
- ret = NodeManager::currentNM()->mkNode(kind::STRING_TO_REGEXP, tmp);
- }
- }
- break;
- }
- case kind::REGEXP_CONCAT:
- case kind::REGEXP_UNION:
- case kind::REGEXP_INTER:
- case kind::REGEXP_STAR:
- {
- std::vector< Node > vec_nodes;
- for (const Node& cr : r)
- {
- vec_nodes.push_back(getNormalSymRegExp(cr, nf_exp));
- }
- ret = Rewriter::rewrite(
- NodeManager::currentNM()->mkNode(r.getKind(), vec_nodes));
- break;
- }
- //case kind::REGEXP_PLUS:
- //case kind::REGEXP_OPT:
- //case kind::REGEXP_RANGE:
- default: {
- Trace("strings-error") << "Unsupported term: " << r << " in normalization SymRegExp." << std::endl;
- Assert( false );
- //return Node::null();
- }
- }
- return ret;
-}
-
/** run the given inference step */
void TheoryStrings::runInferStep(InferStep s, int effort)
{
diff --git a/src/theory/strings/theory_strings.h b/src/theory/strings/theory_strings.h
index 70e75db54..b3cb323ae 100644
--- a/src/theory/strings/theory_strings.h
+++ b/src/theory/strings/theory_strings.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tianyi Liang, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -26,6 +26,7 @@
#include "theory/decision_manager.h"
#include "theory/strings/regexp_elim.h"
#include "theory/strings/regexp_operation.h"
+#include "theory/strings/regexp_solver.h"
#include "theory/strings/skolem_cache.h"
#include "theory/strings/theory_strings_preprocess.h"
#include "theory/theory.h"
@@ -235,27 +236,63 @@ class TheoryStrings : public Theory {
}
};/* class TheoryStrings::NotifyClass */
-private:
+ //--------------------------- equality engine
+ /**
+ * Get the representative of t in the equality engine of this class, or t
+ * itself if it is not registered as a term.
+ */
+ Node getRepresentative(Node t);
+ /** Is t registered as a term in the equality engine of this class? */
+ bool hasTerm(Node a);
+ /**
+ * Are a and b equal according to the equality engine of this class? Also
+ * returns true if a and b are identical.
+ */
+ bool areEqual(Node a, Node b);
+ /**
+ * Are a and b disequal according to the equality engine of this class? Also
+ * returns true if the representative of a and b are distinct constants.
+ */
+ bool areDisequal(Node a, Node b);
+ //--------------------------- end equality engine
+
+ //--------------------------- helper functions
+ /** get length with explanation
+ *
+ * If possible, this returns an arithmetic term that exists in the current
+ * context that is equal to the length of te, or otherwise returns the
+ * length of t. It adds to exp literals that hold in the current context that
+ * explain why that term is equal to the length of t. For example, if
+ * we have assertions:
+ * len( x ) = 5 ^ z = x ^ x = y,
+ * then getLengthExp( z, exp, y ) returns len( x ) and adds { z = x } to
+ * exp. On the other hand, getLengthExp( z, exp, x ) returns len( x ) and
+ * adds nothing to exp.
+ */
+ Node getLengthExp(Node t, std::vector<Node>& exp, Node te);
+ /** shorthand for getLengthExp(t, exp, t) */
+ Node getLength(Node t, std::vector<Node>& exp);
+ /** get normal string
+ *
+ * This method returns the node that is equivalent to the normal form of x,
+ * and adds the corresponding explanation to nf_exp.
+ *
+ * For example, if x = y ++ z is an assertion in the current context, then
+ * this method returns the term y ++ z and adds x = y ++ z to nf_exp.
+ */
+ Node getNormalString(Node x, std::vector<Node>& nf_exp);
+ //-------------------------- end helper functions
+
+ private:
// Constants
Node d_emptyString;
- Node d_emptyRegexp;
Node d_true;
Node d_false;
Node d_zero;
Node d_one;
Node d_neg_one;
+ /** the cardinality of the alphabet */
unsigned d_card_size;
- // Helper functions
- Node getRepresentative( Node t );
- bool hasTerm( Node a );
- bool areEqual( Node a, Node b );
- bool areDisequal( Node a, Node b );
- bool areCareDisequal( TNode x, TNode y );
- // t is representative, te = t, add lt = te to explanation exp
- Node getLengthExp( Node t, std::vector< Node >& exp, Node te );
- Node getLength( Node t, std::vector< Node >& exp );
-
-private:
/** The notify class */
NotifyClass d_notify;
/** Equaltity engine */
@@ -607,6 +644,11 @@ private:
protected:
/** compute care graph */
void computeCareGraph() override;
+ /**
+ * Are x and y shared terms that are not equal? This is used for constructing
+ * the care graph in the above function.
+ */
+ bool areCareDisequal(TNode x, TNode y);
// do pending merges
void assertPendingFact(Node atom, bool polarity, Node exp);
@@ -641,6 +683,7 @@ private:
*/
void registerTerm(Node n, int effort);
//-------------------------------------send inferences
+ public:
/** send internal inferences
*
* This is called when we have inferred exp => conc, where exp is a set
@@ -652,21 +695,81 @@ private:
* sendInference below in that it does not introduce any new non-constant
* terms to the state.
*
- * The argument c is a string identifying the reason for the interference.
+ * The argument c is a string identifying the reason for the inference.
* This string is used for debugging purposes.
+ *
+ * Return true if the inference is complete, in the sense that we infer
+ * inferences that are equivalent to conc. This returns false e.g. if conc
+ * (or one of its conjuncts if it is a conjunction) was not inferred due
+ * to the criteria mentioned above.
+ */
+ bool sendInternalInference(std::vector<Node>& exp, Node conc, const char* c);
+ /** send inference
+ *
+ * This function should be called when ( exp ^ exp_n ) => eq. The set exp
+ * contains literals that are explainable by this class, i.e. those that
+ * hold in the equality engine of this class. On the other hand, the set
+ * exp_n ("explanations new") contain nodes that are not explainable by this
+ * class. This method may call sendInfer or sendLemma. Overall, the result
+ * of this method is one of the following:
+ *
+ * [1] (No-op) Do nothing if eq is true,
+ *
+ * [2] (Infer) Indicate that eq should be added to the equality engine of this
+ * class with explanation EXPLAIN(exp), where EXPLAIN returns the
+ * explanation of the node in exp in terms of the literals asserted to this
+ * class,
+ *
+ * [3] (Lemma) Indicate that the lemma ( EXPLAIN(exp) ^ exp_n ) => eq should
+ * be sent on the output channel of this class, or
+ *
+ * [4] (Conflict) Immediately report a conflict EXPLAIN(exp) on the output
+ * channel of this class.
+ *
+ * Determining which case to apply depends on the form of eq and whether
+ * exp_n is empty. In particular, lemmas must be used whenever exp_n is
+ * non-empty, conflicts are used when exp_n is empty and eq is false.
+ *
+ * The argument c is a string identifying the reason for inference, used for
+ * debugging.
+ *
+ * If the flag asLemma is true, then this method will send a lemma instead
+ * of an inference whenever applicable.
*/
- void sendInternalInference(std::vector<Node>& exp, Node conc, const char* c);
- // send lemma
void sendInference(std::vector<Node>& exp,
std::vector<Node>& exp_n,
Node eq,
const char* c,
bool asLemma = false);
+ /** same as above, but where exp_n is empty */
void sendInference(std::vector<Node>& exp,
Node eq,
const char* c,
bool asLemma = false);
+ /**
+ * Are we in conflict? This returns true if this theory has called its output
+ * channel's conflict method in the current SAT context.
+ */
+ bool inConflict() const { return d_conflict; }
+
+ protected:
+ /**
+ * Indicates that ant => conc should be sent on the output channel of this
+ * class. This will either trigger an immediate call to the conflict
+ * method of the output channel of this class of conc is false, or adds the
+ * above lemma to the lemma cache d_lemma_cache, which may be flushed
+ * later within the current call to TheoryStrings::check.
+ *
+ * The argument c is a string identifying the reason for inference, used for
+ * debugging.
+ */
void sendLemma(Node ant, Node conc, const char* c);
+ /**
+ * Indicates that conc should be added to the equality engine of this class
+ * with explanation eq_exp. It must be the case that eq_exp is a (conjunction
+ * of) literals that each are explainable, i.e. they already hold in the
+ * equality engine of this class.
+ */
void sendInfer(Node eq_exp, Node eq, const char* c);
bool sendSplit(Node a, Node b, const char* c, bool preq = true);
//-------------------------------------end send inferences
@@ -680,6 +783,8 @@ private:
/** mkExplain **/
Node mkExplain(std::vector<Node>& a);
Node mkExplain(std::vector<Node>& a, std::vector<Node>& an);
+
+ protected:
/** mkAnd **/
Node mkAnd(std::vector<Node>& a);
/** get concat vector */
@@ -711,39 +816,11 @@ private:
// Symbolic Regular Expression
private:
- // regular expression memberships
- NodeList d_regexp_memberships;
- NodeSet d_regexp_ucached;
- NodeSet d_regexp_ccached;
- // stored assertions
- NodeIntMap d_pos_memberships;
- std::map< Node, std::vector< Node > > d_pos_memberships_data;
- NodeIntMap d_neg_memberships;
- std::map< Node, std::vector< Node > > d_neg_memberships_data;
- unsigned getNumMemberships( Node n, bool isPos );
- Node getMembership( Node n, bool isPos, unsigned i );
- // semi normal forms for symbolic expression
- std::map< Node, Node > d_nf_regexps;
- std::map< Node, std::vector< Node > > d_nf_regexps_exp;
- // intersection
- NodeNodeMap d_inter_cache;
- NodeIntMap d_inter_index;
- // processed memberships
- NodeSet d_processed_memberships;
- // antecedant for why regexp membership must be true
- NodeNodeMap d_regexp_ant;
- /** regular expression operation module */
- RegExpOpr d_regexp_opr;
+ /** regular expression solver module */
+ RegExpSolver d_regexp_solver;
/** regular expression elimination module */
RegExpElimination d_regexp_elim;
- CVC4::String getHeadConst( Node x );
- bool deriveRegExp( Node x, Node r, Node ant );
- void addMembership(Node assertion);
- Node getNormalString(Node x, std::vector<Node> &nf_exp);
- Node getNormalSymRegExp(Node r, std::vector<Node> &nf_exp);
-
-
// Finite Model Finding
private:
NodeSet d_input_vars;
diff --git a/src/theory/strings/theory_strings_preprocess.cpp b/src/theory/strings/theory_strings_preprocess.cpp
index d095d6801..6ceeff6f2 100644
--- a/src/theory/strings/theory_strings_preprocess.cpp
+++ b/src/theory/strings/theory_strings_preprocess.cpp
@@ -2,9 +2,9 @@
/*! \file theory_strings_preprocess.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tianyi Liang, Tim King
+ ** Andrew Reynolds, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_preprocess.h b/src/theory/strings/theory_strings_preprocess.h
index ff0195dc1..daa109682 100644
--- a/src/theory/strings/theory_strings_preprocess.h
+++ b/src/theory/strings/theory_strings_preprocess.h
@@ -2,9 +2,9 @@
/*! \file theory_strings_preprocess.h
** \verbatim
** Top contributors (to current version):
- ** Tianyi Liang, Andrew Reynolds, Morgan Deters
+ ** Andrew Reynolds, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_rewriter.cpp b/src/theory/strings/theory_strings_rewriter.cpp
index cbb298c5f..ec9a46e3a 100644
--- a/src/theory/strings/theory_strings_rewriter.cpp
+++ b/src/theory/strings/theory_strings_rewriter.cpp
@@ -2,9 +2,9 @@
/*! \file theory_strings_rewriter.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tianyi Liang, Andres Noetzli
+ ** Andrew Reynolds, Andres Noetzli, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -2314,6 +2314,22 @@ Node TheoryStringsRewriter::rewriteIndexof( Node node ) {
Node ret = nm->mkNode(kind::STRING_STRIDOF, nn, node[1], node[2]);
return returnRewrite(node, ret, "idof-def-ctn");
}
+
+ // Strip components from the beginning that are guaranteed not to match
+ if (stripConstantEndpoints(children0, children1, nb, ne, 1))
+ {
+ // str.indexof(str.++("AB", x, "C"), "C", 0) --->
+ // 2 + str.indexof(str.++(x, "C"), "C", 0)
+ Node ret =
+ nm->mkNode(kind::PLUS,
+ nm->mkNode(kind::STRING_LENGTH,
+ mkConcat(kind::STRING_CONCAT, nb)),
+ nm->mkNode(kind::STRING_STRIDOF,
+ mkConcat(kind::STRING_CONCAT, children0),
+ node[1],
+ node[2]));
+ return returnRewrite(node, ret, "idof-strip-cnst-endpts");
+ }
}
// strip symbolic length
@@ -3621,6 +3637,8 @@ bool TheoryStringsRewriter::stripConstantEndpoints(std::vector<Node>& n1,
Assert(nb.empty());
Assert(ne.empty());
+
+ NodeManager* nm = NodeManager::currentNM();
bool changed = false;
// for ( forwards, backwards ) direction
for (unsigned r = 0; r < 2; r++)
@@ -3670,6 +3688,14 @@ bool TheoryStringsRewriter::stripConstantEndpoints(std::vector<Node>& n1,
// str.contains( str.++( "c", x ), str.++( "cd", y ) )
overlap = r == 0 ? s.overlap(t) : t.overlap(s);
}
+ else
+ {
+ // if we are looking at a substring, we can remove the component
+ // if there is no overlap
+ // e.g. str.contains( str.++( str.substr( "c", i, j ), x), "a" )
+ // --> str.contains( x, "a" )
+ removeComponent = ((r == 0 ? s.overlap(t) : t.overlap(s)) == 0);
+ }
}
else if (sss.empty()) // only if not substr
{
@@ -3701,15 +3727,13 @@ bool TheoryStringsRewriter::stripConstantEndpoints(std::vector<Node>& n1,
// component
if (r == 0)
{
- nb.push_back(
- NodeManager::currentNM()->mkConst(s.prefix(overlap)));
- n1[index0] = NodeManager::currentNM()->mkConst(s.suffix(overlap));
+ nb.push_back(nm->mkConst(s.prefix(s.size() - overlap)));
+ n1[index0] = nm->mkConst(s.suffix(overlap));
}
else
{
- ne.push_back(
- NodeManager::currentNM()->mkConst(s.suffix(overlap)));
- n1[index0] = NodeManager::currentNM()->mkConst(s.prefix(overlap));
+ ne.push_back(nm->mkConst(s.suffix(s.size() - overlap)));
+ n1[index0] = nm->mkConst(s.prefix(overlap));
}
}
}
diff --git a/src/theory/strings/theory_strings_rewriter.h b/src/theory/strings/theory_strings_rewriter.h
index 81bc29ad6..61031ea87 100644
--- a/src/theory/strings/theory_strings_rewriter.h
+++ b/src/theory/strings/theory_strings_rewriter.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Andres Noetzli, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_type_rules.h b/src/theory/strings/theory_strings_type_rules.h
index 9357a8f98..3ad28ee0f 100644
--- a/src/theory/strings/theory_strings_type_rules.h
+++ b/src/theory/strings/theory_strings_type_rules.h
@@ -2,9 +2,9 @@
/*! \file theory_strings_type_rules.h
** \verbatim
** Top contributors (to current version):
- ** Tianyi Liang, Tim King, Andrew Reynolds
+ ** Tianyi Liang, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/type_enumerator.h b/src/theory/strings/type_enumerator.h
index 108b1edc4..7327042e2 100644
--- a/src/theory/strings/type_enumerator.h
+++ b/src/theory/strings/type_enumerator.h
@@ -2,9 +2,9 @@
/*! \file type_enumerator.h
** \verbatim
** Top contributors (to current version):
- ** Tianyi Liang, Tim King, Andres Noetzli
+ ** Tianyi Liang, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/subs_minimize.cpp b/src/theory/subs_minimize.cpp
index 58daf5c75..c16fab4a9 100644
--- a/src/theory/subs_minimize.cpp
+++ b/src/theory/subs_minimize.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/subs_minimize.h b/src/theory/subs_minimize.h
index bf6ccffae..3f351de7e 100644
--- a/src/theory/subs_minimize.h
+++ b/src/theory/subs_minimize.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/substitutions.cpp b/src/theory/substitutions.cpp
index 036bb4ada..7d0adab96 100644
--- a/src/theory/substitutions.cpp
+++ b/src/theory/substitutions.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Clark Barrett, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/substitutions.h b/src/theory/substitutions.h
index 6d6875ba3..31e98de3b 100644
--- a/src/theory/substitutions.h
+++ b/src/theory/substitutions.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/term_registration_visitor.cpp b/src/theory/term_registration_visitor.cpp
index fdab93375..8733c2e20 100644
--- a/src/theory/term_registration_visitor.cpp
+++ b/src/theory/term_registration_visitor.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/term_registration_visitor.h b/src/theory/term_registration_visitor.h
index b12cef064..cdb411c16 100644
--- a/src/theory/term_registration_visitor.h
+++ b/src/theory/term_registration_visitor.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory.cpp b/src/theory/theory.cpp
index a4e814e8c..5108e312a 100644
--- a/src/theory/theory.cpp
+++ b/src/theory/theory.cpp
@@ -2,9 +2,9 @@
/*! \file theory.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds, Dejan Jovanovic
+ ** Tim King, Dejan Jovanovic, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory.h b/src/theory/theory.h
index 8a0c87c9e..02a0c9caf 100644
--- a/src/theory/theory.h
+++ b/src/theory/theory.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index fb4075d82..dceeeae7a 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -2,9 +2,9 @@
/*! \file theory_engine.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Guy Katz
+ ** Dejan Jovanovic, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_engine.h b/src/theory/theory_engine.h
index c3281c9ba..ca761f97d 100644
--- a/src/theory/theory_engine.h
+++ b/src/theory/theory_engine.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_model.cpp b/src/theory/theory_model.cpp
index 2ccc48a6a..8d6511854 100644
--- a/src/theory/theory_model.cpp
+++ b/src/theory/theory_model.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Clark Barrett, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_model.h b/src/theory/theory_model.h
index 3ffd1e8c1..c2bece0b4 100644
--- a/src/theory/theory_model.h
+++ b/src/theory/theory_model.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_model_builder.cpp b/src/theory/theory_model_builder.cpp
index a9742b2ba..7a4a0f041 100644
--- a/src/theory/theory_model_builder.cpp
+++ b/src/theory/theory_model_builder.cpp
@@ -2,9 +2,9 @@
/*! \file theory_model_builder.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Clark Barrett, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -47,6 +47,14 @@ bool TheoryEngineModelBuilder::isAssignable(TNode n)
return !n.getType().isFunction();
}
}
+ else if (n.getKind() == kind::FLOATINGPOINT_COMPONENT_SIGN)
+ {
+ // Extracting the sign of a floating-point number acts similar to a
+ // selector on a datatype, i.e. if `(sign x)` wasn't assigned a value, we
+ // can pick an arbitrary one. Note that the other components of a
+ // floating-point number should always be assigned a value.
+ return true;
+ }
else
{
// non-function variables, and fully applied functions
diff --git a/src/theory/theory_model_builder.h b/src/theory/theory_model_builder.h
index bff230b5c..91734fcf8 100644
--- a/src/theory/theory_model_builder.h
+++ b/src/theory/theory_model_builder.h
@@ -2,9 +2,9 @@
/*! \file theory_model_builder.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner
+ ** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_registrar.h b/src/theory/theory_registrar.h
index 10b90e522..2e46fa4d8 100644
--- a/src/theory/theory_registrar.h
+++ b/src/theory/theory_registrar.h
@@ -2,9 +2,9 @@
/*! \file theory_registrar.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Liana Hadarean, Morgan Deters
+ ** Liana Hadarean, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_test_utils.h b/src/theory/theory_test_utils.h
index e0db2fdeb..889ea6eb1 100644
--- a/src/theory/theory_test_utils.h
+++ b/src/theory/theory_test_utils.h
@@ -2,9 +2,9 @@
/*! \file theory_test_utils.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Liana Hadarean
+ ** Tim King, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_traits_template.h b/src/theory/theory_traits_template.h
index e046da408..00ad7656d 100644
--- a/src/theory/theory_traits_template.h
+++ b/src/theory/theory_traits_template.h
@@ -2,9 +2,9 @@
/*! \file theory_traits_template.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Tim King
+ ** Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/type_enumerator.h b/src/theory/type_enumerator.h
index 58961646c..a68e3ca61 100644
--- a/src/theory/type_enumerator.h
+++ b/src/theory/type_enumerator.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/type_enumerator_template.cpp b/src/theory/type_enumerator_template.cpp
index 14f3e9e87..8ccf27302 100644
--- a/src/theory/type_enumerator_template.cpp
+++ b/src/theory/type_enumerator_template.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/type_set.cpp b/src/theory/type_set.cpp
index 95c672f69..616245e2b 100644
--- a/src/theory/type_set.cpp
+++ b/src/theory/type_set.cpp
@@ -2,9 +2,9 @@
/*! \file type_set.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/type_set.h b/src/theory/type_set.h
index 633c8b04d..cada9422d 100644
--- a/src/theory/type_set.h
+++ b/src/theory/type_set.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine.cpp b/src/theory/uf/equality_engine.cpp
index bd2fe9f9f..d1fc8341c 100644
--- a/src/theory/uf/equality_engine.cpp
+++ b/src/theory/uf/equality_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Guy Katz, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine.h b/src/theory/uf/equality_engine.h
index 15abf7251..b93ff6d6d 100644
--- a/src/theory/uf/equality_engine.h
+++ b/src/theory/uf/equality_engine.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Dejan Jovanovic, Morgan Deters, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine_types.h b/src/theory/uf/equality_engine_types.h
index 724ab423c..75216d10e 100644
--- a/src/theory/uf/equality_engine_types.h
+++ b/src/theory/uf/equality_engine_types.h
@@ -2,9 +2,9 @@
/*! \file equality_engine_types.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Andres Noetzli, Andrew Reynolds
+ ** Dejan Jovanovic, Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/symmetry_breaker.cpp b/src/theory/uf/symmetry_breaker.cpp
index 0313fabab..9c1d4c2f1 100644
--- a/src/theory/uf/symmetry_breaker.cpp
+++ b/src/theory/uf/symmetry_breaker.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/symmetry_breaker.h b/src/theory/uf/symmetry_breaker.h
index 434ddd93b..dd79b571a 100644
--- a/src/theory/uf/symmetry_breaker.h
+++ b/src/theory/uf/symmetry_breaker.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Liana Hadarean, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
index 645e1f656..ddc0e1b90 100644
--- a/src/theory/uf/theory_uf.cpp
+++ b/src/theory/uf/theory_uf.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -19,17 +19,18 @@
#include <memory>
+#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
+#include "options/theory_options.h"
#include "options/uf_options.h"
#include "proof/proof_manager.h"
#include "proof/theory_proof.h"
#include "proof/uf_proof.h"
#include "theory/theory_model.h"
#include "theory/type_enumerator.h"
-#include "theory/uf/theory_uf_strong_solver.h"
-#include "options/theory_options.h"
#include "theory/uf/theory_uf_rewriter.h"
+#include "theory/uf/theory_uf_strong_solver.h"
using namespace std;
@@ -186,22 +187,67 @@ Node TheoryUF::getApplyUfForHoApply( Node node ) {
std::vector< TNode > args;
Node f = TheoryUfRewriter::decomposeHoApply( node, args, true );
Node new_f = f;
+ NodeManager* nm = NodeManager::currentNM();
if( !TheoryUfRewriter::canUseAsApplyUfOperator( f ) ){
NodeNodeMap::const_iterator itus = d_uf_std_skolem.find( f );
if( itus==d_uf_std_skolem.end() ){
- // introduce skolem to make a standard APPLY_UF
- new_f = NodeManager::currentNM()->mkSkolem( "app_uf", f.getType() );
- Node lem = new_f.eqNode( f );
+ std::unordered_set<Node, NodeHashFunction> fvs;
+ expr::getFreeVariables(f, fvs);
+ Node lem;
+ if (!fvs.empty())
+ {
+ std::vector<TypeNode> newTypes;
+ std::vector<Node> vs;
+ std::vector<Node> nvs;
+ for (const Node& v : fvs)
+ {
+ TypeNode vt = v.getType();
+ newTypes.push_back(vt);
+ Node nv = nm->mkBoundVar(vt);
+ vs.push_back(v);
+ nvs.push_back(nv);
+ }
+ TypeNode ft = f.getType();
+ std::vector<TypeNode> argTypes = ft.getArgTypes();
+ TypeNode rangeType = ft.getRangeType();
+
+ newTypes.insert(newTypes.end(), argTypes.begin(), argTypes.end());
+ TypeNode nft = nm->mkFunctionType(newTypes, rangeType);
+ new_f = nm->mkSkolem("app_uf", nft);
+ for (const Node& v : vs)
+ {
+ new_f = nm->mkNode(kind::HO_APPLY, new_f, v);
+ }
+ Assert(new_f.getType() == f.getType());
+ Node eq = new_f.eqNode(f);
+ Node seq = eq.substitute(vs.begin(), vs.end(), nvs.begin(), nvs.end());
+ lem = nm->mkNode(
+ kind::FORALL, nm->mkNode(kind::BOUND_VAR_LIST, nvs), seq);
+ }
+ else
+ {
+ // introduce skolem to make a standard APPLY_UF
+ new_f = nm->mkSkolem("app_uf", f.getType());
+ lem = new_f.eqNode(f);
+ }
Trace("uf-ho-lemma") << "uf-ho-lemma : Skolem definition for apply-conversion : " << lem << std::endl;
d_out->lemma( lem );
d_uf_std_skolem[f] = new_f;
}else{
new_f = (*itus).second;
}
+ // unroll the HO_APPLY, adding to the first argument position
+ // Note arguments in the vector args begin at position 1.
+ while (new_f.getKind() == kind::HO_APPLY)
+ {
+ args.insert(args.begin() + 1, new_f[1]);
+ new_f = new_f[0];
+ }
}
Assert( TheoryUfRewriter::canUseAsApplyUfOperator( new_f ) );
args[0] = new_f;
- Node ret = NodeManager::currentNM()->mkNode( kind::APPLY_UF, args );
+ Node ret = nm->mkNode(kind::APPLY_UF, args);
+ Assert(ret.getType() == node.getType());
return ret;
}
diff --git a/src/theory/uf/theory_uf.h b/src/theory/uf/theory_uf.h
index a0380f73a..fb873e7dc 100644
--- a/src/theory/uf/theory_uf.h
+++ b/src/theory/uf/theory_uf.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_model.cpp b/src/theory/uf/theory_uf_model.cpp
index 42847dfd4..f279aebaf 100644
--- a/src/theory/uf/theory_uf_model.cpp
+++ b/src/theory/uf/theory_uf_model.cpp
@@ -2,9 +2,9 @@
/*! \file theory_uf_model.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Tim King
+ ** Andrew Reynolds, Morgan Deters, Clark Barrett
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_model.h b/src/theory/uf/theory_uf_model.h
index ac57bde27..f8c947d7a 100644
--- a/src/theory/uf/theory_uf_model.h
+++ b/src/theory/uf/theory_uf_model.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_rewriter.h b/src/theory/uf/theory_uf_rewriter.h
index 3eb59e5fc..d9b2cccaa 100644
--- a/src/theory/uf/theory_uf_rewriter.h
+++ b/src/theory/uf/theory_uf_rewriter.h
@@ -2,9 +2,9 @@
/*! \file theory_uf_rewriter.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Morgan Deters, Dejan Jovanovic
+ ** Andrew Reynolds, Haniel Barbosa, Dejan Jovanovic
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -20,8 +20,10 @@
#ifndef __CVC4__THEORY__UF__THEORY_UF_REWRITER_H
#define __CVC4__THEORY__UF__THEORY_UF_REWRITER_H
+#include "expr/node_algorithm.h"
#include "theory/rewriter.h"
#include "theory/substitutions.h"
+#include "options/uf_options.h"
namespace CVC4 {
namespace theory {
@@ -46,19 +48,52 @@ public:
}
if(node.getKind() == kind::APPLY_UF) {
if( node.getOperator().getKind() == kind::LAMBDA ){
+ Trace("uf-ho-beta")
+ << "uf-ho-beta : beta-reducing all args of : " << node << "\n";
TNode lambda = node.getOperator();
- std::vector<TNode> vars;
- std::vector<TNode> subs;
- for (const TNode& v : lambda[0])
+ Node ret;
+ // build capture-avoiding substitution since in HOL shadowing may have
+ // been introduced
+ if (options::ufHo())
{
- vars.push_back(v);
+ std::vector<Node> vars;
+ std::vector<Node> subs;
+ for (const Node& v : lambda[0])
+ {
+ vars.push_back(v);
+ }
+ for (const Node& s : node)
+ {
+ subs.push_back(s);
+ }
+ if (Trace.isOn("uf-ho-beta"))
+ {
+ Trace("uf-ho-beta") << "uf-ho-beta: ..sub of " << subs.size()
+ << " vars into " << subs.size() << " terms :\n";
+ for (unsigned i = 0, size = subs.size(); i < size; ++i)
+ {
+ Trace("uf-ho-beta") << "uf-ho-beta: .... " << vars[i] << " |-> "
+ << subs[i] << "\n";
+ }
+ }
+ ret = expr::substituteCaptureAvoiding(lambda[1], vars, subs);
+ Trace("uf-ho-beta") << "uf-ho-beta : ..result : " << ret << "\n";
}
- for (const TNode& s : node)
+ else
{
- subs.push_back(s);
+ std::vector<TNode> vars;
+ std::vector<TNode> subs;
+ for (const TNode& v : lambda[0])
+ {
+ vars.push_back(v);
+ }
+ for (const TNode& s : node)
+ {
+ subs.push_back(s);
+ }
+ ret = lambda[1].substitute(
+ vars.begin(), vars.end(), subs.begin(), subs.end());
}
- Node ret = lambda[1].substitute(
- vars.begin(), vars.end(), subs.begin(), subs.end());
return RewriteResponse(REWRITE_AGAIN_FULL, ret);
}else if( !canUseAsApplyUfOperator( node.getOperator() ) ){
return RewriteResponse(REWRITE_AGAIN_FULL, getHoApplyForApplyUf(node));
@@ -66,9 +101,12 @@ public:
}else if( node.getKind() == kind::HO_APPLY ){
if( node[0].getKind() == kind::LAMBDA ){
// resolve one argument of the lambda
- TNode arg = Rewriter::rewrite( node[1] );
- TNode var = node[0][0][0];
- Node new_body = node[0][1].substitute( var, arg );
+ Trace("uf-ho-beta")
+ << "uf-ho-beta : beta-reducing one argument of : " << node[0]
+ << " with " << node[1] << "\n";
+
+ // reconstruct the lambda first to avoid variable shadowing
+ Node new_body = node[0][1];
if( node[0][0].getNumChildren()>1 ){
std::vector< Node > new_vars;
for( unsigned i=1; i<node[0][0].getNumChildren(); i++ ){
@@ -78,7 +116,26 @@ public:
largs.push_back( NodeManager::currentNM()->mkNode( kind::BOUND_VAR_LIST, new_vars ) );
largs.push_back( new_body );
new_body = NodeManager::currentNM()->mkNode( kind::LAMBDA, largs );
+ Trace("uf-ho-beta")
+ << "uf-ho-beta : ....new lambda : " << new_body << "\n";
+ }
+
+ // build capture-avoiding substitution since in HOL shadowing may have
+ // been introduced
+ if (options::ufHo())
+ {
+ Node arg = Rewriter::rewrite(node[1]);
+ Node var = node[0][0][0];
+ new_body = expr::substituteCaptureAvoiding(new_body, var, arg);
+ }
+ else
+ {
+ TNode arg = Rewriter::rewrite(node[1]);
+ TNode var = node[0][0][0];
+ new_body = new_body.substitute(var, arg);
}
+ Trace("uf-ho-beta")
+ << "uf-ho-beta : ..new body : " << new_body << "\n";
return RewriteResponse( REWRITE_AGAIN_FULL, new_body );
}
}
diff --git a/src/theory/uf/theory_uf_strong_solver.cpp b/src/theory/uf/theory_uf_strong_solver.cpp
index a19298b64..a21edd8eb 100644
--- a/src/theory/uf/theory_uf_strong_solver.cpp
+++ b/src/theory/uf/theory_uf_strong_solver.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_strong_solver.h b/src/theory/uf/theory_uf_strong_solver.h
index 286c7391a..41577f217 100644
--- a/src/theory/uf/theory_uf_strong_solver.h
+++ b/src/theory/uf/theory_uf_strong_solver.h
@@ -2,9 +2,9 @@
/*! \file theory_uf_strong_solver.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_type_rules.h b/src/theory/uf/theory_uf_type_rules.h
index 2dbfae388..013eb89a0 100644
--- a/src/theory/uf/theory_uf_type_rules.h
+++ b/src/theory/uf/theory_uf_type_rules.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/valuation.cpp b/src/theory/valuation.cpp
index 62b3fc196..83a7e3bff 100644
--- a/src/theory/valuation.cpp
+++ b/src/theory/valuation.cpp
@@ -2,9 +2,9 @@
/*! \file valuation.cpp
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ ** Dejan Jovanovic, Andrew Reynolds, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/valuation.h b/src/theory/valuation.h
index 93b33cfdf..c5abdb6ae 100644
--- a/src/theory/valuation.h
+++ b/src/theory/valuation.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Dejan Jovanovic, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/abstract_value.cpp b/src/util/abstract_value.cpp
index 472fd8127..7c3ce6aaf 100644
--- a/src/util/abstract_value.cpp
+++ b/src/util/abstract_value.cpp
@@ -2,9 +2,9 @@
/*! \file abstract_value.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/abstract_value.h b/src/util/abstract_value.h
index 7117a58d2..8091a7ee5 100644
--- a/src/util/abstract_value.h
+++ b/src/util/abstract_value.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/bin_heap.h b/src/util/bin_heap.h
index d547530b1..be54dfa03 100644
--- a/src/util/bin_heap.h
+++ b/src/util/bin_heap.h
@@ -2,9 +2,9 @@
/*! \file bin_heap.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King, Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/bitvector.cpp b/src/util/bitvector.cpp
index def9fd90f..a561fe088 100644
--- a/src/util/bitvector.cpp
+++ b/src/util/bitvector.cpp
@@ -2,9 +2,9 @@
/*! \file bitvector.cpp
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Andres Noetzli
+ ** Aina Niemetz, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/bitvector.h b/src/util/bitvector.h
index 13c1f14dd..8b1d58e80 100644
--- a/src/util/bitvector.h
+++ b/src/util/bitvector.h
@@ -2,9 +2,9 @@
/*! \file bitvector.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz, Dejan Jovanovic, Liana Hadarean
+ ** Aina Niemetz, Dejan Jovanovic, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -66,11 +66,29 @@ class CVC4_PUBLIC BitVector
{
}
+ /**
+ * BitVector constructor.
+ *
+ * The value of the bit-vector is passed in as string of base 2, 10 or 16.
+ * The size of resulting bit-vector is
+ * - base 2: the size of the binary string
+ * - base 10: the min. size required to represent the decimal as a bit-vector
+ * - base 16: the max. size required to represent the hexadecimal as a
+ * bit-vector (4 * size of the given value string)
+ *
+ * @param num The value of the bit-vector in string representation.
+ * @param base The base of the string representation.
+ */
BitVector(const std::string& num, unsigned base = 2)
{
- CheckArgument(base == 2 || base == 16, base);
- d_size = base == 2 ? num.size() : num.size() * 4;
+ CheckArgument(base == 2 || base == 10 || base == 16, base);
d_value = Integer(num, base);
+ switch (base)
+ {
+ case 10: d_size = d_value.length(); break;
+ case 16: d_size = num.size() * 4; break;
+ default: d_size = num.size();
+ }
}
~BitVector() {}
diff --git a/src/util/bool.h b/src/util/bool.h
index 68a416f94..1c88ad601 100644
--- a/src/util/bool.h
+++ b/src/util/bool.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/cardinality.cpp b/src/util/cardinality.cpp
index 4584c46ab..ce1763ba1 100644
--- a/src/util/cardinality.cpp
+++ b/src/util/cardinality.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/cardinality.h b/src/util/cardinality.h
index 956468e30..b3021db64 100644
--- a/src/util/cardinality.h
+++ b/src/util/cardinality.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/debug.h b/src/util/debug.h
index ef887ef24..516908d3d 100644
--- a/src/util/debug.h
+++ b/src/util/debug.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/dense_map.h b/src/util/dense_map.h
index 410fcc8fa..cc1a094eb 100644
--- a/src/util/dense_map.h
+++ b/src/util/dense_map.h
@@ -2,9 +2,9 @@
/*! \file dense_map.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Dejan Jovanovic
+ ** Tim King, Dejan Jovanovic, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/divisible.cpp b/src/util/divisible.cpp
index 33437b91e..f336a318c 100644
--- a/src/util/divisible.cpp
+++ b/src/util/divisible.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/divisible.h b/src/util/divisible.h
index 65731fcaa..f545ab9d8 100644
--- a/src/util/divisible.h
+++ b/src/util/divisible.h
@@ -2,9 +2,9 @@
/*! \file divisible.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King
+ ** Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/floatingpoint.cpp b/src/util/floatingpoint.cpp
index 1de5e358a..4aed27c30 100644
--- a/src/util/floatingpoint.cpp
+++ b/src/util/floatingpoint.cpp
@@ -2,10 +2,10 @@
/*! \file floatingpoint.cpp
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Tim King
+ ** Martin Brain, Martin Brain, Tim King
** Copyright (c) 2013 University of Oxford
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/floatingpoint.h.in b/src/util/floatingpoint.h.in
index d283d985f..5ba02b30f 100644
--- a/src/util/floatingpoint.h.in
+++ b/src/util/floatingpoint.h.in
@@ -2,10 +2,10 @@
/*! \file floatingpoint.h.in
** \verbatim
** Top contributors (to current version):
- ** Martin Brain, Tim King, Andres Noetzli
+ ** Martin Brain, Martin Brain, Tim King
** Copyright (c) 2013 University of Oxford
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/gmp_util.h b/src/util/gmp_util.h
index d09174b47..2bc4a392f 100644
--- a/src/util/gmp_util.h
+++ b/src/util/gmp_util.h
@@ -2,9 +2,9 @@
/*! \file gmp_util.h
** \verbatim
** Top contributors (to current version):
- ** Dejan Jovanovic, Morgan Deters, Andres Noetzli
+ ** Tim King, Andres Noetzli, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/hash.h b/src/util/hash.h
index af604dc3a..ef8567464 100644
--- a/src/util/hash.h
+++ b/src/util/hash.h
@@ -2,9 +2,9 @@
/*! \file hash.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Andres Noetzli, Christopher L. Conway
+ ** Morgan Deters, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/index.cpp b/src/util/index.cpp
index e48cea6b5..6f036d537 100644
--- a/src/util/index.cpp
+++ b/src/util/index.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/index.h b/src/util/index.h
index 5ddc8fcf0..8000c049a 100644
--- a/src/util/index.h
+++ b/src/util/index.h
@@ -2,9 +2,9 @@
/*! \file index.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/integer.h.in b/src/util/integer.h.in
index ad6c059ed..87a5e35d3 100644
--- a/src/util/integer.h.in
+++ b/src/util/integer.h.in
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/integer_cln_imp.cpp b/src/util/integer_cln_imp.cpp
index 15d517f72..6439708b9 100644
--- a/src/util/integer_cln_imp.cpp
+++ b/src/util/integer_cln_imp.cpp
@@ -2,9 +2,9 @@
/*! \file integer_cln_imp.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Aina Niemetz, Clark Barrett
+ ** Tim King, Aina Niemetz, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/integer_cln_imp.h b/src/util/integer_cln_imp.h
index 49f625425..4b030efa8 100644
--- a/src/util/integer_cln_imp.h
+++ b/src/util/integer_cln_imp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/integer_gmp_imp.cpp b/src/util/integer_gmp_imp.cpp
index 50e23a572..ed206bb45 100644
--- a/src/util/integer_gmp_imp.cpp
+++ b/src/util/integer_gmp_imp.cpp
@@ -2,9 +2,9 @@
/*! \file integer_gmp_imp.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Aina Niemetz, Clark Barrett
+ ** Tim King, Aina Niemetz, Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/integer_gmp_imp.h b/src/util/integer_gmp_imp.h
index a93888e31..f9cf3b6e2 100644
--- a/src/util/integer_gmp_imp.h
+++ b/src/util/integer_gmp_imp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Liana Hadarean, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/maybe.h b/src/util/maybe.h
index dff0b4dea..c3247d307 100644
--- a/src/util/maybe.h
+++ b/src/util/maybe.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/ostream_util.cpp b/src/util/ostream_util.cpp
index 6cbaa530e..3ada604ca 100644
--- a/src/util/ostream_util.cpp
+++ b/src/util/ostream_util.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/ostream_util.h b/src/util/ostream_util.h
index a295dd273..d5fd93ce9 100644
--- a/src/util/ostream_util.h
+++ b/src/util/ostream_util.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/proof.h b/src/util/proof.h
index 98afe19b3..1440d0a91 100644
--- a/src/util/proof.h
+++ b/src/util/proof.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King, Guy Katz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/random.cpp b/src/util/random.cpp
index 7c6abd33e..72a8fbc24 100644
--- a/src/util/random.cpp
+++ b/src/util/random.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/random.h b/src/util/random.h
index e6443c3da..d031a6b80 100644
--- a/src/util/random.h
+++ b/src/util/random.h
@@ -2,9 +2,9 @@
/*! \file random.h
** \verbatim
** Top contributors (to current version):
- ** Aina Niemetz
+ ** Aina Niemetz, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/rational.h.in b/src/util/rational.h.in
index 1b67dbf0e..5da7a501e 100644
--- a/src/util/rational.h.in
+++ b/src/util/rational.h.in
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/rational_cln_imp.cpp b/src/util/rational_cln_imp.cpp
index 3dc76f1a4..ca67dd6cb 100644
--- a/src/util/rational_cln_imp.cpp
+++ b/src/util/rational_cln_imp.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Christopher L. Conway, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/rational_cln_imp.h b/src/util/rational_cln_imp.h
index 826f6ff3f..03bda2c7d 100644
--- a/src/util/rational_cln_imp.h
+++ b/src/util/rational_cln_imp.h
@@ -2,9 +2,9 @@
/*! \file rational_cln_imp.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Aina Niemetz
+ ** Tim King, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/rational_gmp_imp.cpp b/src/util/rational_gmp_imp.cpp
index 7e9cc67f8..229b51db7 100644
--- a/src/util/rational_gmp_imp.cpp
+++ b/src/util/rational_gmp_imp.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Christopher L. Conway, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/rational_gmp_imp.h b/src/util/rational_gmp_imp.h
index 1d47cb1ba..ab4b5c5a8 100644
--- a/src/util/rational_gmp_imp.h
+++ b/src/util/rational_gmp_imp.h
@@ -2,9 +2,9 @@
/*! \file rational_gmp_imp.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters, Aina Niemetz
+ ** Tim King, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/regexp.cpp b/src/util/regexp.cpp
index 34175a775..ed9455e6d 100644
--- a/src/util/regexp.cpp
+++ b/src/util/regexp.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Tianyi Liang, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/regexp.h b/src/util/regexp.h
index 1588b5174..64b05b900 100644
--- a/src/util/regexp.h
+++ b/src/util/regexp.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Tianyi Liang
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/resource_manager.cpp b/src/util/resource_manager.cpp
index 041d765cb..6d7e08736 100644
--- a/src/util/resource_manager.cpp
+++ b/src/util/resource_manager.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/resource_manager.h b/src/util/resource_manager.h
index 3ca2babcf..03fcfaffb 100644
--- a/src/util/resource_manager.h
+++ b/src/util/resource_manager.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Liana Hadarean, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/result.cpp b/src/util/result.cpp
index 69598074a..e76f428a5 100644
--- a/src/util/result.cpp
+++ b/src/util/result.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/result.h b/src/util/result.h
index 31d997c21..29fef9362 100644
--- a/src/util/result.h
+++ b/src/util/result.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/safe_print.cpp b/src/util/safe_print.cpp
index 00dedd3bc..beb1a1673 100644
--- a/src/util/safe_print.cpp
+++ b/src/util/safe_print.cpp
@@ -2,9 +2,9 @@
/*! \file safe_print.cpp
** \verbatim
** Top contributors (to current version):
- ** Andres Noetzli
+ ** Andres Noetzli, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/safe_print.h b/src/util/safe_print.h
index 8cd1b7367..a8a096d11 100644
--- a/src/util/safe_print.h
+++ b/src/util/safe_print.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/sampler.cpp b/src/util/sampler.cpp
index e64ab56df..948b4dfd3 100644
--- a/src/util/sampler.cpp
+++ b/src/util/sampler.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/sampler.h b/src/util/sampler.h
index f8f11dff2..0c727d8d4 100644
--- a/src/util/sampler.h
+++ b/src/util/sampler.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/sexpr.cpp b/src/util/sexpr.cpp
index a7e38ee61..9de42a4e6 100644
--- a/src/util/sexpr.cpp
+++ b/src/util/sexpr.cpp
@@ -2,9 +2,9 @@
/*! \file sexpr.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andrew Reynolds
+ ** Tim King, Morgan Deters, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/sexpr.h b/src/util/sexpr.h
index bad6cdb2b..573b4fcd4 100644
--- a/src/util/sexpr.h
+++ b/src/util/sexpr.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Tim King, Morgan Deters, Christopher L. Conway
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/smt2_quote_string.cpp b/src/util/smt2_quote_string.cpp
index fec0962ae..626767f5f 100644
--- a/src/util/smt2_quote_string.cpp
+++ b/src/util/smt2_quote_string.cpp
@@ -2,9 +2,9 @@
/*! \file smt2_quote_string.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King
+ ** Tim King, Morgan Deters, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/smt2_quote_string.h b/src/util/smt2_quote_string.h
index c1fcfe2a4..36d542306 100644
--- a/src/util/smt2_quote_string.h
+++ b/src/util/smt2_quote_string.h
@@ -2,9 +2,9 @@
/*! \file smt2_quote_string.h
** \verbatim
** Top contributors (to current version):
- ** Tim King, Morgan Deters
+ ** Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/statistics.cpp b/src/util/statistics.cpp
index d078473ad..c61520df9 100644
--- a/src/util/statistics.cpp
+++ b/src/util/statistics.cpp
@@ -2,9 +2,9 @@
/*! \file statistics.cpp
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/statistics.h b/src/util/statistics.h
index eee4ce6fd..626db9c70 100644
--- a/src/util/statistics.h
+++ b/src/util/statistics.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/statistics_registry.cpp b/src/util/statistics_registry.cpp
index 53f18f07b..cad0e63fa 100644
--- a/src/util/statistics_registry.cpp
+++ b/src/util/statistics_registry.cpp
@@ -2,9 +2,9 @@
/*! \file statistics_registry.cpp
** \verbatim
** Top contributors (to current version):
- ** Tim King, Andres Noetzli, Aina Niemetz
+ ** Morgan Deters, Tim King, Kshitij Bansal
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/statistics_registry.h b/src/util/statistics_registry.h
index d7f105b65..304d22002 100644
--- a/src/util/statistics_registry.h
+++ b/src/util/statistics_registry.h
@@ -2,9 +2,9 @@
/*! \file statistics_registry.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Tim King, Andres Noetzli
+ ** Morgan Deters, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/tuple.h b/src/util/tuple.h
index a60393ca0..0e6b04dab 100644
--- a/src/util/tuple.h
+++ b/src/util/tuple.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Morgan Deters, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/unsafe_interrupt_exception.h b/src/util/unsafe_interrupt_exception.h
index 1cf54b7f1..faee0a5cf 100644
--- a/src/util/unsafe_interrupt_exception.h
+++ b/src/util/unsafe_interrupt_exception.h
@@ -2,9 +2,9 @@
/*! \file unsafe_interrupt_exception.h
** \verbatim
** Top contributors (to current version):
- ** Liana Hadarean, Tim King
+ ** Liana Hadarean
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/util/utility.h b/src/util/utility.h
index 56a68ca40..e77be32ac 100644
--- a/src/util/utility.h
+++ b/src/util/utility.h
@@ -2,9 +2,9 @@
/*! \file utility.h
** \verbatim
** Top contributors (to current version):
- ** Morgan Deters, Aina Niemetz
+ ** Morgan Deters, Andres Noetzli, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback