lean4-htt/src/Lean/Meta/Tactic
Luisa Cicolini 62f3ee2887
feat: add leading zero counter BitVec.clz and bitblaster circuit/infrastructure (#8546)
This PR adds a new `BitVec.clz` operation and a corresponding `clz`
circuit to `bv_decide`, allowing to bitblast the count leading zeroes
operation. The AIG circuit is linear in the number of bits of the
original expression, making the bitblasting convenient wrt. rewriting.
`clz` is common in numerous compiler intrinsics (see
[here](https://clang.llvm.org/docs/LanguageExtensions.html#intrinsics-support-within-constant-expressions))
and architectures (see
[here](https://en.wikipedia.org/wiki/Find_first_set)).

Co-authored by @bollu.

---------

Co-authored-by: Tobias Grosser <github@grosser.es>
Co-authored-by: Siddharth <siddu.druid@gmail.com>
2025-06-18 15:50:04 +00:00
..
AC fix: grind.debug true when using grind +ring (#8134) 2025-04-27 20:28:08 +00:00
Grind chore: move grind algebra instances into Init.GrindInstances (#8830) 2025-06-17 03:59:15 +00:00
Simp feat: add leading zero counter BitVec.clz and bitblaster circuit/infrastructure (#8546) 2025-06-18 15:50:04 +00:00
Try feat: ematch generalized patterns (#8569) 2025-05-31 19:08:33 -07:00
AC.lean
Acyclic.lean refactor: mark the Simp.Context constructor as private 2024-11-13 14:12:55 +11:00
Apply.lean fix: Make split work with metavariables in the target (#8437) 2025-05-23 12:46:27 +00:00
Assert.lean
Assumption.lean
AuxLemma.lean feat: explicit defeq attribute (#8419) 2025-06-06 18:40:06 +00:00
Backtrack.lean
Cases.lean feat: induction: allow complex arguments to motive in conclusion of eliminator (#8096) 2025-04-30 08:56:17 +00:00
Cleanup.lean
Clear.lean feat: Array.insertIdx/eraseIdx take a tactic-provided proof (#6133) 2024-11-20 09:52:38 +00:00
Congr.lean
Constructor.lean fix: bring elaborator in line with kernel for primitive projections (#5822) 2024-10-31 03:16:52 +00:00
Contradiction.lean feat: close goals using match-expression conditions in grind (#6783) 2025-01-26 17:13:11 +00:00
Delta.lean
ElimInfo.lean chore: follow up on #8173 post-stage0 update (#8722) 2025-06-16 09:08:35 +00:00
ExposeNames.lean fix: prevent exact? and apply? from suggesting invalid tactics (#7192) 2025-02-25 15:24:09 +00:00
Ext.lean feat: add [grind ext] attribute (#7949) 2025-04-13 22:08:36 +00:00
FunInd.lean refactor: remove binductionOn, use brecOn instead (#8820) 2025-06-17 07:07:24 +00:00
FunIndCollect.lean feat: fun_induction to unfold function application in the goal (#8104) 2025-05-13 09:37:39 +00:00
FunIndInfo.lean feat: fun_induction to unfold function application in the goal (#8104) 2025-05-13 09:37:39 +00:00
FVarSubst.lean feat: offset constraints support for the grind tactic (#6603) 2025-01-12 20:38:39 +00:00
Generalize.lean
Grind.lean feat: improve E-matching pattern inference in grind (#8196) 2025-05-01 23:48:32 +00:00
IndependentOf.lean
Induction.lean feat: cleanup of get and back functions on List/Array (#7059) 2025-02-17 01:43:45 +00:00
Injection.lean fix: nontermination while generating equation lemmas for match-expressions (#6180) 2024-11-23 00:06:34 +00:00
Intro.lean doc: add docstrings to mkFreshUserName etc (#7947) 2025-04-14 04:17:45 +00:00
Lets.lean feat: add the nondep field of Expr.letE to the C++ data model (#8751) 2025-06-14 23:10:27 +00:00
LibrarySearch.lean feat: do not report metaprogramming declarations via exact? and rw? (#6672) 2025-06-16 09:20:49 +00:00
NormCast.lean
Refl.lean
Rename.lean
Repeat.lean
Replace.lean feat: make sure clear_value preserves local context order (#8792) 2025-06-18 04:40:20 +00:00
Revert.lean feat: make sure clear_value preserves local context order (#8792) 2025-06-18 04:40:20 +00:00
Rewrite.lean feat: binderNameHint (#6947) 2025-02-06 11:03:27 +00:00
Rewrites.lean feat: do not report metaprogramming declarations via exact? and rw? (#6672) 2025-06-16 09:20:49 +00:00
Rfl.lean chore: follow up on #8173 post-stage0 update (#8722) 2025-06-16 09:08:35 +00:00
Simp.lean feat: cutsat preparations (#7097) 2025-02-16 02:52:14 +00:00
SolveByElim.lean
Split.lean fix: Make split work with metavariables in the target (#8437) 2025-05-23 12:46:27 +00:00
SplitIf.lean feat: partial_fixpoint: partial functions with equations (#6355) 2025-01-21 09:54:30 +00:00
Subst.lean feat: Nat.(fold|foldRev|any|all)M? take a function which sees the upper bound (#6139) 2024-11-22 03:05:51 +00:00
Symm.lean chore: follow up on #8173 post-stage0 update (#8722) 2025-06-16 09:08:35 +00:00
Try.lean feat: improve try? suggestion (#6991) 2025-02-07 16:33:25 +00:00
TryThis.lean feat: pre-stage0 groundwork for named error messages (#8649) 2025-06-11 14:52:08 +00:00
Unfold.lean chore: revert "feat: make isRfl lazy" 2025-03-27 11:55:14 +01:00
UnifyEq.lean
Util.lean feat: add debug.terminalTacticsAsSorry (#8012) 2025-04-18 00:10:59 +00:00