Contribution: HigmanCF

A direct constructive proof of Higman's Lemma

Authors

Description

This development formalizes in Coq the Coquand-Friedlender proof of Higman's lemma for a two-letter alphabet. An efficient program can be extracted from the proof.

Keywords

higman's lemma, extraction

README

			 HIGMAN'S LEMMA
			a new Coq version

Author: Stefan Berghofer <berghofe@in.tum.de>
Packaging, some optimizations, this README: Pierre Letouzey <letouzey@lri.fr>

This development formalizes in Coq the Coquand-Friedlender proof of Higman's 
lemma for a two-letter alphabet. 

Hugo Herbelin made the first formalization of Higman's lemma in Coq (see 
Rocq/HIGMAN user contribution) via a A-translation of Nash-Williams 
impredicative and classical proof of Higman's lemma.

This new proof is at the same time much smaller and much more efficient 
(from the computational point of view) than Herbelin's original work. 

More explanations, as well as the original Isabelle version of this new proof, 
can be found in Stefan Berghofer PhD thesis, available at: 
	http://wwwbroy.in.tum.de/~berghofe/papers/phd.pdf


Quote from the mail I received from Stefan:  

-----------------------------------------------------------------------------
Last week I managed to port my Isabelle proof of Higman's lemma to Coq. There 
are two versions of the proof: 

- In the first version (Higman.v), a program called good_prefix is extracted, 
  which, given an infinite sequence of words, returns a good prefix as a list. 
  This version closely corresponds to what I described in my thesis. 

- In the second version (Higman2.v), a program called higman_idx is extracted, 
  which, given an infinite sequence of words, returns the indices of two words 
  that can be embedded into each other. 

Note that in contrast to Herbelin's formalization,
the datatype of lists defined in PolyList is used, and the two
letters of the alphabet are named A and B (instead of A0 and A1).

Comments are highly appreciated.


Stefan Berghofer                   E-Mail: berghofe@in.tum.de
Institut fuer Informatik           Phone: +49 89 289 17328
Technische Universitaet Muenchen   Fax:   +49 89 289 17307
Boltzmannstr. 3                    Room: 01.11.059
85748 Garching, GERMANY            http://www.in.tum.de/~berghofe
-----------------------------------------------------------------------------



Description of the files:
------------------------

README: this file

Higman.v : cf. above
Higman2.v : cf. above

higman.mli 
higman.ml  : extracted files from Higman.v

higman2.mli 
higman2.ml  : extracted files from Higman2.v

main.ml : an hand-written wrapper around higman2.ml used for building 
          the standalone program higman

higman : a standalone program for testing the extracted algorithm 
         run ./higman --help for more detail 

example_higman : a big example generated and solve by ./higman --random

Available files