#pip install sympy #pip3 install sympy #python -m pip install simpy from sympy import symbols n = symbols('n') #noun s = symbols('s') #sentence def v(x): #verb if x==n: return s def a(x): #adjective/article/determiner (adnominal) if x==n: return n def adv(x): #adverb if x==v: return v def vt(x): #transitive verb (schönfinkelization/currying Moses Schönfinkel/Haskell B. Curry): transitive predicate=f(a,b)=f1(f2(b))=v(vt(n)) if x==n: return v def p(x): #preposition if x==n: return adv def cop(x): #copula if x==a: return v def copl(x): #locative copula if x==adv: return v Mario=n cammina=v cuoco=n il=a bravo=a lentamente=adv affettuosamente=adv saluta=vt Gino=n cane=n morde=vt un=a cenno=n con=p affetto=n è=cop sta=copl in_=p cucina=n lì =adv a_ =p casa =n test = [ cammina(Mario), #Mario cammina cammina(il(cuoco)), #il cuoco cammina cammina(il(bravo(cuoco))), #il bravo cuoco cammina lentamente(cammina)(Mario), #Mario cammina lentamente saluta(Gino)(Mario), #Mario saluta Gino morde(Mario)(il(cane)), #il cane morde Mario affettuosamente(saluta(Mario))(Gino), #Gino saluta Mario affettuosamente con(affetto)(saluta(Mario))(Gino), #Gino saluta Mario con affetto con(un(cenno))(saluta(Mario))(Gino), #Gino saluta Mario con un cenno è(bravo)(il(cuoco)), #il cuoco è bravo sta(lì)(il(cuoco)), #il cuoco sta lì sta(in_(cucina))(il(cuoco)) #il cuoco sta in cucina ] for i in test: print(i)