Theorem: AIG.relabel_gate (LeanSAT/AIG/Relabel.lean)

State before:
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ idx < aig.decls.size
Tactic:
rw [← relabel_size_eq_size (f := f)]
State after:
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ idx < (relabel f aig).decls.size

State before:
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ idx < (relabel f aig).decls.size
Tactic:
omega
State after:
no goals

State before:
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ aig.decls[idx] = Decl.gate lhs rhs linv rinv
Tactic:
apply Decl.relabel_gate
State after:
case h
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ Decl.relabel ?f aig.decls[idx] = Decl.gate lhs rhs linv rinv

case β
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ Type

case f
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ α → ?β

State before:
case h
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ Decl.relabel ?f aig.decls[idx] = Decl.gate lhs rhs linv rinv

case β
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ Type

case f
α : Type
inst✝⁵ : BEq α
inst✝⁴ : Hashable α
inst✝³ : DecidableEq α
β : Type
inst✝² : BEq β
inst✝¹ : Hashable β
inst✝ : DecidableEq β
idx lhs rhs : Nat
linv rinv : Bool
aig : AIG α
f : α → β
hidx : idx < (relabel f aig).decls.size
h : (relabel f aig).decls[idx] = Decl.gate lhs rhs linv rinv
⊢ α → ?β
Tactic:
simpa [relabel] using h
State after:
no goals