31 lines
755 B
Text
31 lines
755 B
Text
|
/-
|
||
|
This example demonstrates why allowing types such as
|
||
|
|
||
|
inductive D : Type :=
|
||
|
| intro : (D → D) → D
|
||
|
|
||
|
would make the system inconsistent
|
||
|
-/
|
||
|
|
||
|
/- If we were allowed to form the inductive type
|
||
|
|
||
|
inductive D : Type :=
|
||
|
| intro : (D → D) → D
|
||
|
|
||
|
we would get the following
|
||
|
-/
|
||
|
universe l
|
||
|
-- The new type A
|
||
|
axiom D : Type.{l}
|
||
|
-- The constructor
|
||
|
axiom introD : (D → D) → D
|
||
|
-- The eliminator
|
||
|
axiom recD : Π {C : D → Type}, (Π (f : D → D) (r : Π d, C (f d)), C (introD f)) → (Π (d : D), C d)
|
||
|
-- We would also get a computational rule for the eliminator, but we don't need it for deriving the inconsistency.
|
||
|
|
||
|
definition id : D → D := λd, d
|
||
|
definition v : D := introD id
|
||
|
|
||
|
theorem inconsistent : false :=
|
||
|
recD (λ f ih, ih v) v
|