Schema tratto da Kazimierz Ajdukiewicz, Syntactic Connection [orig. Die syntaktische Konnexität, «Studia Philosophica» 1 (1935), 1-27], in S. McCall (a c. di) Polish Logic 1920-1939, Oxford, 1967, pp. 207-231.
Nella formulazione di Ajdukiewicz la grammatica categoriale è totalmente indipendente dalla posizione lineare degli elementi. In questo la formulazione teorica originaria si differenzia da modelli successivi che hanno avuto séguito soprattutto in ambito angolassone (p. es. la grammatica di Joachim Lambek 1922-2014) e che distinguono tra casi in cui l’operando è inserito a destra e casi in cui l’operando è inserito a sinistra. L’impostazione “non linearizzata” di Ajdukiewicz è tuttora utilizzata negli studi di semantica formale.
n = nome s = frase
#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)