Documentation

Mathlib.Tactic.NormNum.BigOperators

norm_num plugin for big operators #

This file adds norm_num plugins for Finset.prod and Finset.sum.

The driving part of this plugin is Mathlib.Meta.NormNum.evalFinsetBigop. We repeatedly use Finset.proveEmptyOrCons to try to find a proof that the given set is empty, or that it consists of one element inserted into a strict subset, and evaluate the big operator on that subset until the set is completely exhausted.

See also #

Porting notes #

This plugin is noticeably less powerful than the equivalent version in Mathlib 3: the design of norm_num means plugins have to return numerals, rather than a generic expression. In particular, we can't use the plugin on sums containing variables. (See also the TODO note "To support variables".)

TODOs #

This represents the result of trying to determine whether the given expression n : Q(ℕ) is either zero or succ.

Instances For

    Determine whether the expression n : Q(ℕ) unifies with 0 or Nat.succ n'.

    We do not use norm_num functionality because we want definitional equality, not propositional equality, for use in dependent types.

    Fails if neither of the options succeed.

    Instances For
      theorem Mathlib.Meta.Multiset.insert_eq_cons {α : Type u_1} [DecidableEq α] (a : α) (s : Multiset α) :
      insert a s = a ::ₘ s
      theorem Mathlib.Meta.Finset.insert_eq_cons {α : Type u_1} [DecidableEq α] (a : α) (s : Finset α) (h : ¬a s) :
      insert a s = Finset.cons a s h
      theorem Mathlib.Meta.Finset.univ_eq_elems {α : Type u_1} [Fintype α] (elems : Finset α) (complete : ∀ (x : α), x elems) :
      Finset.univ = elems

      norm_num plugin for evaluating products of finsets.

      If your finset is not supported, you can add it to the match in Finset.proveEmptyOrCons.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        norm_num plugin for evaluating sums of finsets.

        If your finset is not supported, you can add it to the match in Finset.proveEmptyOrCons.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For