Skip to content

feat(FLP): distributed algorithms for solving the consensus problem - #556

Merged
fmontesi merged 8 commits into
leanprover:mainfrom
ctchou:flp-algorithm
Jun 1, 2026
Merged

feat(FLP): distributed algorithms for solving the consensus problem#556
fmontesi merged 8 commits into
leanprover:mainfrom
ctchou:flp-algorithm

Conversation

@ctchou

@ctchou ctchou commented May 10, 2026

Copy link
Copy Markdown
Collaborator

This is the first PR of the formalization of Völzer's proof of the famous result in distributed computing, first proved by Fischer, Lynch and Paterson, that distributed consensus is impossible in the presence of even a single crash fault.

  • Algorithm.lean defines the "syntax" of a distributed algorithm for solving the consensus problem and proves some basic properties.
  • Consensus.lean defines what it means for a distributed algorithm to solve the consensus problem in a fault-tolerant way and proves some basic properties.
  • README.md is for the overall project and mentions Lean files which will be PR-ed later.
  • references.bib is updated to add the papers by FLP and Völzer.

Zulip discussion:
#CSLib > Impossibility of distributed consensus
#CSLib: PR reviews > #556: consensus

@ctchou

ctchou commented May 11, 2026

Copy link
Copy Markdown
Collaborator Author

Rebased on the current main.

Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/Algorithm.lean Outdated
Comment thread Cslib/Computability/Distributed/FLP/README.md
@ctchou

ctchou commented May 30, 2026

Copy link
Copy Markdown
Collaborator Author

I added an additional file Consensus.lean to this PR, because they together correspond to a formalization of the problem statement in the original FLP paper.

@fmontesi
fmontesi added this pull request to the merge queue Jun 1, 2026
Merged via the queue into leanprover:main with commit 43f68e9 Jun 1, 2026
3 checks passed
@ctchou
ctchou deleted the flp-algorithm branch June 1, 2026 18:32
benbrastmckie pushed a commit to benbrastmckie/cslib that referenced this pull request Jun 14, 2026
…eanprover#556)

This is the first PR of the formalization of Völzer's proof of the
famous result in distributed computing, first proved by Fischer, Lynch
and Paterson, that distributed consensus is impossible in the presence
of even a single crash fault.
* `Algorithm.lean` defines the "syntax" of a distributed algorithm for
solving the consensus problem and proves some basic properties.
* `Consensus.lean` defines what it means for a distributed algorithm to
solve the consensus problem in a fault-tolerant way and proves some
basic properties.
* README.md is for the overall project and mentions Lean files which
will be PR-ed later.
* references.bib is updated to add the papers by FLP and Völzer.

Zulip discussion:
[#CSLib > Impossibility of distributed
consensus](https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Impossibility.20of.20distributed.20consensus/with/592462001)
[#CSLib: PR reviews > leanprover#556:
consensus](https://leanprover.zulipchat.com/#narrow/channel/605128-CSLib.3A-PR-reviews/topic/.23556.3A.20consensus/with/598654217)
dtumad pushed a commit to dtumad/cslib that referenced this pull request Jul 13, 2026
… fairness properties (leanprover#612)

This PR contains some technical machineries for reasoning about diamond
and fairness properties about the distributed algorithms introduced in
leanprover#556:
* `CanReachVia.lean` defines the notion of reachability via a subset of
processes and proves some of its properties, including some diamond
properties.
* `FairScheduler.lean` contains a technical machinery for constructing
fair executions, which will be used in formalizing some arguments which
were either only hinted at or completely glossed over in Völzer's paper.

Zulip discussion:

https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Impossibility.20of.20distributed.20consensus/with/592462001
intgrah pushed a commit to intgrah/cslib that referenced this pull request Jul 14, 2026
… fairness properties (leanprover#612)

This PR contains some technical machineries for reasoning about diamond
and fairness properties about the distributed algorithms introduced in
leanprover#556:
* `CanReachVia.lean` defines the notion of reachability via a subset of
processes and proves some of its properties, including some diamond
properties.
* `FairScheduler.lean` contains a technical machinery for constructing
fair executions, which will be used in formalizing some arguments which
were either only hinted at or completely glossed over in Völzer's paper.

Zulip discussion:

https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Impossibility.20of.20distributed.20consensus/with/592462001
fmontesi pushed a commit that referenced this pull request Jul 22, 2026
… fairness properties (#612)

This PR contains some technical machineries for reasoning about diamond
and fairness properties about the distributed algorithms introduced in
#556:
* `CanReachVia.lean` defines the notion of reachability via a subset of
processes and proves some of its properties, including some diamond
properties.
* `FairScheduler.lean` contains a technical machinery for constructing
fair executions, which will be used in formalizing some arguments which
were either only hinted at or completely glossed over in Völzer's paper.

Zulip discussion:

https://leanprover.zulipchat.com/#narrow/channel/513188-CSLib/topic/Impossibility.20of.20distributed.20consensus/with/592462001
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants