feat(library/init/logic): annotate logical connectives as [no_pattern]

This commit is contained in:
Leonardo de Moura 2015-11-24 15:22:40 -08:00
parent a2f43212d6
commit 5721bc13a7
2 changed files with 12 additions and 9 deletions

View file

@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Jeremy Avigad, Floris van Doorn Authors: Leonardo de Moura, Jeremy Avigad, Floris van Doorn
-/ -/
prelude prelude
import init.datatypes init.reserved_notation import init.datatypes init.reserved_notation init.tactic
definition id [reducible] [unfold_full] {A : Type} (a : A) : A := definition id [reducible] [unfold_full] {A : Type} (a : A) : A :=
a a
@ -698,6 +698,12 @@ inhabited.mk (λa, !default)
protected definition bool.is_inhabited [instance] : inhabited bool := protected definition bool.is_inhabited [instance] : inhabited bool :=
inhabited.mk ff inhabited.mk ff
protected definition pos_num.is_inhabited [instance] : inhabited pos_num :=
inhabited.mk pos_num.one
protected definition num.is_inhabited [instance] : inhabited num :=
inhabited.mk num.zero
inductive nonempty [class] (A : Type) : Prop := inductive nonempty [class] (A : Type) : Prop :=
intro : A → nonempty A intro : A → nonempty A
@ -892,6 +898,10 @@ if Hc : c then !false.rec (if_pos Hc ▸ H₂) else Hc
theorem of_not_is_false {c : Prop} [H₁ : decidable c] (H₂ : ¬ is_false c) : c := theorem of_not_is_false {c : Prop} [H₁ : decidable c] (H₂ : ¬ is_false c) : c :=
if Hc : c then Hc else absurd trivial (if_neg Hc ▸ H₂) if Hc : c then Hc else absurd trivial (if_neg Hc ▸ H₂)
-- The following symbols should not be considered in the pattern inference procedure used by
-- heuristic instantiation.
attribute and or not iff ite dite eq ne heq [no_pattern]
-- namespace used to collect congruence rules for "contextual simplification" -- namespace used to collect congruence rules for "contextual simplification"
namespace contextual namespace contextual
attribute if_ctx_simp_congr [congr] attribute if_ctx_simp_congr [congr]

View file

@ -3,14 +3,10 @@ Copyright (c) 2014 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE. Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura Authors: Leonardo de Moura
-/ -/
prelude prelude
import init.logic init.bool import init.bool
open bool open bool
definition pos_num.is_inhabited [instance] : inhabited pos_num :=
inhabited.mk pos_num.one
namespace pos_num namespace pos_num
protected definition mul (a b : pos_num) : pos_num := protected definition mul (a b : pos_num) : pos_num :=
pos_num.rec_on a pos_num.rec_on a
@ -41,9 +37,6 @@ end pos_num
definition pos_num_has_mul [instance] [reducible] : has_mul pos_num := definition pos_num_has_mul [instance] [reducible] : has_mul pos_num :=
has_mul.mk pos_num.mul has_mul.mk pos_num.mul
definition num.is_inhabited [instance] : inhabited num :=
inhabited.mk num.zero
namespace num namespace num
open pos_num open pos_num