---
name: "fel"
section: "1"
platform: "linux"
package: "lrslib"
version: "0.73-2+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/fel"
---

# fel(1)

### Name

fel  -  Project an H-representation or V-representation onto a subset of columns.

### Synopsis

**fel** *\[input-file\] \[output-file\]*

**mpirun** -np \[procs\] **mplrs -fel** *\[input-file\] \[output-file\] \[option...\]*

### Description

**fel** is an alias of lrs which can also perform these functions via the **eliminate** and **project** options.

*H-representation*.\
 The input is projected onto a given set of columns using  Fourier-Motzkin elimination. An H-representation is output after each iteration. **mplrs -fel** is a fully parallel version that performs one iteration only, see **[mplrs(1)](/mplrs/1.md)**.\
 *V-representation*.\
 The specified columns are extracted and redundant rows are removed. The output can be can be piped directly into **lrs**. Not implemented in **mplrs**.

### Options

These options are placed **after** the end statement.

**eliminate  k   i\_1 i\_2 ... i\_k**            (new in v7.2)\
 *(H-representation)* Eliminates k variables in an H-representation corresponding to cols i\_1 .. i\_k by projection onto the remaining variables using the Fourier-Motzkin method. Variables are eliminated in the order given and redundancy is removed after each iteration.\
 *(V-representation)* Delete the k given columns from the input matrix and remove redundancies (cf. **extract** where redundancies are not removed).\
 Column indices are between 1 and n-1 and column zero cannot be eliminated. The output is a valid lrs input file.

**project  k   i\_1 i\_2 ... i\_k**            (new in v7.2)\
 *(H-representation)* Project the polyhedron onto the k variables corresponding to cols i\_1 .. i\_k using the Fourier-Motzkin method. Column  indices are between 1 and n-1 and column zero is automatically retained. Variables not contained in the list are eliminated using a heuristic which chooses the column which minimizes the product of the number of positive and negative entries. Redundancy is removed after each iteration using linear programming.\
 *(V-representation)* Extract the k given columns from the input matrix and remove redundancies. Column  indices are between 1 and n-1 and column zero is automatically extracted (cf. **extract** where redundancies are not removed).\
 The output as a valid lrs input file.

See also **extract** in **[lrs(1)](/lrs/1.md)**.

**verbose**

For an H-representation give, for each iteration, statistics on how many new inequaties were created and how many of these were redundant. See **Example** below.

### Example

(1) Project onto columns 1 and 3 in an H-representation

 % cat cube.ine\
  cube.ine\
  H-representation\
  begin\
  6 4 rational\
  1  1  0  0\
  1  0  1  0\
  1  0  0  1\
  1 -1  0  0\
  1  0  0 -1\
  1  0 -1  0\
  end\
  project 2 1 3\
  verbose

 % fel cube.ine\
  fel:lrslib\_v.7.3\_2024.1.10(64bit,lrslong.h,hybrid\_arithmetic)\
  \*Input taken from  cube.ine\
  cube

 \*switching to fel mode\
  \*project 2  1 3 \
  \*after removing column 2\
  \*checking for redundant rows only\
  H-representation\
  begin\
  4 3 rational\
   0  1  0 \
   1 -1  0 \
   1  0 -1 \
  \-1  0  1 \
  end\
  \*number of       number after    number of       remaining      column  \
  \*inequalties     removing col    redundancies     rows          removed \
  \*         7              6             2             4             2    \
  \--------------------------------------------------------------------

 \*original vars remaining: 1 3

(2) Eliminate columns 1,2,3 from a V-representation

 % cat cp4.ext\
  V-representation\
  begin\
  8 7 rational\
   1  0  0  0  0  0  0 \
   1  0  1  1  1  1  0 \
   1  1  1  0  0  1  1 \
   1  1  0  0  1  1  0 \
   1  0  0  1  0  1  1 \
   1  1  1  1  0  0  0 \
   1  0  1  0  1  0  1 \
   1  1  0  1  1  0  1 \
  end\
  eliminate 3 1 2 3

 % lrs cp4.ext\
  lrs:lrslib\_v.7.3\_2024.1.12(64bit,lrslong.h,hybrid\_arithmetic)\
  \*Input taken from  cp4.ext\
  cp4

 \*switching to fel mode\
  \*eliminate 3  1 2 3 \
  \*checking for redundant rows only\
  V-representation\
  begin\
  4 4 rational\
   1  1  1  0 \
   1  0  1  1 \
   1  0  0  0 \
   1  1  0  1 \
  end\
  \*columns retained: 0 4 5 6

### Notes

- 1\.

  FAQ page

  https://inf.ethz.ch/personal/fukudak/polyfaq/polyfaq.html

- 2\.

  User's guide for lrslib

  http://cgm.cs.mcgill.ca/%7Eavis/C/lrslib/USERGUIDE.html

### Author

David Avis \<avis at cs dot mcgill dot ca \>

### See also

[**lrs**(1)](/lrs/1.md), [**mplrs**(1)](/mplrs/1.md), **lrslib**(5),
