This PR adds the ability to do `deriving ReflBEq, LawfulBEq`. Both classes have to listed in the `deriving` clause. For `ReflBEq`, a simple `simp`-based proof is used. For `LawfulBEq`, a dedicated, syntax-directed tactic is used that should work for derived `BEq` instances. This is meant to work with `deriving BEq` (but you can try to use it on hand-rolled `@[methods_specs] instance : BEq…` instances). Does not support mutual or nested inductives.
23 lines
785 B
Text
23 lines
785 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
|
|
-/
|
|
module
|
|
|
|
prelude
|
|
public import Lean.Elab.Deriving.Basic
|
|
public import Lean.Elab.Deriving.Util
|
|
public import Lean.Elab.Deriving.Inhabited
|
|
public import Lean.Elab.Deriving.Nonempty
|
|
public import Lean.Elab.Deriving.TypeName
|
|
public import Lean.Elab.Deriving.BEq
|
|
public import Lean.Elab.Deriving.DecEq
|
|
public import Lean.Elab.Deriving.Repr
|
|
public import Lean.Elab.Deriving.FromToJson
|
|
public import Lean.Elab.Deriving.SizeOf
|
|
public import Lean.Elab.Deriving.Hashable
|
|
public import Lean.Elab.Deriving.Ord
|
|
public import Lean.Elab.Deriving.ToExpr
|
|
public import Lean.Elab.Deriving.ReflBEq
|
|
public import Lean.Elab.Deriving.LawfulBEq
|