Documentation

Gossip.Error.SemProp

Synchronous One-Error Gossip with Correction #

Properties of the Semantics #

theorem Error.indistinguishable_then_same_values {n : } {a : Agent} {S T : Dist} {σ τ : OSequence} :
(S, σ) ~_ a(T, τ)Sσa = Tτa

Lemma 7, also could have been named resultSet_eq_of_equiv

theorem Error.true_of_knowldege {n : } {S : Dist} {σ : OSequence} {a : Agent} {φ : Form} :
Sσ Form.K a φSσ φ

Knowledge is truthful. This follows from equiv_refl.

theorem Error.know_self {n✝ : } {a : Agent} {S T : Dist} (m : ) (σ τ : OSequence) (h1 : σ.length = m) (h2 : List.length τ = m) :
equiv a (S, σ, h1) (T, τ, h2)S a = T a

Agents know their own initial state. This is not the same as Lemma 7.

theorem Error.local_is_known {n : } {a b : Agent} (k : Bool) :
( ¬'( ¬' ¬'(b, k)@a ¬'Form.K a ((b, k)@a))) ( ¬'( ¬' ¬' ¬'(b, k)@a ¬'Form.K a ( ¬'(b, k)@a)))

Lemma 8. The truth value of any $b_a$ atom is known by agent $a$. Note that k here says whether we have $b$ or $\overline{b}$.

@[simp]
theorem Error.stubbornness {n✝ : } {S : Dist} {a : Agent} {k : Bool} (m : ) (σ : OSequence) (h : σ.length = m) :
Sσ (a, k)@a S a = k

Lemma 9. Agents are stubborn about their own secrets.

@[simp]
theorem Error.not_notMem_resultSet {n✝ : } {b : Agent} {S : Dist} {σ : OSequence} :
(b, !S b)Sσb

A useful corollary of stubbornness.

theorem Error.knowledge_of_secrets_is_preserved {n✝ : } {S : Dist} {σ τ : OSequence} {a b : Agent} (k : Bool) (hKv : Sσ Form.K a ((b, k)@b)) (hSub : σ <:+ τ) :
Sτ Form.K a ((b, k)@b)

Lemma 10. Parts (i) and (ii) are given by the two k values. The proof uses stubbornness.

theorem Error.kv_of_secrets_is_preserved {n : } {S : Dist} {σ τ : OSequence} {a b : Agent} (hKv : Sσ ( ¬'( ¬'Form.K a ((b, true)@b) ¬'Form.K a ((b, false)@b)))) (hSub : σ <:+ τ) :

Corollary 11. Kv of secrets is preserved.

theorem Error.know_your_own {n : } {a : Agent} :

Agents know their own value. Follows from stubbornness.

theorem Error.not_in_call_then_invariant_resultSet {n : } {a : Agent} {C : Call} (h : roleOfIn a C = Role.Other) (S : Dist) (σ : List Call) (o : maxOne (C :: σ)) :
SC :: σ, oa = Sσ, a

Helper for knowledge_implies_correct_belief

theorem Error.not_in_call_then_invariant_kv {n : } {a : Agent} {C : Call} (h : roleOfIn a C = Role.Other) (b : Agent) (S : Dist) (σ : List Call) (o : maxOne (C :: σ)) :

Helper for Prop 12 "iff (semantics of formulas and observation relation)"

theorem Error.not_in_call_then_invariant_k {n : } {k : Bool} {a : Agent} {C : Call} (h : roleOfIn a C = Role.Other) (b : Agent) (S : Dist) (σ : List Call) (o : maxOne (C :: σ)) :
SC :: σ, o Form.K a ((b, k)@b) Sσ, Form.K a ((b, k)@b)

Stronger value-specific helper for Prop 12 "iff (semantics of formulas and observation relation)"

theorem Error.caller_keeps_known_value {n : } {a b : Agent} {k : Bool} (C : Call) (ra : roleOfIn a C = Role.Caller) (S : Dist) (σ : Sequence) (o : maxOne (C :: σ)) (know_before : Sσ, Form.K a ((b, k)@b)) (had_before : Sσ, (b, k)@a) :
SC :: σ, o (b, k)@a
theorem Error.caller_rejects_opposite_of_known_value {n : } {a b : Agent} {k : Bool} (C : Call) (ra : roleOfIn a C = Role.Caller) (S : Dist) (σ : Sequence) (o : maxOne (C :: σ)) (know_before : Sσ, Form.K a ((b, k)@b)) :
SC :: σ, o ( ¬'(b, !k)@a)
theorem Error.caller_rejects_opposite_of_afterwards_known_value {n : } {a b : Agent} {k : Bool} (C : Call) (ra : roleOfIn a C = Role.Caller) (S : Dist) (σ : List Call) (o : maxOne (C :: σ)) (know_after : SC :: σ, o Form.K a ((b, k)@b)) :
SC :: σ, o ( ¬'(b, !k)@a)

Footnote 1. "in fact the knowledge is already there"

theorem Error.caller_contribSet_eq_of_resultSet_eq {n : } {a : Agent} {C : Call} {S T : Dist} {σ : OSequence} (r_def : roleOfIn a C = Role.Caller) (h : Sσa = Tσa) :
(contribSet S σ C).1 = (contribSet T σ C).1
theorem Error.callee_contribSet_eq_of_resultSet_eq {n : } {a : Agent} {C : Call} {S T : Dist} {σ : OSequence} (r_def : roleOfIn a C = Role.Callee) (h : Sσa = Tσa) :
(contribSet S σ C).2 = (contribSet T σ C).2