Optimality Theory is a linguistic theory developed by Alan Prince and Paul Smolensky (Prince and Smolensky 1993). Partial Order Optimality Theory is a conservative generalization of the classical theory that allows one to describe and explain variation. This web application provides tools for working with both theories.

Number of optimal candidates

In classical OT, only one candidate can be optimal. In Partial Order OT, multiple candidates can be optimal. This is useful for modelling variation. For example: for a given input, multiple outputs may appear in the same dialect (e.g. multiple pronunciations of "data").

Finding all grammars

Most learning algorithms can find a single grammar that is compatible with the data. OTOrder finds all the grammars compatible with the data. This is made possible by the algorithm described in Djalali 2013.


Along with finding all the grammars compatible with the data, OTOrder lists them in terms of their complexity, beginning with the simplest, as per Occam's Razor. Complexity is measured in two ways:

  1. Grammar size. Since a grammar is an ordering of the constraints, it can be expressed as a set of ordered pairs. One pair (C1, C2) means that C1 dominates C2. Grammar size refers to the number of such ordered pairs, or rankings, present in the given grammar. Larger grammars are more complicated than smaller grammars, as they are more restrictive and contain more information.
  2. Ranking volume. Each grammar is a partial order of the set of constraints, and every partial order is compatible with a certain number of total orders. This number is the ranking volume of that grammar. For example, given the constraints C1, C2, and C3 and the partial order {C1 » C3, C2 » C3}, there are two total orders that are compatible. They are C1 » C2 » C3 and C2 » C1 » C3. The original grammar has a ranking volume of size two.

A note on statistics

Just as the ranking volume can be calculated for a whole grammar, a ranking volume can be calculated for each candidate. Given a grammar and its set of compatible total orders, a certain number of those total orders select for each candidate.

This subset of the subset of total orders is the ranking volume for each candidate, and the distribution of percentages across the candidates gives an empirically falsifiable prediction of variation.


OTOrder also finds entailments between input-output pairs (candidates), i.e. implicational universals. We refer to these as global entailments. These are useful for exploring linguistic typologies. If a certain candidate wins, i.e. is present in a language, what other candidates are guaranteed to also be present in the language?

Visualizing graphs

OTOrder visualizes graphs for every grammar calculated, as well as the graph of entailments. These graphs are displayed in PNG format and users are encouraged to download them for use in publications.


Begin by going to the calculator page and entering a dataset. If you would prefer to use a pre-entered dataset, create an account (for two free datasets) or check out the Kiparsky example dataset. Enter inputs, outputs, constraints, and the number of violations each candidate has on each constraint. Any of the violation boxes that are left empty default to 0. You can also choose a title for your dataset by typing in the "Dataset Title" box. If you do not specify a title, a random string will be chosen for the title of your dataset. Once you have finished editing, choose "All grammars" or "Classical grammars", depending on whether you want only the totally-ordered grammars (as in classical OT) or all the grammars, partially- and totally-ordered. Once you click to choose, you will be redirected to the grammars page.


The grammars page may take a few minutes to load, as it calculates the compatible grammars for your dataset. Once it has finished loading, you will see several things:

Global statistics

A chart with global statistics, that displays the numbers of partial and classical grammars that are compatible with your dataset, along with the total number of possible grammars of each type and the percentage of possible grammars that are compatible with your data.

Beneath this chart is a set of links to entailments and to edit the dataset.

Grammar navigation

At the bottom of the page the compatible grammars will be displayed, along with some controls to navigate the set of grammars. There is a selector box to choose the measure of complexity by which the grammars are sorted. The options are ranking volume and grammar size, and the default is ranking volume. In either case, the simplest (smallest size or largest ranking volume) grammars are displayed initially. Changing the sorting key causes the grammars to be recalculated and re-sorted. Below the selection box is a row of numbered buttons, with the rightmost button depressed. The numbers depend on the sorting key. If the grammars are sorted by size, clicking on a number will display the grammars of that size. If they are sorted by ranking volume, clicking on a number will display all the grammars with that ranking volume. If there are too many grammars to display on one page, the "Prev" and "Next" buttons can be used to navigate further.


Finally, the grammars themselves will be displayed at the bottom of the page. For each grammar, the set notation will be displayed on top. Every ordered pair (C1, C2) in the set denotes that C1 outranks C2. On the left is a graphic visualization of the grammar, where each node is a constraint, and an arrow from C1 to C2 denotes that C1 outranks C2. On the right is a table with statistics for that grammar. For each output in an input group, the number and percentage of that grammar's compatible total orders that cause it to win are displayed. In other words, each candidate's ranking volume is displayed. The distribution of percentages gives an empirically falsifiable prediction of variation for that grammar.

Click on the "Entailments" link under the global statistics, which will redirect you to another page.


The entailments page may take a few minutes to load, and once it has loaded it displays a few navigation links and a graph of all the entailments for your dataset. In the graph, each node represents an input-output pair (candidate). If multiple candidates are listed in one node, they are part of an entailment cycle in which each candidate entails each other candidate in the cycle. They are therefore functionally equivalent, and can be listed in a single node. An arrow from node N1 to N2 indicates that all the candidates listed in N1 entail the candidates in N2. Entailments are transitive, so everything entailed by the candidates in N2 is also entailed by N2. Click on the "Edit dataset" link.


If you are not logged in, attempting to edit your dataset will redirect you to a login page. Log in, if you would like to save the work on your dataset and be able to edit and come back to it in the future. If you do not have an account, click on the "Create one" link at the bottom of the page. Logging in will automatically save the dataset to your account. After logging in, you will be able to edit your dataset as often as you would like, experimenting with how changes affect changes to the compatible grammars and entailments.


To view the list of your datasets, log in and click on your username in the upper right hand corner. From the dropdown menu, click on "View account". This redirect you to your account page, where you can see all of your datasets. For each dataset, there are links to the grammars and entailments, and buttons to edit, copy, or delete the dataset. Copying the dataset creates an exact copy which you can edit, if you would like to have multiple variations of the same dataset without re-entering from scratch.

Good luck and enjoy!



A ranking of constraints. Under classical Optimality Theory, this must be a total ranking, under Partial Order Optimality Theory it can be any strict partial order.

In Depth

In Optimality Theory, a grammar is simply a strict ranking of constraints. Under classical Optimality Theory, this ranking has to be a total order. This means that each constraint has to be ranked relative to every other constraint. There can be no ties, so the graph of a total ranking looks like a straight line. However, under Partial Order Optimality Theory, the constraints can be ranked in any strict partial order. Formally, this means that not every constraint needs to be ranked with respect to every other constraint. In other words, there can be ties, so a graph might have branches or constraints floating by themselves, if they are not ranked with respect to any other constraint.

Grammar size


The total number of pairwise rankings in the grammar.

In Depth

Each grammar is a ranking, and a ranking can be represented as a set of ordered pairs, where each pair (A, B) says A is ranked over B. These sets are closed under transitivity, which just means that if (A, B) and (B, C) are in the set, then (A, C) has to be in the set as well. The grammar size refers to the number of ordered pairs in the set.

Ranking volume


Given a ranking, the number of totally-ordered rankings compatible with that ranking.

In Depth

Any partial ranking has a certain number of total rankings that it is compatible with. Here are some simple examples:
Constraints Partial ranking Total rankings Ranking volume
A, B, C A » C
B » C
A » B » C
B » A » C
A, B, C B » C A » B » C
B » A » C
B » C » A
A, B, C (no rankings) A » B » C, A » C » B
B » A » C, C » A » B
B » C » A, C » B » A
A, B, C A » B » C A » B » C 1
Notice a couple of things from this table. In general, when the number of rankings in the partial ranking increases, the ranking volume decreases. One extreme is the empty partial ranking, which is compatible with all possible total rankings (in this case, 6). The other extreme is when the partial ranking is also a total ranking. In this case, there is only one compatible total ranking (the partial ranking itself), so it has a ranking volume of 1.



A set of candidates with their violation vectors and whether or not they are optimal, and a list of constraints.

In Depth

A dataset is the basic unit of data. It consists essentially of one or more input groups and a list of constraints. If you create an account, you can save, copy, and edit your datasets. You can view the grammars or entailments for a dataset, edit the number and names of the constraints, change its title, and edit anything about the input groups.

Input group


A group of candidates that have the same input.

In Depth

In Optimality Theory, each input can have multiple possible outputs. Although for the purposes of our ranking algorithm every candidate is formally independent from every other candidate, it can be helpful to group them based on the input. These groups are referred to as input groups.



An input-output pair.

In Depth

Every input may have several outputs, and it is possible for distinct inputs to have common outputs. A candidate is a unique pairing of an input with an output. We sometimes refer to a candidate as including whether or not the output can be optimal, along with the violation vector.

Violation vector


Given a candidate and a list of constraints, an ordered list of the number of violations the output incurs on each constraint.

In Depth

Given an input, an output, and a constraint, it is straightforward to determine the number of times the output violates the constraint, for the input. In classical OT tableaux this is the number of asterisks in the cell for the candidate and the constraint. If, rather than a single constraint, we have a list of them, the violation vector is a list of the number of violations (in the same order as the list of constraints).



One candidate is said to globally entail another if every grammar that makes the first candidate optimal also makes the second candidate optimal.

In Depth

For every candidate, there are a certain number of grammars that will make it optimal for its input. If every single one of those grammars also makes a second candidate optimal for its input, then the first grammar entails the second candidate. Under classical OT, only one candidate per input can be optimal, so candidates can only entail candidates with different inputs. However, under Partial Order OT, candidates with the same input can potentially entail or be entailed by each other. We take all of the entailments for a dataset and visualize them as a graph.

Anttila, Arto. 1997. ‘Deriving variation from grammar’. In Frans Hinskens, Roeland van Hout, & Leo Wetzels (eds.), Variation, Change and Phonological Theory, Amsterdam / Philadelphia: John Benjamins, pp. 35-68.

Anttila, Arto and Young-mee Yu Cho. 1998. ‘Variation and change in Optimality Theory’, Lingua 104, 31-56. Special issue on Conflicting Constraints.

Anttila, Arto and Curtis Andrus. 2006. ‘T-Order Generator, software package’, Stanford University, www.stanford.edu/~anttila/research/software.html.

Brasoveanu, Adrian and Alan Prince. 2011. ‘Ranking and necessity: the Fusional Reduction Algorithm’, Natural Language and Linguistic Theory, 29, 3-70.

Djalali, Alex J. 2013. ‘A constructive solution to the ranking problem in Partial Order Optimality Theory’, Ms., Stanford University.

Kiparsky, Paul. 1993. ‘An OT Perspective on phonological variation’. Handout from Rutgers Optimality Workshop 1993, also presented at NWAVE 1994, Stanford University. Available at www.stanford.edu/~kiparsky/Papers/nwave94.pdf

Prince, Alan. 2002a. ‘Entailed ranking arguments’. [ROA-500].

Prince, Alan. 2002b. ‘Arguing Optimality’. [ROA-562].

Prince, Alan. 2006. 'Implication & Impossibility in Grammatical Systems'. [ROA-880].

Prince, Alan. 2007. ‘The pursuit of theory’, in Paul de Lacy (ed.), The Cambridge handbook of phonology, Cambridge University Press, Cambridge, pp. 33-60.

Prince, Alan and Paul Smolensky. 1993/2004. Optimality Theory: Constraint Interaction in Generative Grammar, Blackwell Publishing, Malden, Massachusetts.

Please feel free to use this website and any graphics, statistics, or other results in your papers, posters, or other publications. We just ask that you include the following citation as one of your references:

Djalali, Alex J. and Cameron Jeffers. 2014. ‘OTOrder, software package’, Stanford University, http://www.otorder.com.