Section problem_knows_not_refl.
Variable town: t.
Variable n:ℕ.
Variable cardinality: | town | = 2×n+1.
Variable knows: elt ⇒ elt ⇒ Prop.
Infix "ℛ" := knows (at level 70, no associativity).
Variable knows_sym: ∀m n, m ℛ n ⇒ n ℛ m.
Variable knows_extensional:∀m n p, n≡p ⇒ m ℛ n⇒ m ℛ p.
Variable property: ∀B, B ⊆ town ⇒ |B| = n ⇒
∃d, d∈(town\B) /\ (∀b, b∈B ⇒ d ℛ b).

(** The following property, proven by induction, is the heart of the solution, and is due to Tonny Hurkens. *)
Lemma inductive_invariant:∀ m, m≤ n ⇒
∃B', B'⊆town ∧ |B'| = m ∧ ∀ b'₀ b'₁, b'₀∈B' ⇒ b'₁∈B' ⇒ ¬(b'₀≡b'₁) ⇒ b'₀ ℛ b'₁.