# mathlib3documentation

mathlib-archive / imo.imo1998_q2

# IMO 1998 Q2 #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. In a competition, there are a contestants and b judges, where b ≥ 3 is an odd integer. Each judge rates each contestant as either "pass" or "fail". Suppose k is a number such that, for any two judges, their ratings coincide for at most k contestants. Prove that k / a ≥ (b - 1) / (2b).

## Solution #

The problem asks us to think about triples consisting of a contestant and two judges whose ratings agree for that contestant. We thus consider the subset A ⊆ C × JJ of all such incidences of agreement, where C and J are the sets of contestants and judges, and JJ = J × J - {(j, j)}. We have natural maps: left : A → C and right: A → JJ. We count the elements of A in two ways: as the sum of the cardinalities of the fibres of left and as the sum of the cardinalities of the fibres of right. We obtain an upper bound on the cardinality of A from the count for right, and a lower bound from the count for left. These two bounds combine to the required result.

First consider the map right : A → JJ. Since the size of any fibre over a point in JJ is bounded by k and since |JJ| = b^2 - b, we obtain the upper bound: |A| ≤ k(b^2-b).

Now consider the map left : A → C. The fibre over a given contestant c ∈ C is the set of ordered pairs of (distinct) judges who agree about c. We seek to bound the cardinality of this fibre from below. Minimum agreement for a contestant occurs when the judges' ratings are split as evenly as possible. Since b is odd, this occurs when they are divided into groups of size (b-1)/2 and (b+1)/2. This corresponds to a fibre of cardinality (b-1)^2/2 and so we obtain the lower bound: a(b-1)^2/2 ≤ |A|.

Rearranging gives the result.

@[reducible]
def imo1998_q2.judge_pair (J : Type u_1) :
Type u_1

An ordered pair of judges.

@[reducible]
def imo1998_q2.agreed_triple (C : Type u_1) (J : Type u_2) :
Type (max u_1 u_2)

A triple consisting of contestant together with an ordered pair of judges.

@[reducible]

The first judge from an ordered pair of judges.

@[reducible]

The second judge from an ordered pair of judges.

@[reducible]

The proposition that the judges in an ordered pair are distinct.

@[reducible]
def imo1998_q2.judge_pair.agree {C : Type u_1} {J : Type u_2} (r : C J Prop) (p : imo1998_q2.judge_pair J) (c : C) :
Prop

The proposition that the judges in an ordered pair agree about a contestant's rating.

@[reducible]
def imo1998_q2.agreed_triple.contestant {C : Type u_1} {J : Type u_2} :

The contestant from the triple consisting of a contestant and an ordered pair of judges.

@[reducible]
def imo1998_q2.agreed_triple.judge_pair {C : Type u_1} {J : Type u_2} :

The ordered pair of judges from the triple consisting of a contestant and an ordered pair of judges.

@[simp]
theorem imo1998_q2.judge_pair.agree_iff_same_rating {C : Type u_1} {J : Type u_2} (r : C J Prop) (p : imo1998_q2.judge_pair J) (c : C) :
(r c p.judge₁ r c p.judge₂)
noncomputable def imo1998_q2.agreed_contestants {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype C] (p : imo1998_q2.judge_pair J) :

The set of contestants on which two judges agree.

Equations
noncomputable def imo1998_q2.A {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] :

All incidences of agreement.

Equations
theorem imo1998_q2.A_maps_to_off_diag_judge_pair {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] (a : J) :
theorem imo1998_q2.A_fibre_over_contestant {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] (c : C) :
theorem imo1998_q2.A_fibre_over_contestant_card {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] (c : C) :
theorem imo1998_q2.A_fibre_over_judge_pair {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] {p : imo1998_q2.judge_pair J} (h : p.distinct) :
= (finset.filter (λ (a : , a.judge_pair = p) (imo1998_q2.A r))
theorem imo1998_q2.A_fibre_over_judge_pair_card {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] {p : imo1998_q2.judge_pair J} (h : p.distinct) :
= (finset.filter (λ (a : , a.judge_pair = p) (imo1998_q2.A r)).card
theorem imo1998_q2.A_card_upper_bound {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] {k : } (hk : (p : , p.distinct ) :
theorem imo1998_q2.add_sq_add_sq_sub {α : Type u_1} [ring α] (x y : α) :
(x + y) * (x + y) + (x - y) * (x - y) = 2 * x * x + 2 * y * y
theorem imo1998_q2.norm_bound_of_odd_sum {x y z : } (h : x + y = 2 * z + 1) :
2 * z * z + 2 * z + 1 x * x + y * y
theorem imo1998_q2.judge_pairs_card_lower_bound {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] {z : } (hJ : = 2 * z + 1) (c : C) :
2 * z * z + 2 * z + 1 (finset.filter (λ (p : , finset.univ).card
theorem imo1998_q2.distinct_judge_pairs_card_lower_bound {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] {z : } (hJ : = 2 * z + 1) (c : C) :
theorem imo1998_q2.A_card_lower_bound {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] {z : } (hJ : = 2 * z + 1) :
2 * z * z * (imo1998_q2.A r).card
theorem imo1998_q2.clear_denominators {a b k : } (ha : 0 < a) (hb : 0 < b) :
(b - 1) / (2 * b) k / a (b - 1) * a k * (2 * b)
theorem imo1998_q2 {C : Type u_1} {J : Type u_2} (r : C J Prop) [fintype J] [fintype C] (a b k : ) (hC : = a) (hJ : = b) (ha : 0 < a) (hb : odd b) (hk : (p : , p.distinct ) :
(b - 1) / (2 * b) k / a