lean2/library/data/empty.lean

26 lines
632 B
Text

-- Copyright (c) 2014 Microsoft Corporation. All rights reserved.
-- Released under Apache 2.0 license as described in the file LICENSE.
-- Author: Jeremy Avigad, Floris van Doorn
-- Empty type
-- ----------
import logic.cast
inductive empty : Type
namespace empty
protected theorem elim (A : Type) (H : empty) : A :=
rec (λe, A) H
protected theorem subsingleton [instance] : subsingleton empty :=
subsingleton.intro (λ a b, !elim a)
end empty
namespace false
theorem to_empty (H : false) : empty :=
cast (false_elim H) true
theorem rec_type (A : Type) (H : false) : A :=
!empty.elim (to_empty H)
end false