With this, lean produces the following zoo of rewrite rules: ``` Option.map.eq_1 : Option.map f none = none Option.map.eq_2 : Option.map f (some x) = some (f x) Option.map.eq_def : Option.map f p = match o with | none => none | (some x) => some (f x) Option.map.eq_unfold : Option.map = fun f p => match o with | none => none | (some x) => some (f x) ``` The `f.eq_unfold` variant is especially useful to rewrite with `rw` under binders. This implements and fixes #5110
14 lines
484 B
Text
14 lines
484 B
Text
/-
|
|
Copyright (c) 2020 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Leonardo de Moura
|
|
-/
|
|
prelude
|
|
import Lean.Elab.PreDefinition.Basic
|
|
import Lean.Elab.PreDefinition.Structural
|
|
import Lean.Elab.PreDefinition.Main
|
|
import Lean.Elab.PreDefinition.MkInhabitant
|
|
import Lean.Elab.PreDefinition.WF
|
|
import Lean.Elab.PreDefinition.Eqns
|
|
import Lean.Elab.PreDefinition.Nonrec.Eqns
|
|
import Lean.Elab.PreDefinition.EqUnfold
|