Logique multitriée - Many-sorted logic

La logique multitriée peut refléter formellement notre intention de ne pas traiter l'univers comme une collection homogène d'objets, mais de le partitionner d'une manière similaire aux types dans la programmation typée . Les « parties du discours » tant fonctionnelles qu'assertives dans le langage de la logique reflètent ce partitionnement typé de l'univers, même au niveau syntaxique : la substitution et le passage d'arguments ne peuvent se faire qu'en conséquence, en respectant les « sortes ».

Il existe différentes manières de formaliser l'intention évoquée ci-dessus ; une logique multitriée est tout paquet d'informations qui la remplit. Dans la plupart des cas, les éléments suivants sont indiqués :

Le domaine du discours de toute structure de cette signature est alors fragmenté en sous-ensembles disjoints, un pour chaque sorte.

Exemple

Lorsqu'on raisonne sur les organismes biologiques, il est utile de distinguer deux sortes : et . Alors qu'une fonction a du sens, une fonction similaire n'en a généralement pas. La logique à plusieurs tris permet d'avoir des termes comme , mais de rejeter des termes comme comme syntaxiquement mal formés.

Algébrisation

L'algébrisation de la logique multitriée est expliquée dans un article de Caleiro et Gonçalves, qui généralise la logique algébrique abstraite au cas multitrié , mais peut également être utilisé comme matériel d'introduction.

Logique triée par ordre

Exemple de hiérarchie de tri

Alors que de nombreux triées logique nécessite deux types distincts d'avoir des ensembles d'univers disjoints, triées ordre logique permet une sorte d'être déclaré subsort d' une autre sorte , généralement par écrit ou syntaxe similaire. Dans l' exemple de biologie ci - dessus , il est souhaitable de déclarer

,
,
,
,
,
,

etc; cf. photo.

Partout où un terme quelconque est requis, un terme de n'importe quelle sous-sorte de peut être fourni à la place ( principe de substitution de Liskov ). Par exemple, en supposant une déclaration de fonction , et une déclaration constante , le terme est parfaitement valide et a la sorte . Afin de fournir l'information que la mère d'un chien est à son tour un chien, une autre déclaration peut être délivrée ; c'est ce qu'on appelle la surcharge de fonction , similaire à la surcharge dans les langages de programmation .

La logique triée par ordre peut être traduite en logique non triée, en utilisant un prédicat unaire pour chaque sorte et un axiome pour chaque déclaration de sous-sort . L'approche inverse a réussi à prouver un théorème automatisé : en 1985, Christoph Walther a pu résoudre un problème de référence en le traduisant en logique triée par ordre, le réduisant ainsi d'un ordre de grandeur, car de nombreux prédicats unaires se sont transformés en sortes.

Afin d'incorporer une logique triée par ordre dans un démonstrateur de théorème automatisé basé sur des clauses, un algorithme d' unification trié par ordre correspondant est nécessaire, ce qui nécessite que pour deux sortes déclarées, leur intersection soit également déclarée : si et sont des variables de tri et , respectivement, l'équation a la solution , où .

Smolka a généralisé la logique triée par ordre pour permettre le polymorphisme paramétrique . Dans son cadre, les déclarations de sous-sorts sont propagées vers des expressions de types complexes. À titre d'exemple de programmation, un tri paramétrique peut être déclaré (en étant un paramètre de type comme dans un modèle C++ ), et à partir d'une déclaration de sous-sort, la relation est automatiquement déduite, ce qui signifie que chaque liste d'entiers est également une liste de flottants.

Schmidt-Schauß a généralisé la logique triée par ordre pour permettre les déclarations de termes. Par exemple, en supposant des déclarations de sous-sort et , une déclaration de terme comme permet de déclarer une propriété d'addition d'entiers qui ne pourrait pas être exprimée par une surcharge ordinaire.

Voir également

Les références

Les premiers articles sur la logique multitriée comprennent :

Liens externes