Documentation

Init.Data.AC

structure Lean.Data.AC.Variable {α : Sort u} (op : ααα) :
Type u
structure Lean.Data.AC.Context (α : Sort u) :
Type u
class Lean.Data.AC.ContextInformation (α : Sort u) :
Sort (max 1 u)
  • isNeutral : αNatBool
  • isComm : αBool
  • isIdem : αBool
Instances
class Lean.Data.AC.EvalInformation (α : Sort u) (β : Sort v) :
Sort (max (max 1 u) v)
  • arbitrary : αβ
  • evalOp : αβββ
  • evalVar : αNatβ
Instances
def Lean.Data.AC.Context.var {α : Sort u_1} (ctx : Lean.Data.AC.Context α) (idx : Nat) :
Equations
Equations
Equations
  • Lean.Data.AC.instEvalInformationContext = { arbitrary := fun ctx => ctx.arbitrary, evalOp := fun ctx => ctx.op, evalVar := fun ctx idx => (Lean.Data.AC.Context.var ctx idx).value }
Equations
Equations
Equations
Equations
def Lean.Data.AC.removeNeutrals {α : Sort u_1} [info : Lean.Data.AC.ContextInformation α] (ctx : α) :
Equations
theorem Lean.Data.AC.List.two_step_induction {motive : List NatSort u} (l : List Nat) (empty : motive []) (single : (a : Nat) → motive [a]) (step : (a b : Nat) → (l : List Nat) → motive (b :: l)motive (a :: b :: l)) :
motive l
theorem Lean.Data.AC.Context.evalList_insert {α : Sort u_1} (ctx : Lean.Data.AC.Context α) (h : Lean.IsCommutative ctx.op) (x : Nat) (xs : List Nat) :
theorem Lean.Data.AC.Context.evalList_sort_congr {α : Sort u_1} {a : List Nat} {b : List Nat} {c : List Nat} (ctx : Lean.Data.AC.Context α) (h : Lean.IsCommutative ctx.op) (h₂ : Lean.Data.AC.evalList α ctx a = Lean.Data.AC.evalList α ctx b) (h₃ : a []) (h₄ : b []) :
theorem Lean.Data.AC.Context.evalList_append {α : Sort u_1} (ctx : Lean.Data.AC.Context α) (l : List Nat) (r : List Nat) (h₁ : l []) (h₂ : r []) :