intro a hmem
case mp.h
α : Type
inst✝⁶ : BEq α
inst✝⁵ : Hashable α
inst✝⁴ : DecidableEq α
β : Type
inst✝³ : BEq β
inst✝² : Hashable β
inst✝¹ : DecidableEq β
idx : Nat
inst✝ : Nonempty α
aig : AIG α
f : α → β
hidx1 : idx < (relabel f aig).decls.size
hidx2 : idx < aig.decls.size
hinj : ∀ (x y : α), x ∈ aig → y ∈ aig → f x = f y → x = y
h : (relabel f aig).unsatAt idx hidx1
assign : α → Bool
em : (a : Prop) → Decidable a
g : β → α := fun b => if h : ∃ a, a ∈ aig ∧ f a = b then h.choose else Classical.choice ⋯
h' : ⟦{ aig := aig, ref := { gate := idx, hgate := ⋯ } }, (assign ∘ g) ∘ f⟧ = false
⊢ ∀ (a : α), a ∈ aig → assign a = ((assign ∘ g) ∘ f) a
case mp.h
α : Type
inst✝⁶ : BEq α
inst✝⁵ : Hashable α
inst✝⁴ : DecidableEq α
β : Type
inst✝³ : BEq β
inst✝² : Hashable β
inst✝¹ : DecidableEq β
idx : Nat
inst✝ : Nonempty α
aig : AIG α
f : α → β
hidx1 : idx < (relabel f aig).decls.size
hidx2 : idx < aig.decls.size
hinj : ∀ (x y : α), x ∈ aig → y ∈ aig → f x = f y → x = y
h : (relabel f aig).unsatAt idx hidx1
assign : α → Bool
em : (a : Prop) → Decidable a
g : β → α := fun b => if h : ∃ a, a ∈ aig ∧ f a = b then h.choose else Classical.choice ⋯
h' : ⟦{ aig := aig, ref := { gate := idx, hgate := ⋯ } }, (assign ∘ g) ∘ f⟧ = false
a : α
hmem : a ∈ aig
⊢ assign a = ((assign ∘ g) ∘ f) a