# mltp/logic/propositions/__init__.py
from .syntax import (is_variable,
                     is_constant,
                     is_unary,
                     is_binary,
                     split_str,
                     Formula)
from .semantics import (Model,
                        is_model,
                        variables,
                        evaluate,
                        all_models,
                        truth_values,
                        print_truth_table,
                        is_tautology,
                        is_contradiction,
                        is_satisfiable,
                        _synthesize_for_model,
                        synthesize,
                        _synthesize_for_all_except_model,
                        synthesize_cnf,
                        combine_formulae,
                        evaluate_inference,
                        is_sound_inference)
from .operators import (to_not_and_or,
                        to_not_and,
                        to_nand,
                        to_implies_not,
                        to_implies_false,
                        to_not_or,
                        to_nor)
from .reductions import (Graph,
                         is_graph,
                         is_valid_3coloring,
                         graph3coloring_to_formula,
                         assignment_to_3coloring,
                         tricolor_graph)
from .axiomatic_systems import (MP,
                                I0,
                                I1,
                                D,
                                I2,
                                N,
                                NI,
                                NN,
                                R,
                                AXIOMATIC_SYSTEM,
                                HILBERT_AXIOMATIC_SYSTEM,
                                A,
                                NA1,
                                NA2,
                                O1,
                                O2,
                                NO,
                                T,
                                NF,
                                AXIOMATIC_SYSTEM_FULL,
                                N_ALTERNATIVE,
                                HILBERT_AXIOMATIC_SYSTEM_ALTERNATIVE,
                                AE1,
                                AE2,
                                OE,
                                HILBERT_AXIOMATIC_SYSTEM_FULL)
from .proofs import (SpecializationMap,
                     InferenceRule,
                     Proof,
                     prove_specialization,
                     _inline_proof_once,
                     uses_rule,
                     find_first_use_of_rule,
                     inline_proof)
from .deduction import (prove_corollary,
                        combine_proofs,
                        remove_assumption,
                        prove_from_opposites,
                        prove_by_way_of_contradiction)
from .soundness import (rule_nonsoundness_from_specialization_nonsoundness,
                        nonsound_rule_of_nonsound_proof)
from .tautology import (formulas_capturing_model,
                        prove_in_model,
                        reduce_assumption,
                        prove_tautology,
                        proof_or_counterexample,
                        encode_as_formula,
                        prove_sound_inference,
                        model_or_inconsistency,
                        prove_in_model_full)

#__all__ = ['deduction', 'operators', 'proofs', 'reductions', 'semantics', 'some_proofs', 'soundness', 'syntax', 'tautology']

__all__ = ['is_variable',
             'is_constant',
             'is_unary',
             'is_binary',
             'split_str',
             'Formula',
             'Model',
             'is_model',
             'variables',
             'evaluate',
             'all_models',
             'truth_values',
             'print_truth_table',
             'is_tautology',
             'is_contradiction',
             'is_satisfiable',
             '_synthesize_for_model',
             'synthesize',
             '_synthesize_for_all_except_model',
             'synthesize_cnf',
             'combine_formulae',
             'evaluate_inference',
             'is_sound_inference',
             'to_not_and_or',
             'to_not_and',
             'to_nand',
             'to_implies_not',
             'to_implies_false',
             'to_not_or',
             'to_nor',
             'Graph',
             'is_graph',
             'is_valid_3coloring',
             'graph3coloring_to_formula',
             'assignment_to_3coloring',
             'tricolor_graph',
             'MP',
             'I0',
             'I1',
             'D',
             'I2',
             'N',
             'NI',
             'NN',
             'R',
             'AXIOMATIC_SYSTEM',
             'HILBERT_AXIOMATIC_SYSTEM',
             'A',
             'NA1',
             'NA2',
             'O1',
             'O2',
             'NO',
             'T',
             'NF',
             'AXIOMATIC_SYSTEM_FULL',
             'N_ALTERNATIVE',
             'HILBERT_AXIOMATIC_SYSTEM_ALTERNATIVE',
             'AE1',
             'AE2',
             'OE',
             'HILBERT_AXIOMATIC_SYSTEM_FULL',
             'SpecializationMap',
             'InferenceRule',
             'Proof',
             'prove_specialization',
             '_inline_proof_once',
             'uses_rule',
             'find_first_use_of_rule',
             'inline_proof',
             'prove_corollary',
             'combine_proofs',
             'remove_assumption',
             'prove_from_opposites',
             'prove_by_way_of_contradiction', 
             'rule_nonsoundness_from_specialization_nonsoundness',
             'nonsound_rule_of_nonsound_proof',
             'formulas_capturing_model',
             'prove_in_model',
             'reduce_assumption',
             'prove_tautology',
             'proof_or_counterexample',
             'encode_as_formula',
             'prove_sound_inference',
             'model_or_inconsistency',
             'prove_in_model_full']