Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2019 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau

! This file was ported from Lean 3 source module algebra.punit_instances
! leanprover-community/mathlib commit 6cb77a8eaff0ddd100e87b1591c6d3ad319514ff
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Module.Basic
import Mathlib.Algebra.GCDMonoid.Basic
import Mathlib.Algebra.GroupRingAction.Basic
import Mathlib.GroupTheory.GroupAction.Defs
import Mathlib.Order.CompleteBooleanAlgebra

/-!
# Instances on PUnit

This file collects facts about algebraic structures on the one-element type, e.g. that it is a
commutative ring.
-/

namespace PUnit

@[
to_additive: AddCommGroup PUnit
to_additive
] instance
commGroup: CommGroup PUnit
commGroup
:
CommGroup: Type ?u.2 → Type ?u.2
CommGroup
PUnit: Sort ?u.3
PUnit
where mul
_: ?m.24
_
_: ?m.27
_
:=
unit: PUnit
unit
one :=
unit: PUnit
unit
inv
_: ?m.58
_
:=
unit: PUnit
unit
div
_: ?m.67
_
_: ?m.70
_
:=
unit: PUnit
unit
npow
_: ?m.42
_
_: ?m.45
_
:=
unit: PUnit
unit
zpow
_: ?m.79
_
_: ?m.82
_
:=
unit: PUnit
unit
mul_assoc :=

Goals accomplished! 🐙

∀ (a b c : PUnit), a * b * c = a * (b * c)
a✝, b✝, c✝: PUnit


a✝ * b✝ * c✝ = a✝ * (b✝ * c✝)
a✝, b✝, c✝: PUnit


a✝ * b✝ * c✝ = a✝ * (b✝ * c✝)

∀ (a b c : PUnit), a * b * c = a * (b * c)

Goals accomplished! 🐙
one_mul :=

Goals accomplished! 🐙

∀ (a : PUnit), 1 * a = a
a✝: PUnit


1 * a✝ = a✝
a✝: PUnit


1 * a✝ = a✝

∀ (a : PUnit), 1 * a = a

Goals accomplished! 🐙
mul_one :=

Goals accomplished! 🐙

∀ (a : PUnit), a * 1 = a
a✝: PUnit


a✝ * 1 = a✝
a✝: PUnit


a✝ * 1 = a✝

∀ (a : PUnit), a * 1 = a

Goals accomplished! 🐙
mul_left_inv :=

Goals accomplished! 🐙

∀ (a : PUnit), a⁻¹ * a = 1
a✝: PUnit


a✝⁻¹ * a✝ = 1
a✝: PUnit


a✝⁻¹ * a✝ = 1

∀ (a : PUnit), a⁻¹ * a = 1

Goals accomplished! 🐙
mul_comm :=

Goals accomplished! 🐙

∀ (a b : PUnit), a * b = b * a
a✝, b✝: PUnit


a✝ * b✝ = b✝ * a✝
a✝, b✝: PUnit


a✝ * b✝ = b✝ * a✝

∀ (a b : PUnit), a * b = b * a

Goals accomplished! 🐙
-- shortcut instances @[
to_additive: Zero PUnit
to_additive
]
instance: One PUnit
instance
:
One: Type ?u.1124 → Type ?u.1124
One
PUnit: Sort ?u.1125
PUnit
where one :=
(): Unit
()
@[
to_additive: Add PUnit
to_additive
]
instance: Mul PUnit
instance
:
Mul: Type ?u.1154 → Type ?u.1154
Mul
PUnit: Sort ?u.1155
PUnit
where mul
_: ?m.1161
_
_: ?m.1164
_
:=
(): Unit
()
@[
to_additive: Sub PUnit
to_additive
]
instance: Div PUnit
instance
:
Div: Type ?u.1236 → Type ?u.1236
Div
PUnit: Sort ?u.1237
PUnit
where div
_: ?m.1243
_
_: ?m.1246
_
:=
(): Unit
()
@[
to_additive: Neg PUnit
to_additive
]
instance: Inv PUnit
instance
:
Inv: Type ?u.1318 → Type ?u.1318
Inv
PUnit: Sort ?u.1319
PUnit
where inv
_: ?m.1325
_
:=
(): Unit
()
@[
to_additive: 0 = unit
to_additive
(attr := simp)] theorem
one_eq: 1 = unit
one_eq
: (
1: ?m.1380
1
:
PUnit: Sort ?u.1378
PUnit
) =
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.1430} {a : α}, a = a
rfl
#align punit.one_eq
PUnit.one_eq: 1 = unit
PUnit.one_eq
#align punit.zero_eq
PUnit.zero_eq: 0 = unit
PUnit.zero_eq
@[
to_additive: ∀ {x y : PUnit}, x + y = unit
to_additive
(attr := simp)] theorem
mul_eq: ∀ {x y : PUnit}, x * y = unit
mul_eq
:
x: ?m.1448
x
*
y: ?m.1456
y
=
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.1518} {a : α}, a = a
rfl
#align punit.mul_eq
PUnit.mul_eq: ∀ {x y : PUnit}, x * y = unit
PUnit.mul_eq
#align punit.add_eq
PUnit.add_eq: ∀ {x y : PUnit}, x + y = unit
PUnit.add_eq
-- `sub_eq` simplifies `PUnit.sub_eq`, but the latter is eligible for `dsimp` @[
to_additive: ∀ {x y : PUnit}, x - y = unit
to_additive
(attr := simp, nolint simpNF)] theorem
div_eq: ∀ {x y : PUnit}, x / y = unit
div_eq
:
x: ?m.1560
x
/
y: ?m.1568
y
=
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.1625} {a : α}, a = a
rfl
#align punit.div_eq
PUnit.div_eq: ∀ {x y : PUnit}, x / y = unit
PUnit.div_eq
#align punit.sub_eq
PUnit.sub_eq: ∀ {x y : PUnit}, x - y = unit
PUnit.sub_eq
-- `neg_eq` simplifies `PUnit.neg_eq`, but the latter is eligible for `dsimp` @[
to_additive: ∀ {x : PUnit}, -x = unit
to_additive
(attr := simp, nolint simpNF)] theorem
inv_eq: ∀ {x : PUnit}, x⁻¹ = unit
inv_eq
:
x: ?m.1667
x
⁻¹ =
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.1787} {a : α}, a = a
rfl
#align punit.inv_eq
PUnit.inv_eq: ∀ {x : PUnit}, x⁻¹ = unit
PUnit.inv_eq
#align punit.neg_eq
PUnit.neg_eq: ∀ {x : PUnit}, -x = unit
PUnit.neg_eq
instance
commRing: CommRing PUnit
commRing
:
CommRing: Type ?u.1809 → Type ?u.1809
CommRing
PUnit: Sort ?u.1810
PUnit
where __ :=
PUnit.commGroup: CommGroup PUnit
PUnit.commGroup
__ :=
PUnit.addCommGroup: AddCommGroup PUnit
PUnit.addCommGroup
left_distrib :=

Goals accomplished! 🐙

∀ (a b c : PUnit), a * (b + c) = a * b + a * c
src✝¹:= commGroup: CommGroup PUnit

src✝:= addCommGroup: AddCommGroup PUnit

a✝, b✝, c✝: PUnit


a✝ * (b✝ + c✝) = a✝ * b✝ + a✝ * c✝
src✝¹:= commGroup: CommGroup PUnit

src✝:= addCommGroup: AddCommGroup PUnit

a✝, b✝, c✝: PUnit


a✝ * (b✝ + c✝) = a✝ * b✝ + a✝ * c✝

∀ (a b c : PUnit), a * (b + c) = a * b + a * c

Goals accomplished! 🐙
right_distrib :=

Goals accomplished! 🐙

∀ (a b c : PUnit), (a + b) * c = a * c + b * c
src✝¹:= commGroup: CommGroup PUnit

src✝:= addCommGroup: AddCommGroup PUnit

a✝, b✝, c✝: PUnit


(a✝ + b✝) * c✝ = a✝ * c✝ + b✝ * c✝
src✝¹:= commGroup: CommGroup PUnit

src✝:= addCommGroup: AddCommGroup PUnit

a✝, b✝, c✝: PUnit


(a✝ + b✝) * c✝ = a✝ * c✝ + b✝ * c✝

∀ (a b c : PUnit), (a + b) * c = a * c + b * c

Goals accomplished! 🐙
zero_mul :=

Goals accomplished! 🐙

∀ (a : PUnit), 0 * a = 0

0 * a✝ = 0

0 * a✝ = 0

∀ (a : PUnit), 0 * a = 0

Goals accomplished! 🐙
mul_zero :=

Goals accomplished! 🐙

∀ (a : PUnit), a * 0 = 0

a✝ * 0 = 0

a✝ * 0 = 0

∀ (a : PUnit), a * 0 = 0

Goals accomplished! 🐙
natCast
_: ?m.1953
_
:=
unit: PUnit
unit
instance
cancelCommMonoidWithZero: CancelCommMonoidWithZero PUnit
cancelCommMonoidWithZero
:
CancelCommMonoidWithZero: Type ?u.3220 → Type ?u.3220
CancelCommMonoidWithZero
PUnit: Sort ?u.3221
PUnit
:=

Goals accomplished! 🐙

∀ {a b c : PUnit}, a 0a * b = a * cb = c

∀ {a b c : PUnit}, a 0a * b = a * cb = c
src✝:= commRing: CommRing PUnit

a✝², b✝, c✝: PUnit

a✝¹: a✝² 0

a✝: a✝² * b✝ = a✝² * c✝


b✝ = c✝
src✝:= commRing: CommRing PUnit

a✝², b✝, c✝: PUnit

a✝¹: a✝² 0

a✝: a✝² * b✝ = a✝² * c✝


b✝ = c✝

Goals accomplished! 🐙
instance
normalizedGCDMonoid: NormalizedGCDMonoid PUnit
normalizedGCDMonoid
:
NormalizedGCDMonoid: (α : Type ?u.3940) → [inst : CancelCommMonoidWithZero α] → Type ?u.3940
NormalizedGCDMonoid
PUnit: Sort ?u.3941
PUnit
where gcd
_: ?m.4432
_
_: ?m.4435
_
:=
unit: PUnit
unit
lcm
_: ?m.4443
_
_: ?m.4446
_
:=
unit: PUnit
unit
normUnit
_: ?m.3964
_
:=
1: ?m.3967
1
normUnit_zero :=
rfl: ∀ {α : Sort ?u.4412} {a : α}, a = a
rfl
normUnit_mul :=

Goals accomplished! 🐙

∀ {a b : PUnit}, a 0b 0(fun x => 1) (a * b) = (fun x => 1) a * (fun x => 1) b
a✝², b✝: PUnit

a✝¹: a✝² 0

a✝: b✝ 0


(fun x => 1) (a✝² * b✝) = (fun x => 1) a✝² * (fun x => 1) b✝
a✝², b✝: PUnit

a✝¹: a✝² 0

a✝: b✝ 0


(fun x => 1) (a✝² * b✝) = (fun x => 1) a✝² * (fun x => 1) b✝

∀ {a b : PUnit}, a 0b 0(fun x => 1) (a * b) = (fun x => 1) a * (fun x => 1) b

Goals accomplished! 🐙
normUnit_coe_units :=

Goals accomplished! 🐙

∀ (u : PUnitˣ), (fun x => 1) u = u⁻¹
u✝: PUnitˣ


(fun x => 1) u✝ = u✝⁻¹
u✝: PUnitˣ


(fun x => 1) u✝ = u✝⁻¹

∀ (u : PUnitˣ), (fun x => 1) u = u⁻¹

Goals accomplished! 🐙
gcd_dvd_left
_: ?m.4454
_
_: ?m.4457
_
:= ⟨
unit: PUnit
unit
,
Subsingleton.elim: ∀ {α : Sort ?u.4472} [h : Subsingleton α] (a b : α), a = b
Subsingleton.elim
_: ?m.4473
_
_: ?m.4473
_
gcd_dvd_right
_: ?m.4526
_
_: ?m.4529
_
:= ⟨
unit: PUnit
unit
,
Subsingleton.elim: ∀ {α : Sort ?u.4541} [h : Subsingleton α] (a b : α), a = b
Subsingleton.elim
_: ?m.4542
_
_: ?m.4542
_
dvd_gcd {
_: ?m.4589
_
_: ?m.4592
_
}
_: ?m.4595
_
_: ?m.4598
_
_: ?m.4601
_
:= ⟨
unit: PUnit
unit
,
Subsingleton.elim: ∀ {α : Sort ?u.4613} [h : Subsingleton α] (a b : α), a = b
Subsingleton.elim
_: ?m.4614
_
_: ?m.4614
_
gcd_mul_lcm
_: ?m.4669
_
_: ?m.4672
_
:= ⟨
1: ?m.4684
1
,
Subsingleton.elim: ∀ {α : Sort ?u.4686} [h : Subsingleton α] (a b : α), a = b
Subsingleton.elim
_: ?m.4687
_
_: ?m.4687
_
lcm_zero_left :=

Goals accomplished! 🐙

∀ (a : PUnit), (fun x x => unit) 0 a = 0
a✝: PUnit


(fun x x => unit) 0 a✝ = 0
a✝: PUnit


(fun x x => unit) 0 a✝ = 0

∀ (a : PUnit), (fun x x => unit) 0 a = 0

Goals accomplished! 🐙
lcm_zero_right :=

Goals accomplished! 🐙

∀ (a : PUnit), (fun x x => unit) a 0 = 0
a✝: PUnit


(fun x x => unit) a✝ 0 = 0
a✝: PUnit


(fun x x => unit) a✝ 0 = 0

∀ (a : PUnit), (fun x x => unit) a 0 = 0

Goals accomplished! 🐙
normalize_gcd :=

Goals accomplished! 🐙

∀ (a b : PUnit), normalize (gcd a b) = gcd a b
a✝, b✝: PUnit


normalize (gcd a✝ b✝) = gcd a✝ b✝
a✝, b✝: PUnit


normalize (gcd a✝ b✝) = gcd a✝ b✝

∀ (a b : PUnit), normalize (gcd a b) = gcd a b

Goals accomplished! 🐙
normalize_lcm :=

Goals accomplished! 🐙

∀ (a b : PUnit), normalize (lcm a b) = lcm a b
a✝, b✝: PUnit


normalize (lcm a✝ b✝) = lcm a✝ b✝
a✝, b✝: PUnit


normalize (lcm a✝ b✝) = lcm a✝ b✝

∀ (a b : PUnit), normalize (lcm a b) = lcm a b

Goals accomplished! 🐙
--porting notes: simpNF lint: simp can prove this @[simp] theorem
gcd_eq: ∀ {x y : PUnit}, gcd x y = unit
gcd_eq
:
gcd: {α : Type ?u.5435} → [inst : CancelCommMonoidWithZero α] → [self : GCDMonoid α] → ααα
gcd
x: ?m.5422
x
y: ?m.5431
y
=
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.5511} {a : α}, a = a
rfl
#align punit.gcd_eq
PUnit.gcd_eq: ∀ {x y : PUnit}, gcd x y = unit
PUnit.gcd_eq
--porting notes: simpNF lint: simp can prove this @[simp] theorem
lcm_eq: ∀ {x y : PUnit}, lcm x y = unit
lcm_eq
:
lcm: {α : Type ?u.5539} → [inst : CancelCommMonoidWithZero α] → [self : GCDMonoid α] → ααα
lcm
x: ?m.5526
x
y: ?m.5535
y
=
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.5615} {a : α}, a = a
rfl
#align punit.lcm_eq
PUnit.lcm_eq: ∀ {x y : PUnit}, lcm x y = unit
PUnit.lcm_eq
@[simp] theorem
norm_unit_eq: ∀ {x : PUnit}, normUnit x = 1
norm_unit_eq
{x:
PUnit: Sort ?u.5624
PUnit
} :
normUnit: {α : Type ?u.5628} → [inst : CancelCommMonoidWithZero α] → [self : NormalizationMonoid α] → ααˣ
normUnit
x =
1: ?m.5654
1
:=
rfl: ∀ {α : Sort ?u.6113} {a : α}, a = a
rfl
#align punit.norm_unit_eq
PUnit.norm_unit_eq: ∀ {x : PUnit}, normUnit x = 1
PUnit.norm_unit_eq
instance
canonicallyOrderedAddMonoid: CanonicallyOrderedAddMonoid PUnit
canonicallyOrderedAddMonoid
:
CanonicallyOrderedAddMonoid: Type ?u.6127 → Type ?u.6127
CanonicallyOrderedAddMonoid
PUnit: Sort ?u.6128
PUnit
:=

Goals accomplished! 🐙

refine'_1
∀ (a b : PUnit), a b∀ (c : PUnit), c + a c + b

refine'_2
∀ (a b : PUnit), a a + b

refine'_1
∀ (a b : PUnit), a b∀ (c : PUnit), c + a c + b

refine'_2
∀ (a b : PUnit), a a + b
src✝¹:= commRing: CommRing PUnit

src✝:= completeBooleanAlgebra: CompleteBooleanAlgebra PUnit

a✝¹, b✝: PUnit

a✝: a✝¹ b✝

c✝: PUnit


refine'_1
c✝ + a✝¹ c✝ + b✝
src✝¹:= commRing: CommRing PUnit

src✝:= completeBooleanAlgebra: CompleteBooleanAlgebra PUnit

a✝¹, b✝: PUnit

a✝: a✝¹ b✝

c✝: PUnit


refine'_1
c✝ + a✝¹ c✝ + b✝

refine'_2
a✝ a✝ + b✝

Goals accomplished! 🐙
instance
linearOrderedCancelAddCommMonoid: LinearOrderedCancelAddCommMonoid PUnit
linearOrderedCancelAddCommMonoid
:
LinearOrderedCancelAddCommMonoid: Type ?u.7192 → Type ?u.7192
LinearOrderedCancelAddCommMonoid
PUnit: Sort ?u.7193
PUnit
where __ :=
PUnit.canonicallyOrderedAddMonoid: CanonicallyOrderedAddMonoid PUnit
PUnit.canonicallyOrderedAddMonoid
__ :=
PUnit.linearOrder: LinearOrder PUnit
PUnit.linearOrder
le_of_add_le_add_left
_: ?m.7224
_
_: ?m.7227
_
_: ?m.7230
_
_: ?m.7233
_
:=
trivial: True
trivial
add_le_add_left :=

Goals accomplished! 🐙

∀ (a b : PUnit), a b∀ (c : PUnit), c + a c + b

c✝ + a✝¹ c✝ + b✝

c✝ + a✝¹ c✝ + b✝

∀ (a b : PUnit), a b∀ (c : PUnit), c + a c + b

Goals accomplished! 🐙
instance :
LinearOrderedAddCommMonoidWithTop: Type ?u.8225 → Type ?u.8225
LinearOrderedAddCommMonoidWithTop
PUnit: Sort ?u.8226
PUnit
:= {
PUnit.completeBooleanAlgebra: CompleteBooleanAlgebra PUnit
PUnit.completeBooleanAlgebra
,
PUnit.linearOrderedCancelAddCommMonoid: LinearOrderedCancelAddCommMonoid PUnit
PUnit.linearOrderedCancelAddCommMonoid
with top_add' := fun
_: ?m.8394
_
=>
rfl: ∀ {α : Sort ?u.8396} {a : α}, a = a
rfl
} @[
to_additive: {R : Type u_1} → VAdd R PUnit
to_additive
] instance
smul: {R : Type ?u.9201} → SMul R PUnit
smul
:
SMul: Type ?u.9201 → Type ?u.9200 → Type (max?u.9201?u.9200)
SMul
R: ?m.9197
R
PUnit: Sort ?u.9202
PUnit
:= ⟨fun
_: ?m.9215
_
_: ?m.9218
_
=>
unit: PUnit
unit
⟩ @[
to_additive: ∀ {R : Type u_1} (y : PUnit) (r : R), r +ᵥ y = unit
to_additive
(attr := simp)] theorem
smul_eq: ∀ {R : Type u_1} (y : PUnit) (r : R), r y = unit
smul_eq
{
R: Type u_1
R
:
Type _: Type (?u.9336+1)
Type _
} (y :
PUnit: Sort ?u.9339
PUnit
) (
r: R
r
:
R: Type ?u.9336
R
) :
r: R
r
y =
unit: PUnit
unit
:=
rfl: ∀ {α : Sort ?u.9405} {a : α}, a = a
rfl
#align punit.smul_eq
PUnit.smul_eq: ∀ {R : Type u_1} (y : PUnit) (r : R), r y = unit
PUnit.smul_eq
#align punit.vadd_eq
PUnit.vadd_eq: ∀ {R : Type u_1} (y : PUnit) (r : R), r +ᵥ y = unit
PUnit.vadd_eq
@[
to_additive: ∀ {R : Type u_1}, IsCentralVAdd R PUnit
to_additive
]
instance: ∀ {R : Type u_1}, IsCentralScalar R PUnit
instance
:
IsCentralScalar: (M : Type ?u.9458) → (α : Type ?u.9457) → [inst : SMul M α] → [inst : SMul Mᵐᵒᵖ α] → Prop
IsCentralScalar
R: ?m.9454
R
PUnit: Sort ?u.9459
PUnit
:= ⟨fun
_: ?m.9567
_
_: ?m.9570
_
=>
rfl: ∀ {α : Sort ?u.9572} {a : α}, a = a
rfl
⟩ @[
to_additive: ∀ {R : Type u_1} {S : Type u_2}, VAddCommClass R S PUnit
to_additive
]
instance: ∀ {R : Type u_1} {S : Type u_2}, SMulCommClass R S PUnit
instance
:
SMulCommClass: (M : Type ?u.9653) → (N : Type ?u.9652) → (α : Type ?u.9651) → [inst : SMul M α] → [inst : SMul N α] → Prop
SMulCommClass
R: ?m.9641
R
S: ?m.9648
S
PUnit: Sort ?u.9654
PUnit
:= ⟨fun
_: ?m.9780
_
_: ?m.9783
_
_: ?m.9786
_
=>
rfl: ∀ {α : Sort ?u.9788} {a : α}, a = a
rfl
⟩ @[
to_additive: ∀ {R : Type u_1} {S : Type u_2} [inst : VAdd R S], VAddAssocClass R S PUnit
to_additive
]
instance: ∀ {R : Type u_1} {S : Type u_2} [inst : SMul R S], IsScalarTower R S PUnit
instance
[
SMul: Type ?u.9884 → Type ?u.9883 → Type (max?u.9884?u.9883)
SMul
R: ?m.9874
R
S: ?m.9880
S
] :
IsScalarTower: (M : Type ?u.9889) → (N : Type ?u.9888) → (α : Type ?u.9887) → [inst : SMul M N] → [inst : SMul N α] → [inst : SMul M α] → Prop
IsScalarTower
R: ?m.9874
R
S: ?m.9880
S
PUnit: Sort ?u.9890
PUnit
:= ⟨fun
_: ?m.10057
_
_: ?m.10060
_
_: ?m.10063
_
=>
rfl: ∀ {α : Sort ?u.10065} {a : α}, a = a
rfl
instance
smulWithZero: {R : Type ?u.10180} → [inst : Zero R] → SMulWithZero R PUnit
smulWithZero
[
Zero: Type ?u.10180 → Type ?u.10180
Zero
R: ?m.10177
R
] :
SMulWithZero: (R : Type ?u.10184) → (M : Type ?u.10183) → [inst : Zero R] → [inst : Zero M] → Type (max?u.10184?u.10183)
SMulWithZero
R: ?m.10177
R
PUnit: Sort ?u.10185
PUnit
:=

Goals accomplished! 🐙
R: Type ?u.10180

inst✝: Zero R


R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit


refine'_1
∀ (a : R), a 0 = 0
R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit


refine'_2
∀ (m : PUnit), 0 m = 0
R: Type ?u.10180

inst✝: Zero R


R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit


refine'_1
∀ (a : R), a 0 = 0
R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit


refine'_2
∀ (m : PUnit), 0 m = 0
R: Type ?u.10180

inst✝: Zero R


R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit

m✝: PUnit


refine'_2
0 m✝ = 0
R: Type ?u.10180

inst✝: Zero R


R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit

a✝: R


refine'_1
a✝ 0 = 0
R: Type ?u.10180

inst✝: Zero R

src✝:= smul: SMul R PUnit

m✝: PUnit


refine'_2
0 m✝ = 0
R: Type ?u.10180

inst✝: Zero R



Goals accomplished! 🐙
instance
mulAction: {R : Type u_1} → [inst : Monoid R] → MulAction R PUnit
mulAction
[
Monoid: Type ?u.10474 → Type ?u.10474
Monoid
R: ?m.10471
R
] :
MulAction: (α : Type ?u.10478) → Type ?u.10477 → [inst : Monoid α] → Type (max?u.10478?u.10477)
MulAction
R: ?m.10471
R
PUnit: Sort ?u.10479
PUnit
:=

Goals accomplished! 🐙
R: Type ?u.10474

inst✝: Monoid R


R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit


refine'_1
∀ (b : PUnit), 1 b = b
R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit


refine'_2
∀ (x y : R) (b : PUnit), (x * y) b = x y b
R: Type ?u.10474

inst✝: Monoid R


R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit


refine'_1
∀ (b : PUnit), 1 b = b
R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit


refine'_2
∀ (x y : R) (b : PUnit), (x * y) b = x y b
R: Type ?u.10474

inst✝: Monoid R


R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit

x✝, y✝: R

b✝: PUnit


refine'_2
(x✝ * y✝) b✝ = x✝ y✝ b✝
R: Type ?u.10474

inst✝: Monoid R


R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit

b✝: PUnit


refine'_1
1 b✝ = b✝
R: Type ?u.10474

inst✝: Monoid R

src✝:= smul: SMul R PUnit

x✝, y✝: R

b✝: PUnit


refine'_2
(x✝ * y✝) b✝ = x✝ y✝ b✝
R: Type ?u.10474

inst✝: Monoid R



Goals accomplished! 🐙
instance
distribMulAction: {R : Type ?u.10715} → [inst : Monoid R] → DistribMulAction R PUnit
distribMulAction
[
Monoid: Type ?u.10715 → Type ?u.10715
Monoid
R: ?m.10712
R
] :
DistribMulAction: (M : Type ?u.10719) → (A : Type ?u.10718) → [inst : Monoid M] → [inst : AddMonoid A] → Type (max?u.10719?u.10718)
DistribMulAction
R: ?m.10712
R
PUnit: Sort ?u.10720
PUnit
:=

Goals accomplished! 🐙
R: Type ?u.10715

inst✝: Monoid R


R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_1
∀ (a : R), a 0 = 0
R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_2
∀ (a : R) (x y : PUnit), a (x + y) = a x + a y
R: Type ?u.10715

inst✝: Monoid R


R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_1
∀ (a : R), a 0 = 0
R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_2
∀ (a : R) (x y : PUnit), a (x + y) = a x + a y
R: Type ?u.10715

inst✝: Monoid R


R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

a✝: R

x✝, y✝: PUnit


refine'_2
a✝ (x✝ + y✝) = a✝ x✝ + a✝ y✝
R: Type ?u.10715

inst✝: Monoid R


R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

a✝: R


refine'_1
a✝ 0 = 0
R: Type ?u.10715

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

a✝: R

x✝, y✝: PUnit


refine'_2
a✝ (x✝ + y✝) = a✝ x✝ + a✝ y✝
R: Type ?u.10715

inst✝: Monoid R



Goals accomplished! 🐙
instance
mulDistribMulAction: {R : Type u_1} → [inst : Monoid R] → MulDistribMulAction R PUnit
mulDistribMulAction
[
Monoid: Type ?u.11240 → Type ?u.11240
Monoid
R: ?m.11237
R
] :
MulDistribMulAction: (M : Type ?u.11244) → (A : Type ?u.11243) → [inst : Monoid M] → [inst : Monoid A] → Type (max?u.11244?u.11243)
MulDistribMulAction
R: ?m.11237
R
PUnit: Sort ?u.11245
PUnit
:=

Goals accomplished! 🐙
R: Type ?u.11240

inst✝: Monoid R


R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_1
∀ (r : R) (x y : PUnit), r (x * y) = r x * r y
R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_2
∀ (r : R), r 1 = 1
R: Type ?u.11240

inst✝: Monoid R


R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_1
∀ (r : R) (x y : PUnit), r (x * y) = r x * r y
R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit


refine'_2
∀ (r : R), r 1 = 1
R: Type ?u.11240

inst✝: Monoid R


R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

r✝: R

x✝, y✝: PUnit


refine'_1
r✝ (x✝ * y✝) = r✝ x✝ * r✝ y✝
R: Type ?u.11240

inst✝: Monoid R


R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

r✝: R

x✝, y✝: PUnit


refine'_1
r✝ (x✝ * y✝) = r✝ x✝ * r✝ y✝
R: Type ?u.11240

inst✝: Monoid R

src✝:= mulAction: MulAction R PUnit

r✝: R


refine'_2
r✝ 1 = 1
R: Type ?u.11240

inst✝: Monoid R



Goals accomplished! 🐙
instance
mulSemiringAction: {R : Type ?u.11910} → [inst : Semiring R] → MulSemiringAction R PUnit
mulSemiringAction
[
Semiring: Type ?u.11910 → Type ?u.11910
Semiring
R: ?m.11907
R
] :
MulSemiringAction: (M : Type ?u.11914) → (R : Type ?u.11913) → [inst : Monoid M] → [inst : Semiring R] → Type (max?u.11914?u.11913)
MulSemiringAction
R: ?m.11907
R
PUnit: Sort ?u.11915
PUnit
:=
{ PUnit.distribMulAction, PUnit.mulDistribMulAction with }: MulSemiringAction ?m.12217 ?m.12218
{
PUnit.distribMulAction: {R : Type ?u.12114} → [inst : Monoid R] → DistribMulAction R PUnit
PUnit.distribMulAction
{ PUnit.distribMulAction, PUnit.mulDistribMulAction with }: MulSemiringAction ?m.12217 ?m.12218
,
PUnit.mulDistribMulAction: {R : Type ?u.12166} → [inst : Monoid R] → MulDistribMulAction R PUnit
PUnit.mulDistribMulAction
{ PUnit.distribMulAction, PUnit.mulDistribMulAction with }: MulSemiringAction ?m.12217 ?m.12218
{ PUnit.distribMulAction, PUnit.mulDistribMulAction with }: MulSemiringAction ?m.12217 ?m.12218
with
{ PUnit.distribMulAction, PUnit.mulDistribMulAction with }: MulSemiringAction ?m.12217 ?m.12218
}
instance
mulActionWithZero: {R : Type ?u.13015} → [inst : MonoidWithZero R] → MulActionWithZero R PUnit
mulActionWithZero
[
MonoidWithZero: Type ?u.13015 → Type ?u.13015
MonoidWithZero
R: ?m.13012
R
] :
MulActionWithZero: (R : Type ?u.13019) → (M : Type ?u.13018) → [inst : MonoidWithZero R] → [inst : Zero M] → Type (max?u.13019?u.13018)
MulActionWithZero
R: ?m.13012
R
PUnit: Sort ?u.13020
PUnit
:=
{ PUnit.mulAction, PUnit.smulWithZero with }: MulActionWithZero ?m.13181 ?m.13182
{
PUnit.mulAction: {R : Type ?u.13051} → [inst : Monoid R] → MulAction R PUnit
PUnit.mulAction
{ PUnit.mulAction, PUnit.smulWithZero with }: MulActionWithZero ?m.13181 ?m.13182
,
PUnit.smulWithZero: {R : Type ?u.13102} → [inst : Zero R] → SMulWithZero R PUnit
PUnit.smulWithZero
{ PUnit.mulAction, PUnit.smulWithZero with }: MulActionWithZero ?m.13181 ?m.13182
{ PUnit.mulAction, PUnit.smulWithZero with }: MulActionWithZero ?m.13181 ?m.13182
with
{ PUnit.mulAction, PUnit.smulWithZero with }: MulActionWithZero ?m.13181 ?m.13182
}
instance
module: {R : Type u_1} → [inst : Semiring R] → Module R PUnit
module
[
Semiring: Type ?u.13746 → Type ?u.13746
Semiring
R: ?m.13743
R
] :
Module: (R : Type ?u.13750) → (M : Type ?u.13749) → [inst : Semiring R] → [inst : AddCommMonoid M] → Type (max?u.13750?u.13749)
Module
R: ?m.13743
R
PUnit: Sort ?u.13751
PUnit
:=

Goals accomplished! 🐙
R: Type ?u.13746

inst✝: Semiring R


R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit


refine'_1
∀ (r s : R) (x : PUnit), (r + s) x = r x + s x
R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit


refine'_2
∀ (x : PUnit), 0 x = 0
R: Type ?u.13746

inst✝: Semiring R


R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit


refine'_1
∀ (r s : R) (x : PUnit), (r + s) x = r x + s x
R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit


refine'_2
∀ (x : PUnit), 0 x = 0
R: Type ?u.13746

inst✝: Semiring R


R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit

x✝: PUnit


refine'_2
0 x✝ = 0
R: Type ?u.13746

inst✝: Semiring R


R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit

r✝, s✝: R

x✝: PUnit


refine'_1
(r✝ + s✝) x✝ = r✝ x✝ + s✝ x✝
R: Type ?u.13746

inst✝: Semiring R

src✝:= distribMulAction: DistribMulAction R PUnit

x✝: PUnit


refine'_2
0 x✝ = 0
R: Type ?u.13746

inst✝: Semiring R



Goals accomplished! 🐙
end PUnit