Renaming formula inputs in polynomial time #
The padding construction changes the offsets of the five index blocks and their
sign bits. Renaming scans the post-order serialization, applying an ambient program
only at input nodes. renameBy uses a finite table and the binary-indexed lookup
program, so its cost does not assume that all input indices are small.
Rename the input bits without changing the formula's tree.
Equations
- MIPRE.SAT.Fml.rename ρ (MIPRE.SAT.Fml.inp i) = MIPRE.SAT.Fml.inp (ρ i)
- MIPRE.SAT.Fml.rename ρ (MIPRE.SAT.Fml.const b) = MIPRE.SAT.Fml.const b
- MIPRE.SAT.Fml.rename ρ (f.and g) = (MIPRE.SAT.Fml.rename ρ f).and (MIPRE.SAT.Fml.rename ρ g)
- MIPRE.SAT.Fml.rename ρ (f.or g) = (MIPRE.SAT.Fml.rename ρ f).or (MIPRE.SAT.Fml.rename ρ g)
- MIPRE.SAT.Fml.rename ρ f.not = (MIPRE.SAT.Fml.rename ρ f).not
Instances For
theorem
MIPRE.SAT.Fml.InputsLt.rename
{n m : ℕ}
{f : Fml}
(hf : InputsLt n f)
(ρ : ℕ → ℕ)
(hρ : ∀ i < n, ρ i < m)
:
InputsLt m (Fml.rename ρ f)
The serialization-level action of a renaming.
Equations
- MIPRE.SAT.Fml.Node.rename ρ (MIPRE.SAT.Fml.Node.inp i) = MIPRE.SAT.Fml.Node.inp (ρ i)
- MIPRE.SAT.Fml.Node.rename ρ (MIPRE.SAT.Fml.Node.const b) = MIPRE.SAT.Fml.Node.const b
- MIPRE.SAT.Fml.Node.rename ρ MIPRE.SAT.Fml.Node.and = MIPRE.SAT.Fml.Node.and
- MIPRE.SAT.Fml.Node.rename ρ MIPRE.SAT.Fml.Node.or = MIPRE.SAT.Fml.Node.or
- MIPRE.SAT.Fml.Node.rename ρ MIPRE.SAT.Fml.Node.not = MIPRE.SAT.Fml.Node.not
Instances For
noncomputable def
MIPRE.SAT.Fml.renameNodeProg
{α : Type u_1}
[Cost.SizedEncoding α]
(R : Cost.PolyTimeFun (α × ℕ) ℕ)
:
Cost.PolyTimeFun (α × Node) Node
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.Fml.renameNodeProg_apply
{α : Type u_1}
[Cost.SizedEncoding α]
(R : Cost.PolyTimeFun (α × ℕ) ℕ)
(a : α)
(nd : Node)
:
noncomputable def
MIPRE.SAT.Fml.renameProg
{α : Type u_1}
[Cost.SizedEncoding α]
(R : Cost.PolyTimeFun (α × ℕ) ℕ)
:
Cost.PolyTimeFun (α × Fml) Fml
Any polynomial-time index transformation gives a polynomial-time formula renaming.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
MIPRE.SAT.Fml.renameProg_apply
{α : Type u_1}
[Cost.SizedEncoding α]
(R : Cost.PolyTimeFun (α × ℕ) ℕ)
(p : α × Fml)
:
Rename inputs using the supplied table; an out-of-range index maps to zero.