P≷OSET Editor
partially (re)ordered set editor v1.1
This editor uses JavaScript. Please activated it.
Import
Edit
Export
LaTeX macros
To use the diagram in a LaTeX document (in math or text mode), load the package causets
with \usepackage{causets}
and use
(one of the) following macros.
Matrices and lists
Help
A good diagram is as close to a 2-order (a poset that is the intersection of two total orders) as possible, so that the number of
manually removed and added links is minimal. To represent higher dimensional posets, find a corresponding 2-order such that
as few links as possible need to be removed from it. For example,
all posets with five elements and all but three posets with six elements are 2-orders and have diagrams without removed links. The
removed link counter in the status bar under the canvas shows the message too many removed links
if it
is likely that a diagram can be constructed with less removed links. For all posets that are not 2-orders, the editor provides some tools to
construct diagrams while keeping the number of removed (and added) links as small as possible.
To find good diagrams, you may use the
toolbar, the mouse/touchpad or the keyboard.
Import options
Create a diagram from any of the following input types. Note that the number of elements of a diagram is limited.
predefined type
Select a predefined type and a numeric value (as cardinality or order parameter). Note that entering a large value is possible via keyboard,
but may slow down the editor.
permutation (for a 2-order)
Enter a permutation of consecutive integers as a comma-separated list.
permutation and list of removed links
Additionally to a permutation, enter a comma-separated list of link pairs in the format number/number
to be excluded when drawing the
automatic links from the permutation.
permutation and list of links
The permutation is only used to position the elements. A comma-separated list of link pairs (in the format number/number
) is used to
draw links between the elements.
LaTeX macro
Paste a LaTeX macro \pcauset
, \rcauset
, or \causet
followed by (an optional argument enclosed in
square brackets []
and) one or two arguments for the permutation and links enclosed in braces {}
.
list of coverings for a 2-layered poset
With this input type, only posets with two layers can be generated. For each second-layer element, write a line listing the first-layer
elements (separated with commas) that are covered by this second-layer element. The elements on the first layer have to be numbered with
consecutive integers, so that each first-layer element appears in at least one of the specified lines in the text field (each first-layer
element is covered by at least one second-layer element). Empty lines are treated as separate elements that are parallel to the diagram.
Once generated, the diagram will be optimised for a diagram with as few crossed links as possible.
order matrix
Paste a causal matrix, where each row is a comma-separated list of values 0 and 1, and the rows are separeted by a line break.
memorized poset
Select an entry from the list to recreate the diagram. Entries are only available if a previously generated diagram has been added to the
memory (see button ⎗ below). Entries can be removed or copied to the clipboard, and the entire memory can be cleared or copied to the
clipboard with the buttons under the list.
With the button Create
, the input data is converted to a diagram. A message is shown and the creation interrupted if an error or warning
occurs, for example, a syntax error caused by an incorrect input.
The button Insert
is only active if another diagram has already been created and an element is selected. This function replaces the
selected element with the poset diagram of the input.
Toolbar functions
⌶
Copy the poset back to the input and revise in the input text fields.
⎗
Add the poset to the input memory so that it can be created/inserted later on.
⤶
Undo the last actions if it was one of the following: generate, move/remove/add element, remove/add link.
⤷
Redo the last actions if it was one of the following: generate, move/remove/add element, remove/add link.
⊞
Increase all element labels by 1.
⊟
Decrease all element labels by 1.
⬖
Mirror the diagram horizontally, which yields an equivalent diagram.
⬙
Mirror the diagram vertically, which yields a diagram of the opposite poset.
⟐
Reset all links to those of a 2-order with the same element positions. This function is only available when the diagram is not showing a
2-order.
∺
Rearrange the elements of a 2-layered poset to minimize link crossings (getting it to a smaller or equal number of link crossing compared to
any element arrangement with a single element swap on either layer). This function is only available when the poset has two layers.
⎌
Swap the element with the one on the same layer to the left. This function is only available when an element is selected and the swap is
possible.
✕
Delete the selected element. This function is only available when an element is selected.
⩒
Link/unlink the selected elements. This function is only available when an element and another link-able element is selected.
Labels
Show/hide the element labels.
Cross
Show/hide the selection cross.
Grid
Show/hide the element grid.
Size
Set the relative canvas size as percentage of the page width. Use fill
to size the canvas to the maximal value. An absolute height
value sets the maximal canvas size. If fill
and 'unbounded' is selected, the canvas is sized to 100% of the page width.
⏍
Copy the value of a text field to the clipboard.
Mouse and touchscreen functions
-
Click on an element (highlighted with a red mark on hover) to select it. If another element is already selected, clicking on a succeeding
element that can be linked (connected by an edge) in the diagram, the (possible) link will be selected as well.
- Click along the row/column going in 45 degree angles away from the selected element to move it there.
- Click on an empty area to unselect.
- Double click on an element to replace it by a 2-antichain.
- Double click on an element while holding the shift key to replace it by a 2-chain.
Keyboard functions
Shortcuts that are bound to the local keyboard configuration:
Ctrl Z
Undo the last action.
Ctrl Y
Redo the last action.
Ctrl ⇧ Z
Redo the last action.
Del
Delete the selected element.
.
Add a new element to the right of the diagram and select it.
Shortcuts that are bound to the keys of a QWERTY keyboard configuration:
W
Select the next element in north-west direction.
A
Select the next element in south-east direction.
S
Select the next element in south-west direction.
D
Select the next element in north-east direction.
⇧ W
Move the selected element in north-west direction.
⇧ A
Move the selected element in south-east direction.
⇧ S
Move the selected element in south-west direction.
⇧ D
Move the selected element in north-east direction.
About
The purpose of this editor is the visualisation of finite partially ordered sets (posets) with Hasse diagrams. Its development started from a
research project and it uses the same principle as the
LaTeX package causets. This editor shall serve as a tool to help drawing diagrams
with the package, while the package offers many more options to draw, style and modify Hasse diagrams. More information are given in the package
manual.
Disclaimer
This web tool has been tested, but I do not take responsibility for incorrectly represented data.
Report a problem or make a suggestion:
Please send me a comprehensive problem description and information of your browser (name and version) if you encounter a problem with the
editor. I also welcome any suggestions to improve the tool. My contact details are in the bottom of my
start page.
Release notes
Support of covering relations for 2-layer posets, composition and memorization of diagrams.
New features
- Predefined input type: n × n lattice subset.
- Input types: list of covering relations (for a 2-layer poset), memorized posets.
- Option to insert a diagram at a selected element.
- Memorization of diagrams.
- Functions to optimize and rearrange elements in a 2-layer poset.
- Shortcut support for undo/redo.
- Status bar information: layer count (length of the longest chain), link count, removed link count.
- Export covering relations.
- Showing progress while computing export arrays.
Modifications
- Elements can be unlinked even if it makes them maximal/minimal for more flexibility when linking.
- Improved link recovering, when moving elements.
- Updated button symbols.
Graphical overhaul and full support for diagrams of any dimenion.
New features
-
Predefined input types: n-chain, n-antichain, random 2-order with n elements, n-fence, n-crown poset, (regular) n-sided polygon poset.
- Input types: permutation and list of removed links, permutation and list of links, LaTeX macro.
- Support of an integer permutation with an arbitrary lower bound. Element labels can be raise and lower via the toolbar.
- Syntax checking of input, and warning if a large diagram is being generated.
- Full mouse/touchscreen support to select, move, and dublicate elements.
- Undo/redo functionality.
- Linking/unlinking pairs of elements. Reset links to those of a 2-order.
- Status bars with information on cardinality, permutation, links, and removed links.
- Canvas size setting (relative and absolute) in status bar.
- Export order matrix and link matrix.
Modifications
-
Export to LaTeX macros can be chosen with a selector to get a diagram without labels, with labels, with permutation grid, or with
permutation grid and labels.
- Settings to show/hide labels, selection cross, and grid are below the canvas.
Beta version to draw diagrams of 2-orders from a permutation input (required to start with 1) and without syntax check. The elements of a
diagram could be selected and moved, removed and new ones added (by keyboard and button controls). The diagram could be converted into its
opposite (reflected vertically) and reflected horizontally. The export output only supported the \pcauset
macro. It was under
development as alpha version since 2024/02/22.
© Copyright 2024,
Christoph Minz. PrOSET editor version v1.1 (revision 2024-10-29).
Styled with Bootstrap. Hosted by
GitHub Pages.
Impressum.