<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Polywell</id>
	<title>Polywell - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Polywell"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Polywell&amp;action=history"/>
	<updated>2026-05-23T08:40:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Polywell&amp;diff=15684&amp;oldid=prev</id>
		<title>128.151.32.169: /* Single electron motion */</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Polywell&amp;diff=15684&amp;oldid=prev"/>
		<updated>2014-01-29T01:51:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Single electron motion&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{technical|date=July 2013}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Many-sorted logic&amp;#039;&amp;#039;&amp;#039; can reflect formally our intention not to handle the universe as a homogeneous collection of objects, but to partition it in a way that is similar to types in [[typeful programming]]. Both functional and assertive &amp;quot;[[Lexical category|parts of speech]]&amp;quot; in the language of the logic reflect this typeful partitioning of the universe, even on the syntax level: substitution and argument passing can be done only accordingly, respecting the &amp;quot;sorts&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
There are more ways to formalize the intention mentioned above; a &amp;#039;&amp;#039;many-sorted logic&amp;#039;&amp;#039; is any package of information which fulfills it. In most cases, the following are given:&lt;br /&gt;
* a set of sorts, &amp;#039;&amp;#039;S&amp;#039;&amp;#039;&lt;br /&gt;
* an [[Signature (logic)#Many-sorted signatures|appropriate generalization]] of the notion of &amp;#039;&amp;#039;[[Signature (logic)|signature]]&amp;#039;&amp;#039; to be able to handle the additional information that comes with the sorts.&lt;br /&gt;
The [[domain of discourse]] of any [[structure (mathematical logic)|structure]] of that signature is then fragmented into disjoint subsets, one for every sort.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
When reasoning about biological creatures, it is useful to distinguish two sorts: &amp;lt;math&amp;gt;\textit{plant}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\textit{animal}&amp;lt;/math&amp;gt;. While a function &amp;lt;math&amp;gt;\textit{mother}: \textit{animal} \longrightarrow \textit{animal}&amp;lt;/math&amp;gt; makes sense, a similar function &amp;lt;math&amp;gt;\textit{mother}: \textit{plant} \longrightarrow \textit{plant}&amp;lt;/math&amp;gt; usually does not. Many-sorted logic allows one to have terms like &amp;lt;math&amp;gt;\textit{mother}(\textit{lassie})&amp;lt;/math&amp;gt;, but to discard terms like &amp;lt;math&amp;gt;\textit{mother}(\textit{my\_favorite\_oak})&amp;lt;/math&amp;gt; as syntactically ill-formed.&lt;br /&gt;
&lt;br /&gt;
== Algebraization ==&lt;br /&gt;
&lt;br /&gt;
The algebraization of many-sorted logic is explained in an article by Caleiro and Gonçalves,&amp;lt;ref&amp;gt;{{cite book| author=Carlos Caleiro, Ricardo Gonçalves| chapter=On the algebraization of many-sorted logics| title=Proc. 18th int. conf. on Recent trends in algebraic development techniques (WADT)| year=2006| volume=| pages=21–36| publisher=Springer| editor=| series=| isbn=978-3-540-71997-7| url=http://sqig.math.ist.utl.pt/pub/CaleiroC/06-CG-manysorted.pdf}}&amp;lt;/ref&amp;gt; which generalizes [[abstract algebraic logic]] to the many-sorted case, but can also be used as introductory material.&lt;br /&gt;
&lt;br /&gt;
==Order-sorted logic==&lt;br /&gt;
While &amp;#039;&amp;#039;many-sorted&amp;#039;&amp;#039; logic requires two distinct sorts to have disjoint universe sets, &amp;#039;&amp;#039;order-sorted&amp;#039;&amp;#039; logic allows one sort &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; to be declared a subsort of another sort &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt;, usually by writing &amp;lt;math&amp;gt;s_1 \subseteq s_2&amp;lt;/math&amp;gt; or similar syntax. In the [[#example|above example]], it is desirable to declare &lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{dog} \subseteq \textit{carnivore}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{dog} \subseteq \textit{mammal}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{carnivore} \subseteq \textit{animal}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{mammal} \subseteq \textit{animal}&amp;lt;/math&amp;gt;, &lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{animal} \subseteq \textit{creature}&amp;lt;/math&amp;gt;, &lt;br /&gt;
:&amp;lt;math&amp;gt;\textit{plant} \subseteq \textit{creature}&amp;lt;/math&amp;gt;, &lt;br /&gt;
and so on.&lt;br /&gt;
&lt;br /&gt;
Wherever a term of some sort &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is required, a term of any subsort of &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; may be supplied instead. For example, assuming a function declaration &amp;lt;math&amp;gt;\textit{mother}: \textit{animal} \longrightarrow \textit{animal}&amp;lt;/math&amp;gt;, and a constant declaration &amp;lt;math&amp;gt;\textit{lassie}: \textit{dog}&amp;lt;/math&amp;gt;, the term  &amp;lt;math&amp;gt;\textit{mother}(\textit{lassie})&amp;lt;/math&amp;gt; is perfectly valid and has the sort &amp;lt;math&amp;gt;\textit{animal}&amp;lt;/math&amp;gt;. In order to supply the information that the mother of a dog is a dog in turn, another declaration  &amp;lt;math&amp;gt;\textit{mother}: \textit{dog} \longrightarrow \textit{dog}&amp;lt;/math&amp;gt; may be issued; this is called &amp;#039;&amp;#039;function overloading&amp;#039;&amp;#039;, similar to [[Overloading (programming)|overloading in programming languages]].&lt;br /&gt;
&lt;br /&gt;
Order-sorted logic can be translated into unsorted logic, using a unary predicate &amp;lt;math&amp;gt;p_i(x)&amp;lt;/math&amp;gt; for each sort &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt;, and an axiom &amp;lt;math&amp;gt;\forall x: p_i(x) \rightarrow p_j(x)&amp;lt;/math&amp;gt; for each subsort declaration &amp;lt;math&amp;gt;s_i \subseteq s_j&amp;lt;/math&amp;gt;. The reverse approach was successful in automated theorem proving: in 1985, Christoph Walther could solve a then benchmark problem by translating it into order-sorted logic, thereby boiling it down an order of magnitude, as many unary predicates turned into sorts.&amp;lt;ref&amp;gt;{{cite journal|first1=Christoph|last1=Walther|title=A Mechanical Solution of Schubert&amp;#039;s Steamroller by Many-Sorted Resolution|journal=Artif. Intell.|volume=26|number=2|pages=217–224|url=http://www.inferenzsysteme.informatik.tu-darmstadt.de/media/is/publikationen/Schuberts_Steamroller_by_Many-Sorted_Resolution-AIJ-25-2-1985.pdf|year=1985}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to incorporate order-sorted logic into a clause-based automated theorem prover, a corresponding &amp;#039;&amp;#039;order-sorted [[unification (computer science)|unification]]&amp;#039;&amp;#039; algorithm is necessary, which requires for any two declared sorts &amp;lt;math&amp;gt;s_1, s_2&amp;lt;/math&amp;gt; their intersection &amp;lt;math&amp;gt;s_1 \cap s_2&amp;lt;/math&amp;gt; to be declared, too: if &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt; is a variable of sort &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt;, respectively, the equation &amp;lt;math&amp;gt;x_1 \stackrel{?}{=} x_2&amp;lt;/math&amp;gt; has the solution &amp;lt;math&amp;gt;\{ x_1 = x, \; x_2 = x\}&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;x: s_1 \cap s_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Smolka generalized order-sorted logic to allow for [[parametric polymorphism]].&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite conference|first1=Gert|last1=Smolka|title=Logic Programming with Polymorphically Order-Sorted Types|booktitle=Int. Workshop Algebraic and Logic Programming|publisher=Springer|series=LNCS|volume=343|pages=53–70|date=Nov 1988}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first1=Gert|last1=Smolka|title=Logic Programming over Polymorphically Order-Sorted Types|publisher=Univ. Kaiserslautern, Germany|date=May 1989}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
In his framework, subsort declarations are propagated to complex type expressions.&lt;br /&gt;
As a programming example, a parametric sort &amp;lt;math&amp;gt;\textit{list}(X)&amp;lt;/math&amp;gt; may be declared (with &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; being a type parameter as in a [[Template (C++)#Function templates|C++ template]]), and from a subsort declaration &amp;lt;math&amp;gt;\textit{int} \subseteq \textit{float}&amp;lt;/math&amp;gt; the relation &amp;lt;math&amp;gt;\textit{list}(\textit{int}) \subseteq \textit{list}(\textit{float})&amp;lt;/math&amp;gt; is automatically inferred, meaning that each list of integers is also a list of floats.&lt;br /&gt;
&lt;br /&gt;
Schmidt-Schauß generalized order-sorted logic to allow for term declarations.&amp;lt;ref&amp;gt;{{cite book|first1=Manfred|last1=Schmidt-Schauß|title=Computational Aspects of an Order-Sorted Logic with Term Declarations|publisher=Springer|series=LNAI|volume=395|date=Apr 1988}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
As an example, assuming subsort declarations &amp;lt;math&amp;gt;\textit{even} \subseteq \textit{int}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\textit{odd} \subseteq \textit{int}&amp;lt;/math&amp;gt;, a term declaration like &amp;lt;math&amp;gt;\forall i:\textit{int}. \; (i+i):\textit{even}&amp;lt;/math&amp;gt; allows to declare a property of integer addition that could not be expressed by ordinary overloading.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
{{Portal|Logic}}&lt;br /&gt;
&lt;br /&gt;
* [[Categorical logic]]&lt;br /&gt;
* [[Many-sorted first-order logic#Many-sorted logic]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
Early papers on many-sorted logic include:&lt;br /&gt;
* {{cite journal| author=Gilmore, P.C.| title=An addition to &amp;quot;Logic of many-sorted theories&amp;quot;| journal=Compositio Mathematica| year=1958| volume=13| pages=277–281| url=http://archive.numdam.org/article/CM_1956-1958__13__277_0.pdf}}&lt;br /&gt;
* {{cite journal| author=A. Oberschelp| title=Untersuchungen zur mehrsortigen Quantorenlogik| journal=Mathematische Annalen| year=1962| volume=145| number=4| pages=297–333| url=http://gdz.sub.uni-goettingen.de/index.php?id=11&amp;amp;L=4&amp;amp;PPN=GDZPPN002289989&amp;amp;L=1}}&lt;br /&gt;
* {{cite journal| author=F. Jeffry Pelletier| title=Sortal Quantification and Restricted Quantification| journal=Philosophical Studies| year=1972| volume=23| pages=400–404| url=http://www.sfu.ca/~jeffpell/papers/SortalRestrQuant.pdf}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://react.cs.uni-sb.de/teaching/decision-procedures-verification-06/ch01.pdf &amp;quot;Many-sorted Logic&amp;quot;], the first chapter in [http://react.cs.uni-sb.de/~zarba/notes.html &amp;#039;&amp;#039;Lecture Notes on Decision Procedures&amp;#039;&amp;#039;] by [http://react.cs.uni-sb.de/~zarba/ Calogero G. Zarba]&lt;br /&gt;
&lt;br /&gt;
[[Category:Systems of formal logic]]&lt;/div&gt;</summary>
		<author><name>128.151.32.169</name></author>
	</entry>
</feed>