This module contains the theory of the cached gate creation functions, mostly enabled by the
LawfulOperator
framework. It is mainly concerned with proving lemmas about the denotational
semantics of the gate functions in different scenarios.
@[simp]
theorem
Std.Sat.AIG.BinaryInput_asGateInput_lhs
{α : Type}
[Hashable α]
[DecidableEq α]
{aig : AIG α}
(input : aig.BinaryInput)
(linv rinv : Bool)
:
@[simp]
theorem
Std.Sat.AIG.BinaryInput_asGateInput_rhs
{α : Type}
[Hashable α]
[DecidableEq α]
{aig : AIG α}
(input : aig.BinaryInput)
(linv rinv : Bool)
:
theorem
Std.Sat.AIG.mkNotCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
(gate : aig.Ref)
:
theorem
Std.Sat.AIG.mkAndCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
(input : aig.BinaryInput)
:
theorem
Std.Sat.AIG.mkAndCached_decl_eq
{α : Type}
[Hashable α]
[DecidableEq α]
(idx : Nat)
(aig : AIG α)
(input : aig.BinaryInput)
{h : idx < aig.decls.size}
{h2 : idx < (aig.mkAndCached input).aig.decls.size}
:
instance
Std.Sat.AIG.instLawfulOperatorBinaryInputMkAndCached
{α : Type}
[Hashable α]
[DecidableEq α]
:
theorem
Std.Sat.AIG.mkOrCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
(input : aig.BinaryInput)
:
theorem
Std.Sat.AIG.mkOrCached_decl_eq
{α : Type}
[Hashable α]
[DecidableEq α]
(idx : Nat)
(aig : AIG α)
(input : aig.BinaryInput)
{h : idx < aig.decls.size}
{h2 : idx < (aig.mkOrCached input).aig.decls.size}
:
instance
Std.Sat.AIG.instLawfulOperatorBinaryInputMkOrCached
{α : Type}
[Hashable α]
[DecidableEq α]
:
theorem
Std.Sat.AIG.mkXorCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
{input : aig.BinaryInput}
:
theorem
Std.Sat.AIG.mkXorCached_decl_eq
{α : Type}
[Hashable α]
[DecidableEq α]
(idx : Nat)
(aig : AIG α)
(input : aig.BinaryInput)
{h : idx < aig.decls.size}
{h2 : idx < (aig.mkXorCached input).aig.decls.size}
:
instance
Std.Sat.AIG.instLawfulOperatorBinaryInputMkXorCached
{α : Type}
[Hashable α]
[DecidableEq α]
:
theorem
Std.Sat.AIG.mkBEqCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
{input : aig.BinaryInput}
:
theorem
Std.Sat.AIG.mkBEqCached_decl_eq
{α : Type}
[Hashable α]
[DecidableEq α]
(idx : Nat)
(aig : AIG α)
(input : aig.BinaryInput)
{h : idx < aig.decls.size}
{h2 : idx < (aig.mkBEqCached input).aig.decls.size}
:
instance
Std.Sat.AIG.instLawfulOperatorBinaryInputMkBEqCached
{α : Type}
[Hashable α]
[DecidableEq α]
:
theorem
Std.Sat.AIG.mkImpCached_le_size
{α : Type}
[Hashable α]
[DecidableEq α]
(aig : AIG α)
(input : aig.BinaryInput)
:
theorem
Std.Sat.AIG.mkImpCached_decl_eq
{α : Type}
[Hashable α]
[DecidableEq α]
(idx : Nat)
(aig : AIG α)
(input : aig.BinaryInput)
{h : idx < aig.decls.size}
{h2 : idx < (aig.mkImpCached input).aig.decls.size}
:
instance
Std.Sat.AIG.instLawfulOperatorBinaryInputMkImpCached
{α : Type}
[Hashable α]
[DecidableEq α]
:
@[simp]
theorem
Std.Sat.AIG.denote_mkImpCached
{α : Type}
[Hashable α]
[DecidableEq α]
{assign : α → Bool}
{aig : AIG α}
{input : aig.BinaryInput}
: