Pages

Miscellaneous Things

This section of my home page contains a few pages which do not fit readily into the other categories.

The Fortuna Random Number Generator

Contents

Introduction

This page describes an implementation of the Fortuna random number generator in the Go programming language.

Fortuna is a cryptographically strong random number generator (RNG). The term cryptographically strong indicates that even a very clever and active attacker, who knows some of the random outputs of the RNG, cannot use this knowledge to predict future or past outputs. This property allows, for example, to use the output of the RNG to generate keys for encryption schemes, and to generate session tokens for web pages.

The Ziggurat Method for Generating Gaussian Random Numbers

Introduction

The Ziggurat method for generating random numbers is a special case of the rejection method, where the density of the proposal distribution looks like the silhouette of a Ziggurat. The method can be used to produce very fast random number generators for distributions like the normal distribution or the exponential distribution. The main advantage comes from the fact that for a high percentage of the generated numbers no slow floating point operations are necessary.

A Simple Tracing Framework for Go

The trace package provides a simple tracing framework for the excellent Go programming language. Code using this framework can emit diagnostic messages using the trace.T() function. In normal operation, calls to trace.T() have no effect and are very fast. When tracing is enabled, in order to track down a problem or to explore the inner workings of a program, listeners can be attached to record and display all trace messages.

Main features:

The SHA-256d Hash for Go

The sha256d package provides an implementation of the SHA-256d hash algorithm (also known as "double SHA-256") for the Go programming language. SHA-256d is a cryptographic hash, first proposed by Ferguson and Schneier in the book "Practical Cryptography". The SHA-256d hash is used in the Bitcoin protocol and in the Fortuna random number generator.

The SHA-256d hash is obtained by applying the SHA-256 hash twice, i.e. by first applying SHA-256 to the data and then again to the resulting hash.

What Happened Until Now?

-

1

-

10

-

102

-

103

-

104

-

105

-

106

-

107

-

108

-

109

-

1010

-

Higgs boson discovered

How to Write an HTML5 App?

Contents

Getting Started

Before you can start writing HTML5 Apps, you will need to learn (at least the basics of) the following technologies: HTML, CSS, and JavaScript.

Mathematical Homepage of Jochen Voss

This page gives a short summary of my mathematical interests.

Conditional Path Sampling of SDEs

With Andrew Stuart and Martin Hairer I am exploring how infinite dimensional Langevin sampling can be used to sample from conditioned distributions of solutions of stochastic differential equations. Our method is based on constructing a partial stochastic differential equation which has the conditioned target density as its stationary distribution.

PGP Schlüssel

public key: 1024D/211B1025
fingerprint: F1DB 1FB5 FEA4 96CE 8F2E DF15 7FE8 83F3 211B 1025

PGP und GnuPG

GnuPG und PGP sind Verschlüsselungsprogramme, die nach dem "public key"-Verfahren arbeiten. Damit kann man z.B. Emails verschlüsseln und signieren. Ich freue mich über signierte und verschlüsselte Emails. Meine Schlüssel kann man entweder auf einem Keyserver finden, oder von hier bekommen:

Der fingerprint meines Schlüssels ist

pub   1024D/211B1025 1999-12-27
      Key fingerprint = F1DB 1FB5 FEA4 96CE 8F2E  DF15 7FE8 83F3 211B 1025
uid                  Jochen Voss <voss@seehuhn.de>
uid                  Jochen Voss <voss@mathematik.uni-kl.de>
uid                  Jochen Voss <voss@debian.org>
sub   1024g/5C44AA14 1999-12-27

Signaturen

Mein Schlüssel ist mit etlichen digitalen Signaturen versehen, die helfen, die Echtheit meines Schlüssels sicherzustellen. Es gibt spezielle Programme, um Ketten solcher Signaturen zwischen zwei gegebenen Schlüsseln zu finden, z.B. den Experimental PGP key path finder von Jonathan McDowell und die PGP pathfinder & key statistics Seite von Henk P. Penning.

Calculating the Square Root of a Matrix

This tutorial explains how to use the LAPACK and BLAS libraries in a C program to calculate the square root (or another function) of a positive semi-definite, symmetric matrix. This serves as a non-trivial example for the use of LAPACK functions. We will see how to call the LAPACK Fortran code from a C program and how to use the BLAS C bindings to multiply matrices. This text assumes that you are already familiar with my text about numerical linear algebra packages on Linux. Feedback is very welcome; please direct any comments and suggestions for improvement to me.

Creating a Poster with TeX

This page contains some hints which may help to create a conference poster using LaTeX. The method described here is good if you want to do everything manually in order to have full control. If, instead, you just want to just get a usable result without spending too much effort, you probably will be better served by using one of the existing solutions like a0poster or sciposter.

Contents

Overview

The method described on this page takes the following approach:

Date and Time Representation in Python

There are many different ways to represent date and time in Python programs. This page gives an overview over the different methods and explains how to convert between different representations. The main focus of this page is on how to represent points in time often assuming some fixed, local time zone. This is used for example when analysing log files. I will not explain here how to convert between different time zones or between different calendars.

Linux on a Toshiba Satellite 2430-301

This text describes the adventures I encountered while installing Linux on a Toshiba Satellite 2430-301 Laptop. If you have questions or additional hints, feel free to contact me.

News. in February 2005, less than two years after I bought it, the laptop described on this page died. The symptoms were:

  • The fans seemed to start to produce a little bit more noise than they used to do.
  • The machine switched itself of from time to time, seemingly from overheating (at least it was quite hot). This effect got worse and worse over the time until the machine was mostly unusable.
  • One day it did not recognise it anymore when the power cord was plugged in. After the battery was emptied, the machine was of course no longer very useful.

This might be the problem discussed at the computer hardware forum.

Linux on an Apple Powerbook G4

This text describes the adventures I encountered while installing Linux on an Apple Powerbook G4 (15″ version, 1.67GHz). It seems that with Apple's numbering scheme the machine is a PowerBook5,6. If you have questions or additional hints, feel free to contact me.

The page was originally written in spring 2005, when the machine was new on the market. After a while I got bored by the many difficulties connected to running Linux on the machine and I switched to using MacOS X. Recently I reinstalled the current Debian/unstable distribution on the machine and was happy to notice that Linux support has significantly improved.

Numerical Linear Algebra Packages on Linux

This page explains how to use numerical linear algebra packages of the BLAS/LAPACK family in C programs on a Debian GNU/Linux system. My goal is to efficiently solve systems of linear equations. Any feedback about this page is very welcome.

Contents

Overview

There is a jungle of different packages and standards and there are implementations in both C and Fortran. The more important packages are presented in the following list.

Profile of the Boot Process of a Debian System

Introduction

Some time ago, Ziga Mahkovec managed to create a nice graphical representation of the boot process of a Fedora Linux system. The aim of the exercise was find out where the system spends all the time during boot and ultimately to decrease start-up time. Since I liked the idea, I produced a similar (but less beautiful) plot describing the start-up of my Debian/unstable system. The result, a bit dated by now, is presented on this page.

The Debian Voting System

Contents

Introduction

The Debian Project uses an interesting voting system to make formal decisions. This system is, for example, used to determine the Debian Project Leader or to determine the outcome of general resolutions of the project. Information about past votes and about how to initiate new votes can be found at the Debian Voting Information page. Current votes, properties of the voting system, and related topics are discussed at the debian-vote mailing list.

How to Choose Your Country?

In our times of globalisation and greatly increased mobility, the prospect of moving to another country becomes less frightening than it used to be. Big companies already move their assets around the globe in order to optimise their situation. Why shouldn't you as an individual do the same? This page intends to help you in choosing a country to live in.

Indicators

Freedom of Press
A free and lively press is one important building block of a country which is good to live in. Problems are more likely to be fixed when it is possible to point them out openly. The Reporters Without Borders provide a yearly report about the world wide situation of the press. For the table below I used values from the Press Freedom Index 2006. Lower values are better.
Life Expectancy
The life expectancy reflects a multitude of factors which are closely related to the quality of living. This includes personal wealth (the rich live longer) and environmental factors (pollution makes ill). The table below includes values from the rank tables for life expectancy at birth in the CIA world factbook. Most of the values are estimated values for the year 2006. Higher value are, of course, better.
Unemployment ratio
Finding a job in your new country will be significantly easier if there is low unemployment. The league table below contains values from the unemployment rates rank table in the CIA world factbook. The numbers given are percent of the work force without work. The values are estimates for different years. Lower values are better.
Corruption
Corruption damages open, democratic processes by hiding the real objectives in decision making and leading to decision which are not in the best interest of the public. When choosing your country it is best to avoid countries where corruption is wide-spread. Since corruption does, by definition, not happen in the open it is difficult to measure. Transparancy International publishes yearly reports on corruption. I used their Corruption Perceptions Index 2005 to compose the table below. Higher values are better.
Public Debt
Countries which have accumulated high levels of debt have less money to operate public institutions and are also liable to increase taxes to generate additional income. You better avoid them when choosing your country. The table below contains values from the public dept rank table of the CIA world factbook. The numbers are given in percent of the GDP, smaller numbers are better.
Language
Life is a lot easier, if you can chat with your neighbours and easily ask the way when you are lost. So make sure to choose a country where you understand the local language. The information given here was collected from Wikipedia.

The League Table

country freedom
of press
index
life
expectancy
unemployment
ratio
corruption
index
public
dept
languages
Andorra 83.51 0.0 Catalan, Spanish, French
Iceland 0.5 80.31 2.1 9.6 31.6 Icelandic
San Marino 81.71 2.6 Italian
Liechtenstein 79.68 1.3 German
Netherlands 0.5 78.96 6.6 8.7 52.7 Dutch
Finland 0.5 78.5 8.4 9.6 39.6 Finnish
Ireland 0.5 77.73 4.3 7.4 26.7 Irish, English
Norway 2.0 79.54 4.6 8.8 50.1 Bokmål, Nyorsk
Switzerland 2.5 80.51 3.8 9.1 52.0 German, French, Italian
Sweden 4.0 80.51 5.8 9.2 50.4 Swedish
New Zealand 5.0 78.81 3.7 9.6 21.3 English, Māori
Korea, South 7.75 77.04 3.7 5.1 20.0 Korean
Australia 9.0 80.5 5.1 8.7 16.1 English
Japan 12.5 81.25 4.4 7.6 158.0 Japanese
Hong Kong 14.0 81.59 5.5 8.3 1.8 Cantonese, English
Kuwait 17.0 77.2 2.2 4.8 12.1 Arabic
United Arab Emirates 17.5 75.44 2.4 6.2 17.5 Arabic
Singapore 51.5 81.71 3.1 9.4 102.9 English, Malay, Mandarin, Tamil
Canada 4.5 80.22 6.8 8.5 69.6 English, French
Austria 4.5 79.07 5.2 8.6 65.1 German
Denmark 5.0 77.79 5.7 9.5 37.0 Danish
France 9.0 79.73 9.9 7.4 66.2 French
Spain 10.0 79.65 9.2 6.8 42.9 Spanish
Taiwan 10.5 77.43 4.1 5.9 33.6 Mandarin
Qatar 18.0 73.9 2.7 6.0 35.6 Arabic
Luxembourg 78.89 4.5 8.6 French, German, Luxembourgish
Portugal 3.0 77.7 7.6 6.6 63.9 Portuguese
Belgium 4.0 78.77 8.4 7.3 94.3 Dutch, French
Germany 5.5 78.8 11.7 8.0 67.3 German
United Kingdom 6.5 78.54 4.7 8.6 43.1 English
Greece 8.0 79.24 9.9 4.4 106.8 Greek
Italy 9.9 79.81 7.7 4.9 108.8 Italian
Chile 11.63 76.77 8.1 7.3 7.5 Spanish
Israel 12.0 79.46 9.0 5.9 99.7 Hebrew
Malaysia 22.25 72.5 3.6 5.0 46.2 Malay
Malta 79.01 7.8 6.4 Maltese, English
Czech Republic 0.75 76.22 8.9 4.8 25.9 Czech
Slovenia 3.0 76.33 10.1 6.4 28.5 Slovenian
Costa Rica 6.67 77.02 6.6 4.1 56.8 Spanish
Cyprus 7.5 77.82 5.6 5.6 70.3 Greek
USA 13.0 77.85 5.1 7.3 64.7 English
Monaco 79.69 22.0 French
Puerto Rico 78.4 12.0 Spanish, English
Brunei 75.01 4.8 Malay, English
Palau 70.42 4.2 English, Palauan

Table 1. The country league table. The groups are choosen as follows: each country is sorted in the highest group such that it beats each country in the same and in lower groups for at least one indicator. Green fields are good values for the corresponding categorie, red fields are bad values.

Linux Hardware Support

This page and its sub-pages give information about Linux support for different pieces of computer hardware.

Wasting Time

Computers can be quite fascinating objects, which help you to waste a lot of time. I use them for this purpose regularly. On my pages here you can find the following things.

Setting up VServers on Debian

This page explains how to use Linux-VServer to run several virtual machines inside a physical machine. A short overview over VServer can be found on the Wikipedia VServer page.

Terminology

In this text I will use the word host to refer to the physical machine the VServer setup is running on. I will use the word client to refer to the virtual machines running on this host.

VServer Host Setup

Kernel

To use VServer on Debian you will need a kernel with VServer support patched in on the host. If you are using precompiled kernel images, you need one with the string vserver in the package name. On my amd64 system I could use linux-image-2.6-vserver-amd64. User space support is contained in the two packages util-vserver and vserver-debiantools.

Using the ALSA Sound System

This page summarises things I learned while trying to understand and use the Advanced Linux Sound Architecture (ALSA) on my Debian GNU/Linux system. I would be happy to receive suggestions to improve or extend this web page.

Configuration

This section gives some help with ALSA configuration issues. In order to avoid complications, we avoid use of external programs in figuring things out.

Is ALSA present in your kernel?
Check for the presence of a /proc/asound/ directory. If the directory exists, you have ALSA support in your kernel.
Why does program xyz not recognise my sound card?
On current Linux systems there are several, partially conflicting ways to access the sound card: using ALSA (this is what we aim for here), using OSS (this is an older sound system, but still used by many programs), or by connecting to a sound daemon like esd or artsd (which in turn might use ALSA or OSS to connect to the system). Probably your program is trying to use the wrong method to play sound.

Programs using OSS can be used with ALSA by enabling the OSS compatibility layer of ALSA. You might need to load additional kernel modules to enable this. Check the file /dev/sndstat. If the file exists and can be read, you have the OSS compatibility layer enabled. It should list audio devices which correspond to the ALSA devices on your system.

Programme

Für meine eigenen Programme verwende ich meistens die Programmiersprache C, manchmal auch C++ oder Python. Einige Programme, die ich im Lauf der Zeit geschrieben habe, finden sich auf dieser Seite. Vermutlich lassen sie sich nur auf Unix-Systemen compilieren. Über Kommentare oder Verbesserungsvorschläge zu den Programmen würde ich mich sehr freuen.

Mathe

  • Fast-dm ist ein Programm zur Parameterschätzung für Ratcliff's Diffusionsmodell.
  • Ich habe die Ziggurat-Methode zur Erzeugung von Normalverteilten Zufallszahlen implementiert.
  • Die Bibliothek jvrand enthält einige Routinen zur Erzeugung von Zufallszahlen und zufälligen Permutationen in C-Programmen.
    jvrand version 0.6.1, 2005-07-24
    jvrand version 0.6, 2005-07-05
  • Kommandos zur Erzeugung von Zufallszahlen beziehungsweise zufälligen Permutationen. Die Kommandos sind als Hilfsmittel für die Programmierung von Shell-Skripten gedacht. Das Packet benötigt die jvrand Bibliothek, die es ebenfalls hier gibt.
    random-utils version 0.5.1, 2005-06-12
    random-utils version 0.5, 2002-10-13
  • Das Programm XIsing simuliert ein stochastisches System, nämlich das Ising-Modell. Das Programm benötigt das X Window System.
  • Das Programm graphcrypt implementiert als Spielzeug ein Verfahren der Visuellen Kryptographie. Es benötigt die Bibliotheken jvrand (von hier), SDL und SDL_image.
    graphcrypt version 0.2.1, 2005-05-30
    graphcrypt version 0.2, 2001-09-18

TeX

  • Ich habe einen TeX-Zeichensatz entworfen, der nur Symbole für die natürlichen, ganzen, reellen und komplexen Zahlen enthält. Es gibt auch ein Style-file um den Zeichensatz leicht unter LaTeX verwenden zu können.
    jvfonts version 0.4.2, 2004-07-01
    jvfonts version 0.4, 2002-10-27
  • Ich habe einen TeX-Zeichensatz entworfen, der nur aus den sechs möglichen Augenzahlen eines Würfels besteht.
    dice version 1, 2007-05-27

Spiele

  • Das Programm golist enthält Scripte zum verwalten einer SQL Datenbank mit Go-Spielergebnissen. Es versucht dann, die Spielstärken der beiligten Spieler zu schätzen. Das Programm benötigt im Moment einen MySQL-Datenbankserver und die Python-Entwicklungsbibliotheken.
    golist version 0.4, 2003-07-19
    golist version 0.3, 2001-09-01
  • Das Spiel Moon-buggy wird auf der Moon-buggy download page beschrieben.

Sonstiges

  • Wisent ist ein LR(1)-Parsergenerator für Python.
  • Jvterm ist ein Terminal-Emulator, ähnlich der Linux-Textconsole oder dem Programm XTerm.
  • zettel ist eine Mischung aus TODO-Liste und Terminkalender. Das Programm läuft im Text-Modus und ist in Python programmiert.
    zettel version 0.2, 2005-05-29
  • Das Programm SandUhr ist eine Art Wecker, der das X Window System und die GNOME Arbeitumgebung benötigt.

Linux on Soekris net4521

Summary

The Soekris net4521 is a small computer with an i386 compatible CPU for use in embedded devices. It also makes a very nice toy! Linux support for the device is excellent.

Linux Kernel

  • Linux kernel config file: config-2.6.22.5
    This is a near-minimal config file to support the net4521 hardware. This config file has all drivers compiled in instead of using modules. In addition to the drivers necessary for the board I selected support for a few PCMCIA wireless cards. Customise this for your own needs.
  • Boot messages: dmesg-2.6.22.5
    These are the kernel boot messages obtained by booting a kernel image generated from the config given above.

References

Sarge Release Schedule in view of GR 2004-003

This page illustrated the Debian voting system using the Debian General Resolution 2004-004 as an example. A detailed explanation and links to further resources can be found in my article about the Debian voting system.

Disclaimer

While this page tries to describe the outcome of the general resolution it is by no means official. The official outcome is of course determined by the Debian project secretary, who might have his own opinion about these matters.

A Map of the Internet

[a map of the internet]

Figure 1. A map of the internet, showing where my email originates. Green dots stand for spam sources, red dots stand for ham sources, and the background shade encodes the spam/ham ratio for /8 netblocks. Black regions stand for unroutable addresses, where no external email can originate.

References

ASUS A8V Linux Support

The ASUS A8V is a motherboard for use with 939-pin AMD Athlon 64 processors. This page summarises the Linux support for the board. If you have questions or additional hints, feel free to contact me.

Summary

Linux support for the ASUS A8V mainboard is almost perfect. Only a few minor features are not accessible under Linux.

component hardware identification status
CPU Socket 939 works perfectly +
Memory 4x 184-pin DDR DIMM works perfectly +
SATA VIA VT6420 works perfectly
(RAID not tested)
+
IDE VIA VT8237
UDMA133
works perfectly +
Ethernet Marvell 88E8001
10/100/1000Base-T
works perfectly +
Sound VIA8237
ALC850 AC97 codec
works
sounds a bit cheap
+

Table 1. This table summarises the Linux support for the ASUS A8V motherboard.

Controlling the Geometry of an HTML Element

This page discusses how the get and set the size of an element in an HTML page. Some general information about how to use CSS and JavaScript in an HTML page can be found on my page about HTML5 apps.

Contents

Introduction

The geometry of most HTML elements is controlled by the CSS Box Model. Elements are assumed to be rectangular, being surrounded by some (transparent) margin and possibly a border. For container elements, there is also an inner margin, called padding, which keeps child elements at a certain distance from the container boundaries.

Griffin iMic Linux Support

The Griffin iMic is a simple USB sound card. It is mostly used as an USB audio adapter for Apple computers which lack built-in sound support (for example the PowerBook G4 has no microphone input) but the iMic also works fine with other computers. This page summarises the Linux hardware support for the device. If you have questions or additional hints, feel free to contact me.

Summary

Linux support for the Griffin iMic is very good.

Juggling and Unicycling

My favourite juggling props are balls. But to some extent I can handle clubs as well, and I also own a unicycle.

[Jochen and three balls] [Jochen and three clubs] [Jochen on his unicycle]
  • I sometimes visit the Warwick Juggling Society. Unfortunately this term the university was unable to provide a room for us. Thus we meet sometimes, somewhere.
  • Another Coventry juggling group is the Coventry Community Circus, which meets each Tuesday in the Artspace building in Coventry.
  • When I lived in Kaiserlautern (Germany), I used to visit the juggling group at the University of Kaiserslautern. Current information about the jugglers from Kaiserslautern can sometimes be found on the Kaiserslautern juggling mailing list.
  • Since I am a mathematician, I am interested in the theory of juggling. You can learn a little bit about site-swaps (a mathematical way to describe juggling patterns) on my page about the mathematics of juggling. A collection of two-person patterns can be found on my ball passing patterns page.
  • More Photos can be found in my digital, almost blinking, fully automatic photo album.

M-Audio Revolution 5.1 Linux Support

This page summarises the Linux hardware support for the M-Audio Revolution 5.1 sound card. If you have questions or additional hints, feel free to contact me.

Summary

The M-Audio Revolution 5.1 sound card is reasonably well supported under Linux with ALSA version 1.0.12 or newer. Support was poor with earlier ALSA versions.

Sound quality is very good and, if you do not need the headphone output (it does not yet work), the M-Audio Revolution 5.1 is a nice sound card for use under Linux.

Mathematische Bildergalerie

Diese Seite enthält einige Bilder, die ich zu unterschiedlichen Zwecken irgendwann einmal erzeugt habe. Jedermann darf diese Bilder gerne für eigene Zwecke verwenden und weiterverbreiten, aber natürlich freue ich mich, wenn ich als Quelle genannt werde. Durch Anklicken der kleinen Bilder erhält man größere Versionen.

  • Ein schönes Zufallsprodukt.
    [tracer paths in a data assimilation problem]
  • Ein Pfad einer stochastischen Differentialgleichung mit vorgegebenem Anfangs- und Endpunkt:
    [doublewell]
  • Einige "klassische" Fraktale:
    Die Koch-Kurve Das Sierpinsky-Dreieck Viele Quadrate
    [Koch Kurve] [Sierpinsky-Dreieck] [Quadrate]
  • Anfangsstücke von Brownschen Pfaden. Der äußere Rand ist rot markiert. Dies sind zufällige Fraktale. Alle drei Bilder sind nach demselben Mechanismus erzeugt.
    [Rand eines Brownschen Pfades] [Rand eines Brownschen Pfades] [Rand eines Brownschen Pfades]
  • Zustände des Ising-Modells. Dies sind zufällige Bilder, die mit mit meinem XIsing Programm erzeugt sind. Der Parameter β ist die inverse Temperatur.

    Matrix Analysis and Algorithms

    This page contains lecture notes about numerical linear algebra which I wrote together with Andrew Stuart. The notes form the basis of the MA398 numerical linear algebra module at the university of Warwick.

    Contents

    • Vector and Matrix Analysis
      • Vector Norms and Inner Products
      • Eigenvalues and Eigenvectors
      • Dual Spaces
      • Matrix Norms
      • Structured Matrices
    • Matrix Factorisations
      • Diagonalisation
      • Jordan Canonical Form
      • Singular Value Decomposition
      • QR Factorisation
      • LU Factorisation
      • Cholesky Factorisation
    • Stability and Conditioning
      • Conditioning of SLE
      • Conditioning of LSQ
      • Conditioning of EVP
      • Stability of Algorithms
    • Complexity of Algorithms
      • Computational Cost
      • Matrix-Matrix Multiplication
      • Fast Fourier Transform
      • Bidiagonal and Hessenberg Forms
    • Systems of Linear Equations
      • Gaussian Elimination
      • Gaussian Elimination with Partial Pivoting
      • The QR Factorisation
    • Iterative Methods
      • Linear Methods
      • The Jacobi Method
      • The Gauss-Seidel and SOR Methods
      • Nonlinear Methods
      • The Steepest Descent Method
      • The Conjugate Gradient Method
    • Least Squares Problems
      • LSQ via Normal Equations
      • LSQ via QR factorisation
      • LSQ via SVD
    • Eigenvalue Problems
      • The Power Method
      • Inverse Iteration
      • Rayleigh Quotient Iteration
      • Simultaneous Iteration
      • The QR Algorithm for Eigenvalues
      • Divide and Conquer for Symmetric Problems

    Download

    The script is available for download here.

    Per-option quorum

    This page discusses a possible feature of the Debian voting system. Here I want to examine the following voting system:

    Let V(a,b) be the number of votes which prefer option a over option b. Let R be some positive number (the quorum).

    step 1:
    remove each non-default option x, where V(x,default) < R
    step 2:
    Use Condorcet voting with Clone-proof Schwartz Sequential Dropping on the remaining options.
    step 3:
    In case of a tie after CpSSD the elector with a casting vote chooses the winner from the Schwartz set

    Which of the criteria from http://electionmethods.org/evaluation.htm does this voting system preserve? In the following examples D denotes the default option and a vote like ABD means A is prefered over both B and D, and B is prefered over D.

    Quorum in the Debian Voting System

    The Debian voting system differs from plain Condorcet voting in several points. For example it introduces the concept of a quorum. Traditionally a quorum should assert that no decision is made without sufficient support among the electors. The Oxford Advanced Learner's Dictionary of Current English defines quorum as the

    number of persons who must, by the rules, be present at a meeting (of a commitee, etc) before its proceedings can have authority.