Theorem: Finset.support_smulAntidiagonal_subset_smul
File: Mathlib/Data/Finset/SMulAntidiagonal.lean

Proof steps:
state_before: G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b ∈ SMulAntidiagonal hs ht a
⊢ a ∈ s • t
state_after: G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ a ∈ s • t
tactic: rw [mem_smulAntidiagonal] at hb
state_before: G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ a ∈ s • t
state_after: G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ ∃ x ∈ s, ∃ y ∈ t, x • y = a
tactic: rw [Set.mem_smul]
state_before: G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ ∃ x ∈ s, ∃ y ∈ t, x • y = a
state_after: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ b.1 ∈ s ∧ ∃ y ∈ t, b.1 • y = a
tactic: use b.1
state_before: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ b.1 ∈ s ∧ ∃ y ∈ t, b.1 • y = a
state_after: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ ∃ y ∈ t, b.1 • y = a
tactic: refine { left := hb.1, right := ?_ }
state_before: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ ∃ y ∈ t, b.1 • y = a
state_after: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ b.2 ∈ t ∧ b.1 • b.2 = a
tactic: use b.2
state_before: case h
G : Type u_1
P : Type u_2
inst✝³ : PartialOrder G
inst✝² : PartialOrder P
inst✝¹ : SMul G P
inst✝ : IsOrderedCancelSMul G P
s : Set G
t : Set P
hs✝ : s.IsPWO
ht✝ : t.IsPWO
a✝ : P
u : Set G
hu : u.IsPWO
v : Set P
hv : v.IsPWO
x : G × P
hs : s.IsPWO
ht : t.IsPWO
a : P
x✝ : a ∈ {a | (SMulAntidiagonal hs ht a).Nonempty}
b : G × P
hb : b.1 ∈ s ∧ b.2 ∈ t ∧ b.1 • b.2 = a
⊢ b.2 ∈ t ∧ b.1 • b.2 = a
state_after: no goals
tactic: exact { left := hb.2.1, right := hb.2.2 }