Sufficient #
We show that for n ≥ 4 agents there is a call sequence of length 2n - 4 that makes each agent learn the secrets of all others (become an expert).
Authors: Timo Doherty, Malvin Gattinger
We can replace addAgent with initialState (n + 1) in the following lemma n ≥ 4.
addAgent and makeCalls commute if the call sequence doesn't contain the new agent.
theorem
twoSecretsSuccSingle
{n : ℕ}
(s : GossipState (n + 4).succ)
(a b : Fin (n + 4).succ)
(seq : List (Call (n + 4).succ))
(a_def : a = 0)
(b_def : b = Fin.last (n + 4))
(only_ab_know_ab : ∀ (i : Fin (n + 4).succ), i ≠ a ∧ i ≠ b → ¬s i a ∧ ¬s i b)
(a_knows_b : s a b)
(b_knows_a : s b a)
(fin_succ_knows_own : s b b)
(k : Fin (n + 4).succ)
:
Given that only a knows a and b, then we can show that all agents that learn a also learn b.
theorem
twoSecretsSucc
{n : ℕ}
(s : GossipState (n + 4).succ)
(a b : Fin (n + 4).succ)
(seq : List (Call (n + 4).succ))
(a_def : a = 0)
(b_def : b = Fin.last (n + 4))
(only_ab_know_ab : ∀ (i : Fin (n + 4).succ), i ≠ a ∧ i ≠ b → ¬s i a ∧ ¬s i b)
(a_knows_b : s a b)
(b_knows_a : s b a)
(all_learn_a : ∀ (j : Fin (n + 4).succ), makeCalls s seq j a)
(fin_succ_knows_own : s b b)
(k : Fin (n + 4).succ)
:
makeCalls s seq k b
Given that only agent a knows a and b, and some sequence makes everyone else learn a, then everyone else also learns b.