Theorem: NonUnitalRingHom.map_le_map_of_map_star
File: Mathlib/Algebra/Star/Order.lean

tactic: rw [StarOrderedRing.le_iff] at hxy ⊢
state_before: R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x y : R
hxy : x ≤ y
⊢ f x ≤ f y
state_after: R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x y : R
hxy : ∃ p ∈ AddSubmonoid.closure (range fun s => star s * s), y = x + p
⊢ ∃ p ∈ AddSubmonoid.closure (range fun s => star s * s), f y = f x + p

tactic: obtain ⟨p, hp, rfl⟩ := hxy
state_before: R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x y : R
hxy : ∃ p ∈ AddSubmonoid.closure (range fun s => star s * s), y = x + p
⊢ ∃ p ∈ AddSubmonoid.closure (range fun s => star s * s), f y = f x + p
state_after: case intro.intro
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
hp : p ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ ∃ p_1 ∈ AddSubmonoid.closure (range fun s => star s * s), f (x + p) = f x + p_1

tactic: refine ⟨f p, ?_, map_add f _ _⟩
state_before: case intro.intro
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
hp : p ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ ∃ p_1 ∈ AddSubmonoid.closure (range fun s => star s * s), f (x + p) = f x + p_1
state_after: case intro.intro
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
hp : p ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ f p ∈ AddSubmonoid.closure (range fun s => star s * s)

tactic: induction hp using AddSubmonoid.closure_induction'
state_before: case intro.intro
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
hp : p ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ f p ∈ AddSubmonoid.closure (range fun s => star s * s)
state_after: case intro.intro.mem
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p x✝ : R
h✝ : x✝ ∈ range fun s => star s * s
⊢ f x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)

case intro.intro.one
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
⊢ f 0 ∈ AddSubmonoid.closure (range fun s => star s * s)

case intro.intro.mul
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p x✝ : R
hx✝ : x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
y✝ : R
hy✝ : y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝¹ : f x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝ : f y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ f (x✝ + y✝) ∈ AddSubmonoid.closure (range fun s => star s * s)

tactic: all_goals aesop
state_before: case intro.intro.mem
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p x✝ : R
h✝ : x✝ ∈ range fun s => star s * s
⊢ f x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)

case intro.intro.one
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p : R
⊢ f 0 ∈ AddSubmonoid.closure (range fun s => star s * s)

case intro.intro.mul
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p x✝ : R
hx✝ : x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
y✝ : R
hy✝ : y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝¹ : f x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝ : f y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ f (x✝ + y✝) ∈ AddSubmonoid.closure (range fun s => star s * s)
state_after: no goals

tactic: aesop
state_before: case intro.intro.mul
R✝ : Type u
F : Type u_1
R : Type u_2
S : Type u_3
inst✝⁷ : NonUnitalSemiring R
inst✝⁶ : PartialOrder R
inst✝⁵ : StarRing R
inst✝⁴ : StarOrderedRing R
inst✝³ : NonUnitalSemiring S
inst✝² : PartialOrder S
inst✝¹ : StarRing S
inst✝ : StarOrderedRing S
f : R →ₙ+* S
hf : ∀ (r : R), f (star r) = star (f r)
x p x✝ : R
hx✝ : x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
y✝ : R
hy✝ : y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝¹ : f x✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
a✝ : f y✝ ∈ AddSubmonoid.closure (range fun s => star s * s)
⊢ f (x✝ + y✝) ∈ AddSubmonoid.closure (range fun s => star s * s)
state_after: no goals