:- dynamic fact_type/2,fact_type/3,noun_concept/2,verb/2. keyword(none) --> []. keyword(univ_quant) --> [each]. keyword(exist_quant) --> [some]. keyword(exactly_one_quant) --> [exactly,one]. logical_formulation --> atomic_formulation. %logical_formulation --> instantiation_formulation. logical_formulation --> modal_formulation. %logical_formulation --> logical_operation. %logical_formulation --> quantification. %logical_formulation --> objectification. %logical_formulation --> projecting_formulation. %logical_formulation --> proposition_nominalization. %atomic formulation based on a binary fact type % atomic_formulation --> keyword,noun_concept,verb,keyword,noun_concept atomic_formulation(A, G) :- fact_type(X,Y,Z), keyword(R,A,B), noun_concept(B, C), verb(C, D), keyword(T,D,E), noun_concept(E, F), % fact_type(A,B,C), F=G, append(X,C,B), %B,C %bylo B,A append(Y,D,C), %C,D %bylo C,B append(Z,F,E), %C,E %bylo E,C write(R),nl,write(T). %atomic formulation based on a unary fact type (characteristic) atomic_formulation(A,C) :- fact_type(X,Y), noun_concept(A,B), verb(B,C), append(X,B,A), append(Y,C,B). def_noun_concept(A,B) :- noun_concept(A,B),!. %konflikt podobnych konceptów def_noun_concept(A,B) :- assert(noun_concept(A,B)). def_verb(A,B) :- verb(A,B),!. def_verb(A,B) :- assert(verb(A,B)). %Unary fact type def_fact_type(X,Y) :- fact_type(X,Y),!. def_fact_type(X,Y) :- assert(fact_type(X,Y)), append(X,A,B),def_noun_concept(B,A), append(Y,C,D),def_verb(D,C), assert(is_role_of(X,fact_type(X,Y))). %Binary fact type def_fact_type(X,Y,Z) :- fact_type(X,Y,Z),!. def_fact_type(X,Y,Z) :- assert(fact_type(X,Y,Z)), append(X,A,B),def_noun_concept(B,A), append(Y,C,D),def_verb(D,C), append(Z,E,F),def_noun_concept(F,E), assert(is_role_of(X,fact_type(X,Y,Z),1)), assert(is_role_of(Z,fact_type(X,Y,Z),2)). %i dodatkowe fakty(prolog),własności go:- def_fact_type([car],[has],[driver]), def_fact_type([rental],[is,open]), def_fact_type([rental],[is,closed]), def_fact_type([company],[appoints],[officer]). modal_formulation --> obligation_formulation,logical_formulation. modal_formulation --> obligation_formulation_neg,logical_formulation. %modal_formulation --> necessity_formulation. %modal_formulation --> neccessity_formulation_neg. %modal_formulation --> possibility_formulation. %modal_formulation --> permissibility_formulation. obligation_formulation --> [it,is,obligatory,that]. obligation_formulation_neg --> [it,is,prohibited,that]. /*quantification(A) :- univ_quant(A); exist_quant(A). univ_quant([each]).*/