z3-src 503.0.0

Source distribution of the Z3 SMT solver, for use as a build dependency
Documentation
/*++
Copyright (c) 2016 Microsoft Corporation

Module Name:

    smt_logics.h

Abstract:

    Module for recognizing SMT logics.

Author:

    Nikolaj Bjorner (nbjorner) 2016-11-4

Revision History:

--*/
#pragma once

class smt_logics {
public:
    static bool logic_is_ff(symbol const& s) { return s == "QF_FF" || s == "QF_FFA"; }
    static bool logic_has_ff(symbol const& s) { return logic_is_ff(s) || logic_is_all(s); }
    static bool supported_logic(symbol const & s);
    static bool logic_has_reals_only(symbol const& l);       
    static bool logic_is_all(symbol const& s) { return s == "ALL" || s == "HO_ALL"; }
    static bool logic_has_transcendental(symbol const& s);
    static bool logic_has_uf(symbol const& s);
    static bool logic_has_arith(symbol const & s);
    static bool logic_has_bv(symbol const & s);
    static bool logic_has_array(symbol const & s);
    static bool logic_has_finite_sets(symbol const &s);
    static bool logic_has_seq(symbol const & s);
    static bool logic_has_str(symbol const & s);
    static bool logic_has_fpa(symbol const & s);
    static bool logic_has_horn(symbol const& s);
    static bool logic_has_pb(symbol const& s);
    static bool logic_has_fd(symbol const& s) { return s == "QF_FD"; }
    static bool logic_has_datatype(symbol const& s);
};