48 lines
831 B
Text
48 lines
831 B
Text
import logic data.unit
|
|
|
|
|
|
structure point (A : Type) (B : Type) :=
|
|
mk :: (x : A) (y : B)
|
|
|
|
check point
|
|
check @ point.rec
|
|
check point.mk
|
|
check point.x
|
|
check point.y
|
|
check point.rec_on
|
|
check point.induction_on
|
|
check point.destruct
|
|
|
|
inductive color :=
|
|
red, green, blue
|
|
|
|
structure color_point (A : Type) (B : Type) extends point A B :=
|
|
mk :: (c : color)
|
|
|
|
check @color_point.rec_on
|
|
check color_point.rec_on
|
|
check color_point.to_point
|
|
|
|
section
|
|
variables a b : num
|
|
|
|
example : point.x (point.mk a b) = a :=
|
|
rfl
|
|
|
|
example : point.y (point.mk a b) = b :=
|
|
rfl
|
|
|
|
variables cc : color
|
|
|
|
example : color_point.x (color_point.mk a b cc) = a :=
|
|
rfl
|
|
|
|
example : color_point.y (color_point.mk a b cc) = b :=
|
|
rfl
|
|
|
|
example : color_point.c (color_point.mk a b cc) = cc :=
|
|
rfl
|
|
|
|
example : color_point.to_point (color_point.mk a b cc) = point.mk a b :=
|
|
rfl
|
|
end
|