Commit 2024-08-16 01:08 925a304c

View on Github →

feat: Finset builder notation (#11582) Define elaborators (but no delaborators) to elaborate the following notations to a Finset: In Data.Finset.Basic,

  • {x ∈ s | p x} In Data.Fintype.Basic,
  • {x | p x}
  • {x : α | p x}
  • {x ∉ s | p x}
  • {x ≠ a | p x} In Order.Interval.Finset.Basic,
  • {x ≤ a | p x}
  • {x ≥ a | p x}
  • {x < a | p x}
  • {x > a | p x} The general heuristic for deciding whether to elaborate a given notation as a Set or Finset is:
  • Check whether the expected type is Finset ?α.
    • If it is, elaborate as a Finset.
    • If it isn't, check whether the expected type of s in the notation is Finset ?α.
      • If it is, elaborate as a Finset.
      • If it isn't or there is no s in the notation, elaborate as a Set. There is currently a gotcha that elaboration to Set is highly preferred because we can't postpone metavariable and override the set elaborator without breaking many existing uses of set builder notation. See Zulip.

Estimated changes

deleted def Equiv.Finset.union
deleted def Equiv.piFinsetUnion
deleted def Finset.choose
deleted def Finset.chooseX
deleted theorem Finset.choose_mem
deleted theorem Finset.choose_property
deleted theorem Finset.choose_spec
deleted theorem Finset.coe_filter
deleted theorem Finset.coe_range
deleted theorem Finset.coe_toList
deleted theorem Finset.disjoint_filter
deleted theorem Finset.empty_toList
deleted theorem Finset.exists_mem_insert
deleted theorem Finset.filter_False
deleted theorem Finset.filter_True
deleted theorem Finset.filter_and
deleted theorem Finset.filter_and_not
deleted theorem Finset.filter_comm
deleted theorem Finset.filter_congr
deleted theorem Finset.filter_cons
deleted theorem Finset.filter_cons_of_neg
deleted theorem Finset.filter_cons_of_pos
deleted theorem Finset.filter_const
deleted theorem Finset.filter_disj_union
deleted theorem Finset.filter_empty
deleted theorem Finset.filter_eq'
deleted theorem Finset.filter_eq
deleted theorem Finset.filter_eq_self
deleted theorem Finset.filter_erase
deleted theorem Finset.filter_filter
deleted theorem Finset.filter_inj'
deleted theorem Finset.filter_inj
deleted theorem Finset.filter_insert
deleted theorem Finset.filter_inter
deleted theorem Finset.filter_ne'
deleted theorem Finset.filter_ne
deleted theorem Finset.filter_not
deleted theorem Finset.filter_or
deleted theorem Finset.filter_singleton
deleted theorem Finset.filter_ssubset
deleted theorem Finset.filter_subset
deleted theorem Finset.filter_true_of_mem
deleted theorem Finset.filter_union
deleted theorem Finset.filter_union_right
deleted theorem Finset.filter_val
deleted theorem Finset.forall_mem_insert
deleted theorem Finset.inter_filter
deleted theorem Finset.mem_filter
deleted theorem Finset.mem_of_mem_filter
deleted theorem Finset.mem_range
deleted theorem Finset.mem_range_le
deleted theorem Finset.mem_range_succ_iff
deleted theorem Finset.mem_toList
deleted theorem Finset.nodup_toList
deleted theorem Finset.nonempty_range_iff
deleted theorem Finset.not_mem_range_self
deleted theorem Finset.pairwise_cons'
deleted theorem Finset.pairwise_cons
deleted def Finset.range
deleted theorem Finset.range_add_one
deleted theorem Finset.range_eq_empty_iff
deleted theorem Finset.range_filter_eq
deleted theorem Finset.range_mono
deleted theorem Finset.range_nontrivial
deleted theorem Finset.range_one
deleted theorem Finset.range_subset
deleted theorem Finset.range_succ
deleted theorem Finset.range_val
deleted theorem Finset.range_zero
deleted theorem Finset.sdiff_eq_filter
deleted theorem Finset.sdiff_eq_self
deleted theorem Finset.subset_union_elim
deleted theorem Finset.toList_cons
deleted theorem Finset.toList_empty
deleted theorem Finset.toList_eq_nil
deleted theorem Finset.toList_insert
deleted theorem Finset.toList_singleton
deleted theorem Finset.toList_toFinset
deleted theorem Finset.val_toFinset
deleted theorem List.coe_toFinset
deleted theorem List.mem_toFinset
deleted theorem List.toFinset.ext
deleted theorem List.toFinset.ext_iff
deleted def List.toFinset
deleted theorem List.toFinset_append
deleted theorem List.toFinset_coe
deleted theorem List.toFinset_cons
deleted theorem List.toFinset_eq
deleted theorem List.toFinset_eq_of_perm
deleted theorem List.toFinset_filter
deleted theorem List.toFinset_inter
deleted theorem List.toFinset_nil
deleted theorem List.toFinset_reverse
deleted theorem List.toFinset_surj_on
deleted theorem List.toFinset_surjective
deleted theorem List.toFinset_union
deleted theorem List.toFinset_val
deleted theorem Multiset.mem_toFinset
deleted def Multiset.toFinset
deleted theorem Multiset.toFinset_add
deleted theorem Multiset.toFinset_cons
deleted theorem Multiset.toFinset_dedup
deleted theorem Multiset.toFinset_eq
deleted theorem Multiset.toFinset_filter
deleted theorem Multiset.toFinset_inter
deleted theorem Multiset.toFinset_nsmul
deleted theorem Multiset.toFinset_ssubset
deleted theorem Multiset.toFinset_subset
deleted theorem Multiset.toFinset_union
deleted theorem Multiset.toFinset_val
deleted theorem Multiset.toFinset_zero
deleted theorem coe_notMemRangeEquiv
deleted theorem coe_notMemRangeEquiv_symm
deleted def notMemRangeEquiv