Articulo de referencia

Lógica de múltiples tipos

La lógica multisortada puede reflejar formalmente nuestra intención de no tratar el universo como una colección homogénea de objetos, sino de particionarlo de una manera similar...

La lógica multisortada puede reflejar formalmente nuestra intención de no tratar el universo como una colección homogénea de objetos, sino de particionarlo de una manera similar a los tipos en la programación tipada . Tanto las " partes del discurso " funcionales como las asertivas en el lenguaje de la lógica reflejan esta partición tipada del universo, incluso a nivel sintáctico: la sustitución y el paso de argumentos solo pueden realizarse de acuerdo con los "tipos".

Existen diversas maneras de formalizar la intención mencionada anteriormente; una lógica multisortada es cualquier conjunto de información que la cumple. En la mayoría de los casos, se proporcionan los siguientes elementos:

  • un conjunto de algún tipo, S
  • una generalización apropiada de la noción de firma para poder manejar la información adicional que viene con los tipos.

El dominio del discurso de cualquier estructura de esa firma se fragmenta entonces en subconjuntos disjuntos, uno para cada tipo.

Ejemplo

Al razonar sobre los organismos biológicos, es útil distinguir dos tipos:paglanortet{\displaystyle \mathrm {planta} }yanorteimetroal{\displaystyle \mathrm {animal} }. Mientras que una funciónmetroothmir:anorteimetroalanorteimetroal{\displaystyle \mathrm {madre} \colon \mathrm {animal} \to \mathrm {animal} }Tiene sentido, una función similarmetroothmir:paglanortetpaglanortet{\displaystyle \mathrm {madre} \colon \mathrm {planta} \to \mathrm {planta} }Por lo general, no. La lógica de múltiples tipos permite tener términos comometroothmir(lassimi){\displaystyle \mathrm {madre} (\mathrm {lassie} )}pero descartar términos comometroothmir(metroy_Favoritmi_oak){\displaystyle \mathrm {madre} (\mathrm {mi\_favorito\_oak} )}como sintácticamente mal formado.

Algebraización

La algebrización de la lógica de múltiples clases se explica en un artículo de Caleiro y Gonçalves, [ 1 ] que generaliza la lógica algebraica abstracta al caso de múltiples clases, pero que también puede utilizarse como material introductorio.

Lógica de ordenación

Ejemplo de jerarquía de ordenación

Mientras que la lógica de múltiples tipos requiere que dos tipos distintos tengan conjuntos de universos disjuntos, la lógica de orden permite un solo tipo.s1{\displaystyle s_{1}}ser declarado un subtipo de otro tipos2{\displaystyle s_{2}}, generalmente por escritos1s2{\displaystyle s_{1}\subsetequ s_{2}}o sintaxis similar. En el ejemplo de biología anterior , es deseable declarar

perrocarnívoro{\displaystyle {\text{perro}}\subsetequ {\text{carnívoro}}},
perromamífero{\displaystyle {\text{perro}}\subsetequ {\text{mamífero}}},
carnívoroanimal{\displaystyle {\text{carnívoro}}\subseteteq {\text{animal}}},
mamíferoanimal{\displaystyle {\text{mamífero}}\subsetequ {\text{animal}}},
animalorganismo{\displaystyle {\text{animal}}\subseteq {\text{organismo}}},
plantaorganismo{\displaystyle {\text{planta}}\subseteq {\text{organismo}}},

y así sucesivamente; véase la imagen.

Dondequiera que un término de algún tipos{\displaystyle s}se requiere, un término de cualquier subtipo des{\displaystyle s}En su lugar, se puede proporcionar ( principio de sustitución de Liskov ). Por ejemplo, suponiendo una declaración de funciónmadre:animalanimal{\displaystyle {\text{madre}}:{\text{animal}}\longrightarrow {\text{animal}}}y una declaración constantemuchacha:perro{\displaystyle {\text{lassie}}:{\text{perra}}}, el término madre(muchacha){\displaystyle {\text{madre}}({\text{lassie}})}es perfectamente válido y tiene el tipoanimal{\displaystyle {\text{animal}}}. Para proporcionar la información de que la madre de un perro es a su vez un perro, otra declaración madre:perroperro{\displaystyle {\text{madre}}:{\text{perro}}\longrightarrow {\text{perro}}}puede emitirse; esto se llama sobrecarga de funciones , similar a la sobrecarga en los lenguajes de programación .

La lógica ordenada puede traducirse a lógica no ordenada, utilizando un predicado unario.pagi(incógnita){\displaystyle p_{i}(x)}para cada tiposi{\displaystyle s_{i}}y un axiomaincógnita(pagi(incógnita)pagj(incógnita)){\displaystyle \forall x(p_{i}(x)\rightarrow p_{j}(x))}para cada declaración de subordensisj{\displaystyle s_{i}\subseteq s_{j}}El enfoque inverso tuvo éxito en la demostración automatizada de teoremas : en 1985, Christoph Walther pudo resolver un problema de referencia en aquel entonces traduciéndolo a lógica ordenada, reduciéndolo así en un orden de magnitud, ya que muchos predicados unarios se convirtieron en tipos. [ 2 ]

Para incorporar lógica de ordenación en un demostrador de teoremas automatizado basado en cláusulas, es necesario un algoritmo de unificación de ordenación correspondiente, que requiere para cualesquiera dos tipos declaradoss1,s2{\displaystyle s_{1},s_{2}}su interseccións1s2{\displaystyle s_{1}\cap s_{2}}que también debe declararse: siincógnita1{\displaystyle x_{1}}yincógnita2{\displaystyle x_{2}}son variables de tipos1{\displaystyle s_{1}}ys2{\displaystyle s_{2}}, respectivamente, la ecuaciónincógnita1=¿incógnita2{\displaystyle x_{1}{\stackrel {?}{=}}\,x_{2}}tiene la solución{incógnita1=incógnita,incógnita2=incógnita}{\displaystyle \{x_{1}=x,\;x_{2}=x\}}, dóndeincógnita:s1s2{\displaystyle x:s_{1}\cap s_{2}}.

Smolka generalizó la lógica de ordenación para permitir el polimorfismo paramétrico . [ 3 ] [ 4 ] En su marco, las declaraciones de subordenación se propagan a expresiones de tipo complejas. Como ejemplo de programación, una ordenación paramétricalista(incógnita){\displaystyle {\text{lista}}(X)}puede ser declarado (conincógnita{\displaystyle X}siendo un parámetro de tipo como en una plantilla de C++ ), y de una declaración de subordenenteroflotar{\displaystyle {\text{int}}\subsetequ {\text{float}}}la relaciónlista(entero)lista(flotar){\displaystyle {\text{list}}({\text{int}})\subseteq {\text{list}}({\text{float}})}Se infiere automáticamente, lo que significa que cada lista de números enteros es también una lista de números de coma flotante.

Schmidt-Schauß generalizó la lógica de ordenación para permitir declaraciones de términos. [ 5 ] Como ejemplo, suponiendo declaraciones de subordeninclusoentero{\displaystyle {\text{even}}\subsetequ {\text{int}}}yextrañoentero{\displaystyle {\text{impar}}\subsetequ {\text{int}}}, una declaración de términos comoi:entero.(i+i):incluso{\displaystyle \forall i:{\text{int}}.\;(i+i):{\text{even}}}permite declarar una propiedad de la suma de enteros que no podría expresarse mediante la sobrecarga ordinaria.

Véase también

Referencias

  1. Carlos Caleiro, Ricardo Gonçalves (2006). «Sobre la algebrización de lógicas de múltiples tipos». Actas de la 18.ª conferencia internacional sobre tendencias recientes en técnicas de desarrollo algebraico (WADT) (PDF) . Springer. pp. 21–36 . ISBN  978-3-540-71997-7.
  2. Walther, Christoph (1985). "Una solución mecánica de la apisonadora de Schubert mediante resolución de múltiples tipos" (PDF) . Artif. Intell . 26 (2): 217– 224. doi : 10.1016/0004-3702(85)90029-3 . Archivado del original (PDF) el 8 de julio de 2011. Consultado el 7 de junio de 2013 .
  3. Smolka, Gert (noviembre de 1988). "Programación lógica con tipos ordenados polimórficamente". Taller internacional de programación algebraica y lógica . LNCS. Vol. 343. Springer. págs. 53–70 .  
  4. Smolka, Gert (mayo de 1989), Programación lógica sobre tipos ordenados polimórficamente (tesis doctoral), Universidad de Kaiserslautern-Landau , Alemania
  5. Schmidt-Schauß, Manfred (abril de 1988). Aspectos computacionales de una lógica ordenada con declaraciones de términos . LNAI. Vol. 395. Springer. 

Entre los primeros trabajos sobre lógica de múltiples tipos se incluyen:

  • Wang, Hao (1952). "Lógica de teorías de múltiples clases". Journal of Symbolic Logic . 17 (2): 105– 116. doi : 10.2307/2266241 . JSTOR 2266241 . , recopilados en la obra del autor Computation, Logic, Philosophy. A Collection of Essays , Pekín: Science Press; Dordrecht: Kluwer Academic, 1990.
  • Gilmore, PC (1958). "Una adición a "Lógica de teorías de muchos tipos"" (PDF) . Compositio Mathematica . 13 : 277–281 .
  • A. Oberschelp (1962). "Untersuchungen zur mehrsortigen Quantorenlogik" . Annalen Matemáticas . 145 (4): 297– 333. doi : 10.1007/bf01396685 . S2CID 123363080 . Archivado desde el original el 20 de febrero de 2015 . Consultado el 11 de septiembre de 2013 . 
  • F. Jeffry Pelletier (1972). "Cuantificación Sortal y Cuantificación Restringida" (PDF) . Estudios Filosóficos . 23 (6): 400– 404. doi : 10.1007/bf00355532 . S2CID 170303654 . 
  • "Lógica de múltiples clases", primer capítulo de las Notas de clase sobre procedimientos de decisión de Calogero G. Zarba.