lean4-htt/library/data/sum.lean
Leonardo de Moura 0163c1aa5b feat(library/init): use mk_dec_eq_instance in the init folder
We cannot mk_dec_eq_instance everywhere in the init folder because some
dec_eq instances are used to define the tactic mk_dec_eq_instance.
2016-07-20 20:21:58 -04:00

39 lines
1.2 KiB
Text

/-
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Jeremy Avigad
The sum type, aka disjoint union.
-/
import logic.connectives
open inhabited eq.ops
notation A ⊎ B := sum A B
namespace sum
notation A + B := sum A B
namespace low_precedence_plus
reserve infixr ` + `:25 -- conflicts with notation for addition
infixr + := sum
end low_precedence_plus
variables {A B : Type}
definition inl_ne_inr (a : A) (b : B) : inl a ≠ inr b :=
sorry -- by contradiction
definition inr_ne_inl (b : B) (a : A) : inr b ≠ inl a :=
sorry -- by contradiction
definition inl_inj {a₁ a₂ : A} : intro_left B a₁ = intro_left B a₂ → a₁ = a₂ :=
sorry -- assume H, by injection H; assumption
definition inr_inj {b₁ b₂ : B} : intro_right A b₁ = intro_right A b₂ → b₁ = b₂ :=
sorry -- assume H, by injection H; assumption
protected definition is_inhabited_left [instance] [h : inhabited A] : inhabited (A + B) :=
inhabited.mk (inl (default A))
protected definition is_inhabited_right [instance] [h : inhabited B] : inhabited (A + B) :=
inhabited.mk (inr (default B))
end sum