4040 termination_by iter.length
4141 decreasing_by all_goals grind
4242
43- private theorem projectComb.Comb_go {reset iter size} (comb : state.Comb) :
43+ section projectComb
44+ variable {reset : Bool} {state : Aig} {map : Array Lit} {iter : Std.Iter Var}
45+ variable {size : iter.var.idx = map.size}
46+
47+ @[local simp, local grind .]
48+ private theorem projectComb.Comb_go (comb : state.Comb) :
4449 (go aig reset wf iter state map size valid).fst.Comb := by
4550 fun_induction go
4651 · grind only
@@ -50,23 +55,51 @@ private theorem projectComb.Comb_go {reset iter size} (comb : state.Comb) :
5055 subst res
5156 grind
5257
53- @[local simp]
54- private theorem Comb_projectComb :
58+ @[local simp, local grind .]
59+ private theorem projectComb.WellFormed_go (swf : state.WellFormed) :
60+ (go aig reset wf iter state map size valid).fst.WellFormed := by
61+ fun_induction go
62+ · grind only
63+ · grind only
64+ next res ih =>
65+ apply ih
66+ subst res
67+ grind
68+
69+ private theorem Comb_projectComb {reset} :
5570 (aig.projectComb reset wf).fst.Comb :=
5671 projectComb.Comb_go (by simp)
5772
73+ private theorem WellFormed_projectComb {reset} :
74+ (aig.projectComb reset wf).fst.WellFormed :=
75+ projectComb.WellFormed_go (by simp)
76+
77+ end projectComb
78+
5879@[inline]
5980def resetAig (aig : Aig) (wf : aig.WellFormed := by grind) : Aig × (Lit.In aig -> Lit) :=
6081 projectComb aig true wf
6182
83+ @[simp, grind .]
6284theorem Comb_resetAig :
6385 (aig.resetAig wf).fst.Comb :=
6486 Comb_projectComb
6587
88+ @[simp, grind .]
89+ theorem WellFormed_resetAig :
90+ (aig.resetAig wf).fst.WellFormed :=
91+ WellFormed_projectComb
92+
6693@[inline]
6794def transAig (aig : Aig) (wf : aig.WellFormed := by grind) : Aig × (Lit.In aig -> Lit) :=
6895 projectComb aig false wf
6996
97+ @[simp, grind .]
7098theorem Comb_transAig :
7199 (aig.transAig wf).fst.Comb :=
72100 Comb_projectComb
101+
102+ @[simp, grind .]
103+ theorem WellFormed_transAig :
104+ (aig.transAig wf).fst.WellFormed :=
105+ WellFormed_projectComb
0 commit comments