stringtranslate.com

Lógica variada

La lógica multiclasificada puede reflejar formalmente nuestra intención de no manejar el universo como una colección homogénea de objetos, sino dividirlo de una manera similar a los tipos en la programación tipográfica . Tanto las " partes del discurso " funcionales como las asertivas en el lenguaje de la lógica reflejan esta partición tipográfica del universo, incluso en el nivel de sintaxis: la sustitución y el paso de argumentos sólo pueden realizarse en consecuencia, respetando los "géneros".

Existen diversas formas de formalizar la intención mencionada anteriormente; una lógica múltiple es cualquier paquete de información que la cumpla. En la mayoría de los casos, se da lo siguiente:

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

Ejemplo

Al razonar sobre organismos biológicos, es útil distinguir dos tipos: y . Si bien una función tiene sentido, una función similar normalmente no lo tiene. La lógica multiordenada permite tener términos como , pero descartar términos como por estar sintácticamente mal formados.

Algebraización

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

Lógica ordenada por orden

Ejemplo de jerarquía de clasificación

Mientras que la lógica de orden múltiple requiere dos tipos distintos para tener conjuntos de universos separados, la lógica de orden ordenado permite que un tipo se declare como subtipo de otro tipo , generalmente mediante escritura o sintaxis similar. En el ejemplo de biología anterior, es deseable declarar

,
,
,
,
,
,

etcétera; cf. imagen.

Siempre que se requiera un término de algún tipo , se puede proporcionar en su lugar un término de cualquier subtipo ( principio de sustitución de Liskov ). Por ejemplo, suponiendo una declaración de función y una declaración constante , el término es perfectamente válido y tiene el tipo . Para suministrar la información de que la madre de un perro es a su vez perro, podrá expedirse otra declaración; esto se llama sobrecarga de funciones , similar a la sobrecarga en los lenguajes de programación .

La lógica ordenada por orden se puede traducir a lógica no ordenada, utilizando un predicado unario para cada clasificación y un axioma para cada declaración de subclasificación . El enfoque inverso tuvo éxito en la demostración automatizada de teoremas: en 1985, Christoph Walther pudo resolver un problema entonces de referencia traduciéndolo a lógica ordenada, reduciéndolo así a un orden de magnitud, ya que muchos predicados unarios se convirtieron en géneros. [2]

Para incorporar la lógica ordenada por orden en un demostrador de teoremas automatizado basado en cláusulas, es necesario un algoritmo de unificación ordenado por orden correspondiente , que requiere que para dos tipos declarados cualesquiera se declare también su intersección : si y son variables de ordenación y , respectivamente, la ecuación tiene la solución , donde .

Smolka generalizó la lógica ordenada para permitir el polimorfismo paramétrico . [3] [4] En su marco, las declaraciones de subclasificación se propagan a expresiones de tipo complejo. Como ejemplo de programación, se puede declarar una clasificación paramétrica ( siendo un parámetro de tipo como en una plantilla de C++ ) y, a partir de una declaración de subclasificación, la relación se infiere automáticamente, lo que significa que cada lista de números enteros también es una lista de flotantes.

Schmidt-Schauß generalizó la lógica ordenada por orden para permitir declaraciones de términos. [5] Como ejemplo, asumiendo declaraciones de subclasificación y , una declaración de término como permite declarar una propiedad de suma de enteros que no podría expresarse mediante una sobrecarga ordinaria.

Ver también

Referencias

  1. ^ Carlos Caleiro, Ricardo Gonçalves (2006). "Sobre la algebraización de lógicas variadas". Proc. 18º int. conf. sobre tendencias recientes en técnicas de desarrollo algebraico (WADT) (PDF) . Saltador. págs. 21–36. ISBN 978-3-540-71997-7.
  2. ^ Walther, Christoph (1985). "Una solución mecánica de la apisonadora de Schubert mediante resoluciones variadas" (PDF) . Artif. Intel . 26 (2): 217–224. doi :10.1016/0004-3702(85)90029-3.
  3. ^ Smolka, Gert (noviembre de 1988). "Programación lógica con tipos ordenados polimórficamente". En t. Taller de Programación Algebraica y Lógica . LNCS. vol. 343. Saltador. 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 por orden con declaraciones de términos . LNAI. vol. 395. Saltador.

Los primeros artículos sobre lógica variada incluyen:

enlaces externos