Theorem: DistribLattice.prime_ideal_of_disjoint_filter_ideal
File: Mathlib/Order/PrimeSeparator.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: set S : Set (Set α) := { J : Set α | IsIdeal J ∧ I ≤ J ∧ Disjoint (F : Set α) J }
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: have IinS : ↑I ∈ S := by
    refine ⟨Order.Ideal.isIdeal I, by trivial⟩
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: obtain ⟨Jset, ⟨Jidl, IJ, JF⟩, ⟨_, Jmax⟩⟩ := zorn_subset_nonempty S chainub I IinS
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: set J := IsIdeal.toIdeal Jidl
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
⊢ ∃ J, J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: use J
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: have IJ' : I ≤ J := IJ
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
IinS : ↑I ∈ S
chainub : ∀ c ⊆ S, IsChain (fun x x_1 => x ⊆ x_1) c → c.Nonempty → ∃ ub ∈ S, ∀ s ∈ c, s ⊆ ub
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
tactic: clear chainub IinS
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime ∧ I ≤ J ∧ Disjoint ↑F ↑J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime
tactic: refine ⟨?_, ⟨IJ, JF⟩⟩
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
⊢ J.IsPrime
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
⊢ J.IsPrime
tactic: have Jpr : IsProper J := isProper_of_not_mem (Set.disjoint_left.1 JF F.top_mem)
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
⊢ J.IsPrime
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
⊢ ∀ {x y : α}, x ⊓ y ∈ J → x ∈ J ∨ y ∈ J
tactic: rw [isPrime_iff_mem_or_mem]
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
⊢ ∀ {x y : α}, x ⊓ y ∈ J → x ∈ J ∨ y ∈ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
⊢ a₁ ⊓ a₂ ∈ J → a₁ ∈ J ∨ a₂ ∈ J
tactic: intros a₁ a₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
⊢ a₁ ⊓ a₂ ∈ J → a₁ ∈ J ∨ a₂ ∈ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
⊢ a₁ ∉ J ∧ a₂ ∉ J → a₁ ⊓ a₂ ∉ J
tactic: contrapose!
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
⊢ a₁ ∉ J ∧ a₂ ∉ J → a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
⊢ a₁ ⊓ a₂ ∉ J
tactic: intro ⟨ha₁, ha₂⟩
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
⊢ a₁ ⊓ a₂ ∉ J
tactic: let J₁ := J ⊔ principal a₁
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: let J₂ := J ⊔ principal a₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
⊢ a₁ ⊓ a₂ ∉ J
tactic: have a₁J₁ : a₁ ∈ J₁ := mem_of_subset_of_mem (le_sup_right : _ ≤ J ⊔ _) mem_principal_self
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: have a₂J₂ : a₂ ∈ J₂ := mem_of_subset_of_mem (le_sup_right : _ ≤ J ⊔ _) mem_principal_self
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₁J : ↑J₁ ≠ Jset := ne_of_mem_of_not_mem' a₁J₁ ha₁
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₂J : ↑J₂ ≠ Jset := ne_of_mem_of_not_mem' a₂J₂ ha₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₁S : ↑J₁ ∉ S := fun h => J₁J (Jmax J₁ h (le_sup_left : J ≤ J₁))
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₂S : ↑J₂ ∉ S := fun h => J₂J (Jmax J₂ h (le_sup_left : J ≤ J₂))
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₁F : ¬ (Disjoint (F : Set α) J₁) := by
    intro hdis
    apply J₁S
    simp only [le_eq_subset, mem_setOf_eq, SetLike.coe_subset_coe, S]
    exact ⟨J₁.isIdeal, le_trans IJ' le_sup_left, hdis⟩
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: have J₂F : ¬ (Disjoint (F : Set α) J₂) := by
    intro hdis
    apply J₂S
    simp only [le_eq_subset, mem_setOf_eq, SetLike.coe_subset_coe, S]
    exact ⟨J₂.isIdeal, le_trans IJ' le_sup_left, hdis⟩
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
⊢ a₁ ⊓ a₂ ∉ J
tactic: let ⟨c₁, ⟨c₁F, c₁J₁⟩⟩ := Set.not_disjoint_iff.1 J₁F
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: let ⟨c₂, ⟨c₂F, c₂J₂⟩⟩ := Set.not_disjoint_iff.1 J₂F
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
⊢ a₁ ⊓ a₂ ∉ J
tactic: let ⟨b₁, ⟨b₁J, cba₁⟩⟩ := (mem_ideal_sup_principal a₁ c₁ J).1 c₁J₁
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: let ⟨b₂, ⟨b₂J, cba₂⟩⟩ := (mem_ideal_sup_principal a₂ c₂ J).1 c₂J₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: let b := b₁ ⊔ b₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
⊢ a₁ ⊓ a₂ ∉ J
tactic: have bJ : b ∈ J := sup_mem b₁J b₂J
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
⊢ a₁ ⊓ a₂ ∉ J
tactic: have ineq : c₁ ⊓ c₂ ≤ b ⊔ (a₁ ⊓ a₂) :=
  calc
    c₁ ⊓ c₂ ≤ (b₁ ⊔ a₁) ⊓ (b₂ ⊔ a₂) := inf_le_inf cba₁ cba₂
    _       ≤ (b  ⊔ a₁) ⊓ (b  ⊔ a₂) := by
      apply inf_le_inf <;> apply sup_le_sup_right; exact le_sup_left; exact le_sup_right
    _       = b ⊔ (a₁ ⊓ a₂) := (sup_inf_left b a₁ a₂).symm
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
⊢ a₁ ⊓ a₂ ∉ J
tactic: have ba₁a₂F : b ⊔ (a₁ ⊓ a₂) ∈ F := PFilter.mem_of_le ineq (PFilter.inf_mem c₁F c₂F)
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
JF : Disjoint (↑F) Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
⊢ a₁ ⊓ a₂ ∉ J
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ ¬Disjoint (↑F) Jset
tactic: contrapose! JF with ha₁a₂
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ ¬Disjoint (↑F) Jset
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ ∃ x ∈ ↑F, x ∈ Jset
tactic: rw [Set.not_disjoint_iff]
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ ∃ x ∈ ↑F, x ∈ Jset
state_after: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ b ⊔ a₁ ⊓ a₂ ∈ ↑F ∧ b ⊔ a₁ ⊓ a₂ ∈ Jset
tactic: use b ⊔ (a₁ ⊓ a₂)
state_before: case h
α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
F : PFilter α
I : Ideal α
hFI : Disjoint ↑F ↑I
S : Set (Set α) := {J | IsIdeal J ∧ ↑I ≤ J ∧ Disjoint (↑F) J}
Jset : Set α
Jidl : IsIdeal Jset
IJ : ↑I ≤ Jset
left✝ : ↑I ⊆ Jset
Jmax : ∀ a ∈ S, Jset ⊆ a → a = Jset
J : Ideal α := Jidl.toIdeal
IJ' : I ≤ J
Jpr : J.IsProper
a₁ a₂ : α
ha₁ : a₁ ∉ J
ha₂ : a₂ ∉ J
J₁ : Ideal α := J ⊔ principal a₁
J₂ : Ideal α := J ⊔ principal a₂
a₁J₁ : a₁ ∈ J₁
a₂J₂ : a₂ ∈ J₂
J₁J : ↑J₁ ≠ Jset
J₂J : ↑J₂ ≠ Jset
J₁S : ↑J₁ ∉ S
J₂S : ↑J₂ ∉ S
J₁F : ¬Disjoint ↑F ↑J₁
J₂F : ¬Disjoint ↑F ↑J₂
c₁ : α
c₁F : c₁ ∈ ↑F
c₁J₁ : c₁ ∈ ↑J₁
c₂ : α
c₂F : c₂ ∈ ↑F
c₂J₂ : c₂ ∈ ↑J₂
b₁ : α
b₁J : b₁ ∈ J
cba₁ : c₁ ≤ b₁ ⊔ a₁
b₂ : α
b₂J : b₂ ∈ J
cba₂ : c₂ ≤ b₂ ⊔ a₂
b : α := b₁ ⊔ b₂
bJ : b ∈ J
ineq : c₁ ⊓ c₂ ≤ b ⊔ a₁ ⊓ a₂
ba₁a₂F : b ⊔ a₁ ⊓ a₂ ∈ F
ha₁a₂ : a₁ ⊓ a₂ ∈ J
⊢ b ⊔ a₁ ⊓ a₂ ∈ ↑F ∧ b ⊔ a₁ ⊓ a₂ ∈ Jset
state_after: no goals
tactic: exact ⟨ba₁a₂F, sup_mem bJ ha₁a₂⟩