21 lines
641 B
Text
21 lines
641 B
Text
import logic
|
|
|
|
structure has_mul [class] (A : Type) :=
|
|
(mul : A → A → A)
|
|
|
|
structure semigroup [class] (A : Type) extends has_mul A :=
|
|
(assoc : ∀ a b c, mul (mul a b) c = mul a (mul b c))
|
|
|
|
print prefix semigroup
|
|
|
|
print "======================="
|
|
|
|
structure has_two_muls [class] (A : Type) extends has_mul A renaming mul→mul1,
|
|
private has_mul A renaming mul→mul2
|
|
|
|
print prefix has_two_muls
|
|
|
|
print "======================="
|
|
|
|
structure another_two_muls [class] (A : Type) extends has_mul A renaming mul→mul1,
|
|
has_mul A renaming mul→mul2
|