internlm/Lean-Github huggingface dataset:
Theorem: Imo1964P4.lemma1
Proof state before:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
hp : p2 = ↑↑p4 ∨ p2 = ↑↑p3
⊢ False
Tactic:
cases hp with
| inl hp =>
  exact (p4.val.property.symm hp).elim
| inr hp =>
  exact (p3.val.property.symm hp).elim
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
case inl
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
hp : p2 = ↑↑p4
⊢ False
Tactic:
exact (p4.val.property.symm hp).elim
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
case inr
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
hp : p2 = ↑↑p3
⊢ False
Tactic:
exact (p3.val.property.symm hp).elim
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
case h.left
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
⊢ 2 < s3.card
Tactic:
simp (config := {decide := true})
  only [Finset.card_cons, Finset.card_singleton, s1, s2, s3]
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
⊢ ∀ p1 ∈ s3, ∀ p2 ∈ s3, p1 ≠ p2 → discusses p1 p2 = t2
Tactic:
intro p1' hp1' p2' hp2' hp1p2
Proof state after:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' ∈ s3
p2' : Person
hp2' : p2' ∈ s3
hp1p2 : p1' ≠ p2'
⊢ discusses p1' p2' = t2
Theorem: Imo1964P4.lemma1
Proof state before:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' ∈ s3
p2' : Person
hp2' : p2' ∈ s3
hp1p2 : p1' ≠ p2'
⊢ discusses p1' p2' = t2
Tactic:
rw [Finset.mem_cons, Finset.mem_cons, Finset.mem_singleton] at hp1' hp2'
Proof state after:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
⊢ discusses p1' p2' = t2
Theorem: Imo1964P4.lemma1
Proof state before:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
⊢ discusses p1' p2' = t2
Tactic:
have hp4d : discusses p2 ↑↑p4 = t2 := by
   have := p4.property; simp [α] at this; exact this
Proof state after:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
⊢ discusses p1' p2' = t2
Theorem: Imo1964P4.lemma1
Proof state before:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
⊢ discusses p1' p2' = t2
Tactic:
have hp3d : discusses p2 ↑↑p3 = t2 := by
   have := p3.property; simp [α] at this; exact this
Proof state after:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
hp3d : discusses p2 ↑↑p3 = t2
⊢ discusses p1' p2' = t2
Theorem: Imo1964P4.lemma1
Proof state before:
case h.right
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
hp3d : discusses p2 ↑↑p3 = t2
⊢ discusses p1' p2' = t2
Tactic:
aesop
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
⊢ discusses p2 ↑↑p4 = t2
Tactic:
have := p4.property
Proof state after:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
this : ↑p4 ∈ α
⊢ discusses p2 ↑↑p4 = t2
Theorem: Imo1964P4.lemma1
Proof state before:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
this : ↑p4 ∈ α
⊢ discusses p2 ↑↑p4 = t2
Tactic:
simp [α] at this
Proof state after:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
this : discusses p2 ↑↑p4 = t2
⊢ discusses p2 ↑↑p4 = t2
Theorem: Imo1964P4.lemma1
Proof state before:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
this : discusses p2 ↑↑p4 = t2
⊢ discusses p2 ↑↑p4 = t2
Tactic:
exact this
Proof state after:
no goals
Theorem: Imo1964P4.lemma1
Proof state before:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
⊢ discusses p2 ↑↑p3 = t2
Tactic:
have := p3.property
Proof state after:
Person Topic : Type
inst✝³ : Fintype Person
inst✝² : DecidableEq Person
inst✝¹ : Fintype Topic
inst✝ : DecidableEq Topic
card_person : 5 < Fintype.card Person
card_topic : Fintype.card Topic = 2
discusses : Person → Person → Topic
discussion_sym : ∀ (p1 p2 : Person), discusses p1 p2 = discusses p2 p1
p2 : Person
Person' : Type := { p3 // p3 ≠ p2 }
hfcα : 4 < Fintype.card Person'
h1 : Fintype.card Topic * 2 < Fintype.card Person'
t2 : Topic
ht2 : 2 < (Finset.filter (fun x => (fun p3 => discusses p2 ↑p3) x = t2) Finset.univ).card
α : Finset Person' := Finset.filter (fun x => discusses p2 ↑x = t2) Finset.univ
Topic' : Type := { t3 // t3 ≠ t2 }
h4 : Fintype.card Topic' = 1
t3 : Topic'
ht3 : ∀ (y : Topic'), y = t3
p3 p4 : { x // x ∈ α }
hp1 : p3 ≠ p4
hp2 : discusses ↑↑p3 ↑↑p4 = t2
s1 : Finset Person := {↑↑p3}
s2 : Finset Person := Finset.cons (↑↑p4) s1 ⋯
s3 : Finset Person := Finset.cons p2 s2 ⋯
p1' : Person
hp1' : p1' = p2 ∨ p1' = ↑↑p4 ∨ p1' = ↑↑p3
p2' : Person
hp2' : p2' = p2 ∨ p2' = ↑↑p4 ∨ p2' = ↑↑p3
hp1p2 : p1' ≠ p2'
hp4d : discusses p2 ↑↑p4 = t2
this : ↑p3 ∈ α
⊢ discusses p2 ↑↑p3 = t2