Theorem: AIG.LawfulOperator.lt_size_of_lt_aig_size (LeanSAT/AIG/LawfulOperator.lean)

State before:
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ x < (f aig input).aig.decls.size
Tactic:
apply Nat.lt_of_lt_of_le
State after:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ x < ?m

case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ ?m ≤ (f aig input).aig.decls.size

case m
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ Nat

State before:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ x < ?m

case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ ?m ≤ (f aig input).aig.decls.size

case m
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ Nat
Tactic:
. exact h
State after:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ aig.decls.size ≤ (f aig input).aig.decls.size

State before:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ aig.decls.size ≤ (f aig input).aig.decls.size
Tactic:
. exact le_size aig input
State after:
no goals

State before:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ x < ?m
Tactic:
exact h
State after:
no goals

State before:
case a
α : Type
inst✝³ : BEq α
inst✝² : Hashable α
inst✝¹ : DecidableEq α
β : AIG α → Type
f : (aig : AIG α) → β aig → Entrypoint α
inst✝ : LawfulOperator α β f
x : Nat
aig : AIG α
input : β aig
h : x < aig.decls.size
⊢ aig.decls.size ≤ (f aig input).aig.decls.size
Tactic:
exact le_size aig input
State after:
no goals