refactor(library/data/unit): break unit.lean into smaller pieces

The unit datatype is used by automation.

We want to be able to access its declaration without having to access
all dependencies (e.g., decidable, subsingleton, inhabited, ...).

This is *not* an optimization, but a way to make sure we can "import" unit
before we import other declarations.
This commit is contained in:
Leonardo de Moura 2014-10-25 14:57:33 -07:00
parent b575c972bd
commit 758a17ab23
4 changed files with 19 additions and 12 deletions

View file

@ -0,0 +1,5 @@
-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Leonardo de Moura
inductive unit.{l} : Type.{l} :=
star : unit

View file

@ -0,0 +1,9 @@
-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Leonardo de Moura
inductive unit.{l} : Type.{l} :=
star : unit
namespace unit
notation `⋆` := star
end unit

View file

@ -0,0 +1,4 @@
-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Leonardo de Moura
import data.unit.decl data.unit.thms data.unit.insts

View file

@ -1,24 +1,13 @@
-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Leonardo de Moura
import logic.decidable logic.inhabited
import data.unit.decl data.unit.thms logic.decidable logic.inhabited
open decidable
inductive unit.{l} : Type.{l} :=
star : unit
namespace unit
notation `⋆` := star
-- remove duplication?
protected theorem equal (a b : unit) : a = b :=
rec_on a (rec_on b rfl)
protected theorem subsingleton [instance] : subsingleton unit :=
subsingleton.intro (λ a b, equal a b)
theorem eq_star (a : unit) : a = star :=
equal a star
protected definition is_inhabited [instance] : inhabited unit :=
inhabited.mk ⋆