l3lab/ntp-mathlib huggingface dataset:
theorem comp (hg : IsConformalMap g) (hf : IsConformalMap f) : IsConformalMap (g.comp f) := by
  rcases hf with ⟨cf, hcf, lif, rfl⟩
  

Proof state:
case intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
g : N →L[R] G
c : R
hg : IsConformalMap g
cf : R
hcf : cf ≠ 0
lif : M →ₗᵢ[R] N
⊢ IsConformalMap (ContinuousLinearMap.comp g (cf • toContinuousLinearMap lif))

Next tactic:
rcases hg with ⟨cg, hcg, lig, rfl⟩
theorem comp (hg : IsConformalMap g) (hf : IsConformalMap f) : IsConformalMap (g.comp f) := by
  rcases hf with ⟨cf, hcf, lif, rfl⟩
  rcases hg with ⟨cg, hcg, lig, rfl⟩
  

Proof state:
case intro.intro.intro.intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
c cf : R
hcf : cf ≠ 0
lif : M →ₗᵢ[R] N
cg : R
hcg : cg ≠ 0
lig : N →ₗᵢ[R] G
⊢ IsConformalMap (ContinuousLinearMap.comp (cg • toContinuousLinearMap lig) (cf • toContinuousLinearMap lif))

Next tactic:
refine' ⟨cg * cf, mul_ne_zero hcg hcf, lig.comp lif, _⟩
theorem comp (hg : IsConformalMap g) (hf : IsConformalMap f) : IsConformalMap (g.comp f) := by
  rcases hf with ⟨cf, hcf, lif, rfl⟩
  rcases hg with ⟨cg, hcg, lig, rfl⟩
  refine' ⟨cg * cf, mul_ne_zero hcg hcf, lig.comp lif, _⟩
  

Proof state:
case intro.intro.intro.intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
c cf : R
hcf : cf ≠ 0
lif : M →ₗᵢ[R] N
cg : R
hcg : cg ≠ 0
lig : N →ₗᵢ[R] G
⊢ ContinuousLinearMap.comp (cg • toContinuousLinearMap lig) (cf • toContinuousLinearMap lif) =
    (cg * cf) • toContinuousLinearMap (LinearIsometry.comp lig lif)

Next tactic:
rw [smul_comp, comp_smul, mul_smul]
theorem comp (hg : IsConformalMap g) (hf : IsConformalMap f) : IsConformalMap (g.comp f) := by
  rcases hf with ⟨cf, hcf, lif, rfl⟩
  rcases hg with ⟨cg, hcg, lig, rfl⟩
  refine' ⟨cg * cf, mul_ne_zero hcg hcf, lig.comp lif, _⟩
  rw [smul_comp, comp_smul, mul_smul]
  

Proof state:
case intro.intro.intro.intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
c cf : R
hcf : cf ≠ 0
lif : M →ₗᵢ[R] N
cg : R
hcg : cg ≠ 0
lig : N →ₗᵢ[R] G
⊢ cg • cf • ContinuousLinearMap.comp (toContinuousLinearMap lig) (toContinuousLinearMap lif) =
    cg • cf • toContinuousLinearMap (LinearIsometry.comp lig lif)

Next tactic:
rfl
protected theorem injective {f : M' →L[R] N} (h : IsConformalMap f) : Function.Injective f := by
  

Proof state:
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f✝ : M →L[R] N
g : N →L[R] G
c : R
f : M' →L[R] N
h : IsConformalMap f
⊢ Injective ⇑f

Next tactic:
rcases h with ⟨c, hc, li, rfl⟩
protected theorem injective {f : M' →L[R] N} (h : IsConformalMap f) : Function.Injective f := by
  rcases h with ⟨c, hc, li, rfl⟩
  

Proof state:
case intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c✝ c : R
hc : c ≠ 0
li : M' →ₗᵢ[R] N
⊢ Injective ⇑(c • toContinuousLinearMap li)

Next tactic:
exact (smul_right_injective _ hc).comp li.injective
theorem ne_zero [Nontrivial M'] {f' : M' →L[R] N} (hf' : IsConformalMap f') : f' ≠ 0 := by
  

Proof state:
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁹ : NormedField R
inst✝⁸ : SeminormedAddCommGroup M
inst✝⁷ : SeminormedAddCommGroup N
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace R M
inst✝⁴ : NormedSpace R N
inst✝³ : NormedSpace R G
inst✝² : NormedAddCommGroup M'
inst✝¹ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c : R
inst✝ : Nontrivial M'
f' : M' →L[R] N
hf' : IsConformalMap f'
⊢ f' ≠ 0

Next tactic:
rintro rfl
theorem ne_zero [Nontrivial M'] {f' : M' →L[R] N} (hf' : IsConformalMap f') : f' ≠ 0 := by
  rintro rfl
  

Proof state:
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁹ : NormedField R
inst✝⁸ : SeminormedAddCommGroup M
inst✝⁷ : SeminormedAddCommGroup N
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace R M
inst✝⁴ : NormedSpace R N
inst✝³ : NormedSpace R G
inst✝² : NormedAddCommGroup M'
inst✝¹ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c : R
inst✝ : Nontrivial M'
hf' : IsConformalMap 0
⊢ False

Next tactic:
rcases exists_ne (0 : M') with ⟨a, ha⟩
theorem ne_zero [Nontrivial M'] {f' : M' →L[R] N} (hf' : IsConformalMap f') : f' ≠ 0 := by
  rintro rfl
  rcases exists_ne (0 : M') with ⟨a, ha⟩
  

Proof state:
case intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁹ : NormedField R
inst✝⁸ : SeminormedAddCommGroup M
inst✝⁷ : SeminormedAddCommGroup N
inst✝⁶ : SeminormedAddCommGroup G
inst✝⁵ : NormedSpace R M
inst✝⁴ : NormedSpace R N
inst✝³ : NormedSpace R G
inst✝² : NormedAddCommGroup M'
inst✝¹ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c : R
inst✝ : Nontrivial M'
hf' : IsConformalMap 0
a : M'
ha : a ≠ 0
⊢ False

Next tactic:
exact ha (hf'.injective rfl)
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
⊢ ∀ (s : Set (Tropical R)), ¬BddAbove s → sSup s = sSup ∅

Next tactic:
intro s hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddAbove s
⊢ sSup s = sSup ∅

Next tactic:
have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddAbove s
this : Set.range untrop = Set.univ
⊢ sSup s = sSup ∅

Next tactic:
simp only [sSup, Set.image_empty, trop_inj_iff]
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddAbove s
this : Set.range untrop = Set.univ
⊢ sSup (untrop '' s) = sSup ∅

Next tactic:
apply csSup_of_not_bddAbove
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddAbove s
this : Set.range untrop = Set.univ
⊢ ¬BddAbove (untrop '' s)

Next tactic:
contrapose! hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
this : Set.range untrop = Set.univ
hs : BddAbove (untrop '' s)
⊢ BddAbove s

Next tactic:
change BddAbove (tropOrderIso.symm '' s) at hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
this : Set.range untrop = Set.univ
hs : BddAbove (⇑(OrderIso.symm tropOrderIso) '' s)
⊢ BddAbove s

Next tactic:
exact tropOrderIso.symm.bddAbove_image.1 hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
⊢ ∀ (s : Set (Tropical R)), ¬BddBelow s → sInf s = sInf ∅

Next tactic:
intro s hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddBelow s
⊢ sInf s = sInf ∅

Next tactic:
have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddBelow s
this : Set.range untrop = Set.univ
⊢ sInf s = sInf ∅

Next tactic:
simp only [sInf, Set.image_empty, trop_inj_iff]
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sInf, Set.image_empty, trop_inj_iff]
      

Proof state:
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddBelow s
this : Set.range untrop = Set.univ
⊢ sInf (untrop '' s) = sInf ∅

Next tactic:
apply csInf_of_not_bddBelow
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sInf, Set.image_empty, trop_inj_iff]
      apply csInf_of_not_bddBelow
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
hs : ¬BddBelow s
this : Set.range untrop = Set.univ
⊢ ¬BddBelow (untrop '' s)

Next tactic:
contrapose! hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sInf, Set.image_empty, trop_inj_iff]
      apply csInf_of_not_bddBelow
      contrapose! hs
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
this : Set.range untrop = Set.univ
hs : BddBelow (untrop '' s)
⊢ BddBelow s

Next tactic:
change BddBelow (tropOrderIso.symm '' s) at hs
instance [ConditionallyCompleteLinearOrder R] : ConditionallyCompleteLinearOrder (Tropical R) :=
  { instConditionallyCompleteLatticeTropical, Tropical.instLinearOrderTropical with
    csSup_of_not_bddAbove := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sSup, Set.image_empty, trop_inj_iff]
      apply csSup_of_not_bddAbove
      contrapose! hs
      change BddAbove (tropOrderIso.symm '' s) at hs
      exact tropOrderIso.symm.bddAbove_image.1 hs
    csInf_of_not_bddBelow := by
      intro s hs
      have : Set.range untrop = (Set.univ : Set R) := Equiv.range_eq_univ tropEquiv.symm
      simp only [sInf, Set.image_empty, trop_inj_iff]
      apply csInf_of_not_bddBelow
      contrapose! hs
      change BddBelow (tropOrderIso.symm '' s) at hs
      

Proof state:
case hs
R : Type u_1
S : Type u_2
inst✝ : ConditionallyCompleteLinearOrder R
src✝¹ : ConditionallyCompleteLattice (Tropical R) := instConditionallyCompleteLatticeTropical
src✝ : LinearOrder (Tropical R) := instLinearOrderTropical
s : Set (Tropical R)
this : Set.range untrop = Set.univ
hs : BddBelow (⇑(OrderIso.symm tropOrderIso) '' s)
⊢ BddBelow s

Next tactic:
exact tropOrderIso.symm.bddBelow_image.1 hs
instance instSetLike : SetLike (VonNeumannAlgebra H) (H →L[ℂ] H) where
  coe S := S.carrier
  coe_injective' S T h := by 

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S T : VonNeumannAlgebra H
h : (fun S => S.carrier) S = (fun S => S.carrier) T
⊢ S = T

Next tactic:
obtain ⟨⟨⟨⟨⟨⟨_, _⟩, _⟩, _⟩, _⟩, _⟩, _⟩ := S
/-- The centralizer of a `VonNeumannAlgebra`, as a `VonNeumannAlgebra`.-/
def commutant (S : VonNeumannAlgebra H) : VonNeumannAlgebra H where
  toStarSubalgebra := StarSubalgebra.centralizer ℂ (S : Set (H →L[ℂ] H))
  centralizer_centralizer' := by 

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S : VonNeumannAlgebra H
⊢ Set.centralizer
      (Set.centralizer
        (StarSubalgebra.centralizer ℂ ↑S).toSubalgebra.toSubsemiring.toSubmonoid.toSubsemigroup.carrier) =
    (StarSubalgebra.centralizer ℂ ↑S).toSubalgebra.toSubsemiring.toSubmonoid.toSubsemigroup.carrier

Next tactic:
simp
@[simp]
theorem coe_commutant (S : VonNeumannAlgebra H) :
    ↑S.commutant = Set.centralizer (S : Set (H →L[ℂ] H)) := by
  

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S : VonNeumannAlgebra H
⊢ ↑(commutant S) = Set.centralizer ↑S

Next tactic:
simp [commutant]
@[simp]
theorem mem_commutant_iff {S : VonNeumannAlgebra H} {z : H →L[ℂ] H} :
    z ∈ S.commutant ↔ ∀ g ∈ S, g * z = z * g := by
  

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S : VonNeumannAlgebra H
z : H →L[ℂ] H
⊢ z ∈ commutant S ↔ ∀ g ∈ S, g * z = z * g

Next tactic:
rw [← SetLike.mem_coe, coe_commutant]
@[simp]
theorem mem_commutant_iff {S : VonNeumannAlgebra H} {z : H →L[ℂ] H} :
    z ∈ S.commutant ↔ ∀ g ∈ S, g * z = z * g := by
  rw [← SetLike.mem_coe, coe_commutant]
  

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S : VonNeumannAlgebra H
z : H →L[ℂ] H
⊢ z ∈ Set.centralizer ↑S ↔ ∀ g ∈ S, g * z = z * g

Next tactic:
rfl
@[simp]
theorem commutant_commutant (S : VonNeumannAlgebra H) : S.commutant.commutant = S :=
  SetLike.coe_injective <| by 

Proof state:
H : Type u
inst✝² : NormedAddCommGroup H
inst✝¹ : InnerProductSpace ℂ H
inst✝ : CompleteSpace H
S : VonNeumannAlgebra H
⊢ ↑(commutant (commutant S)) = ↑S

Next tactic:
simp
/-- A `Fin n`-graded order is also `ℕ`-graded. We do not mark this an instance because `n` is not
inferrable. -/
@[reducible]
def GradeMinOrder.finToNat (n : ℕ) [GradeMinOrder (Fin n) α] : GradeMinOrder ℕ α :=
  (GradeMinOrder.liftLeft (_ : Fin n → ℕ) Fin.val_strictMono fun _ _ => Covby.coe_fin) fun a h => by
    

Proof state:
𝕆 : Type u_1
ℙ : Type u_2
α : Type u_3
β : Type u_4
inst✝⁴ : Preorder 𝕆
inst✝³ : Preorder ℙ
inst✝² : Preorder α
inst✝¹ : Preorder β
n : ℕ
inst✝ : GradeMinOrder (Fin n) α
a : Fin n
h : IsMin a
⊢ IsMin ↑a

Next tactic:
cases n
/-- A `Fin n`-graded order is also `ℕ`-graded. We do not mark this an instance because `n` is not
inferrable. -/
@[reducible]
def GradeMinOrder.finToNat (n : ℕ) [GradeMinOrder (Fin n) α] : GradeMinOrder ℕ α :=
  (GradeMinOrder.liftLeft (_ : Fin n → ℕ) Fin.val_strictMono fun _ _ => Covby.coe_fin) fun a h => by
    cases n
    · 

Proof state:
case zero
𝕆 : Type u_1
ℙ : Type u_2
α : Type u_3
β : Type u_4
inst✝⁴ : Preorder 𝕆
inst✝³ : Preorder ℙ
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : GradeMinOrder (Fin zero) α
a : Fin zero
h : IsMin a
⊢ IsMin ↑a

Next tactic:
exact a.elim0
/-- A `Fin n`-graded order is also `ℕ`-graded. We do not mark this an instance because `n` is not
inferrable. -/
@[reducible]
def GradeMinOrder.finToNat (n : ℕ) [GradeMinOrder (Fin n) α] : GradeMinOrder ℕ α :=
  (GradeMinOrder.liftLeft (_ : Fin n → ℕ) Fin.val_strictMono fun _ _ => Covby.coe_fin) fun a h => by
    cases n
    · exact a.elim0
    

Proof state:
case succ
𝕆 : Type u_1
ℙ : Type u_2
α : Type u_3
β : Type u_4
inst✝⁴ : Preorder 𝕆
inst✝³ : Preorder ℙ
inst✝² : Preorder α
inst✝¹ : Preorder β
n✝ : ℕ
inst✝ : GradeMinOrder (Fin (succ n✝)) α
a : Fin (succ n✝)
h : IsMin a
⊢ IsMin ↑a

Next tactic:
rw [h.eq_bot, Fin.bot_eq_zero]
/-- A `Fin n`-graded order is also `ℕ`-graded. We do not mark this an instance because `n` is not
inferrable. -/
@[reducible]
def GradeMinOrder.finToNat (n : ℕ) [GradeMinOrder (Fin n) α] : GradeMinOrder ℕ α :=
  (GradeMinOrder.liftLeft (_ : Fin n → ℕ) Fin.val_strictMono fun _ _ => Covby.coe_fin) fun a h => by
    cases n
    · exact a.elim0
    rw [h.eq_bot, Fin.bot_eq_zero]
    

Proof state:
case succ
𝕆 : Type u_1
ℙ : Type u_2
α : Type u_3
β : Type u_4
inst✝⁴ : Preorder 𝕆
inst✝³ : Preorder ℙ
inst✝² : Preorder α
inst✝¹ : Preorder β
n✝ : ℕ
inst✝ : GradeMinOrder (Fin (succ n✝)) α
a : Fin (succ n✝)
h : IsMin a
⊢ IsMin ↑0

Next tactic:
exact isMin_bot
@[simp]
theorem mem_one (x : List α) : x ∈ (1 : Language α) ↔ x = [] := by 

Proof state:
α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ x : List α
⊢ x ∈ 1 ↔ x = []

Next tactic:
rfl
theorem nil_mem_kstar (l : Language α) : [] ∈ l∗ :=
  ⟨[], rfl, fun _ h ↦ by 

Proof state:
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
x✝ : List α
h : x✝ ∈ []
⊢ x✝ ∈ l

Next tactic:
contradiction