Universality of Consensus
Turing Computability
Consensus Hierarchy
Who Implements Whom?
Hypothesis
Theorem: Universality
Proof Outline
Like a Turing Machine
A Generic Sequential Object
A Generic Sequential Object
Invocation
Invocation
Invocation
A Generic Sequential Object
A Generic Sequential Object
Response
Response
Universal Concurrent Object
Start with Lock-Free Universal Construction
Naïve Idea
Naïve Idea
Naïve Idea
Once is not Enough?
Improved Idea: Linked-List Representation
Universal Construction
Universal Construction
Basic Idea
Basic Idea
Basic Idea
Basic Data Structures
Basic Data Structures
Basic Data Structures
Basic Data Structures
Basic Data Structures
Basic Data Structures
Basic Data Structures
Universal Object
Universal Object
The Solution
Universal Object
Universal Object
Universal Object
Universal Object
Find Max Head Value
Find Max Head Value
Find Max Head Value
Find Max Head Value
Universal Application Part I
Universal Application Part I
Universal Application Part I
Universal Application Part I
Universal Application Part I
Universal Application Part I
Universal Application Part I
Universal Application
Universal Application Part I
Universal Application Part I
Part 2 – Compute Response
Universal Application Part 2
Universal Application Part II
Universal Application Part II
Universal Application Part II
Universal Application Part II
Universal Application Part II
Universal Application Part II
Correctness
Lock-freedom
Wait-free Construction
Helping
Wait-free Construction
The Announce Array
The Announce Array
The Announce Array
A Cry For Help
A Cry For Help
A Cry For Help
A Cry For Help
Main Loop
Main Loop
Main Loop
Main Loop
Main Loop
Main Loop
Main Loop
Altruism
Altruism
Altruism
Help!
Help!
Help!
Help!
Sliding Window Lemma
Helping
The Sliding Help Window
Sliding Help Window
Sliding Help Window
Rest is Same as Lock-free
Rest is Same as Lock-free
Rest is Same as Lock-free
Rest is Same as Lock-free
Finishing the Job
Finishing the Job
Finishing the Job
Then Same Part II
Universal Application Part II
Shared-Memory Computability
Swap (getAndSet) not Universal
CompareAndSet is Universal
CompareAndSet is Universal
CompareAndSet is Universal
On Older Architectures
On Newer Architectures
Practical Implications
Shared-Memory Computability
Veni, Vidi, Vici
Veni, Vidi, Vici
Veni, Vidi, Vici