command1(set_logic(Logic)) --> "set-logic", !, ws, symbol(Logic), close_paren(set_logic).
command1(set_option(Option)) --> "set-option", !, ws, attribute(Option), close_paren(set_option).
command1(set_info(Info)) --> "set-info", !, ws, attribute(Info), close_paren(set_info).
command1(set_info(Info)) --> "meta-info", !, ws, attribute(Info), close_paren(meta_info).
command1(reset) --> "reset", !, close_paren(reset).
command1(declare_sort(Name,Arity)) --> "declare-sort", !, ws,
symbol(Name), ws, numeral(Arity), close_paren(declare_sort).
command1(define_sort(Name,Parameters,Sort)) --> "define-sort", !, ws,
symbol(Name), ws, "(", multiple_times(symbol,(Parameters)), ")", ws,
!,
must_be_smt_sort(Sort), close_paren(define_sort).
command1(declare_fun(Name,Parameters,Result)) --> "declare-fun", ws, !,
must_be_symbol(Name), ws,
"(", multiple_times(smt_sort,Parameters), ws, ")", ws,
must_be_smt_sort(Result), close_paren(declare_fun).
command1(define_fun(Name,Parameters,Result,Term)) --> "define-fun", ws, !,
symbol(Name), ws, "(", multiple_times(sorted_var,Parameters), ")", ws,
!,
must_be_smt_sort(Result), ws, must_be_term(Term), close_paren(define_fun).
command1(push(Num)) --> "push", !, ws, numeral(Num), close_paren(push).
command1(pop(Num)) --> "pop", !, ws, numeral(Num), close_paren(pop).
command1(assert(Term)) --> "assert", ws, !,
must_be_term(Term), close_paren(assert).
command1(check_sat) --> "check-sat", !, close_paren(check_sat).
command1(get_assert) --> "get-assert", !, close_paren(get_assert).
command1(get_proof) --> "get-proof", !, close_paren(get_proof).
command1(get_model) --> "get-model", !, close_paren(get_model).
command1(get_unsat_core) --> "get-unsat-core", !, close_paren(get_unsat_core).
command1(get_value(Terms)) --> "get-value", ws, !, "(", at_least_once(term,Terms), ")", close_paren(get_value).
command1(get_assign) --> "get-assign", !, close_paren(get_assign).
command1(get_option(Name)) --> "get-option", ws, !, keyword(Name), close_paren(get_option).
command1(get_info(Name)) --> "get-info", ws, !, keyword(Name), close_paren(get_info).
command1(exit) --> "exit", !, close_paren(exit).
command1(_) --> err_message(command).