perfected :- ap(ucc). neg_perfected :- ap(sma). ap(ucc) :- ok(ucc), possession, not neg_perfected. ap(sma) :- ok(sma), ship, neg_finstatement, not perfected. ap(lex_posterior_sma_sma) :- ok(lex_posterior_sma_sma), newer(sma, sma), not neg_prec(sma, sma). ap(lex_posterior_sma_ucc) :- ok(lex_posterior_sma_ucc), newer(sma, ucc), not neg_prec(sma, ucc). ap(lex_posterior_ucc_sma) :- ok(lex_posterior_ucc_sma), newer(ucc, sma), not neg_prec(ucc, sma). ap(lex_posterior_ucc_ucc) :- ok(lex_posterior_ucc_ucc), newer(ucc, ucc), not neg_prec(ucc, ucc). ap(lex_superior_sma_sma) :- ok(lex_superior_sma_sma), state_law(sma), federal_law(sma), not neg_prec(sma, sma). ap(lex_superior_sma_ucc) :- ok(lex_superior_sma_ucc), state_law(sma), federal_law(ucc), not neg_prec(sma, ucc). ap(lex_superior_ucc_sma) :- ok(lex_superior_ucc_sma), state_law(ucc), federal_law(sma), not neg_prec(ucc, sma). ap(lex_superior_ucc_ucc) :- ok(lex_superior_ucc_ucc), state_law(ucc), federal_law(ucc), not neg_prec(ucc, ucc). ok(X) :- name(X), oko(X, ucc), oko(X, sma), oko(X, lex_posterior_sma_sma), oko(X, lex_posterior_sma_ucc), oko(X, lex_posterior_ucc_sma), oko(X, lex_posterior_ucc_ucc), oko(X, lex_superior_sma_sma), oko(X, lex_superior_sma_ucc), oko(X, lex_superior_ucc_sma), oko(X, lex_superior_ucc_ucc). possession. bl(ucc) :- ok(ucc), not possession. bl(ucc) :- ok(ucc), neg_perfected. bl(sma) :- ok(sma), not ship. bl(sma) :- ok(sma), not neg_finstatement. bl(sma) :- ok(sma), perfected. bl(lex_posterior_sma_sma) :- ok(lex_posterior_sma_sma), not newer(sma, sma). bl(lex_posterior_sma_sma) :- ok(lex_posterior_sma_sma), neg_prec(sma, sma). bl(lex_posterior_sma_ucc) :- ok(lex_posterior_sma_ucc), not newer(sma, ucc). bl(lex_posterior_sma_ucc) :- ok(lex_posterior_sma_ucc), neg_prec(sma, ucc). bl(lex_posterior_ucc_sma) :- ok(lex_posterior_ucc_sma), not newer(ucc, sma). bl(lex_posterior_ucc_sma) :- ok(lex_posterior_ucc_sma), neg_prec(ucc, sma). bl(lex_posterior_ucc_ucc) :- ok(lex_posterior_ucc_ucc), not newer(ucc, ucc). bl(lex_posterior_ucc_ucc) :- ok(lex_posterior_ucc_ucc), neg_prec(ucc, ucc). bl(lex_superior_sma_sma) :- ok(lex_superior_sma_sma), not state_law(sma). bl(lex_superior_sma_sma) :- ok(lex_superior_sma_sma), not federal_law(sma). bl(lex_superior_sma_sma) :- ok(lex_superior_sma_sma), neg_prec(sma, sma). bl(lex_superior_sma_ucc) :- ok(lex_superior_sma_ucc), not state_law(sma). bl(lex_superior_sma_ucc) :- ok(lex_superior_sma_ucc), not federal_law(ucc). bl(lex_superior_sma_ucc) :- ok(lex_superior_sma_ucc), neg_prec(sma, ucc). bl(lex_superior_ucc_sma) :- ok(lex_superior_ucc_sma), not state_law(ucc). bl(lex_superior_ucc_sma) :- ok(lex_superior_ucc_sma), not federal_law(sma). bl(lex_superior_ucc_sma) :- ok(lex_superior_ucc_sma), neg_prec(ucc, sma). bl(lex_superior_ucc_ucc) :- ok(lex_superior_ucc_ucc), not state_law(ucc). bl(lex_superior_ucc_ucc) :- ok(lex_superior_ucc_ucc), not federal_law(ucc). bl(lex_superior_ucc_ucc) :- ok(lex_superior_ucc_ucc), neg_prec(ucc, ucc). ship. neg_finstatement. prec(sma, sma) :- ap(lex_posterior_sma_sma). prec(sma, ucc) :- ap(lex_posterior_sma_ucc). prec(ucc, sma) :- ap(lex_posterior_ucc_sma). prec(ucc, ucc) :- ap(lex_posterior_ucc_ucc). prec(sma, sma) :- ap(lex_superior_sma_sma). prec(sma, ucc) :- ap(lex_superior_sma_ucc). prec(ucc, sma) :- ap(lex_superior_ucc_sma). prec(ucc, ucc) :- ap(lex_superior_ucc_ucc). prec(lex_posterior_sma_sma, lex_superior_sma_sma). prec(lex_posterior_sma_ucc, lex_superior_sma_ucc). prec(lex_posterior_ucc_sma, lex_superior_ucc_sma). prec(lex_posterior_ucc_ucc, lex_superior_ucc_ucc). neg_prec(Y, X) :- name(X), name(Y), prec(X, Y). prec(X, Z) :- name(X), name(Z), name(Y), prec(X, Y), prec(Y, Z). newer(ucc, sma). state_law(ucc). federal_law(sma). oko(X, Y) :- name(X), name(Y), not prec(X, Y). oko(X, Y) :- name(X), name(Y), prec(X, Y), ap(Y). oko(X, Y) :- name(X), name(Y), prec(X, Y), bl(Y). false :- perfected, neg_perfected. false :- possession, neg_possession. false :- ship, neg_ship. false :- finstatement, neg_finstatement. false :- name(X), name(Y), prec(X, Y), neg_prec(X, Y). false :- newer(X, Y), neg_newer(X, Y). false :- state_law(X), neg_state_law(X). false :- federal_law(X), neg_federal_law(X). name(lex_superior_ucc_ucc). name(lex_superior_ucc_sma). name(lex_superior_sma_ucc). name(lex_superior_sma_sma). name(lex_posterior_ucc_ucc). name(lex_posterior_ucc_sma). name(lex_posterior_sma_ucc). name(lex_posterior_sma_sma). name(sma). name(ucc).