Documentation

Gossip.Necessary

@[reducible, inline]
abbrev after {n : } (σ : List (Call n)) :
Equations
Instances For

    Helper functions about properties of Nats. #

    theorem exists_to_minimal_exists (φ : Prop) :
    (∃ (k : ), φ k)∃ (m : ), φ m n < m, ¬φ n

    Suppose there exists a natural number satisfying φ. Then there exists a minimal natural number that satisfies φ.

    def noHo {n : } (σ : List (Call n)) :

    Nobody hears their own secret in the given sequence, i.e. before each call in the sequence, the agents in that call do not know each other's secrets.

    Equations
    Instances For
      def v {m : } (S : List (Call m)) (k : Fin m) :

      Number of calls that k directly participates in.

      Equations
      Instances For
        theorem exp_needs_n_min_one_calls {n : } {k : Fin n} (S : List (Call n)) (h : isExpert (after S) k) :
        n - 1 < S.length

        Among n agents, to make k an expert, we need at least n-1 calls.

        theorem known_needs_n_min_one_calls {n : } {k : Fin n} (S : List (Call n)) (h : allKnow (after S) k) :
        n - 1 < S.length

        Among n agents, to make everyone know k's secret, we need at least n-1 calls.

        theorem noHo_exp_and_known_needs_many_calls {n : } (S : List (Call n)) (S_noHo : noHo S) (k : Fin n) (h : isExpert (after S) k) (h2 : allKnow (after S) k) :
        2 * n - 2 - v S k S.length

        Given a noHo sequence, to make k an expert and make everyone know k, we need this many calls.

        def is_f (n k : ) :

        f(n) = k

        Equations
        Instances For
          def is_f_leq (n k : ) :
          Equations
          Instances For
            def phi (n : ) :
            Equations
            Instances For
              def is_minimal (m : ) :
              Equations
              Instances For
                def initial {m : } (S : List (Call m)) (k : Fin m) :
                Equations
                Instances For
                  def final {m : } (S : List (Call m)) (k : Fin m) :
                  Equations
                  Instances For
                    def isAgentInitialCall {m : } (S : List (Call m)) (k : Fin m) (c : Call m) :
                    Equations
                    Instances For
                      def isAgentFinalCall {m : } (S : List (Call m)) (k : Fin m) (c : Call m) :
                      Equations
                      Instances For
                        def isInitialCall {m : } (S : List (Call m)) (c : Call m) :
                        Equations
                        Instances For
                          def isFinalCall {m : } (S : List (Call m)) (c : Call m) :
                          Equations
                          Instances For
                            theorem noHo_of_minimal_expert_sequence {m : } (σ : List (Call m)) (σ_short : σ.length 2 * m - 5) (hExp : allExpert (after σ)) (h_min : is_minimal m) :
                            noHo σ

                            Given a sequence σ of length 2m-5 or less that makes all m agents experts, if m is minimal, then nobody hears their own secret in σ.

                            All calls in S are initial for both agents or for neither

                            theorem final_both_or_neither {m : } (S : List (Call m)) (c : Call m) :

                            All calls in S are final for both agents or for neither

                            theorem helper {k n : } (h : 4 n) :
                            k 2 * n - 5 k < 2 * n - 4
                            theorem necessity (n : ) :
                            n > 4∀ (σ : List (Call n)), allExpert (after σ)σ.length 2 * n - 4

                            For n ≥ 4 agents, any sequence that makes everyone an expert, has length 2n-4 or higher.